private string BuildMediaItemLink(Item media, SiteContext siteContext) { string mediaUrl; var options = GetMediaOptions() ?? MediaUrlOptions.Empty; if (siteContext != null) { using (SiteContextSwitcher siteContextSwitcher = new SiteContextSwitcher(siteContext)) { mediaUrl = MediaManager.GetMediaUrl(media, options); } } else { mediaUrl = MediaManager.GetMediaUrl(media, options); } if (string.IsNullOrWhiteSpace(mediaUrl)) { return(null); } // Address improper urls if present mediaUrl = mediaUrl.Replace("sitecore/shell/", string.Empty); mediaUrl = HashingUtils.ProtectAssetUrl(mediaUrl); return(mediaUrl); }
public void Dispose() { if (_securityDisabler != null) { _securityDisabler.Dispose(); _securityDisabler = null; } if (_siteContextSwitcher != null) { _siteContextSwitcher.Dispose(); _siteContextSwitcher = null; } if (_languageSwitcher != null) { _languageSwitcher.Dispose(); _languageSwitcher = null; } if (_databaseSwitcher != null) { _databaseSwitcher.Dispose(); _databaseSwitcher = null; } if (_userSwitcher != null) { _userSwitcher.Dispose(); _userSwitcher = null; } }
/// <summary> /// Initializes a new instance of the <see cref="DependenciesInstallerTest" /> class. /// </summary> public DependenciesInstallerTest() { this.container = new WindsorContainer(); this.tree = new TTree("web"); this.siteContextSwitcher = new SiteContextSwitcher(new TSiteContext(new StringDictionary { { "name", "autohaus" }, { "database", "web" } })); Sitecore.Context.Database.Name.Should().Be("web"); }
private bool IsPublished(Item item) { SiteContext targetSiteContext = SiteContext.GetSite("website"); using (var switcher = new SiteContextSwitcher(targetSiteContext)) { // do something on the new site context var publishedItem = Context.Database.GetItem(item.ID); return(publishedItem != null); } }
public FakeSite() { _fakeSiteContext = new Sitecore.FakeDb.Sites.FakeSiteContext( new Sitecore.Collections.StringDictionary { { "name", "website" }, { "database", "web" } }); _switcher = new FakeSiteContextSwitcher(_fakeSiteContext); }
public FakeSite() { _fakeSiteContext = new Sitecore.FakeDb.Sites.FakeSiteContext( new Sitecore.Collections.StringDictionary { {"name", "website"}, {"database", "web"} }); _switcher = new FakeSiteContextSwitcher(_fakeSiteContext); }
protected override RenderingReference DoActivateCondition(RenderingDefinition rendering, ID conditionID, Language lang, Database database, Item item, SiteContext site) { // Copied from Sitecore Assert.ArgumentNotNull(rendering, "rendering"); Assert.ArgumentNotNull(conditionID, "conditionID"); Assert.ArgumentNotNull(lang, "lang"); Assert.ArgumentNotNull(database, "database"); Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(site, "site"); RenderingReference renderingReference = new RenderingReference(rendering, lang, database); RuleList <ConditionalRenderingsRuleContext> rules = renderingReference.Settings.Rules; Rule <ConditionalRenderingsRuleContext> rule = rules.Rules.FirstOrDefault <Rule <ConditionalRenderingsRuleContext> >((Rule <ConditionalRenderingsRuleContext> r) => r.UniqueId == conditionID); if (rule == null) { return(renderingReference); } List <RenderingReference> renderingReferences = new List <RenderingReference>() { renderingReference }; ConditionalRenderingsRuleContext conditionalRenderingsRuleContext = new ConditionalRenderingsRuleContext(renderingReferences, renderingReference) { Item = item }; rule.SetCondition(new TrueCondition <ConditionalRenderingsRuleContext>()); rules = new RuleList <ConditionalRenderingsRuleContext>(rule); using (SiteContextSwitcher siteContextSwitcher = new SiteContextSwitcher(site)) { using (DatabaseSwitcher databaseSwitcher = new DatabaseSwitcher(item.Database)) { rules.Run(conditionalRenderingsRuleContext); } } Assert.IsTrue(conditionalRenderingsRuleContext.References.Count == 1, "The references count should equal 1"); RenderingReference renderingReference1 = conditionalRenderingsRuleContext.References[0]; Assert.IsNotNull(renderingReference1, "result"); rendering.Datasource = renderingReference1.Settings.DataSource; if (renderingReference1.RenderingItem != null) { rendering.ItemID = renderingReference1.RenderingItem.ID.ToString(); } // End copied from Sitecore // Apply Parameters Too rendering.Parameters = renderingReference1.Settings.Parameters; return(renderingReference1); }
public ReportContext(string userName = "******", string siteName = "shell", string databaseName = "master", string language = null) { var user = User.FromName(userName, false); _userSwitcher = new UserSwitcher(user); _databaseSwitcher = new DatabaseSwitcher(Sitecore.Configuration.Factory.GetDatabase(databaseName)); if (!string.IsNullOrEmpty(language)) { _languageSwitcher = new LanguageSwitcher(language); } _siteContextSwitcher = new SiteContextSwitcher(SiteContextFactory.GetSiteContext(siteName)); _securityDisabler = new SecurityDisabler(); }
public static string GetUrlForContextSite(this Item item) { var sites = SiteContextFactory.Sites .Where(s => !string.IsNullOrWhiteSpace(s.RootPath) & item.Paths.Path.StartsWith(s.RootPath, StringComparison.OrdinalIgnoreCase)) .OrderByDescending(s => s.RootPath.Length).ToList(); SiteInfo siteInfo = sites.FirstOrDefault(); var site = SiteContext.GetSite(siteInfo.Name); using (var siteContextSwitcher = new SiteContextSwitcher(site)) { var urlOptions = LinkManager.GetDefaultUrlOptions(); urlOptions.AlwaysIncludeServerUrl = true; urlOptions.ShortenUrls = true; urlOptions.SiteResolving = true; return(LinkManager.GetItemUrl(item, urlOptions)); } return(string.Empty); }
private static string GetHomeAddress() { var website = SiteContext.GetSite("website"); if (!string.IsNullOrEmpty(website.TargetHostName)) { return(website.TargetHostName); } using (var siteContextSwitcher = new SiteContextSwitcher(website)) { Item homeItem = null; using (new SecurityDisabler()) { homeItem = website.Database.GetItem(website.StartPath); var urlOptions = new UrlOptions() { AlwaysIncludeServerUrl = true, LanguageEmbedding = LanguageEmbedding.Never, SiteResolving = true }; return(LinkManager.GetItemUrl(homeItem, urlOptions)); } } }
public void Process(CreateCommentArgs args) { Assert.ArgumentNotNull(args, "args cannot be null"); Assert.IsNotNull(args.Database, "Database cannot be null"); Assert.IsNotNull(args.Comment, "Comment cannot be null"); Assert.IsNotNull(args.EntryID, "Entry ID cannot be null"); Assert.IsNotNull(args.Language, "Language cannot be null"); var entryItem = args.Database.GetItem(args.EntryID, args.Language); if (entryItem != null) { var blogItem = BlogManager.GetCurrentBlog(entryItem); if (blogItem != null) { var template = args.Database.GetTemplate(blogItem.BlogSettings.CommentTemplateID); var itemName = ItemUtil.ProposeValidItemName(string.Format("Comment at {0} by {1}", GetDateTime().ToString("yyyyMMdd HHmmss"), args.Comment.AuthorName)); if (itemName.Length > 100) { itemName = itemName.Substring(0, 100); } // verify the comment item name is unique for this entry var query = BuildFastQuery(entryItem, itemName); var num = 1; var nondupItemName = itemName; while (entryItem.Database.SelectSingleItem(query) != null) { nondupItemName = itemName + " " + num; num++; query = BuildFastQuery(entryItem, nondupItemName); } // need to create the comment within the shell site to ensure workflow is applied to comment var shellSite = SiteContextFactory.GetSiteContext(Sitecore.Constants.ShellSiteName); SiteContextSwitcher siteSwitcher = null; try { if (shellSite != null) { siteSwitcher = new SiteContextSwitcher(shellSite); } using (new SecurityDisabler()) { var newItem = entryItem.Add(nondupItemName, template); var newComment = new CommentItem(newItem); newComment.BeginEdit(); newComment.Name.Field.Value = args.Comment.AuthorName; newComment.Email.Field.Value = args.Comment.AuthorEmail; newComment.Comment.Field.Value = args.Comment.Text; foreach (var entry in args.Comment.Fields) { newComment.InnerItem[entry.Key] = entry.Value; } newComment.EndEdit(); args.CommentItem = newComment; } } finally { siteSwitcher?.Dispose(); } } else { var message = "Failed to find blog for entry {0}\r\nIgnoring comment: name='{1}', email='{2}', commentText='{3}'"; Logger.Error(string.Format(message, args.EntryID, args.Comment.AuthorName, args.Comment.AuthorEmail, args.Comment.Text), typeof(CreateCommentItem)); } } else { var message = "Failed to find blog entry {0}\r\nIgnoring comment: name='{1}', email='{2}', commentText='{3}'"; Logger.Error(string.Format(message, args.EntryID, args.Comment.AuthorName, args.Comment.AuthorEmail, args.Comment.Text), typeof(CreateCommentItem)); } }
public static string GeneratePackage(PackageManifest manifest) { var packageProject = new PackageProject { Metadata = { PackageName = manifest.PackageName, Author = manifest.Author, Version = manifest.Version, Publisher = manifest.Publisher } }; foreach (var fileSource in manifest.Files) { if (fileSource == null || fileSource.Entries == null || fileSource.Entries.Count == 0) { continue; } var packageFileSource = new ExplicitFileSource { Name = "Files" }; packageFileSource.Converter.Transforms.Add( new InstallerConfigurationTransform( new BehaviourOptions(fileSource.InstallMode, fileSource.MergeMode))); foreach (var item in fileSource.Entries) { var pathMapped = MainUtil.MapPath(item.Path); packageFileSource.Entries.Add(pathMapped); } if (packageFileSource.Entries.Count > 0) { packageProject.Sources.Add(packageFileSource); } } foreach (var itemSource in manifest.Items) { if (itemSource == null || itemSource.Entries == null || itemSource.Entries.Count == 0) { continue; } List <Item> items = new List <Item>(); var packageItemSource = new ExplicitItemSource { Name = itemSource.Name }; packageItemSource.Converter.Transforms.Add( new InstallerConfigurationTransform( new BehaviourOptions(itemSource.InstallMode, itemSource.MergeMode))); using (new SecurityDisabler()) { foreach (var item in itemSource.Entries) { var db = ResolveDatabase(item.Database); var itemUri = db.Items.GetItem(item.Path); if (itemUri != null) { items.Add(itemUri); if (item.IncludeChildren) { var paths = Sitecore.StringUtil.Split(itemUri.Paths.Path, '/', true).Where(p => p != null & p != string.Empty).Select(p => "#" + p + "#").ToList(); string allChildQuery = string.Format("/{0}//*", Sitecore.StringUtil.Join(paths, "/")); var children = db.Items.Database.SelectItems(allChildQuery); if (children != null && children.Length > 0) { items.AddRange(children); } } } } foreach (var item in items) { packageItemSource.Entries.Add(new ItemReference(item.Uri, false).ToString()); } } if (packageItemSource.Entries.Count > 0) { packageProject.Sources.Add(packageItemSource); } } packageProject.SaveProject = true; var location = MainUtil.MapPath($"{ Sitecore.Configuration.Settings.PackagePath}/{ manifest.PackageName}"); bool exists = System.IO.Directory.Exists(location); if (!exists) { System.IO.Directory.CreateDirectory(location); } var packagePath = $"{location}/{manifest.PackageName}.zip"; try { using (var writer = new PackageWriter(packagePath)) { using (new SecurityDisabler()) { SiteContext targetSiteContext = SiteContext.GetSite("shell"); using (var context = new SiteContextSwitcher(targetSiteContext)) { writer.Initialize(Installer.CreateInstallationContext()); PackageGenerator.GeneratePackage(packageProject, writer); } } } } catch (Exception ex) { throw new Exception($"Package was not created. Message: {ex.Message}", ex); } return(packagePath); }