summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2019-09-15 17:58:10 -0700
committerGitHub <noreply@github.com>2019-09-15 17:58:10 -0700
commit957d3e9c6d424fdfc394bef529b87f52e16f371f (patch)
treea2a78e7d4dcd797f1ea8b014564820fcb63db63e
parente35255861fd17d77096a6b9ef386271d066f1055 (diff)
parentce9a2f52d0240c9519175ece2dc6f72ba7c242ec (diff)
downloadonionshare-957d3e9c6d424fdfc394bef529b87f52e16f371f.tar.gz
onionshare-957d3e9c6d424fdfc394bef529b87f52e16f371f.zip
Merge pull request #1025 from micahflee/994_breadcrumbs
Breadcrumbs
-rw-r--r--onionshare/web/send_base_mode.py8
-rw-r--r--onionshare/web/share_mode.py4
-rw-r--r--onionshare/web/website_mode.py6
-rw-r--r--share/static/css/style.css24
-rw-r--r--share/templates/listing.html6
-rw-r--r--share/templates/send.html6
6 files changed, 50 insertions, 4 deletions
diff --git a/onionshare/web/send_base_mode.py b/onionshare/web/send_base_mode.py
index 67fb26d0..24ad55d7 100644
--- a/onionshare/web/send_base_mode.py
+++ b/onionshare/web/send_base_mode.py
@@ -90,9 +90,15 @@ class SendBaseModeWeb:
'status_code': 200
})
+ breadcrumbs = [('☗', '/')]
+ parts = path.split('/')[:-1]
+ for i in range(len(parts)):
+ breadcrumbs.append(('{}'.format(parts[i]), '/{}/'.format('/'.join(parts[0:i+1]))))
+ breadcrumbs_leaf = breadcrumbs.pop()[0]
+
# If filesystem_path is None, this is the root directory listing
files, dirs = self.build_directory_listing(filenames, filesystem_path)
- r = self.directory_listing_template(path, files, dirs)
+ r = self.directory_listing_template(path, files, dirs, breadcrumbs, breadcrumbs_leaf)
return self.web.add_security_headers(r)
def build_directory_listing(self, filenames, filesystem_path):
diff --git a/onionshare/web/share_mode.py b/onionshare/web/share_mode.py
index f52bc2c7..8a3f5969 100644
--- a/onionshare/web/share_mode.py
+++ b/onionshare/web/share_mode.py
@@ -168,12 +168,14 @@ class ShareModeWeb(SendBaseModeWeb):
r.headers.set('Content-Type', content_type)
return r
- def directory_listing_template(self, path, files, dirs):
+ def directory_listing_template(self, path, files, dirs, breadcrumbs, breadcrumbs_leaf):
return make_response(render_template(
'send.html',
file_info=self.file_info,
files=files,
dirs=dirs,
+ breadcrumbs=breadcrumbs,
+ breadcrumbs_leaf=breadcrumbs_leaf,
filename=os.path.basename(self.download_filename),
filesize=self.filesize,
filesize_human=self.common.human_readable_filesize(self.download_filesize),
diff --git a/onionshare/web/website_mode.py b/onionshare/web/website_mode.py
index 0b7602ea..9dac8627 100644
--- a/onionshare/web/website_mode.py
+++ b/onionshare/web/website_mode.py
@@ -30,11 +30,13 @@ class WebsiteModeWeb(SendBaseModeWeb):
"""
return self.render_logic(path)
- def directory_listing_template(self, path, files, dirs):
+ def directory_listing_template(self, path, files, dirs, breadcrumbs, breadcrumbs_leaf):
return make_response(render_template('listing.html',
path=path,
files=files,
dirs=dirs,
+ breadcrumbs=breadcrumbs,
+ breadcrumbs_leaf=breadcrumbs_leaf,
static_url_path=self.web.static_url_path))
def set_file_info_custom(self, filenames, processed_size_callback):
@@ -51,7 +53,7 @@ class WebsiteModeWeb(SendBaseModeWeb):
index_path = os.path.join(path, 'index.html')
if index_path in self.files:
# Render it
- return self.stream_individual_file(filesystem_path)
+ return self.stream_individual_file(self.files[index_path])
else:
# Otherwise, render directory listing
diff --git a/share/static/css/style.css b/share/static/css/style.css
index bc986e57..af41b155 100644
--- a/share/static/css/style.css
+++ b/share/static/css/style.css
@@ -74,6 +74,30 @@ a.button:visited {
bottom: 10px;
}
+ul.breadcrumbs {
+ display: block;
+ list-style: none;
+ margin: 10px 0;
+ padding: 0;
+}
+
+ul.breadcrumbs li {
+ display: inline-block;
+ list-style: none;
+ margin: 0;
+ padding: 5px;
+ color: #999999;
+}
+
+ul.breadcrumbs li span.sep {
+ padding-left: 5px;
+}
+
+ul.breadcrumbs li a:link, ul.breadcrumbs li a:visited {
+ color: #666666;
+ border-bottom: 1px solid #666666;
+}
+
table.file-list {
width: 100%;
margin: 0 auto;
diff --git a/share/templates/listing.html b/share/templates/listing.html
index e394f842..2f70dbf0 100644
--- a/share/templates/listing.html
+++ b/share/templates/listing.html
@@ -12,6 +12,12 @@
<h1>OnionShare</h1>
</header>
+ {% if breadcrumbs %}
+ <ul class="breadcrumbs">
+ {% for breadcrumb in breadcrumbs %}<li><a href="{{ breadcrumb[1] }}">{{ breadcrumb[0] }}</a> <span class="sep">&#8227;</span></li>{% endfor %}<li>{{ breadcrumbs_leaf }}</li>
+ </ul>
+ {% endif %}
+
<table class="file-list" id="file-list">
<tr>
<th id="filename-header">Filename</th>
diff --git a/share/templates/send.html b/share/templates/send.html
index 916b3bfe..941c4130 100644
--- a/share/templates/send.html
+++ b/share/templates/send.html
@@ -22,6 +22,12 @@
<h1>OnionShare</h1>
</header>
+ {% if breadcrumbs %}
+ <ul class="breadcrumbs">
+ {% for breadcrumb in breadcrumbs %}<li><a href="{{ breadcrumb[1] }}">{{ breadcrumb[0] }}</a> <span class="sep">&#8227;</span></li>{% endfor %}<li>{{ breadcrumbs_leaf }}</li>
+ </ul>
+ {% endif %}
+
<table class="file-list" id="file-list">
<tr>
<th id="filename-header">Filename</th>