internal static Link GetUrl (XElement field, Database database)
{
string attribute = GetAttributeValue(field, "linktype");
string url = GetAttributeValue(field, "url");
string caption = GetAttributeValue(field, "text");
string itemId = GetAttributeValue(field, "id");
string anchor = GetAttributeValue(field, "anchor");
string queryString = GetAttributeValue(field, "querystring");
string target = GetAttributeValue(field, "target");
string cssClass = GetAttributeValue(field, "class");
var link = new Link { Caption = caption, Target = target, CssClass = cssClass };
if (!string.IsNullOrEmpty(anchor))
{
anchor = "#" + anchor;
}
switch (attribute)
{
case "anchor":
link.LinkType = LinkTypes.Anchor;
link.Url = anchor;
break;
case "external":
link.LinkType = LinkTypes.External;
link.Url = GetExternalUrl(url);
break;
case "javascript":
link.LinkType = LinkTypes.JavaScript;
link.Url = GetJavaScriptUrl(url);
break;
case "mailto":
link.LinkType = LinkTypes.MailTo;
link.Url = GetMailToLink(url);
break;
case "media":
link.LinkType = LinkTypes.Media;
link.Url = GetMediaUrl(database, itemId);
break;
default: // assume "internal"
link.LinkType = LinkTypes.Internal;
link.Url = GetInternalUrl(database, url, itemId, anchor, queryString);
break;
}
return link;
}