public static IEnumerable <(string Name, ServerScriptModelColumn Value)> Columns( Context context, SiteSettings ss, BaseItemModel model) { var mine = model.Mine(context: context); var columns = Def .ColumnDefinitionCollection .Where(definition => definition.TableName == ss?.ReferenceType) .Select(definition => { Column column = null; ss?.ColumnHash?.TryGetValue(definition.ColumnName, out column); return( definition.ColumnName, model.ServerScriptModelRow.Columns?.Get(column?.ColumnName) ?? new ServerScriptModelColumn( labelText: column?.LabelText, labelRaw: string.Empty, rawText: string.Empty, readOnly: column?.EditorReadOnly == true, hide: column?.Hide == true, validateRequired: column?.ValidateRequired == true, extendedFieldCss: column?.ExtendedFieldCss, extendedControlCss: column?.ExtendedControlCss, extendedCellCss: column?.ExtendedCellCss, extendedHtmlBeforeField: column?.ExtendedHtmlBeforeField, extendedHtmlBeforeLabel: column?.ExtendedHtmlBeforeLabel, extendedHtmlBetweenLabelAndControl: column?.ExtendedHtmlBetweenLabelAndControl, extendedHtmlAfterControl: column?.ExtendedHtmlAfterControl, extendedHtmlAfterField: column?.ExtendedHtmlAfterField)); }) .ToArray(); return(columns); }
public PartialViewResult AddComment(Guid itemId, ItemTypeEnum itemType, Guid?parentCommentId, string commentText) { if (!string.IsNullOrEmpty(commentText) && User.UserId != null) { BaseItemModel data = null; Guid newItemId = DataService.AddComment(itemId, (Guid)User.UserId, parentCommentId, commentText, itemType); _mailService.NewComment(newItemId); switch (itemType) { case ItemTypeEnum.Author: data = DataService.GetAuthor(itemId, User.UserId); break; case ItemTypeEnum.Book: data = DataService.GetBook(itemId, User.UserId); break; case ItemTypeEnum.Serie: data = DataService.GetSerie(itemId, User.UserId); break; case ItemTypeEnum.Review: data = DataService.GetReview(itemId, User.UserId); break; } return(PartialView("~/Views/Partial/Comments.cshtml", data)); } return(null); }
public static ServerScriptModelRow Execute( Context context, SiteSettings ss, BaseItemModel itemModel, View view, Func <ServerScript, bool> where, string condition) { if (!(Parameters.Script.ServerScript != false && context.ContractSettings.ServerScript != false)) { return(null); } var scripts = ss ?.GetServerScripts(context: context) ?.Where(where) .ToArray(); if (scripts?.Any() != true) { return(null); } var scriptValues = Execute( context: context, ss: ss, itemModel: itemModel, view: view, scripts: scripts, condition: condition, debug: scripts.Any(o => o.Debug)); return(scriptValues); }
public PartialViewResult SetRating(Guid itemId, ItemTypeEnum itemType, short ratingValue) { BaseItemModel model = GetNewItemByType(itemType); model.Id = itemId; model.Rating = DoSetRating(itemId, (Guid)User.UserId, itemType, ratingValue); return(PartialView("~/Views/Partial/Rating.cshtml", model)); }
private static void SetExtendedColumnValues( Context context, BaseItemModel model, ExpandoObject data, Column[] columns) { columns?.ForEach(column => model?.GetValue( context: context, column: column, value: String( data: data, columnName: column.ColumnName))); }
private async Task NavigationAsync() { if (this.SelectedItem is FolderModel folder) { await this.NavigationService.NavigateToAsync <FolderViewModel>(folder); } else if (this.SelectedItem is NoteModel note) { await this.NavigationService.NavigateToAsync <NoteViewModel>(note); } this.SelectedItem = null; }
public static ServerScriptModelRow Execute( Context context, SiteSettings ss, BaseItemModel itemModel, View view, ServerScript[] scripts) { if (!(Parameters.Script.ServerScript != false && context.ContractSettings.Script != false)) { return(null); } itemModel = itemModel ?? new BaseItemModel(); ServerScriptModelRow scriptValues = null; using (var model = new ServerScriptModel( context: context, ss: ss, data: Values( ss: ss, model: itemModel), columns: Columns(ss), columnFilterHach: view?.ColumnFilterHash, columnSorterHach: view?.ColumnSorterHash)) { using (var engine = context.CreateScriptEngin()) { engine.AddHostObject("context", model.Context); engine.AddHostObject("model", model.Data); engine.AddHostObject("columns", model.Columns); engine.AddHostObject("siteSettings", model.SiteSettings); engine.AddHostObject("view", model.View); foreach (var script in scripts) { engine.Execute(script.Body); } } scriptValues = SetValues( context: context, ss: ss, model: itemModel, view: view, data: model); } return(scriptValues); }
private static Column[] FilterCanUpdateColumns( Context context, SiteSettings ss, BaseItemModel model, IEnumerable <string> columnNames) { var mine = model?.Mine(context: context); var columns = columnNames .Distinct() .Select(columnName => ss.ColumnHash.TryGetValue(columnName, out var column) ? column : null) .Where(column => column?.CanEdit( context: context, ss: ss, mine: mine, skipCanReadCheck: true) == true) .ToArray(); return(columns); }
private static Dictionary <string, ServerScriptModelColumn> SetColumns( Context context, SiteSettings ss, ExpandoObject columns, BaseItemModel model) { var mine = model?.Mine(context: context); var scriptValues = new Dictionary <string, ServerScriptModelColumn>(); columns?.ForEach(datam => { if (!ss.ColumnHash.TryGetValue(datam.Key, out var column)) { return; } var serverScriptColumn = datam.Value as ServerScriptModelColumn; if (serverScriptColumn.Changed()) { scriptValues[datam.Key] = serverScriptColumn; } }); return(scriptValues); }
public static ServerScriptModelRow Execute( Context context, SiteSettings ss, BaseItemModel itemModel, View view, Func <ServerScript, bool> where) { if (!(Parameters.Script.ServerScript != false && context.ContractSettings.Script != false)) { return(null); } var serverScripts = ss ?.ServerScripts ?.Where(where) .ToArray(); if (serverScripts?.Any() != true) { return(null); } ss.SetColumnAccessControls( context: context, mine: (itemModel is ResultModel resultModel) ? resultModel.Mine(context: context) : (itemModel is IssueModel issueModel) ? issueModel.Mine(context: context) : null); var scriptValues = Execute( context: context, ss: ss, itemModel: itemModel, view: view, scripts: serverScripts); return(scriptValues); }
private BaseItemModel GetNewItemByType(ItemTypeEnum itemType) { BaseItemModel result = null; switch (itemType) { case ItemTypeEnum.Author: result = new AuthorItemModel(); break; case ItemTypeEnum.Book: result = new BookItemModel(); break; case ItemTypeEnum.Serie: result = new SerieItemModel(); break; case ItemTypeEnum.Review: result = new ReviewItemModel(); break; } return(result); }
private static ServerScriptModelRow SetRow( Context context, SiteSettings ss, ExpandoObject model, ExpandoObject columns, ServerScriptModelHidden hidden, ServerScriptElements elements, BaseItemModel itemModel) { var row = new ServerScriptModelRow { ExtendedRowCss = String(model, nameof(ServerScriptModelRow.ExtendedRowCss)), ExtendedRowData = String(model, nameof(ServerScriptModelRow.ExtendedRowData)), Columns = SetColumns( context: context, ss: ss, columns: columns, model: itemModel), Hidden = hidden.GetAll(), Elements = elements }; return(row); }
public static ServerScriptModelRow Execute( Context context, SiteSettings ss, BaseItemModel itemModel, View view, ServerScript[] scripts, string condition, bool debug, bool onTesting = false) { if (!(Parameters.Script.ServerScript != false && context.ContractSettings.ServerScript != false && context.ServerScriptDisabled == false)) { return(null); } if (!(context?.ServerScriptDepth < 10)) { return(null); } itemModel = itemModel ?? new BaseItemModel(); ServerScriptModelRow scriptValues = null; using (var model = new ServerScriptModel( context: context, ss: ss, data: Values( context: context, ss: ss, model: itemModel), columns: Columns( context: context, ss: ss, model: itemModel), view: view, condition: condition, debug: debug, onTesting: onTesting)) { using (var engine = new ScriptEngine(debug: debug)) { try { engine.ContinuationCallback = model.ContinuationCallback; engine.AddHostObject("context", model.Context); engine.AddHostObject("model", model.Model); engine.AddHostObject("depts", model.Depts); engine.AddHostObject("groups", model.Groups); engine.AddHostObject("users", model.Users); engine.AddHostObject("columns", model.Columns); engine.AddHostObject("siteSettings", model.SiteSettings); engine.AddHostObject("view", model.View); engine.AddHostObject("items", model.Items); engine.AddHostObject("hidden", model.Hidden); engine.AddHostObject("elements", model.Elements); engine.AddHostObject("extendedSql", model.ExtendedSql); engine.AddHostObject("notifications", model.Notification); if (!Parameters.Script.DisableServerScriptHttpClient) { engine.AddHostObject("httpClient", model.HttpClient); } engine.AddHostObject("utilities", model.Utilities); engine.Execute(scripts.Select(o => o.Body).Join("\n")); } finally { engine.ContinuationCallback = null; } } scriptValues = SetValues( context: context, ss: ss, model: itemModel, view: view, data: model); } return(scriptValues); }
public static IEnumerable <(string Name, object Value)> Values(SiteSettings ss, BaseItemModel model) { var values = new List <(string, object)>(); values.AddRange(model .ClassHash .Select(element => ReadNameValue( ss: ss, columnName: element.Key, value: element.Value))); values.AddRange(model .NumHash .Select(element => ReadNameValue( ss: ss, columnName: element.Key, value: element.Value))); values.AddRange(model .DateHash .Select(element => ReadNameValue( ss: ss, columnName: element.Key, value: element.Value))); values.AddRange(model .DescriptionHash .Select(element => ReadNameValue( ss: ss, columnName: element.Key, value: element.Value))); values.AddRange(model .CheckHash .Select(element => ReadNameValue( ss: ss, columnName: element.Key, value: element.Value))); if (model is ResultModel resultModel) { values.Add(ReadNameValue( ss: ss, columnName: nameof(ResultModel.Title), value: resultModel.Title?.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(ResultModel.Body), value: resultModel.Body)); values.Add(ReadNameValue( ss: ss, columnName: nameof(ResultModel.Status), value: resultModel.Status?.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(ResultModel.Manager), value: resultModel.Manager.Id)); values.Add(ReadNameValue( ss: ss, columnName: nameof(ResultModel.Owner), value: resultModel.Owner.Id)); } if (model is IssueModel issueModel) { values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.Title), value: issueModel.Title?.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.Body), value: issueModel.Body)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.StartTime), value: issueModel.StartTime)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.CompletionTime), value: issueModel.CompletionTime.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.WorkValue), value: issueModel.WorkValue.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.ProgressRate), value: issueModel.ProgressRate.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.Status), value: issueModel.Status?.Value)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.Manager), value: issueModel.Manager.Id)); values.Add(ReadNameValue( ss: ss, columnName: nameof(IssueModel.Owner), value: issueModel.Owner.Id)); } return(values.ToArray()); }
public static ServerScriptModelRow SetValues( Context context, SiteSettings ss, BaseItemModel model, View view, ServerScriptModel data) { var valueColumns = FilterCanUpdateColumns( ss: ss, columnNames: data.GetChangeItemNames()); var valueColumnDictionary = valueColumns .ToDictionary( column => column.ColumnName, column => column); var scriptValues = SetRow( ss: ss, model: data.Data, columns: data.Columns); SetExtendedColumnValues( context: context, model: model, data: data.Data, columns: valueColumns); SetColumnFilterHachValues( context: context, view: view, columnFilterHach: data.View.Filters); SetColumnSorterHachValues( context: context, view: view, columnSorterHach: data.View.Sorters); switch (ss?.ReferenceType) { case "Issues": if (model is IssueModel issueModel) { SetIssueModelValues( context: context, issueModel: issueModel, data: data.Data, columns: valueColumnDictionary); } break; case "Results": if (model is ResultModel resultModel) { SetResultModelValues( context: context, resultModel: resultModel, data: data.Data, columns: valueColumnDictionary); } break; } SetViewValues( ss: ss, data: data.SiteSettings); return(scriptValues); }
public static IEnumerable <(string Name, object Value)> Values( Context context, SiteSettings ss, BaseItemModel model) { var mine = model?.Mine(context: context); var values = new List <(string, object)>(); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.SiteId), value: model.SiteId, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.Title), value: model.Title?.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.Body), value: model.Body, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.Ver), value: model.Ver, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.Creator), value: model.Creator.Id, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.Updator), value: model.Updator.Id, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.CreatedTime), value: model.CreatedTime?.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(model.UpdatedTime), value: model.UpdatedTime?.Value, mine: mine)); values.AddRange(model .ClassHash .Select(element => ReadNameValue( context: context, ss: ss, columnName: element.Key, value: element.Value, mine: mine))); values.AddRange(model .NumHash .Select(element => ReadNameValue( context: context, ss: ss, columnName: element.Key, value: element.Value.Value ?? (ss?.GetColumn( context: context, columnName: element.Key) ?.Nullable == true ? (decimal?)null : 0), mine: mine))); values.AddRange(model .DateHash .Select(element => ReadNameValue( context: context, ss: ss, columnName: element.Key, value: element.Value, mine: mine))); values.AddRange(model .DescriptionHash .Select(element => ReadNameValue( context: context, ss: ss, columnName: element.Key, value: element.Value, mine: mine))); values.AddRange(model .CheckHash .Select(element => ReadNameValue( context: context, ss: ss, columnName: element.Key, value: element.Value, mine: mine))); if (model is IssueModel issueModel) { values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.IssueId), value: issueModel.IssueId, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.StartTime), value: issueModel.StartTime, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.CompletionTime), value: issueModel.CompletionTime.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.WorkValue), value: issueModel.WorkValue.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.ProgressRate), value: issueModel.ProgressRate.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.RemainingWorkValue), value: issueModel.RemainingWorkValue.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.Status), value: issueModel.Status?.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.Manager), value: issueModel.Manager.Id, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.Owner), value: issueModel.Owner.Id, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(IssueModel.Locked), value: issueModel.Locked, mine: mine)); } if (model is ResultModel resultModel) { values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(ResultModel.ResultId), value: resultModel.ResultId, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(ResultModel.Status), value: resultModel.Status?.Value, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(ResultModel.Manager), value: resultModel.Manager.Id, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(ResultModel.Owner), value: resultModel.Owner.Id, mine: mine)); values.Add(ReadNameValue( context: context, ss: ss, columnName: nameof(ResultModel.Locked), value: resultModel.Locked, mine: mine)); } return(values.ToArray()); }
public ServerScriptModelApiModel(Context context, BaseItemModel model, bool onTesting) { Context = context; Model = model ?? new BaseItemModel(); OnTesting = onTesting; }
public static ServerScriptModelRow Execute( Context context, SiteSettings ss, BaseItemModel itemModel, View view, ServerScript[] scripts, bool onTesting = false) { if (!(Parameters.Script.ServerScript != false && context.ContractSettings.NewFeatures() && context.ContractSettings.Script != false)) { return(null); } if (!(context?.ServerScriptDepth < 10)) { return(null); } itemModel = itemModel ?? new BaseItemModel(); ServerScriptModelRow scriptValues = null; using (var model = new ServerScriptModel( context: context, ss: ss, data: Values( context: context, ss: ss, model: itemModel), columns: Columns( context: context, ss: ss), columnFilterHash: view?.ColumnFilterHash, columnSorterHash: view?.ColumnSorterHash, onTesting: onTesting)) { using (var engine = new Microsoft.ClearScript.V8.V8ScriptEngine( Microsoft.ClearScript.V8.V8ScriptEngineFlags.EnableDateTimeConversion)) { try { engine.ContinuationCallback = model.ContinuationCallback; engine.AddHostObject("context", model.Context); engine.AddHostObject("model", model.Model); engine.AddHostObject("depts", model.Depts); engine.AddHostObject("groups", model.Groups); engine.AddHostObject("users", model.Users); engine.AddHostObject("columns", model.Columns); engine.AddHostObject("siteSettings", model.SiteSettings); engine.AddHostObject("view", model.View); engine.AddHostObject("items", model.Items); engine.AddHostObject("hidden", model.Hidden); engine.AddHostObject("extendedSql", model.ExtendedSql); engine.AddHostObject("notifications", model.Notification); foreach (var script in scripts) { engine.Execute(script.Body); } } finally { engine.ContinuationCallback = null; } } scriptValues = SetValues( context: context, ss: ss, model: itemModel, view: view, data: model); } return(scriptValues); }
public static ServerScriptModelRow SetValues( Context context, SiteSettings ss, BaseItemModel model, View view, ServerScriptModel data) { var valueColumns = FilterCanUpdateColumns( context: context, ss: ss, model: model, columnNames: data.GetChangeItemNames()); var valueColumnDictionary = valueColumns .ToDictionary( column => column.ColumnName, column => column); var scriptValues = SetRow( context: context, ss: ss, model: data.Model, columns: data.Columns, hidden: data.Hidden, elements: data.Elements, itemModel: model); SetExtendedColumnValues( context: context, model: model, data: data.Model, columns: valueColumns); if (view != null) { view.AlwaysGetColumns = data.View.AlwaysGetColumns; view.OnSelectingWhere = data.View.OnSelectingWhere; view.OnSelectingOrderBy = data.View.OnSelectingOrderBy; view.ColumnPlaceholders = data.View.ColumnPlaceholders; } SetColumnFilterHashValues( context: context, view: view, columnFilterHash: data.View.Filters); SetColumnSorterHashValues( context: context, view: view, columnSorterHash: data.View.Sorters); model.ReadOnly = Bool( data: data.Model, name: "ReadOnly"); switch (ss?.ReferenceType) { case "Issues": if (model is IssueModel issueModel) { SetIssueModelValues( context: context, ss: ss, issueModel: issueModel, data: data.Model, columns: valueColumnDictionary); } break; case "Results": if (model is ResultModel resultModel) { SetResultModelValues( context: context, ss: ss, resultModel: resultModel, data: data.Model, columns: valueColumnDictionary); } break; } SetViewValues( ss: ss, data: data.SiteSettings); return(scriptValues); }
public static HtmlBuilder Tr( this HtmlBuilder hb, Context context, SiteSettings ss, DataRow dataRow, IEnumerable <Column> columns, bool editRow, bool checkRow, string idColumn, RecordSelector recordSelector = null, FormDataSet formDataSet = null) { var dataId = dataRow.Long(idColumn); var dataVersion = dataRow.Int("Ver"); var isHistory = dataRow.Bool("IsHistory"); var EditColumns = !isHistory ? columns.ToDictionary( column => column.ColumnName, column => EditColumn( context: context, column: column)) : new Dictionary <string, bool>(); BaseItemModel rowModel = null; switch (ss.ReferenceType) { case "Issues": var issueModel = new IssueModel( context: context, ss: ss, dataRow: dataRow, formData: editRow ? formDataSet?.FirstOrDefault(o => o.Id == dataRow.Long("IssueId"))?.Data : null); ss.SetColumnAccessControls( context: context, mine: issueModel.Mine(context: context)); rowModel = issueModel; break; case "Results": var resultModel = new ResultModel( context: context, ss: ss, dataRow: dataRow, formData: editRow ? formDataSet?.FirstOrDefault(o => o.Id == dataRow.Long("ResultId"))?.Data : null); ss.SetColumnAccessControls( context: context, mine: resultModel.Mine(context: context)); rowModel = resultModel; break; } ; var serverScriptRowValues = rowModel?.SetByBeforeOpeningPageServerScript( context: context, ss: ss); var extendedRowCss = serverScriptRowValues?.ExtendedRowCss; extendedRowCss = extendedRowCss.IsNullOrEmpty() ? string.Empty : " " + extendedRowCss; return(hb.Tr( attributes: new HtmlAttributes() .Class("grid-row" + extendedRowCss) .DataId(dataId.ToString()) .DataVer(dataVersion) .DataLatest(1, _using: !isHistory) .Add(name: "data-history", value: "1", _using: isHistory) .Add(name: "data-locked", value: "1", _using: dataRow.Bool("Locked")), action: () => { if (editRow) { hb.Td(action: () => hb .Button( title: Displays.Reload(context: context), controlCss: "button-icon", onClick: $"$p.getData($(this)).Id={dataId};$p.send($(this));", icon: "ui-icon-refresh", action: "ReloadRow", method: "post", _using: !isHistory) .Button( title: Displays.Copy(context: context), controlCss: "button-icon", onClick: $"$p.getData($(this)).OriginalId={dataId};$p.send($(this));", icon: "ui-icon-copy", action: "CopyRow", method: "post", _using: !isHistory && context.CanCreate(ss: ss)) .Hidden( controlId: $"{ss.ReferenceType}_Timestamp_{ss.SiteId}_{dataId}", css: "timestamp", value: dataRow .Field <DateTime>("UpdatedTime") .ToString("yyyy/M/d H:m:s.fff"))); } else if (checkRow) { hb.Td(action: () => hb .CheckBox( controlCss: "grid-check", _checked: recordSelector.Checked(dataId), dataId: dataId.ToString(), _using: !isHistory)); } var depts = new Dictionary <string, DeptModel>(); var groups = new Dictionary <string, GroupModel>(); var registrations = new Dictionary <string, RegistrationModel>(); var users = new Dictionary <string, UserModel>(); var sites = new Dictionary <string, SiteModel>(); var issues = new Dictionary <string, IssueModel>(); var results = new Dictionary <string, ResultModel>(); ServerScriptModelRow serverScriptValues = null; columns.ForEach(column => { var key = column.TableName(); switch (column.SiteSettings?.ReferenceType) { case "Depts": var deptModel = depts.Get(key); if (deptModel == null) { deptModel = new DeptModel( context: context, ss: column.SiteSettings, dataRow: dataRow, tableAlias: column.TableAlias); depts.Add(key, deptModel); ss.SetColumnAccessControls( context: context, mine: deptModel.Mine(context: context)); serverScriptValues = deptModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } hb.TdValue( context: context, ss: column.SiteSettings, column: column, deptModel: deptModel); break; case "Groups": var groupModel = groups.Get(key); if (groupModel == null) { groupModel = new GroupModel( context: context, ss: column.SiteSettings, dataRow: dataRow, tableAlias: column.TableAlias); groups.Add(key, groupModel); ss.SetColumnAccessControls( context: context, mine: groupModel.Mine(context: context)); serverScriptValues = groupModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } hb.TdValue( context: context, ss: column.SiteSettings, column: column, groupModel: groupModel); break; case "Registrations": var registrationModel = registrations.Get(key); if (registrationModel == null) { registrationModel = new RegistrationModel( context: context, ss: column.SiteSettings, dataRow: dataRow, tableAlias: column.TableAlias); registrations.Add(key, registrationModel); ss.SetColumnAccessControls( context: context, mine: registrationModel.Mine(context: context)); serverScriptValues = registrationModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } hb.TdValue( context: context, ss: column.SiteSettings, column: column, registrationModel: registrationModel); break; case "Users": var userModel = users.Get(key); if (userModel == null) { userModel = new UserModel( context: context, ss: column.SiteSettings, dataRow: dataRow, tableAlias: column.TableAlias); users.Add(key, userModel); ss.SetColumnAccessControls( context: context, mine: userModel.Mine(context: context)); serverScriptValues = userModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } hb.TdValue( context: context, ss: column.SiteSettings, column: column, userModel: userModel); break; case "Sites": var siteModel = sites.Get(key); if (siteModel == null) { siteModel = new SiteModel( context: context, dataRow: dataRow, formData: editRow ? formDataSet?.FirstOrDefault(o => o.Id == dataRow.Long("SiteId"))?.Data : null, tableAlias: column.TableAlias); sites.Add(key, siteModel); ss.SetColumnAccessControls( context: context, mine: siteModel.Mine(context: context)); serverScriptValues = siteModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } hb.TdValue( context: context, ss: column.SiteSettings, column: column, siteModel: siteModel); break; case "Issues": var issueModel = issues.Get(key); if (issueModel == null) { issueModel = new IssueModel( context: context, ss: column.SiteSettings, dataRow: dataRow, formData: editRow ? formDataSet?.FirstOrDefault(o => o.Id == dataRow.Long("IssueId"))?.Data : null, tableAlias: column.TableAlias); issues.Add(key, issueModel); ss.SetColumnAccessControls( context: context, mine: issueModel.Mine(context: context)); serverScriptValues = issueModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } if (!issueModel.Locked && EditColumns.Get(column.ColumnName) && column.CanUpdate(baseModel: issueModel)) { hb.Td( css: column.TextAlign == SiteSettings.TextAlignTypes.Right ? " right-align" : string.Empty, action: () => hb.Field( context: context, column: column, issueModel: issueModel, ss: column.SiteSettings, controlOnly: true, idSuffix: issueModel.IdSuffix())); } else { hb.TdValue( context: context, ss: column.SiteSettings, column: column, issueModel: issueModel, serverScriptValues: serverScriptValues ?.Columns ?.Get(column?.ColumnName)); } break; case "Results": var resultModel = results.Get(key); if (resultModel == null) { resultModel = new ResultModel( context: context, ss: column.SiteSettings, dataRow: dataRow, formData: editRow ? formDataSet?.FirstOrDefault(o => o.Id == dataRow.Long("ResultId"))?.Data : null, tableAlias: column.TableAlias); results.Add(key, resultModel); ss.SetColumnAccessControls( context: context, mine: resultModel.Mine(context: context)); serverScriptValues = resultModel.SetByBeforeOpeningPageServerScript( context: context, ss: ss); } if (!resultModel.Locked && EditColumns.Get(column.ColumnName) && column.CanUpdate(baseModel: resultModel)) { hb.Td( css: column.TextAlign == SiteSettings.TextAlignTypes.Right ? " right-align" : string.Empty, action: () => hb.Field( context: context, column: column, resultModel: resultModel, ss: column.SiteSettings, controlOnly: true, idSuffix: resultModel.IdSuffix())); } else { hb.TdValue( context: context, ss: column.SiteSettings, column: column, resultModel: resultModel, serverScriptValues: serverScriptValues ?.Columns ?.Get(column?.ColumnName)); } break; } }); })); }
internal static string Create(CodeDefinition codeDefinition, DataContainer dataContainer) { var code = codeDefinition.FormattedCode(); foreach (var placeholder in code.RegexValues(CodePatterns.IdPlaceholder)) { var id = placeholder.RegexFirst(CodePatterns.Id); var codeChildDefinition = Def.CodeDefinitionCollection .FirstOrDefault(o => o.Id == id); if (codeChildDefinition != null) { Def.SetCodeDefinitionOption(placeholder, codeChildDefinition); var codeChildCollection = new List <string>(); switch (codeChildDefinition.RepeatType) { case "DefinitionFile": DefinitionFile.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "DefinitionRow": DefinitionRow.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "DefinitionColumn": DefinitionColumn.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "BaseModel": BaseModel.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "BaseItemModel": BaseItemModel.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "Table": Table.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "Column": Column.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "Join": Join.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "Form": Form.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; case "Display": Display.SetCodeCollection( codeChildDefinition, codeChildCollection, dataContainer); break; default: switch (dataContainer.Type) { case "DefinitionFile": DefinitionFile.SetCodeCollection_Default( codeChildDefinition, codeChildCollection, dataContainer); break; case "Table": Column.SetCodeCollection_Default( codeChildDefinition, codeChildCollection, dataContainer); break; default: break; } break; } code = CodeChildCollection( code, placeholder, codeChildDefinition, codeChildCollection); codeChildDefinition.RestoreBySavedMemory(); } else { Consoles.Write( DisplayAccessor.Displays.Get("DefinitionNotFound").Params( id, DefinitionFiles.CodeDefinitionFileName), Consoles.Types.Error, abort: true); } } ReplaceCode(ref code, dataContainer.TableName); return(code); }