Welcome profile screen

merge-requests/30/head
Bob Mottram 2021-02-25 12:17:41 +00:00
parent 75249cf554
commit 5787565961
4 changed files with 81 additions and 22 deletions

View File

@ -183,6 +183,7 @@ from webapp_hashtagswarm import getHashtagCategoriesFeed
from webapp_hashtagswarm import htmlSearchHashtagCategory from webapp_hashtagswarm import htmlSearchHashtagCategory
from webapp_welcome import htmlWelcomeScreen from webapp_welcome import htmlWelcomeScreen
from webapp_welcome import isWelcomeScreenComplete from webapp_welcome import isWelcomeScreenComplete
from webapp_welcome_profile import htmlWelcomeProfile
from shares import getSharesFeedForPerson from shares import getSharesFeedForPerson
from shares import addShare from shares import addShare
from shares import removeShare from shares import removeShare
@ -10695,6 +10696,32 @@ class PubServer(BaseHTTPRequestHandler):
else: else:
self.path = self.path.replace('/welcome', '') self.path = self.path.replace('/welcome', '')
if htmlGET and authorized and \
'/users/' in self.path and self.path.endswith('/welcome_profile'):
nickname = self.path.split('/users/')[1]
if '/' in nickname:
nickname = nickname.split('/')[0]
if not isWelcomeScreenComplete(self.server.baseDir,
nickname,
self.server.domain):
msg = \
htmlWelcomeProfile(self.server.baseDir, nickname,
self.server.domain,
self.server.httpPrefix,
self.server.domainFull,
self.server.systemLanguage,
self.server.translate)
msg = msg.encode('utf-8')
msglen = len(msg)
self._login_headers('text/html', msglen, callingDomain)
self._write(msg)
self._benchmarkGETtimings(GETstartTime, GETtimings,
'show welcome screen',
'show welcome profile screen')
return
else:
self.path = self.path.replace('/welcome_profile', '')
# if not authorized then show the login screen # if not authorized then show the login screen
if htmlGET and self.path != '/login' and \ if htmlGET and self.path != '/login' and \
not self._pathIsImage(self.path) and \ not self._pathIsImage(self.path) and \

View File

@ -1,3 +1,3 @@
# Account Setup ## Account Setup
Add your avatar image, name and description. Use a small avatar image (eg. 128x128 pixels) so that it's quick to download. Select your avatar image and add your name and description. Use a small avatar image (eg. 128x128 pixels) so that it's quick to download.

View File

@ -24,19 +24,20 @@ def isWelcomeScreenComplete(baseDir: str, nickname: str, domain: str) -> bool:
return os.path.isfile(completeFilename) return os.path.isfile(completeFilename)
def welcomeScreenIsComplete(baseDir: str, nickname: str, domain: str) -> None: # def welcomeScreenIsComplete(baseDir: str,
"""Indicates that the welcome screen has been shown for a given account # nickname: str, domain: str) -> None:
""" # """Indicates that the welcome screen has been shown for a given account
accountPath = baseDir + '/accounts/' + nickname + '@' + domain # """
if not os.path.isdir(accountPath): # accountPath = baseDir + '/accounts/' + nickname + '@' + domain
return # if not os.path.isdir(accountPath):
completeFilename = accountPath + '/.welcome_complete' # return
completeFile = open(completeFilename, 'w+') # completeFilename = accountPath + '/.welcome_complete'
if completeFile: # completeFile = open(completeFilename, 'w+')
completeFile.write('\n') # if completeFile:
completeFile.close() # completeFile.write('\n')
# completeFile.close()
#
#
def htmlWelcomeScreen(baseDir: str, def htmlWelcomeScreen(baseDir: str,
language: str, translate: {}, language: str, translate: {},
currScreen='welcome', currScreen='welcome',

View File

@ -8,8 +8,10 @@ __status__ = "Production"
import os import os
from shutil import copyfile from shutil import copyfile
from utils import loadJson
from utils import getConfigParam from utils import getConfigParam
from utils import getImageExtensions from utils import getImageExtensions
from utils import getImageFormats
from webapp_utils import htmlHeaderWithExternalStyle from webapp_utils import htmlHeaderWithExternalStyle
from webapp_utils import htmlFooter from webapp_utils import htmlFooter
from webapp_utils import markdownToHtml from webapp_utils import markdownToHtml
@ -17,8 +19,7 @@ from webapp_utils import markdownToHtml
def htmlWelcomeProfile(baseDir: str, nickname: str, domain: str, def htmlWelcomeProfile(baseDir: str, nickname: str, domain: str,
httpPrefix: str, domainFull: str, httpPrefix: str, domainFull: str,
language: str, translate: {}, language: str, translate: {}) -> str:
prevScreen='welcome') -> str:
"""Returns the welcome profile screen to set avatar and bio """Returns the welcome profile screen to set avatar and bio
""" """
# set a custom background for the welcome screen # set a custom background for the welcome screen
@ -58,16 +59,46 @@ def htmlWelcomeProfile(baseDir: str, nickname: str, domain: str,
httpPrefix + '://' + domainFull + \ httpPrefix + '://' + domainFull + \
'/users/' + nickname + '/avatar.' + ext '/users/' + nickname + '/avatar.' + ext
imageFormats = getImageFormats()
profileForm += \
'<form enctype="multipart/form-data" method="POST" ' + \
'accept-charset="UTF-8" ' + \
'action="/users/' + nickname + '/welcomeprofile">\n'
profileForm += '<center>\n' profileForm += '<center>\n'
profileForm += '<img class="welcomeavatar" src="' + avatarUrl + '">\n' profileForm += ' <img class="welcomeavatar" src="'
profileForm += avatarUrl + '"><br>\n'
profileForm += ' <input type="file" id="avatar" name="avatar" '
profileForm += 'accept="' + imageFormats + '">\n'
profileForm += '</center>\n' profileForm += '</center>\n'
profileForm += '<div class="container">' + profileText + '</div>\n' profileForm += '<div class="container">' + profileText + '</div>\n'
profileForm += ' <div class="container next">\n' profileForm += ' <div class="container next">\n'
profileForm += ' <a href="/' + prevScreen + '">\n' profileForm += \
profileForm += ' <button>' + translate['Go Back'] + '</button></a>\n' ' <button type="submit" class="button" ' + \
profileForm += ' <a href="/welcome_complete">\n' 'name="prevWelcomeScreen">' + translate['Go Back'] + '</button>\n'
profileForm += ' <button>' + translate['Next'] + '</button></a>\n' profileForm += \
' <button type="submit" class="button" ' + \
'name="nextWelcomeScreen">' + translate['Next'] + '</button>\n'
profileForm += ' </div>\n' profileForm += ' </div>\n'
profileForm += '</div>\n' profileForm += '</div>\n'
actorFilename = baseDir + '/accounts/' + nickname + '@' + domain + '.json'
actorJson = loadJson(actorFilename)
displayNickname = actorJson['name']
profileForm += ' <label class="labels">' + \
translate['Nickname'] + '</label>\n'
profileForm += ' <input type="text" name="displayNickname" value="' + \
displayNickname + '"><br>\n'
profileForm += '<center>\n'
bioStr = \
actorJson['summary'].replace('<p>', '').replace('</p>', '')
profileForm += ' <label class="labels">' + \
translate['Your bio'] + '</label>\n'
profileForm += ' <textarea id="message" name="bio" ' + \
'style="height:200px">' + bioStr + '</textarea>\n'
profileForm += '</center>\n'
profileForm += '</form>\n'
profileForm += htmlFooter() profileForm += htmlFooter()
return profileForm return profileForm