Ejemplo n.º 1
0
 public static Message Unauthorized(params string[] data)
 {
     return(Get(Displays.Unauthorized(data), "alert-error"));
 }
Ejemplo n.º 2
0
        public async Task SeedData()
        {
            var displaySizeTypeOne = new Size()
            {
                Width  = 1920,
                Height = 1080
            };

            var displaySizeTypeTwo = new Size()
            {
                Width  = 1080,
                Height = 1920
            };


            //Displays of type one
            var display = new Display
            {
                DisplaySize = displaySizeTypeOne,
                Prices      = new List <DisplayTypePrice>()
            };

            display.Prices.Add(new DisplayTypePrice()
            {
                Price = 1,
                Type  = TypePrice.Cheap
            });
            display.Prices.Add(new DisplayTypePrice()
            {
                Price = 2,
                Type  = TypePrice.Normal
            });

            var display2 = new Display
            {
                DisplaySize = displaySizeTypeOne,
                Prices      = new List <DisplayTypePrice>(),
            };

            display2.Prices.Add(new DisplayTypePrice()
            {
                Price = 2,
                Type  = TypePrice.Cheap
            });
            display2.Prices.Add(new DisplayTypePrice()
            {
                Price = 4,
                Type  = TypePrice.Normal
            });

            var display3 = new Display
            {
                DisplaySize = displaySizeTypeOne,
                Prices      = new List <DisplayTypePrice>()
            };

            display3.Prices.Add(new DisplayTypePrice()
            {
                Price = 4,
                Type  = TypePrice.Cheap
            });
            display3.Prices.Add(new DisplayTypePrice()
            {
                Price = 8,
                Type  = TypePrice.Normal
            });


            //Displays of type two
            var display4 = new Display
            {
                DisplaySize = displaySizeTypeTwo,
                Prices      = new List <DisplayTypePrice>()
            };

            display4.Prices.Add(new DisplayTypePrice()
            {
                Price = 8,
                Type  = TypePrice.Cheap
            });
            display4.Prices.Add(new DisplayTypePrice()
            {
                Price = 10,
                Type  = TypePrice.Normal
            });

            var display5 = new Display
            {
                DisplaySize = displaySizeTypeTwo,
                Prices      = new List <DisplayTypePrice>()
            };

            display5.Prices.Add(new DisplayTypePrice()
            {
                Price = 10,
                Type  = TypePrice.Cheap
            });
            display5.Prices.Add(new DisplayTypePrice()
            {
                Price = 12,
                Type  = TypePrice.Normal
            });


            Displays.Add(display);
            Displays.Add(display2);
            Displays.Add(display3);
            Displays.Add(display4);
            Displays.Add(display5);

            await SaveChangesAsync();
        }
Ejemplo n.º 3
0
 public static HtmlBuilder Gantt(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     Column groupBy,
     Column sortBy,
     int period,
     DateTime startDate,
     GanttRange range,
     EnumerableRowCollection <DataRow> dataRows,
     bool inRange = true)
 {
     return(hb.Div(css: "both", action: () => hb
                   .FieldDropDown(
                       context: context,
                       controlId: "GanttGroupBy",
                       fieldCss: "field-auto-thin",
                       controlCss: " auto-postback",
                       labelText: Displays.GroupBy(),
                       optionCollection: ss.GanttGroupByOptions(),
                       selectedValue: groupBy?.ColumnName,
                       insertBlank: true,
                       method: "post")
                   .FieldDropDown(
                       context: context,
                       controlId: "GanttSortBy",
                       fieldCss: "field-auto-thin",
                       controlCss: " auto-postback",
                       labelText: Displays.SortBy(),
                       optionCollection: ss.GanttSortByOptions(context: context),
                       selectedValue: sortBy?.ColumnName,
                       insertBlank: true,
                       method: "post")
                   .Div(css: "field-auto-thin", action: () => hb
                        .FieldTextBox(
                            textType: HtmlTypes.TextTypes.DateTime,
                            fieldCss: "field-auto-thin",
                            controlId: "GanttStartDate",
                            controlCss: " w100 auto-postback",
                            labelText: Displays.StartDate(),
                            text: startDate.ToLocal().InRange()
                     ? startDate.ToLocal().ToString(
                                "d", Sessions.CultureInfo())
                     : string.Empty,
                            format: Displays.YmdDatePickerFormat(),
                            method: "post")
                        .Button(
                            controlId: "GanttPreviousButton",
                            text: Displays.Previous(),
                            controlCss: "button-icon",
                            accessKey: "b",
                            onClick: "$p.moveGantt('Previous');",
                            icon: "ui-icon-seek-prev")
                        .Button(
                            controlId: "GanttNextButton",
                            text: Displays.Next(),
                            controlCss: "button-icon",
                            accessKey: "n",
                            onClick: "$p.moveGantt('Next');",
                            icon: "ui-icon-seek-next")
                        .Button(
                            controlId: "GanttFirstDayButton",
                            text: Displays.FirstDay(),
                            controlCss: "button-icon",
                            onClick: "$p.moveGantt('FirstDay');",
                            icon: "ui-icon-calendar")
                        .Button(
                            controlId: "GanttTodayButton",
                            text: Displays.Today(),
                            controlCss: "button-icon",
                            onClick: "$p.moveGantt('Today');",
                            icon: "ui-icon-calendar"))
                   .FieldSlider(
                       controlId: "GanttPeriod",
                       fieldCss: "field-auto-thin",
                       controlCss: " auto-postback",
                       labelText: Displays.Period(),
                       min: Parameters.General.GanttPeriodMin,
                       max: range.Period,
                       step: 1,
                       value: period,
                       method: "post")
                   .Div(id: "GanttBody", action: () => hb
                        .GanttBody(
                            context: context,
                            ss: ss,
                            groupBy: groupBy,
                            sortBy: sortBy,
                            period: period,
                            startDate: startDate,
                            range: range,
                            dataRows: dataRows,
                            inRange: inRange))));
 }
Ejemplo n.º 4
0
        public static Dictionary <string, ControlData> DateFilterOptions(this Column column)
        {
            var hash = new Dictionary <string, ControlData>();
            var now  = DateTime.Now.ToLocal();
            var min  = Min(column, now);
            var max  = Max(column, now);
            var diff = 0;

            switch (column.ColumnName)
            {
            case "CompletionTime": diff = 1; break;
            }
            if (!column.Required)
            {
                hash.Add("\t", new ControlData(Displays.NotSet()));
            }
            if (column.DateFilterFy == true)
            {
                for (var m = min; m <= max; m += 12)
                {
                    SetFy(
                        hash,
                        now,
                        now.AddMonths(m),
                        column.RecordedTime,
                        diff);
                }
            }
            if (column.DateFilterHalf == true)
            {
                for (var m = min; m <= max; m += 6)
                {
                    SetHalf(
                        hash,
                        now,
                        now.AddMonths(m),
                        column.RecordedTime,
                        diff);
                }
            }
            if (column.DateFilterQuarter == true)
            {
                for (var m = min; m <= max; m += 3)
                {
                    SetQuarter(
                        hash,
                        now,
                        now.AddMonths(m),
                        column.RecordedTime,
                        diff);
                }
            }
            if (column.DateFilterMonth == true)
            {
                for (var m = min; m <= max; m++)
                {
                    SetMonth(
                        hash,
                        now,
                        now.AddMonths(m),
                        column.RecordedTime,
                        diff);
                }
            }
            return(hash);
        }
Ejemplo n.º 5
0
        public static HtmlBuilder Tr(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            List <Column> columns,
            DataRow dataRow,
            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");
            ServerScriptModelRow serverScriptRowValues = null;
            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>();

            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.ClearColumnAccessControlCaches(baseModel: issueModel);
                serverScriptRowValues = issueModel?.SetByBeforeOpeningRowServerScript(
                    context: context,
                    ss: ss);
                issues.Add("Issues", 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.ClearColumnAccessControlCaches(baseModel: resultModel);
                serverScriptRowValues = resultModel?.SetByBeforeOpeningRowServerScript(
                    context: context,
                    ss: ss);
                results.Add("Results", resultModel);
                break;
            }
            ;
            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));
                }
                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.ClearColumnAccessControlCaches(baseModel: deptModel);
                        }
                        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.ClearColumnAccessControlCaches(baseModel: groupModel);
                        }
                        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.ClearColumnAccessControlCaches(baseModel: registrationModel);
                        }
                        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.ClearColumnAccessControlCaches(baseModel: userModel);
                        }
                        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.ClearColumnAccessControlCaches(baseModel: siteModel);
                        }
                        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.ClearColumnAccessControlCaches(baseModel: issueModel);
                        }
                        if (!issueModel.Locked &&
                            !issueModel.ReadOnly &&
                            !isHistory &&
                            EditColumn(
                                context: context,
                                ss: ss,
                                column: column,
                                mine: issueModel.Mine(context: context)) &&
                            column.CanEdit(
                                context: context,
                                ss: ss,
                                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: serverScriptRowValues
                                ?.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.ClearColumnAccessControlCaches(baseModel: resultModel);
                        }
                        if (!resultModel.Locked &&
                            !resultModel.ReadOnly &&
                            !isHistory &&
                            EditColumn(
                                context: context,
                                ss: ss,
                                column: column,
                                mine: resultModel.Mine(context: context)) &&
                            column.CanEdit(
                                context: context,
                                ss: ss,
                                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: serverScriptRowValues
                                ?.Columns
                                ?.Get(column?.ColumnName));
                        }
                        break;
                    }
                });
            }));
        }
Ejemplo n.º 6
0
 public static ApiResponse Error(Error.Types type, params string[] data)
 {
     return(new ApiResponse(500, data?.Any() == true
         ? Displays.Get(type.ToString()).Params(data)
         : Displays.Get(type.ToString())));
 }
Ejemplo n.º 7
0
 public static ApiResponse Unauthorized()
 {
     return(new ApiResponse(401, Displays.Unauthorized()));
 }
Ejemplo n.º 8
0
 public static Message BulkMoved(params string[] data)
 {
     return(Get(Displays.BulkMoved(data), "alert-success"));
 }
Ejemplo n.º 9
0
 public static Message CanNotInherit(params string[] data)
 {
     return(Get(Displays.CanNotInherit(data), "alert-error"));
 }
Ejemplo n.º 10
0
 public static Message BadMailAddress(params string[] data)
 {
     return(Get(Displays.BadMailAddress(data), "alert-error"));
 }
Ejemplo n.º 11
0
 public static Message BadRequest(params string[] data)
 {
     return(Get(Displays.BadRequest(data), "alert-error"));
 }
Ejemplo n.º 12
0
 public static Message Authentication(params string[] data)
 {
     return(Get(Displays.Authentication(data), "alert-error"));
 }
Ejemplo n.º 13
0
 public static Message UsersLimit(params string[] data)
 {
     return(Get(Displays.UsersLimit(data), "alert-error"));
 }
Ejemplo n.º 14
0
 public static Message UpdateConflicts(params string[] data)
 {
     return(Get(Displays.UpdateConflicts(data), "alert-error"));
 }
Ejemplo n.º 15
0
 public static HtmlBuilder Crosstab(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     View view,
     Column groupByX,
     Column groupByY,
     List <Column> columns,
     string aggregateType,
     Column value,
     string timePeriod,
     DateTime month,
     EnumerableRowCollection <DataRow> dataRows,
     bool inRange = true)
 {
     return(hb.Div(id: "Crosstab", css: "both", action: () =>
     {
         hb
         .FieldDropDown(
             context: context,
             controlId: "CrosstabGroupByX",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.GroupByX(context: context),
             optionCollection: ss.CrosstabGroupByXOptions(context: context),
             selectedValue: view.CrosstabGroupByX,
             method: "post")
         .FieldDropDown(
             context: context,
             controlId: "CrosstabGroupByY",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.GroupByY(context: context),
             optionCollection: ss.CrosstabGroupByYOptions(context: context),
             selectedValue: view.CrosstabGroupByY,
             method: "post")
         .FieldDropDown(
             context: context,
             fieldId: "CrosstabColumnsField",
             controlId: "CrosstabColumns",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.NumericColumn(context: context),
             optionCollection: ss.CrosstabColumnsOptions(),
             selectedValue: view.CrosstabColumns,
             multiple: true,
             method: "post")
         .FieldDropDown(
             context: context,
             controlId: "CrosstabAggregateType",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.AggregationType(context: context),
             optionCollection: ss.CrosstabAggregationTypeOptions(context: context),
             selectedValue: aggregateType,
             method: "post")
         .FieldDropDown(
             context: context,
             fieldId: "CrosstabValueField",
             controlId: "CrosstabValue",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.AggregationTarget(context: context),
             optionCollection: ss.CrosstabColumnsOptions(),
             selectedValue: view.CrosstabValue,
             addSelectedValue: false,
             method: "post")
         .FieldDropDown(
             context: context,
             fieldId: "CrosstabTimePeriodField",
             controlId: "CrosstabTimePeriod",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.Period(context: context),
             optionCollection: ss.CrosstabTimePeriodOptions(context: context),
             selectedValue: view.CrosstabTimePeriod,
             method: "post")
         .DropDown(
             context: context,
             controlId: "CrosstabMonth",
             controlCss: " w100 auto-postback",
             optionCollection: CrosstabMonth(context: context),
             selectedValue: new DateTime(month.Year, month.Month, 1).ToString(),
             action: "Crosstab",
             method: "post")
         .Button(
             controlId: "CrosstabPreviousButton",
             text: Displays.Previous(context: context),
             controlCss: "button-icon",
             accessKey: "b",
             onClick: "$p.moveCrosstab('Previous');",
             icon: "ui-icon-seek-prev")
         .Button(
             controlId: "CrosstabNextButton",
             text: Displays.Next(context: context),
             controlCss: "button-icon",
             accessKey: "n",
             onClick: "$p.moveCrosstab('Next');",
             icon: "ui-icon-seek-next")
         .Button(
             controlId: "CrosstabThisMonthButton",
             text: Displays.ThisMonth(context: context),
             controlCss: "button-icon",
             accessKey: "n",
             onClick: "$p.moveCrosstab('ThisMonth');",
             icon: "ui-icon-Crosstab")
         .Div(id: "CrosstabBody", action: () =>
         {
             if (inRange)
             {
                 hb.CrosstabBody(
                     context: context,
                     ss: ss,
                     view: view,
                     groupByX: groupByX,
                     groupByY: groupByY,
                     columns: columns,
                     aggregateType: aggregateType,
                     value: value,
                     timePeriod: timePeriod,
                     month: month,
                     dataRows: dataRows);
             }
         });
     }));
 }
Ejemplo n.º 16
0
 public static Message CanNotPerformed(params string[] data)
 {
     return(Get(Displays.CanNotPerformed(data), "alert-error"));
 }
Ejemplo n.º 17
0
 public static HtmlBuilder Kamban(
     this HtmlBuilder hb,
     SiteSettings ss,
     View view,
     string groupByX,
     string groupByY,
     string aggregateType,
     string value,
     int?columns,
     bool aggregationView,
     IEnumerable <KambanElement> data,
     bool inRange)
 {
     return(hb.Div(id: "Kamban", css: "both", action: () =>
     {
         hb
         .FieldDropDown(
             controlId: "KambanGroupByX",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.GroupByX(),
             optionCollection: ss.KambanGroupByOptions(),
             selectedValue: groupByX,
             method: "post")
         .FieldDropDown(
             controlId: "KambanGroupByY",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.GroupByY(),
             optionCollection: ss.KambanGroupByOptions(),
             selectedValue: groupByY,
             insertBlank: true,
             method: "post")
         .FieldDropDown(
             controlId: "KambanAggregateType",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.AggregationType(),
             optionCollection: ss.KambanAggregationTypeOptions(),
             selectedValue: aggregateType,
             method: "post")
         .FieldDropDown(
             fieldId: "KambanValueField",
             controlId: "KambanValue",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.AggregationTarget(),
             optionCollection: ss.KambanValueOptions(),
             selectedValue: value,
             method: "post")
         .FieldDropDown(
             controlId: "KambanColumns",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.MaxColumns(),
             optionCollection: Enumerable.Range(
                 Parameters.General.KambanMinColumns,
                 Parameters.General.KambanMaxColumns)
             .ToDictionary(o => o.ToString(), o => o.ToString()),
             selectedValue: columns?.ToString(),
             method: "post")
         .FieldCheckBox(
             controlId: "KambanAggregationView",
             fieldCss: "field-auto-thin",
             controlCss: " auto-postback",
             labelText: Displays.AggregationView(),
             _checked: aggregationView,
             method: "post")
         .KambanBody(
             ss: ss,
             view: view,
             groupByX: ss.GetColumn(groupByX),
             groupByY: ss.GetColumn(groupByY),
             aggregateType: aggregateType,
             value: ss.GetColumn(value),
             columns: columns,
             aggregationView: aggregationView,
             data: data,
             inRange: inRange);
     }));
 }
Ejemplo n.º 18
0
        public static HtmlBuilder Breadcrumb(
            this HtmlBuilder hb, Context context, SiteSettings ss, View view, bool _using)
        {
            if ((!context.Authenticated && !context.Publish) || !_using)
            {
                return(hb);
            }
            switch (context.Controller)
            {
            case "admins":
                return(Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller));

            case "depts":
                return(Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Depts(context: context)));

            case "tenants":
                return(Permissions.CanManageTenant(context: context)
                        ? Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Tenants(context: context),
                           action: "Edit")
                        : (context.UserSettings?.EnableManageTenant == true)
                            ? BreadcrumbWithoutAdmins(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Tenants(context: context),
                           action: "Edit")
                            : Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss));

            case "groups":
                return(Permissions.CanManageTenant(context: context)
                        ? Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Groups(context: context))
                        : Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss));

            case "users":
                switch (context.Action)
                {
                case "editapi":
                    return(hb.Breadcrumb(
                               context: context,
                               ss: ss,
                               data: new Dictionary <string, string>
                    {
                        {
                            Locations.Get(
                                context: context,
                                parts: new string[]
                            {
                                "Users",
                                "EditApi"
                            }),
                            Displays.ApiSettings(context: context)
                        }
                    }));

                default:
                    return(Permissions.CanManageTenant(context: context)
                                ? Breadcrumb(
                               hb: hb,
                               context: context,
                               ss: ss,
                               controller: context.Controller,
                               display: Displays.Users(context: context))
                                : Breadcrumb(
                               hb: hb,
                               context: context,
                               ss: ss));
                }

            case "registrations":
                return(Permissions.CanManageTenant(context: context)
                        ? Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss,
                           controller: context.Controller,
                           display: Displays.Registrations(context: context))
                        : Breadcrumb(
                           hb: hb,
                           context: context,
                           ss: ss));

            case "publishes":
            case "items":
                return(hb
                       .CopyDirectUrlToClipboard(
                           context: context,
                           view: view)
                       .Breadcrumb(
                           context: context,
                           ss: ss));

            case "permissions":
                return(hb.Breadcrumb(context: context, ss: ss));

            default:
                return(hb);
            }
        }
Ejemplo n.º 19
0
 public static ApiResponse BadRequest()
 {
     return(new ApiResponse(400, Displays.BadRequest()));
 }
Ejemplo n.º 20
0
        public static string AdminsIndex(this HtmlBuilder hb, Context context)
        {
            if (!Permissions.CanManageTenant(context: context))
            {
                return(HtmlTemplates.Error(
                           context: context,
                           errorType: Error.Types.HasNotPermission));
            }
            var ss = new SiteSettings();

            return(hb.Template(
                       context: context,
                       ss: ss,
                       view: null,
                       methodType: Pleasanter.Models.BaseModel.MethodTypes.NotSet,
                       title: Displays.Admin(context: context),
                       verType: Versions.VerTypes.Latest,
                       useNavigationMenu: false,
                       action: () => hb
                       .Nav(css: "cf", action: () => hb
                            .Ul(css: "nav-sites", action: () => hb
                                .Li(css: "nav-site", action: () => hb
                                    .A(
                                        attributes: new HtmlAttributes()
                                        .Href(Locations.Edit(
                                                  context: context,
                                                  controller: "Tenants")),
                                        action: () => hb
                                        .Div(action: () => hb
                                             .Text(Displays.Tenants(context: context)))
                                        .StackStyles()),
                                    _using: Permissions.CanManageTenant(context))
                                .Li(css: "nav-site", action: () => hb
                                    .A(
                                        attributes: new HtmlAttributes()
                                        .Href(Locations.Index(
                                                  context: context,
                                                  controller: "Depts")),
                                        action: () => hb
                                        .Div(action: () => hb
                                             .Text(Displays.Depts(context: context)))
                                        .StackStyles()))
                                .Li(css: "nav-site", action: () => hb
                                    .A(
                                        attributes: new HtmlAttributes()
                                        .Href(Locations.Index(
                                                  context: context,
                                                  controller: "Groups")),
                                        action: () => hb
                                        .Div(action: () => hb
                                             .Text(Displays.Groups(context: context)))
                                        .StackStyles()))
                                .Li(css: "nav-site", action: () => hb
                                    .A(
                                        attributes: new HtmlAttributes()
                                        .Href(Locations.Index(
                                                  context: context,
                                                  controller: "Users")),
                                        action: () => hb
                                        .Div(action: () => hb
                                             .Text(Displays.Users(context: context)))
                                        .StackStyles()))
                                ))
                       .MainCommands(
                           context: context,
                           ss: ss,
                           siteId: 0,
                           verType: Versions.VerTypes.Latest))
                   .ToString());
        }
Ejemplo n.º 21
0
 public static ApiResponse NotFound()
 {
     return(new ApiResponse(404, Displays.NotFound()));
 }
Ejemplo n.º 22
0
 public static HtmlBuilder DropDownSearchDialog(
     this HtmlBuilder hb, Context context, long id)
 {
     return(hb.Div(
                attributes: new HtmlAttributes()
                .Id("DropDownSearchDialog")
                .Class("dialog"),
                action: () => hb
                .Form(
                    attributes: new HtmlAttributes()
                    .Id("DropDownSearchDialogForm")
                    .Action(Locations.ItemAction(
                                context: context,
                                id: id)),
                    action: () => hb
                    .FieldSelectable(
                        controlId: "DropDownSearchResults",
                        fieldCss: "field-vertical w600",
                        controlContainerCss: "container-selectable",
                        controlWrapperCss: " h300",
                        commandOptionPositionIsTop: true,
                        commandOptionAction: () => hb
                        .Div(css: "command-left", action: () => hb
                             .TextBox(
                                 controlId: "DropDownSearchText",
                                 controlCss: " auto-postback always-send w200",
                                 action: "SearchDropDown",
                                 method: "post")
                             .Button(
                                 text: Displays.Search(context: context),
                                 controlCss: "button-icon",
                                 onClick: "$p.send($('#DropDownSearchText'));",
                                 icon: "ui-icon-search")))
                    .Hidden(
                        controlId: "DropDownSearchTarget",
                        css: "always-send")
                    .Hidden(
                        controlId: "DropDownSearchOnEditor",
                        css: "always-send")
                    .Hidden(
                        controlId: "DropDownSearchMultiple",
                        css: "always-send")
                    .Hidden(
                        controlId: "DropDownSearchResultsOffset",
                        value: "0",
                        css: "always-send")
                    .Hidden(
                        controlId: "DropDownSearchParentClass",
                        value: "",
                        css: "always-send")
                    .Hidden(
                        controlId: "DropDownSearchParentDataId",
                        value: "0",
                        css: "always-send")
                    .P(css: "message-dialog")
                    .Div(css: "command-center", action: () => hb
                         .Button(
                             text: Displays.Select(context: context),
                             controlCss: "button-icon",
                             onClick: "$p.send($(this));",
                             icon: "ui-icon-disk",
                             action: "SelectSearchDropDown",
                             method: "post")
                         .Button(
                             text: Displays.Cancel(context: context),
                             controlCss: "button-icon",
                             onClick: "$p.closeDialog($(this));",
                             icon: "ui-icon-cancel")))));
 }
Ejemplo n.º 23
0
 public static HtmlBuilder GridHeader(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     IEnumerable <Column> columns,
     View view     = null,
     bool sort     = true,
     bool editRow  = false,
     bool checkRow = true,
     bool checkAll = false,
     string action = "GridRows")
 {
     return(hb.Tr(
                css: "ui-widget-header",
                action: () =>
     {
         if (editRow)
         {
             hb.Th(
                 action: () =>
             {
                 if (editRow && context.CanCreate(ss: ss))
                 {
                     hb.Button(
                         title: Displays.New(context: context),
                         controlCss: "button-icon",
                         onClick: "$p.newOnGrid($(this));",
                         icon: "ui-icon-plus",
                         action: "NewOnGrid",
                         method: "post");
                 }
             });
         }
         else if (checkRow)
         {
             hb.Th(action: () => hb
                   .CheckBox(
                       controlId: "GridCheckAll",
                       _checked: checkAll));
         }
         columns.ForEach(column =>
         {
             if (sort)
             {
                 hb.Th(
                     css: column.CellCss(css: "sortable"),
                     attributes: new HtmlAttributes()
                     .DataName(column.ColumnName),
                     action: () => hb
                     .Div(
                         attributes: new HtmlAttributes()
                         .DataId("ViewSorters__" + column.ColumnName)
                         .Add("data-order-type", OrderBy(
                                  view, column.ColumnName))
                         .DataAction(action)
                         .DataMethod("post"),
                         action: () => hb
                         .Span(action: () => hb
                               .Text(text: Displays.Get(
                                         context: context,
                                         id: column.GridLabelText)))
                         .SortIcon(
                             view: view,
                             key: column.ColumnName)));
             }
             else
             {
                 hb.Th(
                     css: column.CellCss(),
                     action: () => hb
                     .Text(text: Displays.Get(
                               context: context,
                               id: column.GridLabelText)));
             }
         });
     }));
 }
Ejemplo n.º 24
0
        private static HtmlBuilder Columns(
            this HtmlBuilder hb, Context context, SiteSettings ss, View view)
        {
            ss.GetFilterColumns(context: context, checkPermission: true).ForEach(column =>
            {
                switch (column.TypeName.CsTypeSummary())
                {
                case Types.CsBool:
                    hb.CheckBox(
                        context: context,
                        ss: ss,
                        column: column,
                        view: view);
                    break;

                case Types.CsNumeric:
                    hb.DropDown(
                        context: context,
                        ss: ss,
                        column: column,
                        view: view,
                        optionCollection: column.HasChoices()
                                ? column.EditChoices(addNotSet: true)
                                : column.NumFilterOptions());
                    break;

                case Types.CsDateTime:
                    hb.DropDown(
                        context: context,
                        ss: ss,
                        column: column,
                        view: view,
                        optionCollection: column.DateFilterOptions());
                    break;

                case Types.CsString:
                    if (column.HasChoices())
                    {
                        var currentSs = column.SiteSettings;
                        if (view.ColumnFilterHash?.ContainsKey(column.ColumnName) == true &&
                            column.UseSearch == true &&
                            currentSs.Links?.Any(o =>
                                                 o.ColumnName == column.ColumnName) == true)
                        {
                            currentSs.SetChoiceHash(
                                context: context,
                                columnName: column?.ColumnName,
                                selectedValues: view.ColumnFilter(column.ColumnName)
                                .Deserialize <List <string> >());
                        }
                        hb.DropDown(
                            context: context,
                            ss: ss,
                            column: column,
                            view: view,
                            optionCollection: column.EditChoices(addNotSet: true));
                    }
                    else if (Visible(column))
                    {
                        hb.FieldTextBox(
                            controlId: "ViewFilters__" + column.ColumnName,
                            fieldCss: "field-auto-thin",
                            controlCss: " auto-postback",
                            labelText: Displays.Get(column.GridLabelText),
                            labelTitle: ss.LabelTitle(column),
                            text: view.ColumnFilter(column.ColumnName),
                            method: "post");
                    }
                    break;

                default:
                    break;
                }
            });
            return(hb);
        }
Ejemplo n.º 25
0
        private void Notice(Context context, SiteSettings ss, string type)
        {
            var url = Locations.ItemEditAbsoluteUri(WikiId);

            ss.Notifications.Where(o => o.Enabled).ForEach(notification =>
            {
                if (notification.HasRelatedUsers())
                {
                    var users = new List <long>();
                    Rds.ExecuteTable(
                        context: context,
                        statements: Rds.SelectWikis(
                            tableType: Sqls.TableTypes.All,
                            distinct: true,
                            column: Rds.WikisColumn()
                            .Creator()
                            .Updator(),
                            where : Rds.WikisWhere().WikiId(WikiId)))
                    .AsEnumerable()
                    .ForEach(dataRow =>
                    {
                        users.Add(dataRow.Long("Creator"));
                        users.Add(dataRow.Long("Updator"));
                    });
                    notification.ReplaceRelatedUsers(
                        context: context,
                        users: users);
                }
                switch (type)
                {
                case "Created":
                    notification.Send(
                        context: context,
                        ss: ss,
                        title: Displays.Created(Title.DisplayValue).ToString(),
                        url: url,
                        body: NoticeBody(
                            context: context, ss: ss, notification: notification));
                    break;

                case "Updated":
                    var body = NoticeBody(
                        context: context, ss: ss, notification: notification, update: true);
                    if (body.Length > 0)
                    {
                        notification.Send(
                            context: context,
                            ss: ss,
                            title: Displays.Updated(Title.DisplayValue).ToString(),
                            url: url,
                            body: body);
                    }
                    break;

                case "Deleted":
                    notification.Send(
                        context: context,
                        ss: ss,
                        title: Displays.Deleted(Title.DisplayValue).ToString(),
                        url: url,
                        body: NoticeBody(
                            context: context, ss: ss, notification: notification));
                    break;
                }
            });
        }
Ejemplo n.º 26
0
        public static HtmlBuilder Attachments(
            this HtmlBuilder hb,
            Context context,
            string controlId      = null,
            string columnName     = null,
            string controlCss     = null,
            string value          = null,
            string placeholder    = null,
            bool readOnly         = false,
            bool allowBulkUpdate  = false,
            bool validateRequired = false,
            Dictionary <string, string> attributes = null,
            bool preview = false,
            bool _using  = true)
        {
            if (preview)
            {
                controlId = Strings.NewGuid();
            }
            var attachments = value.Deserialize <Attachments>();

            return(_using
                ? hb
                   .Hidden(
                       controlId: controlId,
                       css: "control-attachments",
                       value: value)
                   .Div(
                       id: columnName + ".upload",
                       css: "control-attachments-upload",
                       attributes: new HtmlAttributes()
                       .DataName(columnName)
                       .DataAction("binaries/multiupload"),
                       action: () => hb
                       .Text(text: Displays.FileDragDrop(context: context))
                       .Input(
                           id: columnName + ".input",
                           attributes: new HtmlAttributes()
                           .Class("hidden")
                           .Type("file")
                           .Multiple(true)),
                       _using: !readOnly && !preview)
                   .Div(
                       id: columnName + ".items",
                       css: "control-attachments-items",
                       action: () => attachments?
                       .ForEach(item => hb
                                .AttachmentItem(
                                    context: context,
                                    controlId: controlId,
                                    guid: item.Guid,
                                    css: item.Added == true
                                        ? string.Empty
                                        : item.Deleted == true
                                            ? "already-attachments preparation-delete "
                                            : "already-attachments ",
                                    fileName: item.Name,
                                    displaySize: item.DisplaySize(),
                                    added: item.Added,
                                    deleted: item.Deleted,
                                    readOnly: readOnly)))
                   .Div(
                       id: columnName + ".status",
                       attributes: new HtmlAttributes()
                       .Style("display: none; "),
                       action: () => hb
                       .Div(
                           id: columnName + ".progress",
                           css: "progress-bar",
                           action: () => hb
                           .Div())
                       .Div(
                           id: columnName + ".abort",
                           css: "abort",
                           action: () => hb
                           .Text(text: Displays.Cancel(context: context))),
                       _using: !readOnly)
                : hb);
        }
Ejemplo n.º 27
0
        private static HtmlBuilder NavigationMenu(
            this HtmlBuilder hb,
            SiteSettings ss,
            long siteId,
            string referenceType,
            bool useNavigationMenu)
        {
            var canManageGroups = Sessions.UserSettings().DisableGroupAdmin != true;
            var canManageSite   = siteId != 0 && ss.CanManageSite(site: true);
            var canManageDepts  = Permissions.CanManageTenant();
            var canManageUsers  = Permissions.CanManageTenant();

            return(hb.Ul(
                       id: "NavigationMenu",
                       action: () => hb
                       .Li(
                           action: () => hb
                           .Div(action: () => hb
                                .A(
                                    href: NewHref(ss),
                                    attributes: SiteIndex(ss)
                                        ? new HtmlAttributes()
                                    .OnClick("$p.templates($(this));")
                                    .DataAction("Templates")
                                    .DataMethod("post")
                                        : null,
                                    action: () => hb
                                    .Span(css: "ui-icon ui-icon-plus")
                                    .Text(text: Displays.New()))),
                           _using: ss.ReferenceType == "Sites" && Routes.Action() == "index"
                            ? ss.CanManageSite()
                            : ss.CanCreate() && ss.ReferenceType != "Wikis")
                       .Li(
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("ViewModeMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-triangle-1-e")
                               .Text(text: Displays.View()))
                           .ViewModeMenu(ss: ss),
                           _using: Def.ViewModeDefinitionCollection
                           .Any(o => o.ReferenceType == referenceType))
                       .Li(
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("SettingsMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-gear")
                               .Text(text: Displays.Manage()))
                           .SettingsMenu(
                               ss: ss,
                               siteId: siteId,
                               canManageSite: canManageSite,
                               canManageDepts: canManageDepts,
                               canManageGroups: canManageGroups,
                               canManageUsers: canManageUsers),
                           _using:
                           canManageSite ||
                           canManageDepts ||
                           canManageGroups ||
                           canManageUsers)
                       .Li(
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("AccountMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-person")
                               .Text(text: SiteInfo.UserName((
                                                                 Sessions.UserId()))))
                           .AccountMenu())));
        }
Ejemplo n.º 28
0
        private static HtmlBuilder LinkTable(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            View view,
            EnumerableRowCollection <DataRow> dataRows,
            string direction,
            string dataTableName)
        {
            ss.SetChoiceHash(dataRows: dataRows);
            return(hb.Table(
                       id: dataTableName,
                       css: "grid",
                       attributes: new HtmlAttributes()
                       .DataId(ss.SiteId.ToString())
                       .DataName(direction)
                       .DataValue("back")
                       .DataAction("LinkTable")
                       .DataMethod("post"),
                       action: () =>
            {
                var siteMenu = SiteInfo.TenantCaches.Get(context.TenantId)?.SiteMenu;
                if (dataRows != null && dataRows.Any())
                {
                    ss.SetColumnAccessControls(context: context);
                    var columns = ss.GetLinkTableColumns(
                        context: context,
                        view: view,
                        checkPermission: true);
                    switch (ss.ReferenceType)
                    {
                    case "Issues":
                        var issueCollection = new IssueCollection(
                            context: context,
                            ss: ss,
                            dataRows: dataRows);
                        issueCollection.SetLinks(context: context, ss: ss);
                        hb
                        .Caption(caption: "{0} : {1} - {2} {3}".Params(
                                     Caption(
                                         context: context,
                                         direction: direction),
                                     siteMenu.Breadcrumb(context: context, siteId: ss.SiteId)
                                     .Select(o => o.Title)
                                     .Join(" > "),
                                     Displays.Quantity(context: context),
                                     dataRows.Count()))
                        .THead(action: () => hb
                               .GridHeader(
                                   context: context,
                                   ss: ss,
                                   columns: columns,
                                   view: view,
                                   sort: true,
                                   checkRow: false,
                                   action: "LinkTable"))
                        .TBody(action: () => issueCollection
                               .ForEach(issueModel =>
                        {
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: issueModel.Mine(context: context));
                            hb.Tr(
                                attributes: new HtmlAttributes()
                                .Class("grid-row")
                                .DataId(issueModel.IssueId.ToString()),
                                action: () => columns
                                .ForEach(column => hb
                                         .TdValue(
                                             context: context,
                                             ss: ss,
                                             column: column,
                                             issueModel: issueModel)));
                        }));
                        break;

                    case "Results":
                        var resultCollection = new ResultCollection(
                            context: context,
                            ss: ss,
                            dataRows: dataRows);
                        resultCollection.SetLinks(context: context, ss: ss);
                        hb
                        .Caption(caption: "{0} : {1} - {2} {3}".Params(
                                     Caption(
                                         context: context,
                                         direction: direction),
                                     siteMenu.Breadcrumb(context: context, siteId: ss.SiteId)
                                     .Select(o => o.Title)
                                     .Join(" > "),
                                     Displays.Quantity(context: context),
                                     dataRows.Count()))
                        .THead(action: () => hb
                               .GridHeader(
                                   context: context,
                                   ss: ss,
                                   columns: columns,
                                   view: view,
                                   sort: true,
                                   checkRow: false,
                                   action: "LinkTable"))
                        .TBody(action: () => resultCollection
                               .ForEach(resultModel =>
                        {
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: resultModel.Mine(context: context));
                            hb.Tr(
                                attributes: new HtmlAttributes()
                                .Class("grid-row")
                                .DataId(resultModel.ResultId.ToString()),
                                action: () => columns
                                .ForEach(column => hb
                                         .TdValue(
                                             context: context,
                                             ss: ss,
                                             column: column,
                                             resultModel: resultModel)));
                        }));
                        break;
                    }
                }
            }));
        }
Ejemplo n.º 29
0
 public static ApiResponse BadRequest(IContext context)
 {
     return(new ApiResponse(400, Displays.BadRequest(context: context)));
 }
Ejemplo n.º 30
0
 public static Message TooManyRowCases(params string[] data)
 {
     return(Get(Displays.TooManyRowCases(data), "alert-error"));
 }