public override object Process(TagHelper tag, DefaultTemplates defaults)
        {
            var    colTag = tag as ColumnBaseTagHelper;
            Column res    = tag is ColumnTagHelper ?
                            new Column((colTag as ColumnTagHelper).For, DisplayTemplate, EditTemplate):
                            new Column((colTag as CustomColumnTagHelper).Name, DisplayTemplate, EditTemplate);

            res.FilterTemplate         = FilterTemplate;
            res.Description            = colTag.Description;
            res.ColumnTitle            = colTag.ColumnTitle;
            res.DisplayFormat          = colTag.DisplayFormat;
            res.EditOnly               = colTag.EditOnly;
            res.Hidden                 = colTag.Hidden;
            res.NullDisplayText        = colTag.NullDisplayText;
            res.Order                  = colTag.ColumnOrder;
            res.PlaceHolder            = colTag.PlaceHolder;
            res.ReadOnly               = colTag.ReadOnly;
            res.Widths                 = colTag.Widths;
            res.DetailWidths           = colTag.DetailWidths;
            res.ColumnCssClass         = colTag.ColumnCssClass;
            res.ColSpan                = colTag.ColSpan;
            res.InputCssClass          = colTag.InputCssClass;
            res.CheckboxCssClass       = colTag.CheckboxCssClass;
            res.InputDetailCssClass    = colTag.InputDetailCssClass;
            res.CheckboxDetailCssClass = colTag.CheckboxDetailCssClass;
            res.ColumnConnection       = ColumnConnection;
            if (tag is ColumnTagHelper)
            {
                res.Queries = (tag as ColumnTagHelper).Queries;
            }
            return(res);
        }
        public DefaultTemplates GetDefaultTemplates(string tagName)
        {
            DefaultTemplates res = null;

            allTagDefaultTemplates.TryGetValue(tagName, out res);
            return(res);
        }
Exemple #3
0
 public ReductionContext(int token, int subToken, DefaultTemplates defaults, bool rowParsingDisabled = false)
 {
     Results            = new List <ReductionResult>();
     CurrentToken       = token;
     CurrentSubtoken    = subToken;
     Defaults           = defaults;
     RowParsingDisabled = rowParsingDisabled;
 }
Exemple #4
0
 void EnableResidentMenuCheckbox(SarcData sarc)
 {
     if (cb11Compat.Tag != null)
     {
         return;
     }
     if (sarc == null)
     {
         return;
     }
     cb11Compat.Visible = (DefaultTemplates.GetFor(sarc)?.NXThemeName ?? "home") == "home";
     cb11Compat.Checked = true;
     cb11Compat.Tag     = "checked";
 }
Exemple #5
0
        public override object Process(TagHelper tag, DefaultTemplates defaults)
        {
            var rowTag     = tag as RowTypeTagHelper;
            var expression = rowTag.For;

            if (this is RowContainerCollector && expression.Metadata.IsEnumerableType)
            {
                var explorer = expression.ModelExplorer.GetExplorerForExpression(expression.Metadata.ElementMetadata, null);
                expression = new ModelExpression(string.Empty, explorer);
            }
            var     keyName = rowTag.KeyName != null ? rowTag.KeyName.Metadata.PropertyName : null;
            RowType result  = null;

            if (inherit != null)
            {
                result = new RowType(expression, inherit.Value,
                                     defaults.IsDetail,
                                     Columns,
                                     RemoveColumns,
                                     defaults.RenderHiddenFields, rowTag.QueryEnabled);
            }
            else if (Columns != null || rowTag.AllProperties)
            {
                result = new RowType(expression, keyName, defaults.IsDetail,
                                     Columns, rowTag.AllProperties, RemoveColumns, defaults.RenderHiddenFields, rowTag.QueryEnabled);
            }
            else
            {
                return(null);
            }
            result.RequiredFunctionalities       = rowTag.RequiredFunctionalities;
            result.ClientRequiredFunctionalities = rowTag.ClientRequiredFunctionalities;
            result.CustomButtons           = rowTag.CustomButtons;
            result.RowCssClass             = rowTag.RowCssClass;
            result.LocalizationType        = rowTag.LocalizationType;
            result.InputCssClass           = rowTag.InputCssClass;
            result.CheckboxCssClass        = rowTag.CheckboxCssClass;
            result.DisplayTemplate         = DisplayTemplate;
            result.EditTemplate            = EditTemplate;
            result.FilterTemplate          = FilterTemplate;
            result.SortingTemplate         = SortingTemplate;
            result.GroupingTemplate        = GroupingTemplate;
            result.ControllerType          = rowTag.ControllerType;
            result.RowId                   = rowTag.RowId;
            result.MaxSortingClauses       = rowTag.MaxSortingClauses;
            result.DefaultLocalizerFactory = rowTag.DefaultLocalizerFactory;
            return(result);
        }
        static DefaultServerControlsTagHelpersProvider()
        {
            allTagProcessors["grid-batch"] =
            allTagProcessors["grid-immediate"] =
                (tc, to, th, tpo, ctx) =>
                {
                    return new DefaultServerGridProcessor(tc, to, th as GridTagHelper, tpo as GridOptions, ctx).Process();
                };
            allTagDefaultTemplates["grid-immediate"] = new DefaultTemplates(
                false,
                basicDisplayColumn,
                new Template<Column>(TemplateType.Partial, "DefaultColumnEditTemplate"),
                new Template<RowType>(TemplateType.Partial, "DefaultGridRowDisplayTemplate"),
                new Template<RowType>(TemplateType.Partial, "DefaultGridRowEditTemplate"),
                new Template<LayoutTemplateOptions>(TemplateType.Partial, "DefaultGridLayoutTemplate"),
                new Template<LayoutTemplateOptions>[] { new Template<LayoutTemplateOptions>(TemplateType.Partial, "DefaultGridHeaderTemplate") },
                DefaultServerGridProcessor.RenderHiddenFields
                );
            allTagDefaultTemplates["grid-batch"] = new DefaultTemplates(
                false,
                basicDisplayColumn,
                new Template<Column>(TemplateType.Partial, "DefaultColumnEditTemplate"),
                new Template<RowType>(TemplateType.Partial, "DefaultGridRowDisplayTemplate"),
                new Template<RowType>(TemplateType.Partial, "DefaultEditOnlyGridRowTemplate"),
                new Template<LayoutTemplateOptions>(TemplateType.Partial, "DefaultGridLayoutTemplate"),
                new Template<LayoutTemplateOptions>[] { new Template<LayoutTemplateOptions>(TemplateType.Partial, "DefaultEditOnlyGridHeaderTemplate") },
                DefaultServerGridProcessor.RenderHiddenFields
                );

            allTagProcessors["detail-form"] =
                (tc, to, th, tpo, ctx) =>
                {
                    return new DefaultServerDetailProcessor(tc, to, th as DetailTagHelper, tpo as GridOptions, ctx).Process();
                };
            allTagDefaultTemplates["detail-form"] = new DefaultTemplates(
                true,
                new Template<Column>(TemplateType.Partial, "DefaultDetailColumnDisplayTemplate"),
                new Template<Column>(TemplateType.Partial, "DefaultDetailColumnEditTemplate"),
                new Template<RowType>(TemplateType.Partial, "DefaultDetailRowDisplayTemplate"),
                new Template<RowType>(TemplateType.Partial, "DefaultDetailRowEditTemplate"),
                new Template<LayoutTemplateOptions>(TemplateType.Partial, "DefaultDetailLayoutTemplate"),
                null,
                DefaultServerGridProcessor.RenderHiddenFields
                );
            allTagProcessors["autocomplete"] =
                (tc, to, th, tpo, ctx) =>
                {
                    return new DefaultServerAutocompleteProcessor(tc, to, th as AutocompleteTagHelper, tpo as AutocompleteOptions).Process();
                };
            allTagProcessors["pager"] =
                (tc, to, th, tpo, ctx) =>
                {
                    return new DefaultServerPagerProcessor(tc, to, th as PagerTagHelper, tpo as PagerOptions, ctx).Process();
                };
            allTagDefaultTemplates["pager"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                null,
                new Template<LayoutTemplateOptions>(TemplateType.Partial, "DefaultPagerTemplate"),
                null,
                null
                );
            DefineButtonProperies();
            addExtensions();
        }
Exemple #7
0
        public override object Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelper tag, DefaultTemplates defaults)
        {
            var first = ctx.RowParsingDisabled? null : base.Process(tag, defaults);

            if (first != null)
            {
                if ((first as RowType).RowId == null)
                {
                    (first as RowType).RowId = RowType.DefaultIdBase;
                }
                if (Rows == null)
                {
                    addRow(first as RowType);
                }
                else
                {
                    int j = 1;
                    foreach (var row in Rows)
                    {
                        row.ControllerType          = row.ControllerType ?? (first as RowType).ControllerType;
                        row.RequiredFunctionalities = row.RequiredFunctionalities ?? (first as RowType).RequiredFunctionalities;
                        row.LocalizationType        = row.LocalizationType ?? (first as RowType).LocalizationType;
                        row.RowCssClass             = row.RowCssClass ?? (first as RowType).RowCssClass;
                        row.InputCssClass           = row.InputCssClass ?? (first as RowType).InputCssClass;
                        row.CheckboxCssClass        = row.CheckboxCssClass ?? (first as RowType).CheckboxCssClass;
                        if (row.RowId == null)
                        {
                            row.RowId = (first as RowType).RowId + j;
                        }
                        if (!row.QueryEnabled.HasValue)
                        {
                            row.QueryEnabled = (first as RowType).QueryEnabled;
                        }
                        j++;
                    }
                    Rows.Insert(0, first as RowType);
                }
            }
            uint i = 0;

            if (Rows != null)
            {
                foreach (var row in Rows)
                {
                    row.RowInit(Rows);
                    foreach (var col in row.Columns)
                    {
                        if (col.EditTemplate == null)
                        {
                            col.EditTemplate = defaults.EColumnTemplate;
                        }
                        if (col.DisplayTemplate == null)
                        {
                            col.DisplayTemplate = defaults.DColumnTemplate;
                        }
                    }
                    row.Order = i++;
                }
            }
            return(Tuple.Create(Rows, Toolbars));
        }
        static DefaultServerControlsTagHelpersProvider()
        {
            allTagProcessors["grid-batch"]         =
                allTagProcessors["grid-immediate"] =
                    (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerGridProcessor(tc, to, th as GridTagHelper, tpo as GridOptions, ctx).Process());
            };
            allTagDefaultTemplates["grid-immediate"] = new DefaultTemplates(
                false,
                basicDisplayColumn,
                new Template <Column>(TemplateType.Partial, "DefaultColumnEditTemplate"),
                new Template <RowType>(TemplateType.Partial, "DefaultGridRowDisplayTemplate"),
                new Template <RowType>(TemplateType.Partial, "DefaultGridRowEditTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "DefaultGridLayoutTemplate"),
                new Template <LayoutTemplateOptions>[] { new Template <LayoutTemplateOptions>(TemplateType.Partial, "DefaultGridHeaderTemplate") },
                DefaultServerGridProcessor.RenderHiddenFields
                );
            allTagDefaultTemplates["grid-batch"] = new DefaultTemplates(
                false,
                basicDisplayColumn,
                new Template <Column>(TemplateType.Partial, "DefaultColumnEditTemplate"),
                new Template <RowType>(TemplateType.Partial, "DefaultGridRowDisplayTemplate"),
                new Template <RowType>(TemplateType.Partial, "DefaultEditOnlyGridRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "DefaultGridLayoutTemplate"),
                new Template <LayoutTemplateOptions>[] { new Template <LayoutTemplateOptions>(TemplateType.Partial, "DefaultEditOnlyGridHeaderTemplate") },
                DefaultServerGridProcessor.RenderHiddenFields
                );

            allTagProcessors["detail-form"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerDetailProcessor(tc, to, th as DetailTagHelper, tpo as GridOptions, ctx).Process());
            };
            allTagDefaultTemplates["detail-form"] = new DefaultTemplates(
                true,
                new Template <Column>(TemplateType.Partial, "DefaultDetailColumnDisplayTemplate"),
                new Template <Column>(TemplateType.Partial, "DefaultDetailColumnEditTemplate"),
                new Template <RowType>(TemplateType.Partial, "DefaultDetailRowDisplayTemplate"),
                new Template <RowType>(TemplateType.Partial, "DefaultDetailRowEditTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "DefaultDetailLayoutTemplate"),
                null,
                DefaultServerGridProcessor.RenderHiddenFields
                );
            allTagProcessors["autocomplete"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerAutocompleteProcessor(tc, to, th as AutocompleteTagHelper, tpo as AutocompleteOptions).Process());
            };
            allTagProcessors["pager"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerPagerProcessor(tc, to, th as PagerTagHelper, tpo as PagerOptions, ctx).Process());
            };
            allTagDefaultTemplates["pager"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                null,
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "DefaultPagerTemplate"),
                null,
                null
                );
            allTagProcessors["query-button"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerQueryButtonProcessor(to, ctx, tpo as QueryButtonOptions).Process());
            };
            allTagDefaultTemplates["query-button"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                null,
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultButtonTemplate"),
                null,
                null
                );
            allTagProcessors["query-filter-window"] = allTagProcessors["query-filter-inline"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerQueryWindowProcessor(tpo as QueryWindowOptions, ctx).ProcessFilter());
            };
            allTagDefaultTemplates["query-filter-window"] = new DefaultTemplates(
                true,
                null,
                new Template <Column>(TemplateType.Partial, "ServerQueries/DefaultFilterColumnTemplate"),
                null,
                new Template <RowType>(TemplateType.Partial, "ServerQueries/DefaultFilterRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultQueryLayoutTemplate"),
                null,
                null
                );
            allTagDefaultTemplates["query-filter-inline"] = new DefaultTemplates(
                true,
                null,
                new Template <Column>(TemplateType.Partial, "ServerQueries/DefaultFilterColumnTemplate"),
                null,
                new Template <RowType>(TemplateType.Partial, "ServerQueries/DefaultFilterRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultInLineQueryLayoutTemplate"),
                null,
                null
                );
            allTagProcessors["query-group-window"] = allTagProcessors["query-group-inline"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerQueryWindowProcessor(tpo as QueryWindowOptions, ctx).ProcessGrouping());
            };
            allTagDefaultTemplates["query-group-window"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                new Template <RowType>(TemplateType.Partial, "ServerQueries/DefaultGroupingRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultQueryLayoutTemplate"),
                null,
                null
                );
            allTagDefaultTemplates["query-group-inline"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                new Template <RowType>(TemplateType.Partial, "ServerQueries/DefaultGroupingRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultInLineQueryLayoutTemplate"),
                null,
                null
                );
            allTagProcessors["query-sort-window"] = allTagProcessors["query-sort-inline"] =
                (tc, to, th, tpo, ctx) =>
            {
                return(new DefaultServerQueryWindowProcessor(tpo as QueryWindowOptions, ctx).ProcessSorting());
            };
            allTagDefaultTemplates["query-sort-window"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                new Template <RowType>(TemplateType.Partial, "ServerQueries/DefaultSortingRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultQueryLayoutTemplate"),
                null,
                null
                );
            allTagDefaultTemplates["query-sort-inline"] = new DefaultTemplates(
                true,
                null,
                null,
                null,
                new Template <RowType>(TemplateType.Partial, "ServerQueries/DefaultSortingRowTemplate"),
                new Template <LayoutTemplateOptions>(TemplateType.Partial, "ServerQueries/DefaultInLineQueryLayoutTemplate"),
                null,
                null
                );
            allTagProcessors["verify-permission"] =
                async(tc, to, th, tpo, ctx) =>
            {
                to.TagName = string.Empty;
                var tag = th as ControlsCore.TagHelpers.VerifyPermissionTagHelper;
                var currentFunctionalities = Functionalities.ReadOnly;
                if (tag.UserPermissions != null)
                {
                    var user = ctx.CurrentHttpContext.User;
                    currentFunctionalities = tag.UserPermissions(user);
                    if (tag.QueryFor != null && tag.QueryFor.Model != null)
                    {
                        var query = tag.QueryFor.Model as QueryDescription;
                        if (query != null && query.Grouping != null &&
                            query.Grouping.Keys != null && query.Grouping.Keys.Count > 0)
                        {
                            currentFunctionalities = currentFunctionalities
                                                     & (Functionalities.ReadOnly | Functionalities.ShowDetail);
                        }
                    }
                    if ((currentFunctionalities & tag.RequiredPermissions) != tag.RequiredPermissions)
                    {
                        to.Content.SetContent(null);
                    }
                }
            };

            DefineButtonProperies();
            addExtensions();
        }
 public abstract object Process(Microsoft.AspNetCore.Razor.TagHelpers.TagHelper tag, DefaultTemplates defaults);
Exemple #10
0
        static bool SZSFromArgs(string[] args)
        {
            string GetArg(string start)
            {
                var a = args.Where(x => x.StartsWith(start + "=")).FirstOrDefault();

                if (a == null)
                {
                    return(null);
                }
                else
                {
                    return(a.Split('=')[1]);
                }
            }

            if (args.Length < 2)
            {
                return(false);
            }

            string Target      = args[1];
            var    CommonSzs   = SARCExt.SARC.Unpack(ManagedYaz0.Decompress(File.ReadAllBytes(Target)));
            var    targetPatch = DefaultTemplates.GetFor(CommonSzs);

            if (targetPatch == null)
            {
                Console.WriteLine("Unknown szs file");
                return(false);
            }

            string Image = args.Where(x => x.ToLower().EndsWith(".dds")).FirstOrDefault();

            if (Image == null || !File.Exists(Image))
            {
                Console.WriteLine("No image file !\r\nNote that only dds files are supported for szs themes.");
                return(false);
            }
            string Layout = args.Where(x => x.EndsWith(".json")).FirstOrDefault();

            string Output = GetArg("out");

            if (Output == null || Output == "")
            {
                return(false);
            }

            {
                var dds = Common.Images.Util.ParseDds(File.ReadAllBytes(Image));
                if (dds.Encoding != "DXT1")
                {
                    Console.WriteLine("WARNING: the encoding of the selected DDS is not DXT1, it may crash on the switch");
                }
                if (dds.Size.Width != 1280 || dds.Size.Height != 720)
                {
                    Console.WriteLine("WARNING: the selected image is not 720p (1280x720), it may crash on the swtich");
                }
            }

            try
            {
                var res     = true;
                var Patcher = new SzsPatcher(CommonSzs);

                if (Image != null)
                {
                    res = Patcher.PatchMainBG(File.ReadAllBytes(Image));
                    if (!res)
                    {
                        Console.WriteLine("Couldn't patch this file, it might have been already modified or it's from an unsupported system version.");
                        return(false);
                    }
                }

                void ProcessAppletIcons(List <TextureReplacement> l)
                {
                    foreach (var a in l)
                    {
                        string path = GetArg(a.NxThemeName);
                        if (!path.EndsWith(".dds"))
                        {
                            Console.WriteLine($"{path} is not supported, only dds files can be used for szs themes");
                            path = null;
                        }
                        if (path != null)
                        {
                            if (!Patcher.PatchAppletIcon(File.ReadAllBytes(path), a.NxThemeName))
                            {
                                Console.WriteLine($"Applet icon patch for {a.NxThemeName} failed");
                            }
                        }
                    }
                }

                if (TextureReplacement.NxNameToList.ContainsKey(targetPatch.NXThemeName))
                {
                    ProcessAppletIcons(TextureReplacement.NxNameToList[targetPatch.NXThemeName]);
                }

                if (Layout != null)
                {
                    var l         = LayoutPatch.LoadTemplate(File.ReadAllText(Layout));
                    var layoutres = Patcher.PatchLayouts(l);
                    if (!layoutres)
                    {
                        Console.WriteLine("One of the target files for the selected layout patch is missing in the SZS, you are probably using an already patched SZS");
                        return(false);
                    }
                }

                CommonSzs = Patcher.GetFinalSarc();
                var sarc = SARC.Pack(CommonSzs);

                File.WriteAllBytes(Output, ManagedYaz0.Compress(sarc.Item2, 3, (int)sarc.Item1));
                GC.Collect();

                if (Patcher.PatchTemplate.RequiresCodePatch)
                {
                    Console.WriteLine("The file has been patched successfully but due to memory limitations this szs requires an extra code patch to be applied to the home menu, if you use NXThemesInstaller to install this it will be done automatically, otherwise you need to manually copy the patches from https://github.com/exelix11/SwitchThemeInjector/tree/master/SwitchThemesNX/romfs to the exefs patches directory of your cfw");
                }
                else
                {
                    Console.WriteLine("Done");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }

            return(true);
        }