示例#1
0
 public UploadedFilesResizer(IFileSystem files, ImageResizer resizer, EditSection config)
 {
     this.files   = files;
     this.resizer = resizer;
     this.images  = config.Images;
     sizeNames    = config.Images.Sizes.AllElements.Select(s => s.Name).ToArray();
 }
示例#2
0
        public override void SetUp()
        {
            base.SetUp();

            root  = CreateOneItem <RootNode>(1, "root", null);
            start = CreateOneItem <RootNode>(2, "start", root);
            host  = new Host(new ThreadContext(), root.ID, start.ID);

            fs          = new FakeMappedFileSystem();
            fs.BasePath = AppDomain.CurrentDomain.BaseDirectory + @"\FileSystem\";

            vnf    = new VirtualNodeFactory();
            config = new EditSection();

            injector = new FakeDependencyInjector();
            injector.injectors.Add(new EntityDependencySetter <IFileSystem>(fs));
            injector.injectors.Add(new EntityDependencySetter <IDependencyInjector>(injector));
            var sizeCache = new ImageSizeCache(new ConfigurationManagerWrapper {
                Sections = new ConfigurationManagerWrapper.ContentSectionTable(null, null, null, config)
            });

            injector.injectors.Add(new EntityDependencySetter <ImageSizeCache>(sizeCache));
            //nodeProvider = new FolderNodeProvider(fs, persister, injector);
            //initializer = new VirtualFolderInitializer(host, persister, fs, vnf, new Plugin.ConnectionMonitor().SetConnected(SystemStatusLevel.UpAndRunning), config, new ImageSizeCache(new ConfigurationManagerWrapper { Sections = new ConfigurationManagerWrapper.ContentSectionTable(null, null, null, config) }), nodeProvider);
            //nodeProvider = new FolderNodeProvider(fs, persister, injector);
            //nodeProvider = new FolderNodeProvider(fs, persister, injector);
            nodeProvider = new FolderNodeProvider(fs, persister.Repository, injector);
            initializer  = new VirtualFolderInitializer(host, persister, fs, vnf, monitor = new Plugin.ConnectionMonitor().SetConnected(SystemStatusLevel.UpAndRunning), new UploadFolderSource(host, config), nodeProvider);
        }
示例#3
0
 public DefaultDirectorySelector(IHost host, EditSection config)
 {
     this.host         = host;
     mode              = config.DefaultDirectory.Mode;
     defaultFolderPath = config.DefaultDirectory.RootPath;
     uploadFolders     = new List <string>(config.UploadFolders.Folders);
 }
示例#4
0
        private Slug CreateCustomReplacementSlug()
        {
            PatternValueCollection patterns = new PatternValueCollection();

            patterns.Clear();             // to remove all those added by constructor
            patterns.Add(new PatternValueElement("c1", "[@]", "at", true));

            NameEditorElement nameEditorElement = new NameEditorElement
            {
                // WhitespaceReplacement = '-',
                Replacements = patterns //,
                                        // ToLower = true
            };

            EditSection editSection = new EditSection {
                NameEditor = nameEditorElement
            };

            ConfigurationManagerWrapper cmw = new ConfigurationManagerWrapper
            {
                Sections = new ConfigurationManagerWrapper.ContentSectionTable(null, null, null, editSection)
            };

            return(new Slug(cmw));
        }
示例#5
0
 public UpdateFilePrefixMigration(EditSection config, IContentItemRepository repository, Tracker tracker)
 {
     this.config     = config;
     this.repository = repository;
     this.tracker    = tracker;
     Title           = "Updates links to files with prefix";
     Description     = "Updates links to files within an upload folder prepending the configured prefix (if any)";
 }
示例#6
0
        public override void SetUp()
        {
            base.SetUp();

            var edit = new EditSection();// { Editors = new PermissionElement(), Administrators  };

            finder = new PluginFinder(typeFinder, new SecurityManager(new ThreadContext(), edit), TestSupport.SetupEngineSection());
        }
示例#7
0
 public UploadFolderSource(IHost host, EditSection config)
 {
     this.host          = host;
     this.globalFolders = config.UploadFolders
                          .AllElements.Select(u => new FileSystemRoot(u, host.DefaultSite)
     {
         IsGlobal = true
     }).ToArray();
 }
示例#8
0
 public EditUrlManager(EditSection config)
 {
     ManagementInterfaceUrl = config.Paths.ManagementInterfaceUrl.TrimEnd('/');
     EditTreeUrl            = config.Paths.EditTreeUrl;
     EditItemUrl            = config.Paths.EditItemUrl;
     EditInterfaceUrl       = config.Paths.EditInterfaceUrl;
     NewItemUrl             = config.Paths.NewItemUrl;
     DeleteItemUrl          = config.Paths.DeleteItemUrl;
 }
示例#9
0
        public override void SetUp()
        {
            base.SetUp();

            //new[] { typeof(SeveralPlugins), typeof(PermittablePlugins) }

            var edit = new EditSection();            // { Editors = new PermissionElement(), Administrators  };

            finder = new PluginFinder(typeFinder, new SecurityManager(new ThreadContext(), edit), new EngineSection());
        }
示例#10
0
 public ErrorHandler(IWebContext context, ISecurityManager security, InstallationManager installer,
                     EngineSection config, EditSection editConfig)
     : this(context, security, installer)
 {
     this.editConfig           = editConfig;
     action                    = config.Errors.Action;
     mailTo                    = config.Errors.MailTo;
     mailFrom                  = config.Errors.MailFrom;
     maxErrorReportsPerHour    = config.Errors.MaxErrorReportsPerHour;
     handleWrongClassException = config.Errors.HandleWrongClassException;
     mailSender                = new SmtpMailSender();
 }
示例#11
0
        public EditUrlManager(IUrlParser parser, EditSection config)
        {
            this.parser = parser;

            ManagementInterfaceUrl = config.Paths.ManagementInterfaceUrl.TrimEnd('/');
            EditTreeUrl            = config.Paths.EditTreeUrl;
            EditItemUrl            = config.Paths.EditItemUrl;
            EditInterfaceUrl       = config.Paths.EditInterfaceUrl;
            NewItemUrl             = config.Paths.NewItemUrl;
            DeleteItemUrl          = config.Paths.DeleteItemUrl;
            defaultViewPreference  = config.Versions.DefaultViewMode;
        }
示例#12
0
        public override void SetUp()
        {
            base.SetUp();

            host   = new Host(new Fakes.FakeWebContextWrapper(), 1, 1);
            config = new EditSection();
            config.DefaultDirectory = new DefaultDirectoryElement();
            config.UploadFolders    = new FileSystemFolderCollection();

            root  = CreateOneItem <Items.NormalPage>(1, "root", null);
            item1 = CreateOneItem <Items.NormalPage>(2, "item1", root);
            item2 = CreateOneItem <Items.NormalPage>(3, "item2", item1);
        }
示例#13
0
        public override void SetUp()
        {
            base.SetUp();

            CreatePersister();
            parser  = mocks.StrictMock <N2.Web.IUrlParser>();
            context = CreateWebContext(false);

            EditSection editSection = new EditSection();

            security = new SecurityManager(context, editSection);
            enforcer = new SecurityEnforcer(persister, security, new ContentActivator(null, null, null), parser, context);
            enforcer.Start();
        }
示例#14
0
        private Slug CreateDefaultSlug()
        {
            NameEditorElement nameEditorElement = new NameEditorElement();
            EditSection       editSection       = new EditSection {
                NameEditor = nameEditorElement
            };

            ConfigurationManagerWrapper cmw = new ConfigurationManagerWrapper
            {
                Sections = new ConfigurationManagerWrapper.ContentSectionTable(null, null, null, editSection)
            };

            return(new Slug(cmw));
        }
示例#15
0
 /// <summary>Creates a new instance of the RequestLifeCycleHandler class.</summary>
 /// <param name="webContext">The web context wrapper.</param>
 /// <param name="broker"></param>
 /// <param name="installer"></param>
 /// <param name="dispatcher"></param>
 /// <param name="adapters"></param>
 /// <param name="errors"></param>
 /// <param name="editConfig"></param>
 /// <param name="hostConfig"></param>
 /// <param name="managementUrls"></param>
 public RequestLifeCycleHandler(IWebContext webContext, EventBroker broker, InstallationManager installer,
                                RequestPathProvider dispatcher, IContentAdapterProvider adapters, IErrorHandler errors,
                                IEditUrlManager editUrlManager, EditSection editConfig, HostSection hostConfig)
 {
     checkInstallation   = editConfig.Installer.CheckInstallationStatus;
     welcomeUrl          = editConfig.Installer.WelcomeUrl;
     managementUrl       = editConfig.ManagementInterfaceUrl;
     rewriteMethod       = hostConfig.Web.Rewrite;
     this.webContext     = webContext;
     this.broker         = broker;
     this.adapters       = adapters;
     this.errors         = errors;
     this.editUrlManager = editUrlManager;
     this.installer      = installer;
     this.dispatcher     = dispatcher;
 }
示例#16
0
        protected void btnRestart_Click(object sender, EventArgs e)
        {
            try
            {
                System.Configuration.Configuration cfg = WebConfigurationManager.OpenWebConfiguration("~");
                EditSection edit = (EditSection)cfg.GetSection("n2/edit");
                edit.Installer.AllowInstallation = false;
                cfg.Save();

                Response.Redirect(Engine.ManagementPaths.GetManagementInterfaceUrl());
            }
            catch
            {
                ltDisableFailed.Text = "Failed writing to web.config, please change this manually in web.config:";
            }
        }
示例#17
0
        private static NameEditorElement LoadConfiguration()
        {
            EditSection editSection = ConfigurationManager.GetSection("n2/edit") as EditSection;

            if (editSection != null)
            {
                return(editSection.NameEditor);
            }

            NameEditorElement config = new NameEditorElement();

            config.WhitespaceReplacement = '-';
            config.ShowKeepUpdated       = true;
            config.ToLower = true;
            return(config);
        }
示例#18
0
        public override void SetUp()
        {
            base.SetUp();

            root  = CreateOneItem <RootNode>(1, "root", null);
            start = CreateOneItem <RootNode>(2, "start", root);
            host  = new Host(new ThreadContext(), root.ID, start.ID);

            fs = new FakeFileSystem();
            fs.PathProvider = new FakePathProvider(fs.BasePath);

            vnf    = new VirtualNodeFactory();
            config = new EditSection();

            initializer = new VirtualFolderInitializer(host, persister, fs, vnf, new FakeStatus(), config);
        }
示例#19
0
        protected override void OnInit(EventArgs e)
        {
            EditSection config = Engine.Resolve <EditSection>();

            if (config == null)
            {
                throw new ConfigurationErrorsException("Cannot find configuration n2/edit");
            }

            foreach (SettingsEditorElement element in config.SettingsEditors)
            {
                Control editor = LoadControl(Url.ResolveTokens(element.Path));
                phSettings.Controls.Add(editor);
            }

            base.OnInit(e);
        }
示例#20
0
        public EditUrlManager(IUrlParser parser, EditSection config)
        {
            this.parser = parser;

            ManagementInterfaceUrl = config.Paths.ManagementInterfaceUrl.TrimEnd('/');
            EditTreeUrl            = config.Paths.EditTreeUrl;
            EditItemUrl            = config.Paths.EditItemUrl;
            EditInterfaceUrl       = config.Paths.EditInterfaceUrl;
            if (config.Legacy)
            {
                EditInterfaceUrl += "Content/";
            }
            NewItemUrl                 = config.Paths.NewItemUrl;
            DeleteItemUrl              = config.Paths.DeleteItemUrl;
            defaultViewPreference      = config.Versions.DefaultViewMode;
            ensureLocalhostPreviewUrls = config.Paths.EnsureLocalhostPreviewUrls;
        }
示例#21
0
        private Slug CreateLowercaseSlug()
        {
            NameEditorElement nameEditorElement = new NameEditorElement
            {
                WhitespaceReplacement = '-',
                Replacements          = new PatternValueCollection(),
                ToLower = true
            };

            EditSection editSection = new EditSection {
                NameEditor = nameEditorElement
            };

            ConfigurationManagerWrapper cmw = new ConfigurationManagerWrapper
            {
                Sections = new ConfigurationManagerWrapper.ContentSectionTable(null, null, null, editSection)
            };

            return(new Slug(cmw));
        }
        protected override ListItem[] GetListItems()
        {
            EditSection config = ConfigurationManager.GetSection("n2/edit") as EditSection;

            if (config == null)
            {
                return new ListItem[] { new ListItem("~/Upload") }
            }
            ;
            else
            {
                ListItem[] items = new ListItem[config.UploadFolders.Count];

                for (int i = 0; i < items.Length; i++)
                {
                    string path = config.UploadFolders[i].Path;
                    items[i] = new ListItem(path.Trim('/', '~', '.'));
                }
                return(items);
            }
        }
示例#23
0
        Permission[] GetAvailablePermissions()
        {
            List <Permission> permissions = new List <Permission>();

            permissions.Add(Permission.Read);
            EditSection config = Engine.Resolve <EditSection>();

            if (config.Editors.Dynamic)
            {
                permissions.Add(Permission.Write);
            }
            if (config.Writers.Dynamic)
            {
                permissions.Add(Permission.Publish);
            }
            if (config.Administrators.Dynamic)
            {
                permissions.Add(Permission.Administer);
            }
            return(permissions.ToArray());
        }
示例#24
0
        public FakeEngine(params Type[] types)
        {
            AddComponentInstance <ITypeFinder>(new FakeTypeFinder(types));
            var definitionManager = TestSupport.SetupDefinitions(types.Where(t => typeof(ContentItem).IsAssignableFrom(t)).ToArray());

            AddComponentInstance <IDefinitionManager>(definitionManager);
            var adapterProvider = new ContentAdapterProvider(this, Resolve <ITypeFinder>());

            AddComponentInstance <IContentAdapterProvider>(adapterProvider);
            var itemRepository = new FakeContentItemRepository();

            AddComponentInstance <IRepository <ContentItem> >(itemRepository);
            AddComponentInstance <IContentItemRepository>(itemRepository);
            var webContext = new ThreadContext();

            AddComponentInstance <IWebContext>(webContext);
            var host = new Host(webContext, 1, 1);

            AddComponentInstance <IHost>(host);
            var security = new FakeSecurityManager();

            AddComponentInstance <ISecurityManager>(security);
            var source = new ContentSource(security, new [] { new DatabaseSource(host, itemRepository) });

            AddComponentInstance(source);
            AddComponentInstance <IPersister>(new ContentPersister(source, itemRepository));
            AddComponentInstance <IWebContext>(webContext);
            var proxyFactory = new InterceptingProxyFactory();

            AddComponentInstance <IProxyFactory>(proxyFactory);
            var activator = new ContentActivator(new N2.Edit.Workflow.StateChanger(), new ItemNotifier(), proxyFactory);

            AddComponentInstance <ContentActivator>(activator);
            activator.Initialize(definitionManager.GetDefinitions());
            var editSection = new EditSection();

            AddComponentInstance <EditSection>(editSection);
        }
示例#25
0
 public LinksTracker(IPersister persister, IUrlParser urlParser, ConnectionMonitor connections, IErrorNotifier errorHandler, EditSection config)
     : base(persister, urlParser, connections, errorHandler, config)
 {
 }
示例#26
0
        protected override void OnInit(EventArgs e)
        {
            FS     = Engine.Resolve <IFileSystem>();
            Config = Engine.Resolve <ConfigurationManagerWrapper>().Sections.Management;
            var selected = Selection.SelectedItem;

            var host           = Engine.Resolve <IHost>();
            var rootItem       = Engine.Persister.Get(host.DefaultSite.RootItemID);
            var root           = new HierarchyNode <ContentItem>(rootItem);
            var selectionTrail = new List <ContentItem>();

            var ckEditor             = Request["ckEditor"];
            var ckEditorFuncNum      = Request["ckEditorFuncNum"];
            var mediaCtrl            = Request["mediaControl"];
            var preferredSize        = Request["preferredSize"];
            var selectableExtensions = Request["selectableExtensions"];
            var selectedUrl          = Request["selectedUrl"];
            var defaultDirectoryPath = Request["defaultDirectoryPath"];
            var mediaBrowserHandler  = new MediaBrowserHandler();

            mediaBrowserModel = new MediaBrowserModel
            {
                CkEditor             = ckEditor,
                CkEditorFuncNum      = ckEditorFuncNum,
                MediaControl         = mediaCtrl,
                HandlerUrl           = AjaxMediaBrowserRetriever,
                PreferredSize        = preferredSize,
                Breadcrumb           = new string[] { },
                Path                 = "",
                RootIsSelectable     = false,
                DefaultDirectoryPath = defaultDirectoryPath
            };


            if (selected is AbstractNode)
            {
                selectionTrail = new List <ContentItem>(Find.EnumerateParents(selected, null, true));
            }
            else
            {
                mediaBrowserHandler.TrySelectingPrevious(ref selected, ref selectionTrail);
            }

            var uploadDirectories = MediaBrowserUtils.GetAvailableUploadFoldersForAllSites(Context, root, selectionTrail, Engine, FS);

            if (uploadDirectories.Count > 0)
            {
                var imageSizes = Engine.Resolve <Management.Files.FileSystem.Pages.ImageSizeCache>();
                if (uploadDirectories.Count == 1 || selectionTrail.Count > 1)
                {
                    var directory  = FS.GetDirectory(mediaBrowserModel.Path);
                    var fsRootPath = directory != null && !string.IsNullOrWhiteSpace(directory.RootPath) ? directory.RootPath : "";

                    var dir = (selectionTrail.Count > 0 ? selectionTrail.ElementAt(0) : uploadDirectories[0].Current) as Directory;


                    //Find and/or create default upload directory for templated content.
                    if (!string.IsNullOrWhiteSpace(mediaBrowserModel.DefaultDirectoryPath))
                    {
                        var segments = (mediaBrowserModel.DefaultDirectoryPath.Split(new[] { '/' }, 3, StringSplitOptions.RemoveEmptyEntries));
                        if (segments.Length == 3)
                        {
                            var siteName         = segments[0];
                            var uploadSiteFolder = dir.GetDirectories().FirstOrDefault(d => d.Name == siteName.ToLower());
                            if (uploadSiteFolder == null)
                            {
                                var newDir = VirtualPathUtility.AppendTrailingSlash(Request.ApplicationPath + dir.LocalUrl) + siteName.ToLower();
                                FS.CreateDirectory(newDir);
                                uploadSiteFolder = dir.GetDirectories().FirstOrDefault(d => d.Name == siteName.ToLower());
                            }

                            var contentName             = segments[1];
                            var uploadSiteContentFolder = uploadSiteFolder.GetDirectories().FirstOrDefault(d => d.Name == contentName.ToLower());
                            if (uploadSiteContentFolder == null)
                            {
                                var newDir = VirtualPathUtility.AppendTrailingSlash(Request.ApplicationPath + uploadSiteFolder.LocalUrl) + contentName.ToLower();
                                FS.CreateDirectory(newDir);
                                uploadSiteContentFolder = uploadSiteFolder.GetDirectories().FirstOrDefault(d => d.Name == contentName.ToLower());
                            }

                            var templateName = segments[2];
                            var uploadSiteContentTemplateFolder = uploadSiteContentFolder.GetDirectories().FirstOrDefault(d => d.Name == templateName.ToLower());
                            if (uploadSiteContentTemplateFolder == null)
                            {
                                var newDir = VirtualPathUtility.AppendTrailingSlash(Request.ApplicationPath + uploadSiteContentFolder.LocalUrl) + templateName.ToLower();
                                FS.CreateDirectory(newDir);
                                uploadSiteContentTemplateFolder = uploadSiteContentFolder.GetDirectories().FirstOrDefault(d => d.Name == templateName.ToLower());

                                dir = uploadSiteContentTemplateFolder;
                            }
                            else
                            {
                                dir = uploadSiteContentTemplateFolder;
                            }
                        }
                    }


                    var files = dir.GetFiles().ToList();
                    mediaBrowserModel.Dirs  = dir.GetDirectories();
                    mediaBrowserModel.Files = MediaBrowserHandler.GetFileReducedList(files, imageSizes, selectableExtensions, fsRootPath);
                    mediaBrowserModel.Path  = System.Web.VirtualPathUtility.ToAppRelative(dir.LocalUrl).Trim('~');
                }
                else
                {
                    mediaBrowserModel.Path             = System.Web.VirtualPathUtility.ToAppRelative("/").Trim('~');
                    mediaBrowserModel.RootIsSelectable = true;
                    mediaBrowserModel.Dirs             = new List <Directory>();
                    foreach (var updDir in uploadDirectories)
                    {
                        mediaBrowserModel.Dirs.Add(updDir.Current as Directory);
                    }
                }

                var breadcrumb = mediaBrowserModel.Path.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                breadcrumb.Insert(0, "[root]");
                mediaBrowserModel.Breadcrumb = breadcrumb.ToArray();
            }
        }
示例#27
0
 public ViewOptionProvider(IEditUrlManager editUrlManager, IWebContext webContext, EditSection config)
 {
     this.editUrlManager        = editUrlManager;
     this.webContext            = webContext;
     this.defaultViewPreference = config.Versions.DefaultViewMode;
 }
示例#28
0
 public ExternalContentRepository(ContainerRepository <ExternalItem> containerRepository, IPersister persister, EditSection config)
 {
     this.containerRepository = containerRepository;
     this.persister           = persister;
     externalItemType         = Type.GetType(config.Externals.ExternalItemType) ?? typeof(ExternalItem);
 }
示例#29
0
 public VersionManager(IRepository <int, ContentItem> itemRepository, IItemFinder finder, StateChanger stateChanger, EditSection config)
 {
     this.itemRepository    = itemRepository;
     this.finder            = finder;
     this.stateChanger      = stateChanger;
     maximumVersionsPerItem = config.Versions.MaximumPerItem;
 }
示例#30
0
        public ItemBridge(ContentActivator activator, IItemFinder finder, IPersister persister, ISecurityManager security, IHost host, EditSection config)
        {
            this.security               = security;
            this.activator              = activator;
            this.finder                 = finder;
            this.persister              = persister;
            this.host                   = host;
            this.editorUsernames        = ToArray(config.Editors.Users);
            this.administratorUsernames = ToArray(config.Administrators.Users);

            Type configuredUserType = Type.GetType(config.Membership.UserType);

            if (configuredUserType == null)
            {
                throw new ArgumentException("Couldn't create configured membership user type: " + config.Membership.UserType);
            }
            if (!typeof(User).IsAssignableFrom(configuredUserType))
            {
                throw new ArgumentException("Configured membership user type '" + config.Membership.UserType + "' doesn't derive from '" + typeof(User).AssemblyQualifiedName + "'");
            }
            this.userType = configuredUserType;
        }