Urls parsing improved

main
Inga 🏳‍🌈 14 years ago
parent 9b3b058e1a
commit f9263fe0d8
  1. 28
      Common/BBCodes/helpers/UrlProcessor.cs

@ -22,6 +22,10 @@ namespace FLocal.Common.BBCodes {
} }
} }
private static string Safe(string str) {
return System.Web.HttpUtility.HtmlEncode(str);
}
public static HashSet<string> KnownAliases = new HashSet<string> { public static HashSet<string> KnownAliases = new HashSet<string> {
"forum.local", "forum.local",
"forum.b.gz.ru", "forum.b.gz.ru",
@ -54,9 +58,6 @@ namespace FLocal.Common.BBCodes {
} }
public static string ProcessLink(string link, string title, bool shortenRelative) { public static string ProcessLink(string link, string title, bool shortenRelative) {
if(title == null) {
title = link;
}
bool isExternal = true; bool isExternal = true;
string url; string url;
if(shortenRelative) { if(shortenRelative) {
@ -67,6 +68,27 @@ namespace FLocal.Common.BBCodes {
var urlInfo = new Uri(link); var urlInfo = new Uri(link);
url = urlInfo.ToString(); url = urlInfo.ToString();
} }
if(title == null) {
if(!isExternal) {
var parts = url.Split(new char[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
var combinedToLower = string.Join("/", parts).ToLower();
if(combinedToLower.StartsWith("upload/item/")) {
title = Safe(dataobjects.Upload.LoadById(int.Parse(parts[2])).filename);
} else if(combinedToLower.StartsWith("post/")) {
title = Safe(dataobjects.Post.LoadById(int.Parse(parts[1])).title);
} else if(combinedToLower.StartsWith("thread/")) {
title = Safe(dataobjects.Thread.LoadById(int.Parse(parts[1])).title);
} else if(combinedToLower.StartsWith("board/") || combinedToLower.StartsWith("boardasthread/")) {
title = Safe(dataobjects.Board.LoadById(int.Parse(parts[1])).name);
} else if(combinedToLower.StartsWith("poll/")) {
title = Safe(dataobjects.Poll.LoadById(int.Parse(parts[1])).title);
} else {
title = link;
}
} else {
title = link;
}
}
string result = "<a href=\"" + url + "\">" + title + "</a>"; string result = "<a href=\"" + url + "\">" + title + "</a>";
if(isExternal) { if(isExternal) {
result += "<img src=\"/static/images/external.png\" border=\"0\"/>"; result += "<img src=\"/static/images/external.png\" border=\"0\"/>";

Loading…
Cancel
Save