Split parent link and linked image

This commit is contained in:
M66B 2019-03-13 09:35:33 +00:00
parent b27f43aa48
commit 1a75a70889
2 changed files with 41 additions and 31 deletions

View File

@ -183,50 +183,36 @@ public class HtmlHelper {
// Images
for (Element img : document.select("img")) {
// Get image attributes
String src = img.attr("src");
String alt = img.attr("alt");
String title = img.attr("title");
boolean tracking = isTrackingPixel(img);
// Create image container
Element div = document.createElement("div");
Uri uri = Uri.parse(src);
if ("http".equals(uri.getScheme()) || "https".equals(uri.getScheme())) {
// Remove link tracking pixel
if (tracking)
img.removeAttr("src");
// Remove link tracking pixel
if (tracking)
img.removeAttr("src");
boolean linked = false;
for (Element parent : img.parents())
if ("a".equals(parent.tagName())) {
if (TextUtils.isEmpty(parent.attr("href")))
parent.attr("href", uri.toString());
linked = true;
break;
}
if (linked)
div.appendChild(img.clone());
else {
Element a = document.createElement("a");
a.attr("href", uri.toString());
a.appendChild(img.clone());
div.appendChild(a);
}
} else
div.appendChild(img.clone());
// Link image to source
Element a = document.createElement("a");
a.attr("href", src);
a.appendChild(img.clone());
div.appendChild(a);
// Show image title
if (!TextUtils.isEmpty(title)) {
div.appendElement("br");
div.appendElement("em").text(title);
}
if (!TextUtils.isEmpty(alt)) {
div.appendElement("br");
div.appendElement("em").text(alt);
}
if (!TextUtils.isEmpty(title) && !title.equals(alt)) {
div.appendElement("br");
div.appendElement("em").text(title);
}
// Tracking pixel
// Show when tracking pixel
if (tracking) {
div.appendElement("br");
div.appendElement("strong").text(
@ -234,7 +220,30 @@ public class HtmlHelper {
img.attr("width"), img.attr("height")));
}
img.replaceWith(div);
// Split parent link and linked image
boolean linked = false;
for (Element parent : img.parents())
if ("a".equals(parent.tagName()) && !TextUtils.isEmpty(parent.attr("href"))) {
String text = parent.attr("title").trim();
if (TextUtils.isEmpty(text))
text = parent.attr("alt").trim();
if (TextUtils.isEmpty(text))
text = context.getString(R.string.title_hint_image_link);
img.remove();
parent.appendText(text);
Element span = document.createElement("span");
span.appendChild(parent.clone());
span.appendChild(div);
parent.replaceWith(span);
linked = true;
break;
}
if (!linked)
img.replaceWith(div);
}
// Autolink

View File

@ -525,6 +525,7 @@
<string name="title_hint_message_actions">Swipe left to trash; swipe right to archive (if available)</string>
<string name="title_hint_message_selection">Long press a message to start selecting multiple messages</string>
<string name="title_hint_sync">Downloading messages can take some time, depending on the speed of the provider, internet connection and device and on the number of messages. While downloading messages the app might respond slower.</string>
<string name="title_hint_image_link">Image link</string>
<string name="title_hint_tracking_image">Tracking image %1$sx%2$s</string>
<string name="title_open_link">Open link</string>