diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9b9feaac..71d34ae0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@
* adds option to hide unreadable files
* adds option where to place folders (top, inplace, bottom)
* adds markdown support for custom header and footer files
+* removes server side file manipulation extensions `dropbox`, `delete` and `rename`
* fixes QR code URI origin (issue [#287](https://github.com/lrsjng/h5ai/issues/287))
* improves preview GUI
* adds Google UA support
diff --git a/src/_h5ai/client/js/inc/ext/delete.js b/src/_h5ai/client/js/inc/ext/delete.js
deleted file mode 100644
index 5158e2ed..00000000
--- a/src/_h5ai/client/js/inc/ext/delete.js
+++ /dev/null
@@ -1,77 +0,0 @@
-
-modulejs.define('ext/delete', ['_', '$', 'core/settings', 'core/event', 'core/resource', 'core/location', 'core/server'], function (_, $, allsettings, event, resource, location, server) {
-
- var settings = _.extend({
- enabled: false
- }, allsettings['delete']),
-
- deleteBtnTemplate = '
' +
- '' +
- '
' +
- '' +
- '' +
- '',
-
- selectedHrefsStr = '',
- $delete, $img,
-
- failed = function () {
-
- $delete.addClass('failed');
- setTimeout(function () {
- $delete.removeClass('failed');
- }, 1000);
- },
-
- handleResponse = function (json) {
-
- $delete.removeClass('current');
- $img.attr('src', resource.image('delete'));
-
- if (!json || json.code) {
- failed();
- }
- location.refresh();
- },
-
- requestDeletion = function (hrefsStr) {
-
- $delete.addClass('current');
- $img.attr('src', resource.image('loading'));
- server.request({action: 'delete', hrefs: hrefsStr}, handleResponse);
- },
-
- onSelection = function (items) {
-
- selectedHrefsStr = '';
- if (items.length) {
- selectedHrefsStr = _.map(items, function (item) {
-
- return item.absHref;
- }).join('|:|');
- $delete.appendTo('#navbar').show();
- } else {
- $delete.hide();
- }
- },
-
- init = function () {
-
- if (!settings.enabled || !server.api) {
- return;
- }
-
- $delete = $(deleteBtnTemplate)
- .find('a').on('click', function (event) {
-
- event.preventDefault();
- requestDeletion(selectedHrefsStr);
- }).end()
- .appendTo('#navbar');
- $img = $delete.find('img');
-
- event.sub('selection', onSelection);
- };
-
- init();
-});
diff --git a/src/_h5ai/client/js/inc/ext/dropbox.js b/src/_h5ai/client/js/inc/ext/dropbox.js
deleted file mode 100644
index d80f1ad9..00000000
--- a/src/_h5ai/client/js/inc/ext/dropbox.js
+++ /dev/null
@@ -1,125 +0,0 @@
-
-modulejs.define('ext/dropbox', ['_', '$', 'core/settings', 'core/location', 'core/server', 'core/event'], function (_, $, allsettings, location, server, event) {
-
- var settings = _.extend({
- enabled: false,
- maxfiles: 5,
- maxfilesize: 20
- }, allsettings.dropbox),
-
- template = '',
-
- uploadTemplate = '' +
- '' +
- '' +
- '' +
- '',
-
- data = {
- action: 'upload',
- href: ''
- },
-
- init = function () {
-
- if (!settings.enabled || !server.api) {
- return;
- }
-
- var $content = $('#content').append(template);
-
- var uploads = {},
- afterUpload = function (err, file) {
-
- if (file) {
- uploads[file.name]
- .addClass(err ? 'error' : 'finished')
- .find('.progress').replaceWith(err ? '' + err + '' : 'okay');
-
- setTimeout(function () {
- uploads[file.name].slideUp(400, function () {
-
- uploads[file.name].remove();
- delete uploads[file.name];
- });
- }, 5000);
- }
- };
-
- event.sub('ready', function () {
-
- // $content.filedrop({
- $('html').filedrop({
-
- paramname: 'userfile',
-
- maxfiles: settings.maxfiles,
- maxfilesize: settings.maxfilesize,
- url: location.getAbsHref(),
- data: data,
-
- docEnter: function () {
-
- $content.addClass('hint');
- },
-
- docLeave: function () {
-
- $content.removeClass('hint');
- },
-
- dragOver: function () {
-
- $content.addClass('match');
- },
-
- dragLeave: function () {
-
- $content.removeClass('match');
- },
-
- drop: function () {
-
- $content.removeClass('hint match');
- },
-
-
- beforeEach: function (file) {
-
- uploads[file.name] = $(uploadTemplate).appendTo('#uploads')
- .find('.name').text(file.name).end()
- .find('.size').text(file.size).end()
- .find('.progress .bar').css('width', 0).end();
- },
-
- progressUpdated: function (i, file, progress) {
-
- uploads[file.name].find('.progress .bar').css('width', '' + progress + '%');
- },
-
- uploadFinished: function (i, file, response) {
-
- afterUpload(response.code && response.msg, file);
- },
-
- afterAll: function () {
-
- location.refresh();
- },
-
- error: function (err, file) {
-
- afterUpload(err, file);
- }
- });
- });
-
- event.sub('location.changed', function (item) {
-
- // $('#uploads').empty();
- data.href = item.absHref;
- });
- };
-
- init();
-});
diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json
index bb07cfa2..64123635 100644
--- a/src/_h5ai/conf/options.json
+++ b/src/_h5ai/conf/options.json
@@ -93,26 +93,6 @@ Options
"enabled": true
},
- /* [EXPERIMENTAL]
- Allow file and folder deletion. Be careful with this option!
- */
- "delete": {
- "enabled": false
- },
-
- /* [EXPERIMENTAL]
- File upload via drag'n'drop. Folders are not supported.
- The working file size seems to be very browser dependent.
-
- - maxfiles: number, max number of files per upload
- - maxfilesize: number, file size is in MB
- */
- "dropbox": {
- "enabled": false,
- "maxfiles": 10,
- "maxfilesize": 1000
- },
-
/*
Enable packaged download of selected entries.
@@ -279,14 +259,6 @@ Options
"size": 150
},
- /* [EXPERIMENTAL]
- Allow to rename files.
- No GUI yet.
- */
- "rename": {
- "enabled": false
- },
-
/*
Make entries selectable (first mouse button + drag).
At the moment only needed for packaged download and delete.