private void Init() { // touch assembly SyntaxFactory.Token(SyntaxKind.NullKeyword); InitOptions(); if (Options.FullCompile) if (!Directory.Exists(Options.OutputPath)) Directory.CreateDirectory(Options.OutputPath); var wsa = assemblyDictionary.GetOrAdd(Options.WebSiteAssembly, _ => Assembly.LoadFrom(Options.WebSiteAssembly)); configuration = GetCachedConfiguration(wsa, Options.WebSitePath); bindingCompiler = new AssemblyBindingCompiler(Options.BindingsAssemblyName, Options.BindingClassName, Path.Combine(Options.OutputPath, Options.BindingsAssemblyName + ".dll"), configuration); configuration.ServiceLocator.RegisterSingleton<IBindingCompiler>(() => bindingCompiler); configuration.ServiceLocator.RegisterSingleton<IControlResolver>(() => new OfflineCompilationControlResolver(configuration, this)); if (Options.DothtmlFiles == null) Options.DothtmlFiles = configuration.RouteTable.Select(r => r.VirtualPath).ToArray(); controlTreeResolver = configuration.ServiceLocator.GetService<IControlTreeResolver>(); fileLoader = configuration.ServiceLocator.GetService<IMarkupFileLoader>(); if (Options.FullCompile) { compiler = configuration.ServiceLocator.GetService<IViewCompiler>(); compilation = compiler.CreateCompilation(Options.AssemblyName); } if (Options.SerializeConfig) { result.Configuration = configuration; } // touch assemblies }
public DefaultControlRegistrationStrategy(DotvvmConfiguration configuration, string controlPrefix, string controlsDirectory, string filesFilter = "*.dotcontrol") { this.configuration = configuration; this.controlPrefix = controlPrefix; this.controlsDirectory = Path.Combine(configuration.ApplicationPhysicalPath, controlsDirectory); this.filesFilter = filesFilter; }
public void TestInit() { configuration = DotvvmConfiguration.CreateDefault(); configuration.ServiceLocator.RegisterSingleton<IDataProtectionProvider>(() => new DpapiDataProtectionProvider("dotvvm test")); configuration.Security.SigningKey = Convert.FromBase64String("Uiq1FXs016lC6QaWIREB7H2P/sn4WrxkvFkqaIKpB27E7RPuMipsORgSgnT+zJmUu8zXNSJ4BdL73JEMRDiF6A1ScRNwGyDxDAVL3nkpNlGrSoLNM1xHnVzSbocLFDrdEiZD2e3uKujguycvWSNxYzjgMjXNsaqvCtMu/qRaEGc="); configuration.Security.EncryptionKey = Convert.FromBase64String("jNS9I3ZcxzsUSPYJSwzCOm/DEyKFNlBmDGo9wQ6nxKg="); serializer = new DefaultViewModelSerializer(configuration); context = new DotvvmRequestContext() { Configuration = configuration, OwinContext = new Microsoft.Owin.Fakes.StubIOwinContext() { RequestGet = () => new Microsoft.Owin.Fakes.StubIOwinRequest() { UriGet = () => new Uri("http://localhost:8628/Sample1"), UserGet = () => new WindowsPrincipal(WindowsIdentity.GetAnonymous()), HeadersGet = () => new HeaderDictionary(new Dictionary<string, string[]>()), EnvironmentGet = () => new Dictionary<string, object>() { { "owin.RequestPathBase", "" } } } }, ResourceManager = new ResourceManager(configuration), Presenter = configuration.RouteTable.GetDefaultPresenter(), ViewModelSerializer = serializer }; }
public DefaultControlBuilderFactory(DotvvmConfiguration configuration) { this.configuration = configuration; ViewCompilerFactory = () => configuration.ServiceLocator.GetService<IViewCompiler>(); markupFileLoader = configuration.ServiceLocator.GetService<IMarkupFileLoader>(); }
private static void RegisterResources(DotvvmConfiguration dotvvmConfiguration) { dotvvmConfiguration.Resources.Register("Site", new StylesheetResource { Dependencies = { }, Url = "~/Content/Site.css" }); dotvvmConfiguration.Resources.Register("Bootstrap.Celurean", new StylesheetResource { Dependencies = { }, Url = "~/Content/bootstrap.cerulean.css" }); dotvvmConfiguration.Resources.Register("bootstrap", new StylesheetResource { Dependencies = { }, Url = "~/Content/bootstrap.css" }); dotvvmConfiguration.Resources.Register("jquery", new ScriptResource { Dependencies = { }, Url = "~/Scripts/jquery-2.1.4.js" }); dotvvmConfiguration.Resources.Register("bootstrap-js", new ScriptResource { Dependencies = { }, Url = "~/Scripts/bootstrap.js" }); }
/// <summary> /// Initializes a new instance of the <see cref="DotvvmPresenter"/> class. /// </summary> public DotvvmPresenter(DotvvmConfiguration configuration) { DotvvmViewBuilder = configuration.ServiceLocator.GetService<IDotvvmViewBuilder>(); ViewModelLoader = configuration.ServiceLocator.GetService<IViewModelLoader>(); ViewModelSerializer = configuration.ServiceLocator.GetService<IViewModelSerializer>(); OutputRenderer = configuration.ServiceLocator.GetService<IOutputRenderer>(); CsrfProtector = configuration.ServiceLocator.GetService<ICsrfProtector>(); }
public DefaultRouteStrategy(DotvvmConfiguration configuration, string viewsFolder = "Views") { this.configuration = configuration; this.applicationPhysicalPath = Path.GetFullPath(configuration.ApplicationPhysicalPath); var directory = Path.Combine(applicationPhysicalPath, viewsFolder); viewsFolderDirectoryInfo = new DirectoryInfo(directory); }
/// <summary> /// Initializes a new instance of the <see cref="ControlResolverBase"/> class. /// </summary> public ControlResolverBase(DotvvmConfiguration configuration) { this.configuration = configuration; foreach (var ccc in this.BindingTypes.Keys.ToArray()) { BindingTypes[ccc] = BindingTypes[ccc].AddImports(configuration.Markup.ImportedNamespaces); } }
public AssemblyBindingCompiler(string assemblyName, string className, string outputFileName, DotvvmConfiguration configuration) : base(configuration) { assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(assemblyName), AssemblyBuilderAccess.RunAndSave, Path.GetDirectoryName(outputFileName)); moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName, Path.GetFileName(outputFileName)); bindingsClass = moduleBuilder.DefineType(className, TypeAttributes.Class | TypeAttributes.Public); OutputFileName = outputFileName; }
private DotvvmConfiguration ApplyPatches(DotvvmConfiguration init, params JObject[] patches) { var json = JObject.FromObject(init); foreach (var p in patches) { JsonUtils.Patch(json, p); } return json.ToObject<DotvvmConfiguration>(); }
/// <summary> /// Gets the markup file for the specified virtual path. /// </summary> public MarkupFile GetMarkup(DotvvmConfiguration configuration, string virtualPath) { // check that we are not outside application directory var fullPath = Path.Combine(configuration.ApplicationPhysicalPath, virtualPath); fullPath = Path.GetFullPath(fullPath); if (!fullPath.StartsWith(configuration.ApplicationPhysicalPath, StringComparison.CurrentCultureIgnoreCase)) { throw new Exception("The view cannot be located outside the website directory!"); // TODO: exception handling } // load the file return new MarkupFile(virtualPath, fullPath); }
public static void DumpConfiguration(DotvvmConfiguration config, string directory) { if (Process.GetCurrentProcess().ProcessName == "iisexpress") { try { File.WriteAllText(Path.Combine(directory, "dotvvm_serialized_config.json.tmp"), JsonConvert.SerializeObject(config)); } catch { } } }
public DefaultControlResolver(DotvvmConfiguration configuration) : base(configuration) { this.controlBuilderFactory = configuration.ServiceLocator.GetService<IControlBuilderFactory>(); if (!isInitialized) { lock (locker) { if (!isInitialized) { InvokeStaticConstructorsOnAllControls(); isInitialized = true; } } } }
public void Configure(DotvvmConfiguration config, string applicationPath) { config.DefaultCulture = "en-US"; config.Markup.DefaultDirectives.Add(ParserConstants.ResourceTypeDirective, "DotVVM.Samples.BasicSamples.Resources.Resource, DotVVM.Samples.BasicSamples"); config.Markup.AddMarkupControl("DotVVM.Samples.BasicSamples", "DotVVM.Samples.BasicSamples.Controls", "PropertyUpdate"); config.Markup.AddMarkupControl("IdGeneration", "Control", "Views/FeatureSamples/IdGeneration/IdGeneration_control.dotcontrol"); config.Markup.AddMarkupControl("FileUploadInRepeater", "FileUploadWrapper", "Views/ComplexSamples/FileUploadInRepeater/FileUploadWrapper.dotcontrol"); config.Markup.AddMarkupControl("sample", "PasswordStrengthControl", "Views/FeatureSamples/ClientExtenders/PasswordStrengthControl.dotcontrol"); config.Markup.AutoDiscoverControls(new DefaultControlRegistrationStrategy(config, "sample", "Views/ComplexSamples/ServerRendering/")); config.Markup.AutoDiscoverControls(new DefaultControlRegistrationStrategy(config, "sample", "Views/FeatureSamples/MarkupControl/")); config.RouteTable.Add("Default", "", "Views/Default.dothtml"); config.RouteTable.Add("ComplexSamples_SPARedirect_home", "ComplexSamples/SPARedirect", "Views/ComplexSamples/SPARedirect/home.dothtml"); config.RouteTable.Add("ControlSamples_SpaContentPlaceHolder_PageA", "ControlSamples/SpaContentPlaceHolder/PageA/{Id}", "Views/ControlSamples/SpaContentPlaceHolder/PageA.dothtml"); config.RouteTable.Add("ControlSamples_SpaContentPlaceHolder_PrefixRouteName_PageA", "ControlSamples/SpaContentPlaceHolder_PrefixRouteName/PageA/{Id}", "Views/ControlSamples/SpaContentPlaceHolder_PrefixRouteName/PageA.dothtml"); config.RouteTable.AutoDiscoverRoutes(new DefaultRouteStrategy(config)); config.RouteTable.Add("RepeaterRouteLink-PageDetail", "ControlSamples/Repeater/RouteLink/{Id}", "Views/ControlSamples/Repeater/RouteLink.dothtml"); config.RouteTable.Add("RepeaterRouteLinkUrlSuffix-PageDetail", "ControlSamples/Repeater/RouteLinkUrlSuffix/{Id}", "Views/ControlSamples/Repeater/RouteLink.dothtml"); config.RouteTable.Add("FeatureSamples_Redirect_RedirectFromPresenter", "FeatureSamples/Redirect/RedirectFromPresenter", null, null, () => new RedirectingPresenter()); config.Resources.Register("ControlSamples_SpaContentPlaceHolder_testCss", new StylesheetResource() { Url = "~/Content/testResource.css" }); config.Resources.Register("ControlSamples_SpaContentPlaceHolder_testJs", new ScriptResource() { Url = "~/Scripts/testResource.js" }); config.Resources.Register("ControlSamples_SpaContentPlaceHolder_MasterPageResource", new ScriptResource() { Url = "~/Scripts/testResource2.js" }); config.Resources.Register("FeatureSamples_Resources_CdnUnavailableResourceLoad", new ScriptResource() { Url = "~/Scripts/testResource.js", CdnUrl = "http://unavailable.local/testResource.js", GlobalObjectName = "dotvvmTestResource" }); config.Resources.Register("FeatureSamples_Resources_CdnScriptPriority", new ScriptResource() { Url = "~/Scripts/testResource2.js", CdnUrl = "~/Scripts/testResource.js", GlobalObjectName = "dotvvmTestResource" }); // import namespaces config.Markup.ImportedNamespaces.Add(new Framework.Compilation.NamespaceImport("DotVVM.Samples.BasicSamples.TestNamespace1", "TestNamespaceAlias")); config.Markup.ImportedNamespaces.Add(new Framework.Compilation.NamespaceImport("DotVVM.Samples.BasicSamples.TestNamespace2")); }
public DefaultControlBuilderFactory(DotvvmConfiguration configuration) { for (int i = 0; i < compilationLocks.Length; i++) { compilationLocks[i] = new object(); } this.configuration = configuration; ViewCompilerFactory = () => configuration.ServiceLocator.GetService<IViewCompiler>(); markupFileLoader = configuration.ServiceLocator.GetService<IMarkupFileLoader>(); if (configuration.CompiledViewsAssemblies != null) foreach (var assembly in configuration.CompiledViewsAssemblies) { LoadCompiledViewsAssembly(assembly); } }
/// <summary> /// Initializes a new instance of the <see cref="ResourceManager"/> class. /// </summary> public ResourceManager(DotvvmConfiguration configuration) { this.configuration = configuration; }
/// <summary> /// Creates the default configuration. /// </summary> public static DotvvmConfiguration CreateDefault() { var configuration = new DotvvmConfiguration(); InitDefaultServices(configuration); configuration.Runtime.GlobalFilters.Add(new ModelValidationFilterAttribute()); configuration.Markup.Controls.AddRange(new[] { new DotvvmControlConfiguration() { TagPrefix = "dot", Namespace = "DotVVM.Framework.Controls", Assembly = "DotVVM.Framework" } }); RegisterResources(configuration); return configuration; }
public DotvvmFileUploadMiddleware(OwinMiddleware next, DotvvmConfiguration configuration) : base(next) { this.configuration = configuration; }
public ViewModelSerializationMapper(DotvvmConfiguration configuration) { validationRuleTranslator = configuration.ServiceLocator.GetService<IValidationRuleTranslator>(); validationMetadataProvider = configuration.ServiceLocator.GetService<IViewModelValidationMetadataProvider>(); }
private static void RegisterResources(DotvvmConfiguration configuration) { configuration.Resources.Register(ResourceConstants.JQueryResourceName, new ScriptResource() { CdnUrl = "https://code.jquery.com/jquery-2.1.1.min.js", Url = "DotVVM.Framework.Resources.Scripts.jquery-2.1.1.min.js", EmbeddedResourceAssembly = typeof (DotvvmConfiguration).Assembly.GetName().Name, GlobalObjectName = "$" }); configuration.Resources.Register(ResourceConstants.KnockoutJSResourceName, new ScriptResource() { Url = "DotVVM.Framework.Resources.Scripts.knockout-latest.js", EmbeddedResourceAssembly = typeof (DotvvmConfiguration).Assembly.GetName().Name, GlobalObjectName = "ko" }); configuration.Resources.Register(ResourceConstants.DotvvmResourceName + ".internal", new ScriptResource() { Url = "DotVVM.Framework.Resources.Scripts.DotVVM.js", EmbeddedResourceAssembly = typeof (DotvvmConfiguration).Assembly.GetName().Name, GlobalObjectName = "dotvvm", Dependencies = new[] { ResourceConstants.KnockoutJSResourceName } }); configuration.Resources.Register(ResourceConstants.DotvvmResourceName, new InlineScriptResource() { Code = @"if (window.dotvvm) { throw 'DotVVM is already loaded!'; } window.dotvvm = new DotVVM();", Dependencies = new[] { ResourceConstants.DotvvmResourceName + ".internal" } }); configuration.Resources.Register(ResourceConstants.DotvvmDebugResourceName, new ScriptResource() { Url = "DotVVM.Framework.Resources.Scripts.DotVVM.Debug.js", EmbeddedResourceAssembly = typeof (DotvvmConfiguration).Assembly.GetName().Name, Dependencies = new[] { ResourceConstants.DotvvmResourceName, ResourceConstants.JQueryResourceName } }); configuration.Resources.Register(ResourceConstants.DotvvmFileUploadCssResourceName, new StylesheetResource() { Url = "DotVVM.Framework.Resources.Scripts.DotVVM.FileUpload.css", EmbeddedResourceAssembly = typeof (DotvvmConfiguration).Assembly.GetName().Name }); RegisterGlobalizeResources(configuration); }
private static void InitDefaultServices(DotvvmConfiguration configuration) { configuration.ServiceLocator = new ServiceLocator(); configuration.ServiceLocator.RegisterSingleton<IViewModelProtector>(() => new DefaultViewModelProtector(configuration)); configuration.ServiceLocator.RegisterSingleton<ICsrfProtector>(() => new DefaultCsrfProtector(configuration)); configuration.ServiceLocator.RegisterSingleton<IDotvvmViewBuilder>(() => new DefaultDotvvmViewBuilder(configuration)); configuration.ServiceLocator.RegisterSingleton<IViewModelLoader>(() => new DefaultViewModelLoader()); configuration.ServiceLocator.RegisterSingleton<IViewModelValidationMetadataProvider>(() => new AttributeViewModelValidationMetadataProvider()); configuration.ServiceLocator.RegisterSingleton<IValidationRuleTranslator>(() => new ViewModelValidationRuleTranslator()); configuration.ServiceLocator.RegisterSingleton<IViewModelValidator>(() => new ViewModelValidator(configuration.ServiceLocator.GetService<IViewModelSerializationMapper>())); configuration.ServiceLocator.RegisterSingleton<IViewModelSerializationMapper>(() => new ViewModelSerializationMapper(configuration)); configuration.ServiceLocator.RegisterSingleton<IViewModelSerializer>(() => new DefaultViewModelSerializer(configuration) { SendDiff = true }); configuration.ServiceLocator.RegisterSingleton<IOutputRenderer>(() => new DefaultOutputRenderer()); configuration.ServiceLocator.RegisterSingleton<IDotvvmPresenter>(() => new DotvvmPresenter(configuration)); configuration.ServiceLocator.RegisterSingleton<IMarkupFileLoader>(() => new DefaultMarkupFileLoader()); configuration.ServiceLocator.RegisterSingleton<IControlBuilderFactory>(() => new DefaultControlBuilderFactory(configuration)); configuration.ServiceLocator.RegisterSingleton<IControlResolver>(() => new DefaultControlResolver(configuration)); configuration.ServiceLocator.RegisterSingleton<IControlTreeResolver>(() => new DefaultControlTreeResolver(configuration)); configuration.ServiceLocator.RegisterSingleton<IAbstractTreeBuilder>(() => new ResolvedTreeBuilder()); configuration.ServiceLocator.RegisterTransient<IViewCompiler>(() => new DefaultViewCompiler(configuration)); configuration.ServiceLocator.RegisterSingleton<IBindingCompiler>(() => new BindingCompiler(configuration)); configuration.ServiceLocator.RegisterSingleton<IBindingExpressionBuilder>(() => new BindingExpressionBuilder()); configuration.ServiceLocator.RegisterSingleton<IBindingIdGenerator>(() => new OriginalStringBindingIdGenerator()); configuration.ServiceLocator.RegisterSingleton<IControlUsageValidator>(() => new DefaultControlUsageValidator()); }
public OfflineCompilationControlResolver(DotvvmConfiguration config, ViewStaticCompilerCompiler compiler) : base(config) { this.compiler = compiler; }
/// <summary> /// Initializes a new instance of the <see cref="DefaultViewModelSerializer"/> class. /// </summary> public DefaultViewModelSerializer(DotvvmConfiguration configuration) { this.viewModelProtector = configuration.ServiceLocator.GetService<IViewModelProtector>(); this.JsonFormatting = configuration.Debug ? Formatting.Indented : Formatting.None; }
public void TestInit() { configuration = DotvvmConfiguration.CreateDefault(); controlTreeResolver = configuration.ServiceLocator.GetService<IControlTreeResolver>(); }
private static void RegisterGlobalizeResources(DotvvmConfiguration configuration) { configuration.Resources.Register(ResourceConstants.GlobalizeResourceName, new ScriptResource() { Url = "DotVVM.Framework.Resources.Scripts.Globalize.globalize.js", EmbeddedResourceAssembly = typeof(DotvvmConfiguration).Assembly.GetName().Name }); configuration.Resources.RegisterNamedParent("globalize", new JQueryGlobalizeResourceRepository()); }
public DotvvmReturnedFileMiddleware(OwinMiddleware next, DotvvmConfiguration configuration) : base(next) { this.configuration = configuration; }
public DefaultViewModelProtector(DotvvmConfiguration configuration) { this.protectionProvider = configuration.ServiceLocator.GetService<IDataProtectionProvider>(); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultDotvvmViewBuilder"/> class. /// </summary> public DefaultDotvvmViewBuilder(DotvvmConfiguration configuration) { markupFileLoader = configuration.ServiceLocator.GetService<IMarkupFileLoader>(); controlBuilderFactory = configuration.ServiceLocator.GetService<IControlBuilderFactory>(); }
public DefaultViewCompiler(DotvvmConfiguration configuration) { this.configuration = configuration; this.controlTreeResolver = configuration.ServiceLocator.GetService<IControlTreeResolver>(); this.assemblyCache = CompiledAssemblyCache.Instance; }
/// <summary> /// Fills default directives if specific directives are not set /// </summary> private void FillsDefaultDirectives(DotvvmView page, DotvvmConfiguration configuration) { foreach (var key in configuration.Markup.DefaultDirectives.Keys) { if (!page.Directives.Keys.Contains(key)) { page.Directives[key] = configuration.Markup.DefaultDirectives[key]; } } }