private static void MoveSubfoldersToRoot(string rootFolder, string subFolder)
        {
            foreach (var directory in C1Directory.GetDirectories(subFolder))
            {
                var name = new C1DirectoryInfo(directory).Name;
                if (!name.Contains("."))
                {
                    continue;
                }

                C1Directory.Move(directory, Path.Combine(rootFolder, name));
            }
        }
        public static IEnumerable <IDynamicDefinition> GetDefinitions()
        {
            var files = C1Directory.GetFiles(ModelsFacade.RootPath, "DynamicDefinition.xml", SearchOption.AllDirectories);

            foreach (var file in files)
            {
                var folder = Path.GetDirectoryName(file);
                var name   = new C1DirectoryInfo(folder).Name;
                var xml    = XElement.Load(file);

                var serializer = XmlDefinitionSerializer.GetSerializer(xml);

                yield return(serializer.Load(name, xml));
            }
        }
Beispiel #3
0
        private State Initialize()
        {
            var files = new C1DirectoryInfo(_templatesDirectory)
                        .GetFiles(MasterPageFileMask, SearchOption.AllDirectories)
                        .Where(f => !f.Name.StartsWith(TempFilePrefix, StringComparison.Ordinal));


            var templates             = new List <PageTemplateDescriptor>();
            var templateRenderingData = new Hashtable <Guid, MasterPageRenderingInfo>();
            var loadingExceptions     = new Hashtable <Guid, Exception>();
            var sharedSourceFiles     = new List <SharedFile>();

            // Loading and compiling layout controls
            foreach (var fileInfo in files)
            {
                string filePath           = fileInfo.FullName;
                string virtualPath        = ConvertToVirtualPath(filePath);
                string codeBehindFilePath = GetCodebehindFilePath(filePath);

                string[] cacheRelatedFiles = { filePath, codeBehindFilePath };

                CachedTemplateInformation cachedTemplateInformation;

                if (_templateCache.Get(virtualPath, cacheRelatedFiles, out cachedTemplateInformation))
                {
                    if (cachedTemplateInformation == null)
                    {
                        sharedSourceFiles.Add(new SharedMasterPage(virtualPath));
                        continue;
                    }

                    Guid templateId = cachedTemplateInformation.TemplateId;

                    templates.Add(new LazyInitializedMasterPagePageTemplateDescriptor(
                                      filePath,
                                      codeBehindFilePath,
                                      templateId,
                                      cachedTemplateInformation.Title,
                                      this));

                    Verify.That(!templateRenderingData.ContainsKey(templateId), "Multiple master page templates defined with the same ID '{0}'", templateId);

                    templateRenderingData.Add(templateId, new LazyInitializedMasterPageRenderingInfo(filePath, virtualPath, this));
                    continue;
                }

                MasterPage masterPage;
                MasterPagePageTemplateDescriptor parsedPageTemplateDescriptor;
                MasterPageRenderingInfo          renderingInfo;
                Exception loadingException;

                if (!LoadMasterPage(filePath, out masterPage, out parsedPageTemplateDescriptor, out renderingInfo, out loadingException))
                {
                    var brokenTemplate = GetIncorrectlyLoadedPageTemplate(filePath, loadingException);

                    loadingExceptions.Add(brokenTemplate.Id, brokenTemplate.LoadingException);
                    templates.Add(brokenTemplate);
                    continue;
                }

                if (masterPage == null)
                {
                    continue;
                }

                if (!(masterPage is MasterPagePageTemplate))
                {
                    sharedSourceFiles.Add(new SharedMasterPage(virtualPath));

                    if (!HostingEnvironment.ApplicationHost.ShutdownInitiated())
                    {
                        _templateCache.Add(virtualPath, cacheRelatedFiles, null);
                    }

                    continue;
                }

                templates.Add(parsedPageTemplateDescriptor);

                Verify.That(!templateRenderingData.ContainsKey(parsedPageTemplateDescriptor.Id),
                            "Multiple master page templates defined with the same ID '{0}'", parsedPageTemplateDescriptor.Id);

                templateRenderingData.Add(parsedPageTemplateDescriptor.Id, renderingInfo);


                _templateCache.Add(virtualPath, cacheRelatedFiles, new CachedTemplateInformation(parsedPageTemplateDescriptor));
            }

            return(new State {
                Templates = templates,
                RenderingInfo = templateRenderingData,
                LoadingExceptions = loadingExceptions,
                SharedSourceFiles = sharedSourceFiles
            });
        }
        private State Initialize()
        {
            var files = new C1DirectoryInfo(_templatesDirectory)
                        .GetFiles(LayoutFileMask, SearchOption.AllDirectories)
                        .Where(f => !f.Name.StartsWith(TempFilePrefix, StringComparison.Ordinal));


            var templates             = new List <PageTemplateDescriptor>();
            var templateRenderingData = new Hashtable <Guid, TemplateRenderingInfo>();
            var loadingExceptions     = new Hashtable <Guid, Exception>();
            var sharedFiles           = new List <SharedFile>();

            // Loading and compiling layout controls
            foreach (var fileInfo in files)
            {
                string filePath    = fileInfo.FullName;
                string virtualPath = ConvertToVirtualPath(filePath);

                CachedTemplateInformation cachedTemplateInformation;

                if (_templateCache.Get(virtualPath, filePath, out cachedTemplateInformation))
                {
                    if (cachedTemplateInformation == null)
                    {
                        sharedFiles.Add(new SharedRazorFile(virtualPath));
                        continue;
                    }

                    Guid templateId = cachedTemplateInformation.TemplateId;

                    templates.Add(new LazyInitializedRazorPageTemplateDescriptor(
                                      virtualPath,
                                      templateId,
                                      cachedTemplateInformation.Title,
                                      this));

                    Verify.That(!templateRenderingData.ContainsKey(templateId), "Multiple master page templates defined with the same ID '{0}'", templateId);

                    templateRenderingData.Add(templateId, new LazyInitializedTemplateRenderingInfo(virtualPath, this));
                    continue;
                }

                WebPageBase                        webPage;
                PageTemplateDescriptor             parsedTemplate;
                IDictionary <string, PropertyInfo> placeholderProperties;
                Exception loadingException;

                if (!LoadRazorTemplate(virtualPath, out webPage, out parsedTemplate, out placeholderProperties, out loadingException))
                {
                    var brokenTemplate = GetIncorrectlyLoadedPageTemplate(virtualPath, loadingException);

                    loadingExceptions.Add(brokenTemplate.Id, brokenTemplate.LoadingException);
                    templates.Add(brokenTemplate);
                    continue;
                }

                if (!(webPage is RazorPageTemplate))
                {
                    sharedFiles.Add(new SharedRazorFile(virtualPath));

                    if (!HostingEnvironment.ApplicationHost.ShutdownInitiated())
                    {
                        _templateCache.Add(virtualPath, filePath, null);
                    }
                    continue;
                }

                templates.Add(parsedTemplate);

                templateRenderingData.Add(parsedTemplate.Id, new TemplateRenderingInfo(virtualPath, placeholderProperties));

                _templateCache.Add(virtualPath, filePath, new CachedTemplateInformation(parsedTemplate));
            }

            return(new State
            {
                Templates = templates,
                RenderingInfo = templateRenderingData,
                SharedFiles = sharedFiles,
                LoadingExceptions = loadingExceptions
            });
        }