diff options
author | Micah Lee <micah@micahflee.com> | 2019-09-15 17:58:10 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-15 17:58:10 -0700 |
commit | 957d3e9c6d424fdfc394bef529b87f52e16f371f (patch) | |
tree | a2a78e7d4dcd797f1ea8b014564820fcb63db63e | |
parent | e35255861fd17d77096a6b9ef386271d066f1055 (diff) | |
parent | ce9a2f52d0240c9519175ece2dc6f72ba7c242ec (diff) | |
download | onionshare-957d3e9c6d424fdfc394bef529b87f52e16f371f.tar.gz onionshare-957d3e9c6d424fdfc394bef529b87f52e16f371f.zip |
Merge pull request #1025 from micahflee/994_breadcrumbs
Breadcrumbs
-rw-r--r-- | onionshare/web/send_base_mode.py | 8 | ||||
-rw-r--r-- | onionshare/web/share_mode.py | 4 | ||||
-rw-r--r-- | onionshare/web/website_mode.py | 6 | ||||
-rw-r--r-- | share/static/css/style.css | 24 | ||||
-rw-r--r-- | share/templates/listing.html | 6 | ||||
-rw-r--r-- | share/templates/send.html | 6 |
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">‣</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">‣</span></li>{% endfor %}<li>{{ breadcrumbs_leaf }}</li> + </ul> + {% endif %} + <table class="file-list" id="file-list"> <tr> <th id="filename-header">Filename</th> |