コード例 #1
0
        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
        }
コード例 #2
0
		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;
		}
コード例 #3
0
        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
            };
        }
コード例 #4
0
        public DefaultControlBuilderFactory(DotvvmConfiguration configuration)
        {
            this.configuration = configuration;

            ViewCompilerFactory = () => configuration.ServiceLocator.GetService<IViewCompiler>();
            markupFileLoader = configuration.ServiceLocator.GetService<IMarkupFileLoader>(); 
        }
コード例 #5
0
ファイル: Startup.cs プロジェクト: Mylan719/snowfur2016
        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"
            });

        }
コード例 #6
0
ファイル: DotvvmPresenter.cs プロジェクト: holajan/dotvvm
 /// <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>();
 }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: ControlResolverBase.cs プロジェクト: darilek/dotvvm
		/// <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);
			}
		}
コード例 #9
0
 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;
 }
コード例 #10
0
ファイル: JsonDiffTests.cs プロジェクト: darilek/dotvvm
 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>();
 }
コード例 #11
0
        /// <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);
        }
コード例 #12
0
ファイル: VisualStudioHelper.cs プロジェクト: darilek/dotvvm
 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
         {
         }
     }
 }
コード例 #13
0
        public DefaultControlResolver(DotvvmConfiguration configuration) : base(configuration)
        {
            this.controlBuilderFactory = configuration.ServiceLocator.GetService<IControlBuilderFactory>();

            if (!isInitialized)
            {
                lock (locker)
                {
                    if (!isInitialized)
                    {
                        InvokeStaticConstructorsOnAllControls();
                        isInitialized = true;
                    }
                }
            }
        }
コード例 #14
0
ファイル: DotvvmStartup.cs プロジェクト: darilek/dotvvm
        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"));

        }
コード例 #15
0
        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);
                }
        }
コード例 #16
0
ファイル: ResourceManager.cs プロジェクト: holajan/dotvvm
 /// <summary>
 /// Initializes a new instance of the <see cref="ResourceManager"/> class.
 /// </summary>
 public ResourceManager(DotvvmConfiguration configuration)
 {
     this.configuration = configuration;
 }
コード例 #17
0
ファイル: DotvvmConfiguration.cs プロジェクト: darilek/dotvvm
        /// <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;
        }
コード例 #18
0
 public DotvvmFileUploadMiddleware(OwinMiddleware next, DotvvmConfiguration configuration) : base(next)
 {
     this.configuration = configuration;
 }
コード例 #19
0
 public ViewModelSerializationMapper(DotvvmConfiguration configuration)
 {
     validationRuleTranslator = configuration.ServiceLocator.GetService<IValidationRuleTranslator>();
     validationMetadataProvider = configuration.ServiceLocator.GetService<IViewModelValidationMetadataProvider>();
 }
コード例 #20
0
ファイル: DotvvmConfiguration.cs プロジェクト: darilek/dotvvm
        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);
        }
コード例 #21
0
ファイル: DotvvmConfiguration.cs プロジェクト: darilek/dotvvm
 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());
 }
コード例 #22
0
 public OfflineCompilationControlResolver(DotvvmConfiguration config, ViewStaticCompilerCompiler compiler)
     : base(config)
 {
     this.compiler = compiler;
 }
コード例 #23
0
 /// <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;
 }
コード例 #24
0
 public void TestInit()
 {
     configuration = DotvvmConfiguration.CreateDefault();
     controlTreeResolver = configuration.ServiceLocator.GetService<IControlTreeResolver>();
 }
コード例 #25
0
ファイル: DotvvmConfiguration.cs プロジェクト: darilek/dotvvm
        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());
        }
コード例 #26
0
 public DotvvmReturnedFileMiddleware(OwinMiddleware next, DotvvmConfiguration configuration) : base(next)
 {
     this.configuration = configuration;
 }
コード例 #27
0
 public DefaultViewModelProtector(DotvvmConfiguration configuration)
 {
     this.protectionProvider = configuration.ServiceLocator.GetService<IDataProtectionProvider>();
 }
コード例 #28
0
 /// <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>();
 }
コード例 #29
0
ファイル: DefaultViewCompiler.cs プロジェクト: darilek/dotvvm
 public DefaultViewCompiler(DotvvmConfiguration configuration)
 {
     this.configuration = configuration;
     this.controlTreeResolver = configuration.ServiceLocator.GetService<IControlTreeResolver>();
     this.assemblyCache = CompiledAssemblyCache.Instance;
 }
コード例 #30
0
 /// <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];
         }
     }
 }