public DocumentationController(IRepositoryWrapper repoWrapper, UserManager<User> userManager, IAnnualReportVMInitializer annualReportVMCreator, IDecisionVMIitializer decisionVMCreator, IPDFService PDFService, IHostingEnvironment appEnvironment, IViewAnnualReportsVMInitializer viewAnnualReportsVMInitializer, ICityAccessManager cityAccessManager, IDirectoryManager directoryManager, IFileManager fileManager, IFileStreamManager fileStreamManager, ILogger<DocumentationController> logger) { _repoWrapper = repoWrapper; _annualReportVMCreator = annualReportVMCreator; _userManager = userManager; _PDFService = PDFService; _decisionVMCreator = decisionVMCreator; _appEnvironment = appEnvironment; _viewAnnualReportsVMInitializer = viewAnnualReportsVMInitializer; _directoryManager = directoryManager; _fileManager = fileManager; _fileStreamManager = fileStreamManager; _cityAccessManager = cityAccessManager; _logger = logger; }
public FileFinder(String projectPath, IFileFinderPermissions permissions, FileFinder next = null, IFileStreamManager fileStreamManager = null, IDraftManager draftManager = null, String projectFilePath = "edity/edity.json") { this.fileStreamManager = fileStreamManager; if (this.fileStreamManager == null) { this.fileStreamManager = new FileStreamManager(); } this.draftManager = draftManager; if (this.draftManager == null) { this.draftManager = new NoDrafts(); } project = new Lazy <EdityProject>(loadProject); this.projectPath = Path.GetFullPath(projectPath); this.projectFilePath = projectFilePath; this.next = next; this.permissions = permissions; }
/// <exclude /> public static void SubscribeOnChanged(this IFile file, OnFileChangedDelegate handler) { IFileStreamManager manager = FileStreamManagerLocator.GetFileStreamManager(file.GetType()); manager.SubscribeOnFileChanged(file, handler); }
/// <exclude /> public static Stream GetNewWriteStream(this IFile file) { IFileStreamManager manager = FileStreamManagerLocator.GetFileStreamManager(file.GetType()); return(manager.GetNewWriteStream(file)); }
/// <summary> /// Add a default file finder that has a content folder and a backup location. The /// edity folder in the content folder is not considered content. /// This will only do something if you have not previously registered a IFileFinder service. /// </summary> /// <param name="services">The service collection.</param> /// <returns></returns> public static IServiceCollection AddDefaultFileFinder(this IServiceCollection services) { services.TryAddScoped <IFileFinder>(s => { var userInfo = s.GetRequiredService <IUserInfo>(); var projectFinder = s.GetRequiredService <ProjectFinder>(); var phaseDetector = s.GetRequiredService <IPhaseDetector>(); var compileRequestDetector = s.GetRequiredService <ICompileRequestDetector>(); String projectFolder; if (compileRequestDetector.IsCompileRequest) { projectFolder = projectFinder.PublishedProjectPath; } else { projectFolder = projectFinder.GetUserProjectPath(userInfo.UniqueUserName); } //Any folders that can write should use these permissions, they will prevent the writing of .draft files. var sharedWritePermissions = new DraftFilePermissions(s.GetRequiredService <IHttpContextAccessor>()); //Folder blacklist var edityFolderList = new PathList(); edityFolderList.AddDirectory("edity"); //Editor core location var backupPermissions = new DefaultFileFinderPermissions(); backupPermissions.WritePermission.Permit = false; backupPermissions.TreatAsContentPermission.Permit = false; var editorCoreFinder = new FileFinder(projectFinder.EdityCorePath, backupPermissions); //Site specific files, not editable var projectBackupPermissions = new DefaultFileFinderPermissions(); projectBackupPermissions.WritePermission.Permit = false; projectBackupPermissions.TreatAsContentPermission.Permissions = new PathBlacklist(edityFolderList); var siteFileFinder = new FileFinder(projectFinder.SitePath, projectBackupPermissions, editorCoreFinder); //Project location var contentFolderPermissions = new DefaultFileFinderPermissions(); contentFolderPermissions.TreatAsContentPermission.Permissions = new PathBlacklist(edityFolderList); contentFolderPermissions.WritePermission.Permissions = sharedWritePermissions; //Always use the git draft manager for the project content, this way you can actually create drafts. var draftManager = new GitDraftManager(new PathBlacklist(edityFolderList)); IFileStreamManager streamManager = null; if (phaseDetector.Phase == Phases.Draft || compileRequestDetector.IsCompileRequest) { //If the request is in draft mode, change the content to only files with draft files and change the file stream //manager to read published versions out of git var oldPermissions = contentFolderPermissions.TreatAsContentPermission.Permissions; contentFolderPermissions.TreatAsContentPermission.Permissions = new MustHaveGitDraftFile(draftManager, oldPermissions); streamManager = new GitDraftFileStreamManager(draftManager); } return(new FileFinder(projectFolder, contentFolderPermissions, siteFileFinder, streamManager, draftManager)); }); return(services); }