forked from indymedia/epicyon
Edit links button
parent
83847c9b99
commit
3e26f5f745
|
@ -131,6 +131,23 @@ a, u {
|
|||
color: var(--main-fg-color);
|
||||
}
|
||||
|
||||
.editLinksBtn {
|
||||
border-radius: var(--button-corner-radius);
|
||||
background-color: var(--button-background);
|
||||
border: none;
|
||||
color: var(--button-text);
|
||||
text-align: center;
|
||||
font-size: var(--font-size-header);
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
padding: var(--button-height-padding);
|
||||
width: 90%;
|
||||
max-width: 200px;
|
||||
min-width: 10ch;
|
||||
transition: all 0.5s;
|
||||
cursor: pointer;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
a:visited{
|
||||
color: var(--main-visited-color);
|
||||
background: var(--link-bg-color);
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "تحذيرات المحتوى المُنشأ تلقائيًا",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag محظور",
|
||||
"This is a blogging instance": "هذا مثال على المدونات"
|
||||
"This is a blogging instance": "هذا مثال على المدونات",
|
||||
"Edit Links": "تحرير الارتباطات",
|
||||
"One link per line. Description followed by the link.": "رابط واحد في كل سطر. الوصف متبوع بالرابط."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Advertiments de contingut autogenerats",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag bloquejat",
|
||||
"This is a blogging instance": "Aquesta és una instància de blocs"
|
||||
"This is a blogging instance": "Aquesta és una instància de blocs",
|
||||
"Edit Links": "Edita els enllaços",
|
||||
"One link per line. Description followed by the link.": "Un enllaç per línia. Descripció seguida de l'enllaç."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Rhybuddion Cynnwys Autogenerated",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag wedi'i Blocio",
|
||||
"This is a blogging instance": "Dyma enghraifft blogio"
|
||||
"This is a blogging instance": "Dyma enghraifft blogio",
|
||||
"Edit Links": "Golygu Dolenni",
|
||||
"One link per line. Description followed by the link.": "Un dolen y llinell. Disgrifiad wedi'i ddilyn gan y ddolen."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Warnungen vor automatisch generierten Inhalten",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag blockiert",
|
||||
"This is a blogging instance": "Dies ist eine Blogging-Instanz"
|
||||
"This is a blogging instance": "Dies ist eine Blogging-Instanz",
|
||||
"Edit Links": "Links bearbeiten",
|
||||
"One link per line. Description followed by the link.": "Ein Link pro Zeile. Beschreibung gefolgt vom Link."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Autogenerated Content Warnings",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag Blocked",
|
||||
"This is a blogging instance": "This is a blogging instance"
|
||||
"This is a blogging instance": "This is a blogging instance",
|
||||
"Edit Links": "Edit Links",
|
||||
"One link per line. Description followed by the link.": "One link per line. Description followed by the link."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Advertencias de contenido generado automáticamente",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag bloqueada",
|
||||
"This is a blogging instance": "Esta es una instancia de blogs"
|
||||
"This is a blogging instance": "Esta es una instancia de blogs",
|
||||
"Edit Links": "Editar enlaces",
|
||||
"One link per line. Description followed by the link.": "Un enlace por línea. Descripción seguida del enlace."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Avertissements de contenu générés automatiquement",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag bloqué",
|
||||
"This is a blogging instance": "Ceci est une instance de blog"
|
||||
"This is a blogging instance": "Ceci est une instance de blog",
|
||||
"Edit Links": "Modifier les liens",
|
||||
"One link per line. Description followed by the link.": "Un lien par ligne. Description suivie du lien."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Rabhaidh Ábhar Uathghinte",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag Blocáilte",
|
||||
"This is a blogging instance": "Seo sampla blagála"
|
||||
"This is a blogging instance": "Seo sampla blagála",
|
||||
"Edit Links": "Cuir Naisc in eagar",
|
||||
"One link per line. Description followed by the link.": "Nasc amháin in aghaidh an líne. Cur síos agus an nasc ina dhiaidh sin."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "स्वतः प्राप्त सामग्री चेतावनी",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "हैशटैग अवरुद्ध",
|
||||
"This is a blogging instance": "यह एक ब्लॉगिंग उदाहरण है"
|
||||
"This is a blogging instance": "यह एक ब्लॉगिंग उदाहरण है",
|
||||
"Edit Links": "लिंक संपादित करें",
|
||||
"One link per line. Description followed by the link.": "प्रति पंक्ति एक लिंक। लिंक के बाद विवरण।"
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Avvisi sui contenuti generati automaticamente",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag bloccato",
|
||||
"This is a blogging instance": "Questa è un'istanza di blog"
|
||||
"This is a blogging instance": "Questa è un'istanza di blog",
|
||||
"Edit Links": "Modifica collegamenti",
|
||||
"One link per line. Description followed by the link.": "Un collegamento per riga. Descrizione seguita dal collegamento."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "自動生成されたコンテンツの警告",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "ハッシュタグがブロックされました",
|
||||
"This is a blogging instance": "これはブログのインスタンスです"
|
||||
"This is a blogging instance": "これはブログのインスタンスです",
|
||||
"Edit Links": "リンクの編集",
|
||||
"One link per line. Description followed by the link.": "1行に1つのリンク。 説明の後にリンクが続きます。"
|
||||
}
|
||||
|
|
|
@ -284,5 +284,7 @@
|
|||
"Autogenerated Content Warnings": "Autogenerated Content Warnings",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag Blocked",
|
||||
"This is a blogging instance": "This is a blogging instance"
|
||||
"This is a blogging instance": "This is a blogging instance",
|
||||
"Edit Links": "Edit Links",
|
||||
"One link per line. Description followed by the link.": "One link per line. Description followed by the link."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Avisos de conteúdo gerado automaticamente",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Hashtag bloqueada",
|
||||
"This is a blogging instance": "Esta é uma instância de blog"
|
||||
"This is a blogging instance": "Esta é uma instância de blog",
|
||||
"Edit Links": "Editar Links",
|
||||
"One link per line. Description followed by the link.": "Um link por linha. Descrição seguida pelo link."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "Автоматические предупреждения о содержании",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "Хештег заблокирован",
|
||||
"This is a blogging instance": "Это экземпляр блога"
|
||||
"This is a blogging instance": "Это экземпляр блога",
|
||||
"Edit Links": "Редактировать ссылки",
|
||||
"One link per line. Description followed by the link.": "По одной ссылке в строке. Описание с последующей ссылкой."
|
||||
}
|
||||
|
|
|
@ -288,5 +288,7 @@
|
|||
"Autogenerated Content Warnings": "自动生成的内容警告",
|
||||
"Indymedia": "Indymedia",
|
||||
"Hashtag Blocked": "标签被阻止",
|
||||
"This is a blogging instance": "这是一个博客实例"
|
||||
"This is a blogging instance": "这是一个博客实例",
|
||||
"Edit Links": "编辑连结",
|
||||
"One link per line. Description followed by the link.": "每行一个链接。 描述,然后是链接。"
|
||||
}
|
||||
|
|
101
webinterface.py
101
webinterface.py
|
@ -1206,6 +1206,79 @@ def scheduledPostsExist(baseDir: str, nickname: str, domain: str) -> bool:
|
|||
return False
|
||||
|
||||
|
||||
def htmlEditLinks(translate: {}, baseDir: str, path: str,
|
||||
domain: str, port: int, httpPrefix: str) -> str:
|
||||
"""Shows the edit links screen
|
||||
"""
|
||||
if '/users/' not in path:
|
||||
return ''
|
||||
pathOriginal = path
|
||||
path = path.replace('/inbox', '').replace('/outbox', '')
|
||||
path = path.replace('/shares', '')
|
||||
|
||||
nickname = getNicknameFromActor(path)
|
||||
if not nickname:
|
||||
return ''
|
||||
|
||||
domainFull = domain
|
||||
if port:
|
||||
if port != 80 and port != 443:
|
||||
if ':' not in domain:
|
||||
domainFull = domain + ':' + str(port)
|
||||
|
||||
# is the user a moderator?
|
||||
if not isModerator(baseDir, nickname):
|
||||
return ''
|
||||
|
||||
cssFilename = baseDir + '/epicyon-links.css'
|
||||
if os.path.isfile(baseDir + '/links.css'):
|
||||
cssFilename = baseDir + '/links.css'
|
||||
with open(cssFilename, 'r') as cssFile:
|
||||
editCSS = cssFile.read()
|
||||
if httpPrefix != 'https':
|
||||
editCSS = \
|
||||
editCSS.replace('https://', httpPrefix + '://')
|
||||
|
||||
editLinksForm = htmlHeader(cssFilename, editCSS)
|
||||
editLinksForm += \
|
||||
'<form enctype="multipart/form-data" method="POST" ' + \
|
||||
'accept-charset="UTF-8" action="' + path + '/linksdata">\n'
|
||||
editLinksForm += \
|
||||
' <div class="vertical-center">\n'
|
||||
editLinksForm += \
|
||||
' <p class="new-post-text">' + translate['Edit Links'] + '</p>'
|
||||
editLinksForm += \
|
||||
' <div class="container">\n'
|
||||
editLinksForm += \
|
||||
' <a href="' + pathOriginal + '"><button class="cancelbtn">' + \
|
||||
translate['Go Back'] + '</button></a>\n'
|
||||
editLinksForm += \
|
||||
' <input type="submit" name="submitLinks" value="' + \
|
||||
translate['Submit'] + '">\n'
|
||||
editLinksForm += \
|
||||
' </div>\n'
|
||||
|
||||
linksFilename = baseDir + '/accounts/links.txt'
|
||||
linksStr = ''
|
||||
if os.path.isfile(linksFilename):
|
||||
with open(linksFilename, 'r') as fp:
|
||||
linksStr = fp.read()
|
||||
|
||||
editLinksForm = \
|
||||
'<div class="container">'
|
||||
editLinksForm += \
|
||||
' ' + \
|
||||
translate['One link per line. Description followed by the link.']
|
||||
editLinksForm += \
|
||||
' <textarea id="message" name="editedLinks" style="height:500px">' + \
|
||||
linksStr + '</textarea>'
|
||||
editLinksForm += \
|
||||
'</div>'
|
||||
|
||||
editLinksForm += htmlFooter()
|
||||
return editLinksForm
|
||||
|
||||
|
||||
def htmlEditProfile(translate: {}, baseDir: str, path: str,
|
||||
domain: str, port: int, httpPrefix: str) -> str:
|
||||
"""Shows the edit profile screen
|
||||
|
@ -5077,15 +5150,23 @@ def htmlHighlightLabel(label: str, highlight: bool) -> str:
|
|||
return '*' + label + '*'
|
||||
|
||||
|
||||
def getLeftColumContent(baseDir: str, nickname: str, domain: str) -> str:
|
||||
def getLeftColumnContent(baseDir: str, nickname: str, domainFull: str,
|
||||
httpPrefix: str, translate: {}) -> str:
|
||||
"""Returns html content for the left column
|
||||
"""
|
||||
htmlStr = ''
|
||||
# TODO
|
||||
htmlStr = \
|
||||
' <center>\n' + \
|
||||
' <a href="' + \
|
||||
httpPrefix + '://' + domainFull + \
|
||||
'/users/' + nickname + '/editlinks' + '">' + \
|
||||
'<button class="editLinksBtn">' + \
|
||||
translate['Edit Links'] + '</button></a>\n' + \
|
||||
' </center>\n'
|
||||
|
||||
return htmlStr
|
||||
|
||||
|
||||
def getRightColumContent(baseDir: str, nickname: str, domain: str) -> str:
|
||||
def getRightColumnContent(baseDir: str, nickname: str, domain: str) -> str:
|
||||
"""Returns html content for the right column
|
||||
"""
|
||||
htmlStr = ''
|
||||
|
@ -5393,8 +5474,16 @@ def htmlTimeline(defaultTimeline: str,
|
|||
tlStr += ' <col span="1" class="column-right">\n'
|
||||
tlStr += ' </colgroup>\n'
|
||||
tlStr += ' <tbody><tr>\n'
|
||||
|
||||
domainFull = domain
|
||||
if port:
|
||||
if port != 80 and port != 443:
|
||||
domainFull = domain + ':' + str(port)
|
||||
|
||||
# left column
|
||||
leftColumnStr = getLeftColumContent(baseDir, nickname, domain)
|
||||
leftColumnStr = \
|
||||
getLeftColumnContent(baseDir, nickname, domainFull,
|
||||
httpPrefix, translate)
|
||||
tlStr += ' <td class="col-left">' + leftColumnStr + '</td>\n'
|
||||
# center column containing posts
|
||||
tlStr += ' <td class="col-center">\n'
|
||||
|
@ -5702,7 +5791,7 @@ def htmlTimeline(defaultTimeline: str,
|
|||
tlStr += ' </td>\n'
|
||||
|
||||
# right column
|
||||
rightColumnStr = getRightColumContent(baseDir, nickname, domain)
|
||||
rightColumnStr = getRightColumnContent(baseDir, nickname, domain)
|
||||
tlStr += ' <td class="col-right">' + rightColumnStr + '</td>\n'
|
||||
|
||||
# benchmark 9
|
||||
|
|
Loading…
Reference in New Issue