diff --git a/theme/blue/icons/avatar_default.png b/theme/blue/icons/avatar_default.png
new file mode 100644
index 000000000..f8cbb8f38
Binary files /dev/null and b/theme/blue/icons/avatar_default.png differ
diff --git a/theme/debian/icons/avatar_default.png b/theme/debian/icons/avatar_default.png
new file mode 100644
index 000000000..07599baeb
Binary files /dev/null and b/theme/debian/icons/avatar_default.png differ
diff --git a/theme/default/icons/avatar_default.png b/theme/default/icons/avatar_default.png
new file mode 100644
index 000000000..f8cbb8f38
Binary files /dev/null and b/theme/default/icons/avatar_default.png differ
diff --git a/theme/hacker/icons/avatar_default.png b/theme/hacker/icons/avatar_default.png
new file mode 100644
index 000000000..66c11c47b
Binary files /dev/null and b/theme/hacker/icons/avatar_default.png differ
diff --git a/theme/henge/icons/avatar_default.png b/theme/henge/icons/avatar_default.png
new file mode 100644
index 000000000..34e898654
Binary files /dev/null and b/theme/henge/icons/avatar_default.png differ
diff --git a/theme/indymediaclassic/icons/avatar_default.png b/theme/indymediaclassic/icons/avatar_default.png
new file mode 100644
index 000000000..261ae6239
Binary files /dev/null and b/theme/indymediaclassic/icons/avatar_default.png differ
diff --git a/theme/indymediamodern/icons/avatar_default.png b/theme/indymediamodern/icons/avatar_default.png
new file mode 100644
index 000000000..9089a1b66
Binary files /dev/null and b/theme/indymediamodern/icons/avatar_default.png differ
diff --git a/theme/lcd/icons/avatar_default.png b/theme/lcd/icons/avatar_default.png
new file mode 100644
index 000000000..74cc49969
Binary files /dev/null and b/theme/lcd/icons/avatar_default.png differ
diff --git a/theme/light/icons/avatar_default.png b/theme/light/icons/avatar_default.png
new file mode 100644
index 000000000..0196a526e
Binary files /dev/null and b/theme/light/icons/avatar_default.png differ
diff --git a/theme/night/icons/avatar_default.png b/theme/night/icons/avatar_default.png
new file mode 100644
index 000000000..7b770cd0b
Binary files /dev/null and b/theme/night/icons/avatar_default.png differ
diff --git a/theme/purple/icons/avatar_default.png b/theme/purple/icons/avatar_default.png
new file mode 100644
index 000000000..db87e722a
Binary files /dev/null and b/theme/purple/icons/avatar_default.png differ
diff --git a/theme/rc3/icons/avatar_default.png b/theme/rc3/icons/avatar_default.png
new file mode 100644
index 000000000..467c365d6
Binary files /dev/null and b/theme/rc3/icons/avatar_default.png differ
diff --git a/theme/solidaric/icons/avatar_default.png b/theme/solidaric/icons/avatar_default.png
new file mode 100644
index 000000000..bb95103d5
Binary files /dev/null and b/theme/solidaric/icons/avatar_default.png differ
diff --git a/theme/starlight/icons/avatar_default.png b/theme/starlight/icons/avatar_default.png
new file mode 100644
index 000000000..1a173f348
Binary files /dev/null and b/theme/starlight/icons/avatar_default.png differ
diff --git a/theme/zen/icons/avatar_default.png b/theme/zen/icons/avatar_default.png
new file mode 100644
index 000000000..31df35fc6
Binary files /dev/null and b/theme/zen/icons/avatar_default.png differ
diff --git a/webapp_post.py b/webapp_post.py
index 366a56b64..000e063f1 100644
--- a/webapp_post.py
+++ b/webapp_post.py
@@ -206,16 +206,22 @@ def getAvatarImageHtml(showAvatarOptions: bool,
nickname: str, domainFull: str,
avatarUrl: str, postActor: str,
translate: {}, avatarPosition: str,
- pageNumber: int, messageIdStr: str) -> str:
+ pageNumber: int, messageIdStr: str,
+ iconsPath: str) -> str:
"""Get html for the avatar image
"""
+ # if the image link is broken then this provides a local substitute
+ brokenLinkSubstitute = \
+ " onerror=\"this.onerror=null; this.src='" + \
+ iconsPath + "/avatar_default.png'\""
+
avatarLink = ''
if '/users/news/' not in avatarUrl:
avatarLink = ' '
avatarLink += \
' \n'
+ brokenLinkSubstitute + '/>\n'
if showAvatarOptions and \
domainFull + '/users/' + nickname not in postActor:
@@ -227,13 +233,15 @@ def getAvatarImageHtml(showAvatarOptions: bool,
avatarLink += \
'
\n'
+ '" src="' + avatarUrl + '" ' + avatarPosition + \
+ brokenLinkSubstitute + '/>\n'
else:
# don't link to the person options for the news account
avatarLink += \
'
\n'
+ '" src="' + avatarUrl + '" ' + avatarPosition + \
+ brokenLinkSubstitute + '/>\n'
return avatarLink.strip()
@@ -1211,7 +1219,8 @@ def individualPostAsHtml(allowDownloads: bool,
nickname, domainFull,
avatarUrl, postActor,
translate, avatarPosition,
- pageNumber, messageIdStr)
+ pageNumber, messageIdStr,
+ iconsPath)
avatarImageInPost = \
'