New post screen

master
Bob Mottram 2019-07-25 22:39:09 +01:00
parent abb010589a
commit 5e0a7e90ca
3 changed files with 73 additions and 10 deletions

View File

@ -54,6 +54,7 @@ from webinterface import htmlOutbox
from webinterface import htmlPostReplies from webinterface import htmlPostReplies
from webinterface import htmlLogin from webinterface import htmlLogin
from webinterface import htmlGetLoginCredentials from webinterface import htmlGetLoginCredentials
from webinterface import htmlNewPost
from shares import getSharesFeedForPerson from shares import getSharesFeedForPerson
from shares import outboxShareUpload from shares import outboxShareUpload
from shares import outboxUndoShareUpload from shares import outboxUndoShareUpload
@ -521,6 +522,12 @@ class PubServer(BaseHTTPRequestHandler):
self.server.GETbusy=False self.server.GETbusy=False
return return
if '/users/' in self.path and self.path.endswith('/newpost'):
self._login_headers('text/html')
self.wfile.write(htmlNewPost(self.server.baseDir,self.path).encode('utf-8'))
self.server.GETbusy=False
return
# get an individual post from the path /@nickname/statusnumber # get an individual post from the path /@nickname/statusnumber
if '/@' in self.path: if '/@' in self.path:
namedStatus=self.path.split('/@')[1] namedStatus=self.path.split('/@')[1]

View File

@ -155,14 +155,6 @@ body, html {
margin: 10px 0; margin: 10px 0;
} }
.container {
border: 2px solid #dedede;
background-color: #f1f1f1;
border-radius: 5px;
padding: 10px;
margin: 10px 0;
}
.darker { .darker {
border-color: #ccc; border-color: #ccc;
background-color: #ddd; background-color: #ddd;
@ -235,3 +227,37 @@ body, html {
height: 30px; height: 30px;
background-color: #999; background-color: #999;
} }
input[type=text], select, textarea {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
resize: vertical;
font-size: 18px;
}
input[type=submit] {
background-color: #4CAF50;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
.vertical-center {
top: 50%;
-ms-transform: translateY(50%);
transform: translateY(50%);
max-width: 90%;
min-width: 600px;
margin: 0 auto;
}

View File

@ -55,7 +55,7 @@ def htmlLogin(baseDir: str) -> str:
loginForm=htmlHeader(loginCSS) loginForm=htmlHeader(loginCSS)
loginForm+= \ loginForm+= \
' <form method="POST" action="/login">' \ '<form method="POST" action="/login">' \
' <div class="imgcontainer">' \ ' <div class="imgcontainer">' \
' <img src="login.png" alt="login image" class="loginimage">'+ \ ' <img src="login.png" alt="login image" class="loginimage">'+ \
loginText+ \ loginText+ \
@ -74,6 +74,31 @@ def htmlLogin(baseDir: str) -> str:
loginForm+=htmlFooter() loginForm+=htmlFooter()
return loginForm return loginForm
def htmlNewPost(baseDir: str,path: str) -> str:
newPostText='<p class="new-post-text">Enter your post text below.</p>'
if os.path.isfile(baseDir+'/accounts/newpost.txt'):
with open(baseDir+'/accounts/newpost.txt', 'r') as file:
newPostText = '<p class="new-post-text">'+file.read()+'</p>'
with open(baseDir+'/epicyon-profile.css', 'r') as cssFile:
newPostCSS = cssFile.read()
newPostForm=htmlHeader(newPostCSS)
newPostForm+= \
'<form method="POST" action="'+path+'?newpost">' \
' <div class="vertical-center">' \
' <label for="nickname"><b>'+newPostText+'</b></label>' \
' <input type="text" placeholder="Subject or Content Warning (optional)..." name="subject">' \
'' \
' <textarea id="message" name="message" placeholder="Write something..." style="height:200px"></textarea>' \
'' \
' <input type="submit" value="Cencel">' \
' <input type="submit" value="Submit">' \
' </div>' \
'</form>'
newPostForm+=htmlFooter()
return newPostForm
def htmlHeader(css=None,lang='en') -> str: def htmlHeader(css=None,lang='en') -> str:
if not css: if not css:
htmlStr= \ htmlStr= \
@ -357,6 +382,7 @@ def htmlTimeline(session,baseDir: str,wfRequest: {},personCache: {}, \
localButton='button' localButton='button'
personalButton='button' personalButton='button'
federatedButton='button' federatedButton='button'
newPostButton='button'
if boxName=='inbox': if boxName=='inbox':
localButton='buttonselected' localButton='buttonselected'
elif boxName=='outbox': elif boxName=='outbox':
@ -366,11 +392,15 @@ def htmlTimeline(session,baseDir: str,wfRequest: {},personCache: {}, \
actor='/users/'+nickname actor='/users/'+nickname
tlStr=htmlHeader(profileStyle) tlStr=htmlHeader(profileStyle)
newPostStr=''
if boxName=='inbox':
newPostStr=' <a href="'+actor+'/newpost"><button class="'+newPostButton+'"><span>New Post </span></button></a>'
tlStr+= \ tlStr+= \
'<div class="timeline-banner">' \ '<div class="timeline-banner">' \
'</div>' \ '</div>' \
'<div class="container">\n' \ '<div class="container">\n' \
' <center>' \ ' <center>'+ \
newPostStr+ \
' <a href="'+actor+'/inbox"><button class="'+localButton+'"><span>Local </span></button></a>' \ ' <a href="'+actor+'/inbox"><button class="'+localButton+'"><span>Local </span></button></a>' \
' <a href="'+actor+'/outbox"><button class="'+personalButton+'"><span>Personal </span></button></a>' \ ' <a href="'+actor+'/outbox"><button class="'+personalButton+'"><span>Personal </span></button></a>' \
' <a href="'+actor+'/federated"><button class="'+federatedButton+'"><span>Federated </span></button></a>' \ ' <a href="'+actor+'/federated"><button class="'+federatedButton+'"><span>Federated </span></button></a>' \