/* * public function filter($context) * { * $entityClass = $_REQUEST['class']; * $fieldName = $_REQUEST['field_name']; * $fieldValue = $_REQUEST['field_value']; * * $entity = $context->database->createEntity($context, $entityClass); * * //var_dump($_REQUEST); die(); * * $field = $entity->findField($fieldName); * * if (is_null($field)) * { * die("Invalid field for filtering"); * } * else * { * if (strpos($fieldValue, '*') !== false) * { * $op = 'like'; * } * else * { * $op = 'eq'; * } * * $condition = array($fieldName => array($op => $fieldValue)); * * $context->addFilter($condition); * $this->render($context); * } * } * * public function unfilter($context) * { * $id = $_REQUEST['id']; * //var_dump($_REQUEST); die(); * * $context->removeFilters(); * * $this->render($context); * } */ public virtual void OnRemove(SynkContext context) { long id; long.TryParse(context.request.GetVariable("entity"), out id); var entity = context.database.FetchEntityByID(_entityClass, id); if (entity.exists) { entity.Remove(context); FetchPage(context); GenerateData(context); if (this.entities != null && this.entities.Count <= 0 && this.currentPage > 0) { this.currentPage--; GenerateData(context); } context.PushTemplate("crud/list"); context.Render(); } else { context.die("Entity " + id + " not found!"); } }
public void OnList(SynkContext context) { var error = false; var content = DataNode.CreateObject(); if (context.request.HasVariable("entity")) { var entityClass = context.request.GetVariable("entity"); var entities = context.database.FetchAllEntities(entityClass); var obj = DataNode.CreateObject("content"); content.AddNode(obj); foreach (var entity in entities) { var fields = entity.GetFields(); var child = DataNode.CreateObject("entity"); obj.AddNode(child); child.AddField("id", entity.id.ToString()); child.AddNode(fields.ToDataSource()); } } else { error = true; content.AddField("error", "Entity type not specified"); } APIResult(context, content, error); }
private void ShowDefaultPage(SynkContext context) { context.ChangeModule(context.config.GetFieldValue("defaultModule")); context.ChangeAction("default"); context.Reload(); context.RunController(); }
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); }
public virtual void OnDefault(SynkContext context) { FetchPage(context); GenerateData(context); context.PushTemplate("crud/list"); context.Render(); }
public virtual void OnEdit(SynkContext context) { FetchEntityID(context); GenerateData(context); context.PushTemplate("crud/edit"); context.Render(); }
private void FetchPage(SynkContext context) { this.entityID = -1; //this.filter = context.loadVar("filter", null); var pageVal = context.loadVarFromRequest("page", "0"); int.TryParse(pageVal, out this.currentPage); }
public override void OnInvalidAction(SynkContext context, string action) { var content = DataNode.CreateObject(); var error = true; content.AddField("error", "method " + action + " not supported"); APIResult(context, content, error); }
public virtual void OnClear(SynkContext context) { context.database.ClearEntities(_entityClass); FetchPage(context); GenerateData(context); context.PushTemplate("crud/list"); context.Render(); }
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); }
public virtual void OnDetail(SynkContext context) { long id; long.TryParse(context.request.GetVariable("entity"), out id); this.detail = context.database.FetchEntityByID(_entityClass, id); context.PushTemplate("crud/detail_" + _entityClass); context.Render(); }
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); }
public void OnLogin(SynkContext context) { var username = context.loadVarFromRequest("username"); var password = context.loadVarFromRequest("password"); var dbName = context.config.GetFieldValue("database"); var cond = Condition.Equal("username", username); var user = context.database.FetchEntity <User>(cond); string hash = null; if (user != null && user.exists) { hash = user.GetFieldValue("hash"); } if (context.database.failed) { context.warning = "Database error!"; context.PushTemplate("auth/default"); } else if (user != null && user.exists && (string.IsNullOrEmpty(hash) || this.checkPassword(password, hash))) { if (context.config.GetFieldBool("instanced")) { dbName = user.GetFieldValue("database"); } context.LogIn(user.id, dbName); ShowDefaultPage(context); return; } else { if (user.exists) { context.warning = "Dados de login invalidos!"; } else { context.warning = "Utilizador não existente!"; } context.PushTemplate("auth/default"); } context.Render(); }
public byte[] GetBytes(SynkContext context) { var content = GetFieldValue("local_name"); var filePath = System.IO.Path.Combine("public", content.TrimStart('/', '\\')); filePath = context.site.GetFullPath(filePath); if (System.IO.File.Exists(filePath)) { return(System.IO.File.ReadAllBytes(filePath)); } else { return(null); } }
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; } }
public virtual void OnSave(SynkContext context) { long id; long.TryParse(context.request.GetVariable("entity"), out id); var entity = context.database.FetchEntityByID(_entityClass, id); foreach (var field in entity.fields) { if (context.request.HasVariable(field.name)) { var val = context.request.GetVariable(field.name); if (field.formType.Equals("date")) { int year, month, day; var temp = val.Split('-'); int.TryParse(temp[0], out year); int.TryParse(temp[1], out month); int.TryParse(temp[2], out day); DateTime date = new DateTime(year, month, day); val = date.ToTimestamp().ToString(); } entity.SetFieldValue(field.name, val); } } if (entity.Save(context)) { FetchPage(context); GenerateData(context); context.PushTemplate("crud/list"); context.Render(); } else { if (string.IsNullOrEmpty(context.error) && !context.WaitingForConfirmation()) { context.error = "Entity saving entity"; } context.die(); } }
public void OnInsert(SynkContext context) { var error = false; var content = DataNode.CreateObject(); if (context.request.HasVariable("entity")) { var entityClass = context.request.GetVariable("entity"); var entity = context.database.CreateEntity(entityClass); foreach (var field in entity.fields) { var fieldName = field.name; if (context.request.HasVariable(fieldName)) { entity.SetFieldValue(fieldName, context.request.GetVariable(fieldName)); } else if (!field.required) { entity.SetFieldValue(fieldName, field.GetDefaultValue(context)); } else { error = true; content.AddField("error", fieldName + " is required"); break; } } if (!error) { entity.Save(context); content.AddField("id", entity.id.ToString()); } } else { error = true; content.AddField("error", "Entity type not specified"); } APIResult(context, content, error); }
public void OnGet(SynkContext context) { var error = false; var content = DataNode.CreateObject(); if (context.request.HasVariable("entity")) { var entityClass = context.request.GetVariable("entity"); if (context.request.HasVariable("id")) { long entityID; long.TryParse(context.request.GetVariable("id"), out entityID); var obj = DataNode.CreateObject("content"); content.AddNode(obj); var entity = context.database.FetchEntityByID(entityClass, entityID); if (entity.exists) { obj.AddField("id", entity.id.ToString()); var fields = entity.GetFields(); obj.AddNode(fields.ToDataSource()); } else { error = true; content.AddField("error", "ID does not exist"); } } else { error = true; content.AddField("error", "id is required for"); } } else { error = true; content.AddField("error", "Entity type not specified"); } APIResult(context, content, error); }
public virtual void InitFirstUser(SynkContext context, User user) { user.SetFieldValue("username", this.GetFieldValue("defaultUser")); user.SetFieldValue("password", this.GetFieldValue("defaultPass")); user.SetFieldValue("permissions", 0xFFFFFFFF.ToString()); var dbName = this.GetFieldValue("database"); bool instanced = this.GetFieldBool("instanced"); if (instanced) { user.SetFieldValue("database", dbName + '_' + Utility.GetUniqID()); } else { user.SetFieldValue("database", dbName); } }
public override void OnDetail(SynkContext context) { long id; long.TryParse(context.request.GetVariable("entity"), out id); var file = context.database.FetchEntityByID <File>(id); if (file.exists) { var fileName = file.GetFieldValue("real_name"); var bytes = file.GetBytes(context); context.SendDownload(fileName, bytes); } else { context.die("File not found, id " + id); } }
public void OnDelete(SynkContext context) { var error = false; var content = DataNode.CreateObject(); if (context.request.HasVariable("entity")) { var entityClass = context.request.GetVariable("entity"); if (context.request.HasVariable("id")) { long entityID; long.TryParse(context.request.GetVariable("id"), out entityID); var entity = context.database.FetchEntityByID(entityClass, entityID); if (entity.exists) { content.AddField("id", entityID.ToString()); entity.Remove(context); } else { error = true; content.AddField("error", "ID does not exist"); } } else { error = true; content.AddField("error", "ID is required"); } } else { error = true; content.AddField("error", "Entity type not specified"); } APIResult(context, content, error); }
public void OnDefault(SynkContext context) { context.PushTemplate("auth/default"); context.Render(); }
public long FetchEntityID(SynkContext context) { long.TryParse(context.loadVar("entity", "-1"), out this.entityID); return(this.entityID); }
public Entity FetchEntity(SynkContext context) { FetchEntityID(context); return(context.database.FetchEntityByID(_entityClass, this.entityID)); }
/*public string addFilter(string filter) * { * if (is_null($this->filter)) * { * $this->filter = $filter; * } * else * { * $this->filter = array('and' => array($this->filter, $filter)); * } * * $_SESSION['filter'] = $this->filter; * }*/ public override bool CheckPermissions(SynkContext context, User user, string action) { return(context.hasLogin || action.Equals("detail")); }
private void GenerateData(SynkContext context) { if (this._entityClass == null) { return; } var templateEntity = context.database.CreateEntity(_entityClass); var tabEntries = new HashSet <string>(); this.headers = new List <Header>(); foreach (var field in templateEntity.fields) { if (!field.hidden) { headers.Add(new Header(field.name, templateEntity.translateField(context, field), field.grid)); tabEntries.Add(field.tab); } } long total; if (entityID >= 0) { var entity = context.database.FetchEntityByID(_entityClass, entityID); entities = new List <Entity>(); entities.Add(entity); total = 1; } else { total = context.database.GetEntityCount(_entityClass, this.filter); entities = context.database.FetchAllEntities(_entityClass, this.filter, new Pagination(itemsPerPage, currentPage)); } this.tabs = new List <Tab>(); this.rows = new List <Row>(); foreach (var tabName in tabEntries) { var tab = new Tab(); tab.name = context.Translate("entity_" + _entityClass + "_" + tabName); var rows = new List <Row>(); tab.rows = rows; tabs.Add(tab); tab.index = tabs.Count; tab.active = tab.index == 1; foreach (var entity in entities) { var entityPermission = entity.exists ? entity.CheckPermissions(context, context.currentUser) : PermissonMode.Writable; if (entityPermission == PermissonMode.Hidden) { continue; } var columns = new List <Column>(); int i = 0; foreach (var field in entity.fields) { if (!field.tab.Equals(tabName) && entityID >= 0) { continue; } var mode = field.HasPermissions(context); if (mode == PermissonMode.Hidden) { continue; } if (entityPermission == PermissonMode.Readable) { mode = PermissonMode.Readable; } var column = new Column(); column.name = field.name; column.value = entity.GetFieldValue(column.name); column.maskedValue = column.value; column.required = field.required; column.odd = (i % 2) != 0; column.extra_attributes = ""; if (field.formType.Equals("checkbox")) { if (column.value.Equals("1")) { column.extra_attributes += "checked='true' "; } } column.isHTML = false; column.isUpload = false; column.thumb = null; if (field.lengthLimit > 0) { column.extra_attributes += "maxlength='" + field.lengthLimit + "' "; } /*if (field.pattern != null) * { * column.extra_attributes += "pattern='" + field.pattern + "' "; * }*/ if (field.formType.Equals("html")) { column.isHTML = true; column.extra_attributes += "style='width:100%; height:300px;' "; } else if (field.formType.Equals("password")) { column.extra_attributes = "data-minlength='6' "; } else if (field.formType == "file") { column.isUpload = true; var fieldData = column.name + "_thumb"; column.thumb = entity.GetFieldValue(fieldData); if (string.IsNullOrEmpty(column.thumb)) { column.maskedValue = "-"; } } column.hasContent = (field.controlType.Equals("textarea")); column.options = new List <Option>(); if (!string.IsNullOrEmpty(field.enumName)) { var enumValues = context.FetchEnum(field.enumName); var opLen = enumValues.Count; foreach (var enumVal in enumValues) { var enumSelected = (enumVal.Equals(column.value)); var translateKey = "enum_" + field.enumName + "_" + enumVal; var enumTranslation = context.Translate(translateKey); var option = new Option(enumVal, enumTranslation, enumSelected); if (enumSelected) { column.maskedValue = enumTranslation; } column.options.Add(option); } } column.items = new List <Item>(); if (field.entity != null) { column.entityID = column.value; column.isTable = field.formType.Equals("table"); var template = context.database.CreateEntity(field.entity); column.isSearchable = template.GetSearch("test") != null; if (column.isTable) { var entityList = column.entityID.Split(','); foreach (var id in entityList) { if (id.Length == 0) { break; } long otherID; long.TryParse(id, out otherID); if (otherID == 0) { continue; } var otherEntity = context.database.FetchEntityByID(field.entity, otherID); var otherThumb = otherEntity.ToThumb(); column.items.Add(new Item(otherID, otherEntity.ToString(), otherThumb)); } column.maskedValue = ""; } else { if (string.IsNullOrEmpty(column.value) || column.value.Equals("0")) { column.maskedValue = "-"; } else { long otherID; long.TryParse(column.value, out otherID); var otherEntity = context.database.FetchEntityByID(field.entity, otherID); column.maskedValue = otherEntity.ToString(); } } } else { column.isTable = false; } if (field.formType.Equals("date")) { long dateval; long.TryParse(column.value, out dateval); DateTime date = dateval.ToDateTime(); column.value = date.Year + "-" + date.Month.ToString("00") + "-" + date.Day.ToString("00"); column.maskedValue = entity.GetFieldValue(field.name + "_text"); } column.unit = field.unit; if (column.unit != null && column.unit.Equals("byte")) { int val; int.TryParse(column.value, out val); column.maskedValue = Utility.SizeSuffix(val); column.unit = null; } if (string.IsNullOrEmpty(column.maskedValue)) { column.maskedValue = column.value; } column.label = entity.translateField(context, field); column.visible = field.grid; column.type = field.formType; column.@class = field.formClass; column.control = field.controlType; column.entity = field.entity; column.writable = mode == PermissonMode.Writable; column.index = columns.Count; column.validable = !(/*field.formType.Equals("file") ||*/ field.formType.Equals("checkbox") || field.formType.Equals("table")); columns.Add(column); i++; } var row = new Row(); row.columns = columns; row.rowID = entity.id; row.@class = _entityClass; rows.Add(row); this.rows.Add(row); } if (entityID < 0) { break; } } int totalPages = (int)Math.Ceiling(total / (float)itemsPerPage); this.pages = new List <Page>(); this.pages.Add(new Page("«", currentPage <= 0 ? 0 : currentPage - 1, false, currentPage <= 1)); var lastPage = totalPages - 1; for (int j = 0; j <= lastPage; j++) { this.pages.Add(new Page((j + 1).ToString(), j, currentPage == j, false)); } this.pages.Add(new Page("»", currentPage >= lastPage ? lastPage : currentPage + 1, false, currentPage >= lastPage)); if (this.pages.Count <= 2) { this.pages.Clear(); } this.exports = new List <Export>(); /*foreach (glob('plugins/export/*.php') as $file) * { * $extensionName = pathinfo($file, PATHINFO_FILENAME); * require_once($file); * $exports[] = array('format' => $extensionName, 'label' => $extensionName); * } */ this.error = null; if (entities.Count == 0) { error = context.Translate("grid_error_empty"); error = error.Replace("$name", context.currentModule.getTitle(context)); } }
public void OnLogout(SynkContext context) { context.LogOut(); ShowDefaultPage(context); return; }
public override bool CheckPermissions(SynkContext context, User user, string action) { return(true); }