DotvvmStartup.cs

86 lines | 3.431 kB Blame History Raw Download
namespace Web
{
    using Controls.ConfirmationModal;
    using Controls.WizardNavigation;
    using DotVVM.Framework.Configuration;
    using DotVVM.Framework.Controls.Bootstrap4;
    using DotVVM.Framework.ResourceManagement;
    using Helper;
    using Microsoft.Extensions.DependencyInjection;

    public class DotVvmStartup : IDotvvmStartup, IDotvvmServiceConfigurator
    {
        public void Configure(DotvvmConfiguration config, string applicationPath)
        {
            ConfigureControls(config, applicationPath);
            ConfigureResources(config, applicationPath);
            ConfigureRoutes(config, applicationPath);

            config.AddBootstrap4Configuration(new DotvvmBootstrapOptions
            {
                BootstrapCssResource = new StylesheetResource(new UrlResourceLocation("~/wwwroot/css/litera/bootstrap.min.css")),
                BootstrapJsResource = new ScriptResource(new UrlResourceLocation("~/wwwroot/css/bootstrap/js/bootstrap.bundle.min.js")),
                JQueryResource = new ScriptResource(new UrlResourceLocation("~/wwwroot/js/jquery/jquery.min.js")),
                IncludeBootstrapResourcesInPage = true,
                IncludeJQueryResourceInPage = true
            });
        }

        public void ConfigureServices(IDotvvmServiceCollection options)
        {
            options.AddDefaultTempStorages(Constants.DefaultTemporaryStoragePath);
            //options.AddHotReload();
        }

        #region Private Methods
        private void ConfigureControls(DotvvmConfiguration config, string applicationPath)
        {
            config.AddConfirmationModalConfiguration();
            config.AddWizardNavigationConfiguration();
            config.Markup.AutoDiscoverControls(new DefaultControlRegistrationStrategy(config, Constants.TagPrefix, "Controls"));
        }

        private void ConfigureResources(DotvvmConfiguration config, string applicationPath)
        {
            RegisterCss(config);
            RegisterJavascript(config);
        }

        private void ConfigureRoutes(DotvvmConfiguration config, string applicationPath)
        {
            config.RouteTable.Add("Debug", "debug", "Views/debug.dothtml");
            config.RouteTable.Add("Default", "", "Views/default.dothtml");
            //config.RouteTable.AutoDiscoverRoutes(new DefaultRouteStrategy(config));
        }
        private void RegisterCss(DotvvmConfiguration config)
        {
            config.Resources.Register("Styles", new StylesheetResource()
            {
                Location = new UrlResourceLocation("~/wwwroot/css/site.css")
            });

            config.Resources.Register("Toastr", new ScriptResource
            {
                Dependencies = new[] { "jquery" },
                Location = new UrlResourceLocation("~/wwwroot/js/toastr/toastr.min.js")
            });

            config.Resources.Register("ToastrCustom", new ScriptResource
            {
                Dependencies = new[] { "Toastr" },
                Location = new UrlResourceLocation("~/wwwroot/js/toastr/toastr.options.js")
            });
        }

        private void RegisterJavascript(DotvvmConfiguration config)
        {
            config.Resources.Register("ConfirmationModalJs", new ScriptResource()
            {
                Dependencies = new[] { "jquery" },
                Location = new UrlResourceLocation("~/wwwroot/js/controls/confirmationModal/confirmationModal.js")
            });
        }
        #endregion
    }
}