Change the file upload forms on directory and welcome pages to use a 3-way radio button to select immutable, SDMF, or MDMF. Add '(experimental)' to the label for creating an MDMF directory. Also improve the spacing of form elements. refs #1547

This commit is contained in:
david-sarah 2011-10-01 20:45:03 -07:00
parent ac780a4148
commit 978fd83856
2 changed files with 73 additions and 100 deletions

View File

@ -574,6 +574,8 @@ def abbreviated_dirnode(dirnode):
u = from_string_dirnode(dirnode.get_uri())
return u.abbrev_si()
SPACE = u"\u00A0"*2
class DirectoryAsHTML(rend.Page):
# The remainder of this class is to render the directory into
# human+browser -oriented HTML.
@ -796,7 +798,7 @@ class DirectoryAsHTML(rend.Page):
return ctx.tag
# XXX: Duplicated from root.py.
# XXX: similar to render_upload_form and render_mkdir_form in root.py.
def render_forms(self, ctx, data):
forms = []
@ -805,79 +807,62 @@ class DirectoryAsHTML(rend.Page):
if self.dirnode_children is None:
return T.div["No upload forms: directory is unreadable"]
mdmf_directory_input = T.input(type='radio', name='mutable-type',
id='mutable-directory-mdmf',
value='mdmf')
sdmf_directory_input = T.input(type='radio', name='mutable-type',
id='mutable-directory-sdmf',
value='sdmf', checked='checked')
mkdir = T.form(action=".", method="post",
enctype="multipart/form-data")[
mkdir_sdmf = T.input(type='radio', name='format',
value='sdmf', id='mkdir-sdmf',
checked='checked')
mkdir_mdmf = T.input(type='radio', name='format',
value='mdmf', id='mkdir-mdmf')
mkdir_form = T.form(action=".", method="post",
enctype="multipart/form-data")[
T.fieldset[
T.input(type="hidden", name="t", value="mkdir"),
T.input(type="hidden", name="when_done", value="."),
T.legend(class_="freeform-form-label")["Create a new directory in this directory"],
"New directory name: ",
T.input(type="text", name="name"), " ",
T.label(for_='mutable-directory-sdmf')["SDMF"],
sdmf_directory_input,
T.label(for_='mutable-directory-mdmf')["MDMF"],
mdmf_directory_input,
T.input(type="submit", value="Create"),
"New directory name:"+SPACE,
T.input(type="text", name="name"), SPACE,
T.input(type="submit", value="Create"), SPACE*2,
mkdir_sdmf, T.label(for_='mutable-directory-sdmf')[" SDMF"], SPACE,
mkdir_mdmf, T.label(for_='mutable-directory-mdmf')[" MDMF (experimental)"],
]]
forms.append(T.div(class_="freeform-form")[mkdir])
forms.append(T.div(class_="freeform-form")[mkdir_form])
# Build input elements for mutable file type. We do this outside
# of the list so we can check the appropriate format, based on
# the default configured in the client (which reflects the
# default configured in tahoe.cfg)
if self.default_mutable_format == MDMF_VERSION:
mdmf_input = T.input(type='radio', name='mutable-type',
id='mutable-type-mdmf', value='mdmf',
checked='checked')
else:
mdmf_input = T.input(type='radio', name='mutable-type',
id='mutable-type-mdmf', value='mdmf')
upload_chk = T.input(type='radio', name='format',
value='chk', id='upload-chk',
checked='checked')
upload_sdmf = T.input(type='radio', name='format',
value='sdmf', id='upload-sdmf')
upload_mdmf = T.input(type='radio', name='format',
value='mdmf', id='upload-mdmf')
if self.default_mutable_format == SDMF_VERSION:
sdmf_input = T.input(type='radio', name='mutable-type',
id='mutable-type-sdmf', value='sdmf',
checked="checked")
else:
sdmf_input = T.input(type='radio', name='mutable-type',
id='mutable-type-sdmf', value='sdmf')
upload = T.form(action=".", method="post",
enctype="multipart/form-data")[
upload_form = T.form(action=".", method="post",
enctype="multipart/form-data")[
T.fieldset[
T.input(type="hidden", name="t", value="upload"),
T.input(type="hidden", name="when_done", value="."),
T.legend(class_="freeform-form-label")["Upload a file to this directory"],
"Choose a file to upload: ",
T.input(type="file", name="file", class_="freeform-input-file"),
" ",
T.input(type="submit", value="Upload"),
" Mutable?:",
T.input(type="checkbox", name="mutable"),
sdmf_input, T.label(for_="mutable-type-sdmf")["SDMF"],
mdmf_input,
T.label(for_="mutable-type-mdmf")["MDMF (experimental)"],
"Choose a file to upload:"+SPACE,
T.input(type="file", name="file", class_="freeform-input-file"), SPACE,
T.input(type="submit", value="Upload"), SPACE*2,
upload_chk, T.label(for_="upload-chk") [" Immutable"], SPACE,
upload_sdmf, T.label(for_="upload-sdmf")[" SDMF"], SPACE,
upload_mdmf, T.label(for_="upload-mdmf")[" MDMF (experimental)"],
]]
forms.append(T.div(class_="freeform-form")[upload])
forms.append(T.div(class_="freeform-form")[upload_form])
mount = T.form(action=".", method="post",
enctype="multipart/form-data")[
attach_form = T.form(action=".", method="post",
enctype="multipart/form-data")[
T.fieldset[
T.input(type="hidden", name="t", value="uri"),
T.input(type="hidden", name="when_done", value="."),
T.legend(class_="freeform-form-label")["Add a link to a file or directory which is already in Tahoe-LAFS."],
"New child name: ",
T.input(type="text", name="name"), " ",
"URI of new child: ",
T.input(type="text", name="uri"), " ",
"New child name:"+SPACE,
T.input(type="text", name="name"), SPACE*2,
"URI of new child:"+SPACE,
T.input(type="text", name="uri"), SPACE,
T.input(type="submit", value="Attach"),
]]
forms.append(T.div(class_="freeform-form")[mount])
forms.append(T.div(class_="freeform-form")[attach_form])
return forms
def render_results(self, ctx, data):

View File

@ -12,7 +12,7 @@ import allmydata # to display import path
from allmydata import get_package_versions_string
from allmydata import provisioning
from allmydata.util import idlib, log
from allmydata.interfaces import IFileNode, MDMF_VERSION, SDMF_VERSION
from allmydata.interfaces import IFileNode
from allmydata.web import filenode, directory, unlinked, status, operations
from allmydata.web import reliability, storage
from allmydata.web.common import abbreviate_size, getxmlfile, WebError, \
@ -150,6 +150,8 @@ class NoReliability(rend.Page):
</html>
''')
SPACE = u"\u00A0"*2
class Root(rend.Page):
addSlash = True
@ -309,9 +311,9 @@ class Root(rend.Page):
enctype="multipart/form-data")[
T.fieldset[
T.legend(class_="freeform-form-label")["Download a file"],
T.div["Tahoe-URI to download: ",
T.div["Tahoe-URI to download:"+SPACE,
T.input(type="text", name="uri")],
T.div["Filename to download as: ",
T.div["Filename to download as:"+SPACE,
T.input(type="text", name="filename")],
T.input(type="submit", value="Download!"),
]]
@ -324,68 +326,54 @@ class Root(rend.Page):
enctype="multipart/form-data")[
T.fieldset[
T.legend(class_="freeform-form-label")["View a file or directory"],
"Tahoe-URI to view: ",
T.input(type="text", name="uri"), " ",
"Tahoe-URI to view:"+SPACE,
T.input(type="text", name="uri"), SPACE*2,
T.input(type="submit", value="View!"),
]]
return T.div[form]
def render_upload_form(self, ctx, data):
# this is a form where users can upload unlinked files
#
# for mutable files, users can choose the format by selecting
# MDMF or SDMF from a radio button. They can also configure a
# default format in tahoe.cfg, which they rightly expect us to
# obey. we convey to them that we are obeying their choice by
# ensuring that the one that they've chosen is selected in the
# interface.
if self.client.mutable_file_default == MDMF_VERSION:
mdmf_input = T.input(type='radio', name='mutable-type',
value='mdmf', id='mutable-type-mdmf',
checked='checked')
else:
mdmf_input = T.input(type='radio', name='mutable-type',
value='mdmf', id='mutable-type-mdmf')
if self.client.mutable_file_default == SDMF_VERSION:
sdmf_input = T.input(type='radio', name='mutable-type',
value='sdmf', id='mutable-type-sdmf',
checked='checked')
else:
sdmf_input = T.input(type='radio', name='mutable-type',
value='sdmf', id='mutable-type-sdmf')
# This is a form where users can upload unlinked files.
# Users can choose immutable, SDMF, or MDMF from a radio button.
upload_chk = T.input(type='radio', name='format',
value='chk', id='upload-chk',
checked='checked')
upload_sdmf = T.input(type='radio', name='format',
value='sdmf', id='upload-sdmf')
upload_mdmf = T.input(type='radio', name='format',
value='mdmf', id='upload-mdmf')
form = T.form(action="uri", method="post",
enctype="multipart/form-data")[
T.fieldset[
T.legend(class_="freeform-form-label")["Upload a file"],
T.div["Choose a file: ",
T.div["Choose a file:"+SPACE,
T.input(type="file", name="file", class_="freeform-input-file")],
T.input(type="hidden", name="t", value="upload"),
T.div[T.input(type="checkbox", name="mutable"), T.label(for_="mutable")["Create mutable file"],
sdmf_input, T.label(for_="mutable-type-sdmf")["SDMF"],
mdmf_input,
T.label(for_='mutable-type-mdmf')['MDMF (experimental)'],
" ", T.input(type="submit", value="Upload!")],
T.div[upload_chk, T.label(for_="upload-chk") [" Immutable"], SPACE,
upload_sdmf, T.label(for_="upload-sdmf")[" SDMF"], SPACE,
upload_mdmf, T.label(for_="upload-mdmf")[" MDMF (experimental)"], SPACE*2,
T.input(type="submit", value="Upload!")],
]]
return T.div[form]
def render_mkdir_form(self, ctx, data):
# this is a form where users can create new directories
mdmf_input = T.input(type='radio', name='mutable-type',
value='mdmf', id='mutable-directory-mdmf')
sdmf_input = T.input(type='radio', name='mutable-type',
value='sdmf', id='mutable-directory-sdmf',
# This is a form where users can create new directories.
# Users can choose SDMF or MDMF from a radio button.
mkdir_sdmf = T.input(type='radio', name='format',
value='sdmf', id='mkdir-sdmf',
checked='checked')
mkdir_mdmf = T.input(type='radio', name='format',
value='mdmf', id='mkdir-mdmf')
form = T.form(action="uri", method="post",
enctype="multipart/form-data")[
T.fieldset[
T.legend(class_="freeform-form-label")["Create a directory"],
T.label(for_='mutable-directory-sdmf')["SDMF"],
sdmf_input,
T.label(for_='mutable-directory-mdmf')["MDMF"],
mdmf_input,
mkdir_sdmf, T.label(for_='mkdir-sdmf')[" SDMF"], SPACE,
mkdir_mdmf, T.label(for_='mkdir-mdmf')[" MDMF (experimental)"], SPACE*2,
T.input(type="hidden", name="t", value="mkdir"),
T.input(type="hidden", name="redirect_to_result", value="true"),
T.input(type="submit", value="Create a directory"),
@ -399,8 +387,8 @@ class Root(rend.Page):
T.fieldset[
T.legend(class_="freeform-form-label")["Report an Incident"],
T.input(type="hidden", name="t", value="report-incident"),
"What went wrong?: ",
T.input(type="text", name="details"), " ",
"What went wrong?:"+SPACE,
T.input(type="text", name="details"), SPACE,
T.input(type="submit", value="Report!"),
]]
return T.div[form]