aboutsummaryrefslogtreecommitdiff
path: root/data/assets/js/admin
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2016-07-28 14:47:48 -0400
committerPaul Duncan <pabs@pablotron.org>2016-07-28 14:47:48 -0400
commit7b638bce76bb28f222c4c509c3e7a3f84aea3694 (patch)
tree3b2d4cff9bdcdeed5d83db0138e8fb937b99c083 /data/assets/js/admin
parenta36c864bd86f59ed04d3c133cd1ad1fcdf61b9f7 (diff)
downloadguff-7b638bce76bb28f222c4c509c3e7a3f84aea3694.tar.bz2
guff-7b638bce76bb28f222c4c509c3e7a3f84aea3694.zip
add site dropdown to files tab
Diffstat (limited to 'data/assets/js/admin')
-rw-r--r--data/assets/js/admin/tabs/files.js116
1 files changed, 104 insertions, 12 deletions
diff --git a/data/assets/js/admin/tabs/files.js b/data/assets/js/admin/tabs/files.js
index 56fb6c9..bfd1943 100644
--- a/data/assets/js/admin/tabs/files.js
+++ b/data/assets/js/admin/tabs/files.js
@@ -49,7 +49,7 @@ jQuery(function($) {
"<div class='btn-group btn-group-sm'>",
"<a ",
"href='#' ",
- "class='btn btn-default btn-sm' ",
+ "class='crumb btn btn-default btn-sm' ",
"data-path='%{path|h}' ",
">",
"%{name|h}",
@@ -64,8 +64,62 @@ jQuery(function($) {
delete_confirm: [
"Are you sure you want to delete \"%{name|h}\"?",
],
+
+ sites: [
+ "<div class='btn-group btn-group-sm'>",
+ "<a ",
+ "href='#' ",
+ "class='btn btn-default' ",
+ "title='Choose site.' ",
+ "data-toggle='dropdown' ",
+ ">",
+ "Site: <span>%{name|h}</span>",
+ " ",
+ "<i class='fa fa-caret-down'></i>",
+ "</a>",
+
+ "<ul class='dropdown-menu'>",
+ "%{body}",
+ "</ul>",
+ "</div><!-- btn-group -->",
+ ],
+
+ site: [
+ "<li class='%{css|h}'>",
+ "<a ",
+ "href='#' ",
+ "title='%{text|h}' ",
+ "data-id='%{site_id|h}' ",
+ "data-name='%{name|h}' ",
+ ">",
+ "%{name|h}",
+ "</a>",
+ "</li>",
+ ],
});
+ function get_selected_site() {
+ var site_id = $('#files').data('site_id');
+
+ return $.grep(DATA.sites, function(row) {
+ return site_id == row.site_id;
+ })[0];
+ }
+
+ function make_site_dropdown() {
+ var curr_site = get_selected_site();
+
+ return TEMPLATES.run('sites', {
+ name: curr_site.name,
+ body: $.map(DATA.sites, function(row) {
+ return TEMPLATES.run('site', $.extend({}, row, {
+ css: (row.site_id == curr_site.site_id) ? 'active' : '',
+ text: 'Show files for this site.', // FIXME
+ }));
+ }).join(''),
+ });
+ }
+
function get_crumbs(path) {
var r = [];
@@ -83,17 +137,18 @@ jQuery(function($) {
var NO_FILES = TEMPLATES.run('no_files');
function reload() {
- var btn = $('#files-reload'),
+ var btns = $('#files-reload, #files-crumbs .btn'),
list = $('#files');
// show loading
- btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
+ btns.toggleClass('disabled').find('.loading').toggleClass('hidden');
// list.html(TEMPLATES.run('loading'));
send('file/list', {
- path: $('#files').data('path')
+ site_id: $('#files').data('site_id'),
+ path: $('#files').data('path'),
}).always(function() {
- btn.toggleClass('disabled').find('.loading').toggleClass('hidden');
+ btns.toggleClass('disabled').find('.loading').toggleClass('hidden');
// list.html('');
}).fail(function(r) {
var error = r.responseText;
@@ -111,12 +166,14 @@ jQuery(function($) {
// draw crumbs
var crumbs = get_crumbs($('#files').data('path'));
- $('#files-crumbs').html($.map(crumbs, function(crumb) {
+ $('#files-crumbs').html([
+ make_site_dropdown()
+ ].concat($.map(crumbs, function(crumb) {
return TEMPLATES.run('crumb', {
path: crumb,
name: crumb.replace(/^.*\/(.+)/, '$1'),
});
- }).join(''));
+ })).join(''));
// draw files
$('#files').html((r.length > 0) ? $.map(r, function(row) {
@@ -160,7 +217,7 @@ jQuery(function($) {
return false;
});
- $('#files-crumbs').on('click', 'a.btn', function() {
+ $('#files-crumbs').on('click', 'a.crumb', function() {
$('#files').data('path', $(this).data('path'));
reload();
@@ -168,6 +225,33 @@ jQuery(function($) {
return false;
});
+ $('#files-crumbs').on('click', 'ul.dropdown-menu a', function() {
+ var data = $(this).data(),
+ ul = $(this).parents('ul');
+
+ // hide dropdown
+ $('body').trigger('click');
+
+ // refresh selection
+ ul.find('li.active').removeClass('active');
+ $(this).parent('li').addClass('active');
+
+ // update button text
+ ul.prev('a').find('span').text(data.name);
+
+ // save site id and path
+ $('#files').data({
+ site_id: data.id,
+ path: '/',
+ });
+
+ // reload file list
+ reload();
+
+ // stop event
+ return false;
+ });
+
$('#file-actions').on('click', 'a', function() {
var action_id = $(this).data('id'),
data = $('#files .active').data();
@@ -178,11 +262,12 @@ jQuery(function($) {
if (data) {
if (action_id == 'download') {
if (data.url)
- location.href = url;
+ location.href = data.url;
} else if (action_id == 'move') {
var dst_path = prompt(TEMPLATES.run('move_prompt', data), data.path);
if (dst_path) {
send('file/move', {
+ site_id: $('#files').data('site_id'),
src_path: data.path,
dst_path: dst_path,
}).always(function() {
@@ -205,7 +290,8 @@ jQuery(function($) {
} else if (action_id == 'delete') {
if (confirm(TEMPLATES.run('delete_confirm', data))) {
send('file/delete', {
- path: data.path,
+ site_id: $('#files').data('site_id'),
+ path: data.path,
}).always(function() {
// TODO: need loading handler
}).fail(function(r) {
@@ -253,7 +339,8 @@ jQuery(function($) {
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
send('file/mkdir', {
- path: ($('#files').data('path') + '/' + path).replace(/\/\/+/, '/')
+ site_id: $('#files').data('site_id'),
+ path: ($('#files').data('path') + '/' + path).replace(/\/\/+/, '/')
}).always(function() {
// enable button, hide spinner
me.toggleClass('disabled').find('.loading').toggleClass('hidden');
@@ -276,7 +363,12 @@ jQuery(function($) {
return false;
});
- $('#files').data('path', '/');
+ // set defaults
+ $('#files').data({
+ path: '/',
+ site_id: DATA.default_site_id,
+ });
+
$('#files-reload').click(reload);
// load users