public override object GetValue(global::Sitecore.Data.Items.Item item, ISitecoreService service) { var itemField = base.GetField(item); if (itemField == null || itemField.Value.Trim().IsNullOrEmpty()) return null; Link link = new Link(); LinkField field = new LinkField(itemField); switch (field.LinkType) { case "anchor": link.Url = field.Anchor; link.Type = LinkType.Anchor; break; case "external": link.Url = field.Url; link.Type = LinkType.External; break; case "mailto": link.Url = field.Url; link.Type = LinkType.MailTo; break; case "javascript": link.Url = field.Url; link.Type = LinkType.JavaScript; break; case "media": global::Sitecore.Data.Items.MediaItem media = new global::Sitecore.Data.Items.MediaItem(field.TargetItem); link.Url = global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media); link.Type = LinkType.Media; link.TargetId = field.TargetID.Guid; break; case "internal": if (field.TargetItem == null) link.Url = string.Empty; else link.Url = LinkManager.GetItemUrl(field.TargetItem); link.Type = LinkType.Internal; link.TargetId = field.TargetID.Guid; break; default: return null; break; } link.Anchor = field.Anchor; link.Class = field.Class; link.Text = field.Text; link.Title = field.Title; link.Target = field.Target; link.Query = field.QueryString; return link; }
/// <summary> /// Render HTML for a link /// </summary> /// <param name="link">The link to render</param> /// <param name="attributes">Addtiional attributes to add. Do not include href or title</param> /// <param name="contents">Content to go in the link instead of the standard text</param> /// <returns>An "a" HTML element </returns> public string RenderLink(FieldTypes.Link link, NameValueCollection attributes, string contents) { if (link == null) { return(""); } if (attributes == null) { attributes = new NameValueCollection(); } string format = "<a href='{0}{1}' title='{2}' target='{3}' class='{4}' {5}>{6}</a>"; string cls = attributes.AllKeys.Any(x => x == "class") ? attributes["class"] : link.Class; string anchor = link.Anchor.IsNullOrEmpty() ? "" : "#" + link.Anchor; string target = attributes.AllKeys.Any(x => x == "target") ? attributes["target"] : link.Target; AttributeCheck(attributes, "class", link.Class); AttributeCheck(attributes, "target", link.Target); AttributeCheck(attributes, "title", link.Title); attributes.Remove("href"); return(format.Formatted(link.Url, anchor, link.Title, target, cls, Utility.ConvertAttributes(attributes), contents.IsNullOrEmpty() ? link.Text : contents)); }
/// <summary> /// Render HTML for a link /// </summary> /// <param name="link">The link to render</param> /// <param name="attributes">Addtiional attributes to add. Do not include href or title</param> /// <returns>An "a" HTML element </returns> public string RenderLink(FieldTypes.Link link, NameValueCollection attributes) { return(RenderLink(link, attributes, string.Empty)); }
public void GetItem_Test1() { //Assign GeneralFluentFixtureNS.BasicTemplate test = null; //Act using (new SecurityDisabler()) { test = _sitecore.GetItem<GeneralFluentFixtureNS.BasicTemplate>("/sitecore/content/Configuration/Fluent/GeneralFluent/GetItemTest1"); } var getTestItem1 = _db.GetItem("/sitecore/content/Configuration/Fluent/GeneralFluent/GetItemTest1"); //Assert #region SitecoreId Assert.AreEqual(getTestItem1.ID.Guid, test.Id); #endregion #region Fields #region SimpleTypes Assert.IsTrue(test.Checkbox); Assert.AreEqual(new DateTime(2011, 05, 01), test.Date); Assert.AreEqual(new DateTime(2011, 06, 01, 06, 30, 00), test.DateTime); var file=new File(){ Id = new Guid("{368A358E-5835-458B-AFE6-BA5F80334F5A}"), Src ="~/media/Files/SimpleTextFile.ashx" }; Assert.AreEqual(file.Id, test.File.Id); Assert.AreEqual(file.Src, test.File.Src); var image = new Image() { Alt = "Alternate Text Test", Border = "", Class = "", Height = 540, HSpace = 50, MediaId = new Guid("{223EEAE5-DF4C-4E30-95AC-17BE2F00E2CD}"), Src = "~/media/Files/Kitten1.ashx", VSpace = 60, Width = 720, }; Assert.AreEqual(image.Alt, test.Image.Alt); Assert.AreEqual(image.Border, test.Image.Border); Assert.AreEqual(image.Class, test.Image.Class); Assert.AreEqual(image.Height, test.Image.Height); Assert.AreEqual(image.HSpace, test.Image.HSpace); Assert.AreEqual(image.MediaId, test.Image.MediaId); Assert.AreEqual(image.Src, test.Image.Src); Assert.AreEqual(image.VSpace, test.Image.VSpace); Assert.AreEqual(image.Width, test.Image.Width); Assert.AreEqual(456, test.Integer); Assert.AreEqual(456f, test.Float); Assert.AreEqual(456d, test.Double); Assert.AreEqual(456m, test.Decimal); Assert.AreEqual("Multi Line Text Test", test.MultiLineText); Assert.AreEqual(789, test.Number); Assert.AreEqual("Password Test", test.Password); Assert.AreEqual("<p>Rich Text Test</p>", test.RichText.Trim()); Assert.AreEqual("Single Line Text Test", test.SingleLineText); #endregion #region List Types Assert.AreEqual(2, test.CheckList.Count()); Assert.AreEqual(_check1.ID.Guid, test.CheckList.First().Id); Assert.AreEqual(_check2.ID.Guid, test.CheckList.Last().Id); Assert.AreEqual(TestEnum.Test1, test.DropList); Assert.AreEqual(_test3.ID.Guid, test.GroupedDropLink.Id); Assert.AreEqual(TestEnum.Test3, test.GroupedDropList); Assert.AreEqual(_multiList1.ID.Guid, test.MultiList.First().Id); Assert.AreEqual(_treeList1.ID.Guid, test.Treelist.First().Id); Assert.AreEqual(_treeList2.ID.Guid, test.TreeListEx.First().Id); #endregion #region Link Types Assert.AreEqual(_link1.ID.Guid, test.DropLink.Id); Assert.AreEqual(_link2.ID.Guid, test.DropTree.Id); var link = new Link(){ Anchor = "", Class = "Style Class Test", Target = "_blank", TargetId = Guid.Empty, Text = "Link Description Test", Title = "Alternate Text Test", Url = "http://www.google.com" }; Assert.AreEqual(link.Anchor, test.GeneralLink.Anchor); Assert.AreEqual(link.Class, test.GeneralLink.Class); Assert.AreEqual(link.Target, test.GeneralLink.Target); Assert.AreEqual(link.TargetId, test.GeneralLink.TargetId); Assert.AreEqual(link.Text, test.GeneralLink.Text); Assert.AreEqual(link.Title, test.GeneralLink.Title); Assert.AreEqual(link.Url, test.GeneralLink.Url); #endregion #region Developer Types Assert.AreEqual("/sitecore/shell/Themes/Standard/Applications/48x48/about.png", test.Icon); Assert.AreEqual(TriState.No, test.TriState); #endregion #region System Types Console.WriteLine("Attachment not tested"); #endregion #endregion #region SitecoreInfo Assert.AreEqual(getTestItem1.Paths.ContentPath, test.ContentPath); Assert.AreEqual(getTestItem1.DisplayName, test.DisplayName); Assert.AreEqual(getTestItem1.Paths.FullPath, test.FullPath); Assert.AreEqual(getTestItem1.Key, test.Key); Console.WriteLine("Not test media URL"); Assert.AreEqual(getTestItem1.Paths.Path, test.Path); Assert.AreEqual(getTestItem1.TemplateID.Guid, test.TemplateId); Assert.AreEqual(getTestItem1.TemplateName, test.TemplateName); Assert.AreEqual(LinkManager.GetItemUrl(getTestItem1), test.Url); Assert.AreEqual(getTestItem1.Version.Number, test.Version); #endregion #region SitecoreChildren Assert.AreEqual(getTestItem1.Children.Count, test.Children.Count()); Assert.AreEqual(getTestItem1.Children.First().ID.Guid, test.Children.First().Id); #endregion #region SitecoreParent Assert.AreEqual(getTestItem1.ParentID.Guid, test.Parent.Id); #endregion #region SitecoreQuery //we have to use the security disabler because we are outside of an ASP.NET context //if you do this without the disabler the role manager throws an exception using (new SecurityDisabler()) { Assert.AreEqual(3, test.Query.Count()); Assert.AreEqual(_query1.ID.Guid, test.Query.First().Id); Assert.AreEqual(_query2.ID.Guid, test.Query.Skip(1).First().Id); } #endregion }
/// <summary> /// Render HTML for a link /// </summary> /// <param name="link">The link to render</param> /// <returns>An "a" HTML element </returns> public string RenderLink(FieldTypes.Link link) { return(RenderLink(link, null, string.Empty)); }
public void SetValue_NoField() { //Assign Item item = _db.GetItem(new ID(_itemId)); string expected = ""; SitecoreProperty property = new SitecoreProperty() { Attribute = new SitecoreFieldAttribute(), Property = new FakePropertyInfo(typeof(Link), "NoField") }; _handler.ConfigureDataHandler(property); Link link = new Link(); //Act _handler.SetValue(item, link, null); //Assert //should be no errors, but nothing to test }
public void SetValue_LinkNoValues() { //Assign Item item = _db.GetItem(new ID(_itemId)); string expected = ""; SitecoreProperty property = new SitecoreProperty() { Attribute = new SitecoreFieldAttribute(), Property = new FakePropertyInfo(typeof(Link), "GeneralLink") }; _handler.ConfigureDataHandler(property); Link link = new Link(); string result = string.Empty; using (new SecurityDisabler()) { item.Editing.BeginEdit(); //Act _handler.SetValue(item, link, null); result = item.Fields["GeneralLink"].Value; item.Editing.CancelEdit(); } //Assert Assert.AreEqual(expected, result); }
public void SetValue_JavaScript() { //Assign Item item = _db.GetItem(new ID(_itemId)); string expected = "<link text=\"Test\" linktype=\"javascript\" url=\"javascript:JavaScript\" anchor=\"\" title=\"text\" class=\"class\" />"; SitecoreProperty property = new SitecoreProperty() { Attribute = new SitecoreFieldAttribute(), Property = new FakePropertyInfo(typeof(Link), "GeneralLink") }; _handler.ConfigureDataHandler(property); Link link = new Link(); link.Text = "TestDesc"; link.Type = LinkType.JavaScript; link.Anchor = "TestAnch"; link.Query = "TestQuery"; link.Title = "TestAlt"; link.Target = "_blank"; link.Class = "TestClass"; link.Url = "javascript:JavaScript"; string result = string.Empty; using (new SecurityDisabler()) { item.Editing.BeginEdit(); //Act _handler.SetValue(item, link, null); LinkField field = new LinkField(item.Fields["GeneralLink"]); //Assert Assert.AreEqual("TestAnch", field.Anchor); Assert.AreEqual("TestClass", field.Class); Assert.AreEqual("javascript", field.LinkType); Assert.AreEqual("TestQuery", field.QueryString); Assert.AreEqual("TestDesc", field.Text); Assert.AreEqual("TestAlt", field.Title); Assert.AreEqual("javascript:JavaScript", field.Url); item.Editing.CancelEdit(); } }
public void SetValue_Media() { //Assign Item item = _db.GetItem(new ID(_itemId)); string expected = "<link text=\"TestDesc\" linktype=\"media\" url=\"/Files/Kitten1\" title=\"TestText\" class=\"TestClass\" target=\"_blank\" id=\"{223EEAE5-DF4C-4E30-95AC-17BE2F00E2CD}\" />"; SitecoreProperty property = new SitecoreProperty() { Attribute = new SitecoreFieldAttribute(), Property = new FakePropertyInfo(typeof(Link), "GeneralLink") }; _handler.ConfigureDataHandler(property); Link link = new Link(); link.Text = "TestDesc"; link.Type = LinkType.Media; link.Anchor = "TestAnch"; link.Query = "TestQuery"; link.Title = "TestAlt"; link.Target = "_blank"; link.Class = "TestClass"; link.TargetId = new Guid("{223EEAE5-DF4C-4E30-95AC-17BE2F00E2CD}"); string result = string.Empty; using (new SecurityDisabler()) { item.Editing.BeginEdit(); //Act _handler.SetValue(item, link, null); LinkField field = new LinkField(item.Fields["GeneralLink"]); //Assert Assert.AreEqual("TestAnch", field.Anchor); Assert.AreEqual("TestClass", field.Class); Assert.AreEqual("media", field.LinkType); Assert.AreEqual("TestQuery", field.QueryString); Assert.AreEqual(new Guid("{223EEAE5-DF4C-4E30-95AC-17BE2F00E2CD}"), field.TargetID.Guid); Assert.AreEqual("TestDesc", field.Text); Assert.AreEqual("TestAlt", field.Title); item.Editing.CancelEdit(); } }
public void SetValue_Internal() { //Assign Item item = _db.GetItem(new ID(_itemId)); string expected = "<link text=\"TestDesc\" linktype=\"internal\" url=\"/Home.aspx\" anchor=\"TestAnch\" querystring=\"TestQuery\" title=\"TestAlt\" class=\"TestClass\" target=\"_blank\" id=\"{98F907F7-CD1A-4C88-AF11-8F38A21A7FE1}\" />"; SitecoreProperty property = new SitecoreProperty() { Attribute = new SitecoreFieldAttribute(), Property = new FakePropertyInfo(typeof(Link), "GeneralLink") }; _handler.ConfigureDataHandler(property); Link link = new Link(); link.Text = "TestDesc"; link.Type = LinkType.Internal; link.Anchor = "TestAnch"; link.Query = "TestQuery"; link.Title = "TestAlt"; link.Target = "_blank"; link.Class = "TestClass"; link.TargetId = new Guid("{98F907F7-CD1A-4C88-AF11-8F38A21A7FE1}"); string result = string.Empty; using (new SecurityDisabler()) { item.Editing.BeginEdit(); //Act _handler.SetValue(item, link, null); LinkField field = new LinkField(item.Fields["GeneralLink"]); Assert.AreEqual( "TestAnch", field.Anchor); Assert.AreEqual( "TestClass", field.Class); Assert.AreEqual("internal", field.LinkType); Assert.AreEqual("TestQuery", field.QueryString); Assert.AreEqual(new Guid("{98F907F7-CD1A-4C88-AF11-8F38A21A7FE1}"), field.TargetID.Guid); Assert.AreEqual("TestDesc", field.Text); Assert.AreEqual("TestAlt", field.Title); item.Editing.CancelEdit(); } }