forked from indymedia/epicyon
Implement mentions as a separate text field in replies
This avoids the need for any javascript putting the cursor at the end of the mentionsmain
parent
125ead6f8b
commit
fcbdf2be84
20
daemon.py
20
daemon.py
|
@ -5205,6 +5205,9 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
except BaseException:
|
except BaseException:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
mentionsStr = ''
|
||||||
|
if fields.get('mentions'):
|
||||||
|
mentionsStr = fields['mentions'].strip() + ' '
|
||||||
if postType == 'newpost':
|
if postType == 'newpost':
|
||||||
messageJson = \
|
messageJson = \
|
||||||
createPublicPost(self.server.baseDir,
|
createPublicPost(self.server.baseDir,
|
||||||
|
@ -5212,7 +5215,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.domain,
|
self.server.domain,
|
||||||
self.server.port,
|
self.server.port,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
fields['message'],
|
mentionsStr + fields['message'],
|
||||||
False, False, False,
|
False, False, False,
|
||||||
filename, attachmentMediaType,
|
filename, attachmentMediaType,
|
||||||
fields['imageDescription'],
|
fields['imageDescription'],
|
||||||
|
@ -5341,7 +5344,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
nickname,
|
nickname,
|
||||||
self.server.domain, self.server.port,
|
self.server.domain, self.server.port,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
fields['message'],
|
mentionsStr + fields['message'],
|
||||||
False, False, False,
|
False, False, False,
|
||||||
filename, attachmentMediaType,
|
filename, attachmentMediaType,
|
||||||
fields['imageDescription'],
|
fields['imageDescription'],
|
||||||
|
@ -5373,7 +5376,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.domain,
|
self.server.domain,
|
||||||
self.server.port,
|
self.server.port,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
fields['message'],
|
mentionsStr + fields['message'],
|
||||||
True, False, False,
|
True, False, False,
|
||||||
filename, attachmentMediaType,
|
filename, attachmentMediaType,
|
||||||
fields['imageDescription'],
|
fields['imageDescription'],
|
||||||
|
@ -5401,13 +5404,14 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
elif postType == 'newdm':
|
elif postType == 'newdm':
|
||||||
messageJson = None
|
messageJson = None
|
||||||
print('A DM was posted')
|
print('A DM was posted')
|
||||||
if '@' in fields['message']:
|
if '@' in mentionsStr:
|
||||||
messageJson = \
|
messageJson = \
|
||||||
createDirectMessagePost(self.server.baseDir,
|
createDirectMessagePost(self.server.baseDir,
|
||||||
nickname,
|
nickname,
|
||||||
self.server.domain,
|
self.server.domain,
|
||||||
self.server.port,
|
self.server.port,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
|
mentionsStr +
|
||||||
fields['message'],
|
fields['message'],
|
||||||
True, False, False,
|
True, False, False,
|
||||||
filename, attachmentMediaType,
|
filename, attachmentMediaType,
|
||||||
|
@ -5440,15 +5444,15 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
messageJson = None
|
messageJson = None
|
||||||
handle = nickname + '@' + self.server.domainFull
|
handle = nickname + '@' + self.server.domainFull
|
||||||
print('A reminder was posted for ' + handle)
|
print('A reminder was posted for ' + handle)
|
||||||
if '@' + handle not in fields['message']:
|
if '@' + handle not in mentionsStr:
|
||||||
fields['message'] = '@' + handle + ' ' + fields['message']
|
mentionsStr = '@' + handle + ' ' + mentionsStr
|
||||||
messageJson = \
|
messageJson = \
|
||||||
createDirectMessagePost(self.server.baseDir,
|
createDirectMessagePost(self.server.baseDir,
|
||||||
nickname,
|
nickname,
|
||||||
self.server.domain,
|
self.server.domain,
|
||||||
self.server.port,
|
self.server.port,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
fields['message'],
|
mentionsStr + fields['message'],
|
||||||
True, False, False,
|
True, False, False,
|
||||||
filename, attachmentMediaType,
|
filename, attachmentMediaType,
|
||||||
fields['imageDescription'],
|
fields['imageDescription'],
|
||||||
|
@ -5481,7 +5485,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
nickname,
|
nickname,
|
||||||
self.server.domain, self.server.port,
|
self.server.domain, self.server.port,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
fields['message'],
|
mentionsStr + fields['message'],
|
||||||
True, False, False,
|
True, False, False,
|
||||||
filename, attachmentMediaType,
|
filename, attachmentMediaType,
|
||||||
fields['imageDescription'],
|
fields['imageDescription'],
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "هنج",
|
"Henge": "هنج",
|
||||||
"QR Code": "رمز الاستجابة السريعة",
|
"QR Code": "رمز الاستجابة السريعة",
|
||||||
"Reminder": "تذكير",
|
"Reminder": "تذكير",
|
||||||
"Scheduled note to yourself": "ملاحظة مجدولة لنفسك"
|
"Scheduled note to yourself": "ملاحظة مجدولة لنفسك",
|
||||||
|
"Replying to": "الرد على"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "Codi QR",
|
"QR Code": "Codi QR",
|
||||||
"Reminder": "Recordatori",
|
"Reminder": "Recordatori",
|
||||||
"Scheduled note to yourself": "Nota programada a tu mateix"
|
"Scheduled note to yourself": "Nota programada a tu mateix",
|
||||||
|
"Replying to": "Responent a"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "Cod QR",
|
"QR Code": "Cod QR",
|
||||||
"Reminder": "Nodyn atgoffa",
|
"Reminder": "Nodyn atgoffa",
|
||||||
"Scheduled note to yourself": "Nodyn wedi'i drefnu i chi'ch hun"
|
"Scheduled note to yourself": "Nodyn wedi'i drefnu i chi'ch hun",
|
||||||
|
"Replying to": "Ymateb i"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "QR-Code",
|
"QR Code": "QR-Code",
|
||||||
"Reminder": "Erinnerung",
|
"Reminder": "Erinnerung",
|
||||||
"Scheduled note to yourself": "Geplante Notiz an dich"
|
"Scheduled note to yourself": "Geplante Notiz an dich",
|
||||||
|
"Replying to": "Antworten auf"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "QR Code",
|
"QR Code": "QR Code",
|
||||||
"Reminder": "Reminder",
|
"Reminder": "Reminder",
|
||||||
"Scheduled note to yourself": "Scheduled note to yourself"
|
"Scheduled note to yourself": "Scheduled note to yourself",
|
||||||
|
"Replying to": "Replying to"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "Código QR",
|
"QR Code": "Código QR",
|
||||||
"Reminder": "Recordatorio",
|
"Reminder": "Recordatorio",
|
||||||
"Scheduled note to yourself": "Nota programada para ti"
|
"Scheduled note to yourself": "Nota programada para ti",
|
||||||
|
"Replying to": "Respondiendo a"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "QR Code",
|
"QR Code": "QR Code",
|
||||||
"Reminder": "Rappel",
|
"Reminder": "Rappel",
|
||||||
"Scheduled note to yourself": "Note programmée pour vous"
|
"Scheduled note to yourself": "Note programmée pour vous",
|
||||||
|
"Replying to": "Répondre à"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "Cód QR",
|
"QR Code": "Cód QR",
|
||||||
"Reminder": "Meabhrúchán",
|
"Reminder": "Meabhrúchán",
|
||||||
"Scheduled note to yourself": "Nóta sceidealta duit féin"
|
"Scheduled note to yourself": "Nóta sceidealta duit féin",
|
||||||
|
"Replying to": "Ag freagairt do"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "हेंगे",
|
"Henge": "हेंगे",
|
||||||
"QR Code": "क्यूआर कोड",
|
"QR Code": "क्यूआर कोड",
|
||||||
"Reminder": "अनुस्मारक",
|
"Reminder": "अनुस्मारक",
|
||||||
"Scheduled note to yourself": "खुद को निर्धारित नोट"
|
"Scheduled note to yourself": "खुद को निर्धारित नोट",
|
||||||
|
"Replying to": "को जवाब दे रहा है"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "QR Code",
|
"QR Code": "QR Code",
|
||||||
"Reminder": "Promemoria",
|
"Reminder": "Promemoria",
|
||||||
"Scheduled note to yourself": "Nota programmata per te"
|
"Scheduled note to yourself": "Nota programmata per te",
|
||||||
|
"Replying to": "In risposta a"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "ヘンゲ",
|
"Henge": "ヘンゲ",
|
||||||
"QR Code": "QRコード",
|
"QR Code": "QRコード",
|
||||||
"Reminder": "リマインダー",
|
"Reminder": "リマインダー",
|
||||||
"Scheduled note to yourself": "自分への予定されたメモ"
|
"Scheduled note to yourself": "自分への予定されたメモ",
|
||||||
|
"Replying to": "に返信しています"
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,5 +230,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "QR Code",
|
"QR Code": "QR Code",
|
||||||
"Reminder": "Reminder",
|
"Reminder": "Reminder",
|
||||||
"Scheduled note to yourself": "Scheduled note to yourself"
|
"Scheduled note to yourself": "Scheduled note to yourself",
|
||||||
|
"Replying to": "Replying to"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Henge",
|
"Henge": "Henge",
|
||||||
"QR Code": "Código QR",
|
"QR Code": "Código QR",
|
||||||
"Reminder": "Lembrete",
|
"Reminder": "Lembrete",
|
||||||
"Scheduled note to yourself": "Nota agendada para si mesmo"
|
"Scheduled note to yourself": "Nota agendada para si mesmo",
|
||||||
|
"Replying to": "Respondendo a"
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,5 +234,6 @@
|
||||||
"Henge": "Хендж",
|
"Henge": "Хендж",
|
||||||
"QR Code": "QR код",
|
"QR Code": "QR код",
|
||||||
"Reminder": "напоминание",
|
"Reminder": "напоминание",
|
||||||
"Scheduled note to yourself": "Запланированная заметка для себя"
|
"Scheduled note to yourself": "Запланированная заметка для себя",
|
||||||
|
"Replying to": "Отвечать на"
|
||||||
}
|
}
|
||||||
|
|
|
@ -233,5 +233,6 @@
|
||||||
"Henge": "亨格",
|
"Henge": "亨格",
|
||||||
"QR Code": "二维码",
|
"QR Code": "二维码",
|
||||||
"Reminder": "提醒",
|
"Reminder": "提醒",
|
||||||
"Scheduled note to yourself": "预定给自己的笔记"
|
"Scheduled note to yourself": "预定给自己的笔记",
|
||||||
|
"Replying to": "回覆"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1798,6 +1798,11 @@ def htmlNewPost(mediaInstance: bool, translate: {},
|
||||||
scopeDescription = translate['Public']
|
scopeDescription = translate['Public']
|
||||||
placeholderSubject = \
|
placeholderSubject = \
|
||||||
translate['Subject or Content Warning (optional)'] + '...'
|
translate['Subject or Content Warning (optional)'] + '...'
|
||||||
|
placeholderMentions = ''
|
||||||
|
if inReplyTo:
|
||||||
|
# mentionsAndContent = getMentionsString(content)
|
||||||
|
placeholderMentions = \
|
||||||
|
translate['Replying to'] + '...'
|
||||||
placeholderMessage = translate['Write something'] + '...'
|
placeholderMessage = translate['Write something'] + '...'
|
||||||
extraFields = ''
|
extraFields = ''
|
||||||
endpoint = 'newpost'
|
endpoint = 'newpost'
|
||||||
|
@ -2070,10 +2075,20 @@ def htmlNewPost(mediaInstance: bool, translate: {},
|
||||||
newPostForm += replyStr
|
newPostForm += replyStr
|
||||||
if mediaInstance and not replyStr:
|
if mediaInstance and not replyStr:
|
||||||
newPostForm += newPostImageSection
|
newPostForm += newPostImageSection
|
||||||
|
|
||||||
newPostForm += \
|
newPostForm += \
|
||||||
' <label class="labels">' + placeholderSubject + '</label><br>'
|
' <label class="labels">' + placeholderSubject + '</label><br>'
|
||||||
newPostForm += ' <input type="text" name="subject">'
|
newPostForm += ' <input type="text" name="subject">'
|
||||||
newPostForm += ''
|
newPostForm += ''
|
||||||
|
|
||||||
|
if inReplyTo:
|
||||||
|
newPostForm += \
|
||||||
|
' <label class="labels">' + placeholderMentions + '</label><br>'
|
||||||
|
newPostForm += \
|
||||||
|
' <input type="text" name="mentions" value="' + \
|
||||||
|
mentionsStr + '">'
|
||||||
|
newPostForm += ''
|
||||||
|
|
||||||
newPostForm += \
|
newPostForm += \
|
||||||
' <br><label class="labels">' + placeholderMessage + '</label>'
|
' <br><label class="labels">' + placeholderMessage + '</label>'
|
||||||
messageBoxHeight = 400
|
messageBoxHeight = 400
|
||||||
|
@ -2087,7 +2102,7 @@ def htmlNewPost(mediaInstance: bool, translate: {},
|
||||||
|
|
||||||
newPostForm += \
|
newPostForm += \
|
||||||
' <textarea id="message" name="message" style="height:' + \
|
' <textarea id="message" name="message" style="height:' + \
|
||||||
str(messageBoxHeight) + 'px">' + mentionsStr + '</textarea>\n'
|
str(messageBoxHeight) + 'px"></textarea>\n'
|
||||||
newPostForm += extraFields+dateAndLocation
|
newPostForm += extraFields+dateAndLocation
|
||||||
if not mediaInstance or replyStr:
|
if not mediaInstance or replyStr:
|
||||||
newPostForm += newPostImageSection
|
newPostForm += newPostImageSection
|
||||||
|
@ -2095,8 +2110,6 @@ def htmlNewPost(mediaInstance: bool, translate: {},
|
||||||
newPostForm += '</form>\n'
|
newPostForm += '</form>\n'
|
||||||
|
|
||||||
if not reportUrl:
|
if not reportUrl:
|
||||||
newPostForm += \
|
|
||||||
'<script>' + cursorToEndOfMessageScript() + '</script>'
|
|
||||||
newPostForm = \
|
newPostForm = \
|
||||||
newPostForm.replace('<body>', '<body onload="focusOnMessage()">')
|
newPostForm.replace('<body>', '<body onload="focusOnMessage()">')
|
||||||
|
|
||||||
|
@ -2743,27 +2756,6 @@ def individualFollowAsHtml(translate: {},
|
||||||
return resultStr
|
return resultStr
|
||||||
|
|
||||||
|
|
||||||
def cursorToEndOfMessageScript() -> str:
|
|
||||||
"""Moves the cursor to the end of the text in a textarea
|
|
||||||
This avoids the cursor being in the wrong position when replying
|
|
||||||
"""
|
|
||||||
script = 'function focusOnMessage() {\n'
|
|
||||||
script += " var replyTextArea=document.getElementById('message');\n"
|
|
||||||
script += ' val=replyTextArea.value;\n'
|
|
||||||
script += ' if ((val.length>0) && (val.charAt(val.length-1) != " ")) {\n'
|
|
||||||
script += ' val += " ";\n'
|
|
||||||
script += ' }\n'
|
|
||||||
script += ' replyTextArea.focus();\n'
|
|
||||||
script += ' replyTextArea.value="";\n'
|
|
||||||
script += ' replyTextArea.value=val;\n'
|
|
||||||
script += '}\n'
|
|
||||||
script += "var replyTextArea=document.getElementById('message')\n"
|
|
||||||
script += 'replyTextArea.onFocus=function() {\n'
|
|
||||||
script += ' focusOnMessage();'
|
|
||||||
script += '}\n'
|
|
||||||
return script
|
|
||||||
|
|
||||||
|
|
||||||
def addEmbeddedAudio(translate: {}, content: str) -> str:
|
def addEmbeddedAudio(translate: {}, content: str) -> str:
|
||||||
"""Adds embedded audio for mp3/ogg
|
"""Adds embedded audio for mp3/ogg
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue