diff --git a/src/_h5ai/client/js/inc/ext/crumb.js b/src/_h5ai/client/js/inc/ext/crumb.js index d48fa005..da128980 100644 --- a/src/_h5ai/client/js/inc/ext/crumb.js +++ b/src/_h5ai/client/js/inc/ext/crumb.js @@ -82,13 +82,10 @@ modulejs.define('ext/crumb', ['_', '$', 'core/settings', 'core/resource', 'core/ _.each(crumb, function (e) { $ul.append(update(e)); - - // needed by aai - // e.fetchStatus(function (e) { update(e); }); }); - event.sub('entry.created', onContentChanged); - event.sub('entry.removed', onContentChanged); + // event.sub('entry.created', onContentChanged); + // event.sub('entry.removed', onContentChanged); event.sub('entry.changed', onContentChanged); }; diff --git a/src/_h5ai/client/js/inc/ext/folderstatus.js b/src/_h5ai/client/js/inc/ext/folderstatus.js new file mode 100644 index 00000000..929f7e79 --- /dev/null +++ b/src/_h5ai/client/js/inc/ext/folderstatus.js @@ -0,0 +1,30 @@ + +modulejs.define('ext/folderstatus', ['_', '$', 'core/settings', 'core/event', 'core/entry'], function (_, $, allsettings, event, entry) { + + var settings = _.extend({ + enabled: false, + maxChecks: 16, + delay: 2000 + }, allsettings.folderstatus), + + init = function () { + + if (!settings.enabled) { + return; + } + + event.sub('ready', function () { + + var count = 0; + _.each(entry.content, function (e) { + + if (e.isFolder() && e.status === null && count <= settings.maxChecks) { + count += 1; + setTimeout(function () { e.fetchStatus(); }, settings.delay); + } + }); + }); + }; + + init(); +}); diff --git a/src/_h5ai/client/js/inc/model/entry.js b/src/_h5ai/client/js/inc/model/entry.js index dedd4b6b..162c59fe 100644 --- a/src/_h5ai/client/js/inc/model/entry.js +++ b/src/_h5ai/client/js/inc/model/entry.js @@ -110,6 +110,10 @@ modulejs.define('model/entry', ['$', '_', 'core/types', 'core/event', 'core/sett var self = getEntry(absHref); + if (!_.isFunction(callback)) { + callback = function () {}; + } + if (self.status !== null) { callback(self); } else { @@ -130,6 +134,10 @@ modulejs.define('model/entry', ['$', '_', 'core/types', 'core/event', 'core/sett var self = getEntry(absHref); + if (!_.isFunction(callback)) { + callback = function () {}; + } + if (self.isContentFetched) { callback(self); } else { diff --git a/src/_h5ai/client/js/inc/view/extended.js b/src/_h5ai/client/js/inc/view/extended.js index b91906fc..aecbe811 100644 --- a/src/_h5ai/client/js/inc/view/extended.js +++ b/src/_h5ai/client/js/inc/view/extended.js @@ -2,11 +2,8 @@ modulejs.define('view/extended', ['_', '$', 'core/settings', 'core/resource', 'core/format', 'core/event', 'core/entry'], function (_, $, allsettings, resource, format, event, entry) { var settings = _.extend({ - modes: ['details', 'icons'], setParentFolderLabels: false, - binaryPrefix: false, - maxFolders: 16, - delay: 2000 + binaryPrefix: false }, allsettings.view), template = '
  • ' + @@ -153,20 +150,6 @@ modulejs.define('view/extended', ['_', '$', 'core/settings', 'core/resource', 'c }); } }); - - - // needed by aai - if (_.size(entry.content) <= settings.maxFolders) { - - _.each(entry.content, function (e) { - - if (e.isFolder() && e.status === null) { - setTimeout(function () { - e.fetchStatus(function (e) { update(e); }); - }, settings.delay); - } - }); - } }; init(entry); diff --git a/src/_h5ai/client/js/inc/view/viewmode.js b/src/_h5ai/client/js/inc/view/viewmode.js index 8180296d..1943f342 100644 --- a/src/_h5ai/client/js/inc/view/viewmode.js +++ b/src/_h5ai/client/js/inc/view/viewmode.js @@ -1,12 +1,11 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'core/store'], function (_, $, allsettings, resource, store) { - var defaults = { - modes: ['details', 'list', 'grid', 'icons'], - setParentFolderLabels: false - }, + var modes = ['details', 'list', 'grid', 'icons'], - settings = _.extend({}, defaults, allsettings.view), + settings = _.extend({}, { + modes: modes + }, allsettings.view), storekey = 'h5ai.viewmode', @@ -24,7 +23,7 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c viewmode = _.indexOf(settings.modes, viewmode) >= 0 ? viewmode : settings.modes[0]; store.put(storekey, viewmode); - _.each(defaults.modes, function (mode) { + _.each(modes, function (mode) { if (mode === viewmode) { $('#view-' + mode).addClass('current'); $extended.addClass('view-' + mode).show(); @@ -39,10 +38,10 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c var $navbar = $('#navbar'); - settings.modes = _.intersection(settings.modes, defaults.modes); + settings.modes = _.intersection(settings.modes, modes); if (settings.modes.length > 1) { - _.each(defaults.modes.reverse(), function (mode) { + _.each(modes.reverse(), function (mode) { if (_.indexOf(settings.modes, mode) >= 0) { $(template.replace(/\[MODE\]/g, mode)) .appendTo($navbar) diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json index 4fccbd0d..a5f4ec61 100644 --- a/src/_h5ai/conf/options.json +++ b/src/_h5ai/conf/options.json @@ -6,8 +6,9 @@ Options */ { - /* + /* [all] Spacing of the main content. + Left and right will be added to a minimum of 30px. Top and bottom are calculated relative to the top and bottom bar heights. */ @@ -19,28 +20,25 @@ Options "left": "auto" }, - /* - An array of view modes the user may choose from. Currently there - are two possible values: "details", "icons", "grid", and "list". - The first value indicates the default view mode. If only one value - is given the view mode is fixed and the selector buttons are hidden. - The user selected view mode is also stored local in modern browsers - so that it will be persistent. + /* [all] + General view options. - - setParentFolderLabels [all]: set parent folder labels to real folder names - - binaryPrefix [all]: set to true uses 1024B=1KiB when formatting file sizes - (see http://en.wikipedia.org/wiki/Binary_prefix) - - indexFiles [php]: consider folder with those files as non {{pkg.name}} folders - - ignore [php]: don't list items matching these regular expressions - - maxFolders [aai]: max folders to trigger folder status checks + - modes: array of "details", "icons", "grid" and/or "list" + the first value indicates the default view mode. If only one value + is given the view mode is fixed and the selector buttons are hidden. + The user selected view mode is also stored local in modern browsers + so that it will be persistent. + - setParentFolderLabels: set parent folder labels to real folder names + - binaryPrefix: set to true uses 1024B=1KiB when formatting file sizes (see http://en.wikipedia.org/wiki/Binary_prefix) + - indexFiles [php only]: consider folder with those files as non {{pkg.name}} folders + - ignore [php only]: don't list items matching these regular expressions */ "view": { - "modes": ["details", "list", "grid", "icons"], + "modes": ["details", "icons"], "setParentFolderLabels": true, "binaryPrefix": false, "indexFiles": ["index.html", "index.htm", "index.php"], - "ignore": ["^\\.", "^_{{pkg.name}}"], - "maxFolders": 16 + "ignore": ["^\\.", "^_{{pkg.name}}"] }, @@ -48,14 +46,12 @@ Options /*** Extensions (in alphabetical order) ***/ /* [php] - Watch current folder content. - Folders possibly visible in the tree view that are not the - current folder might not be updated. + Watch and update current folder content. - interval: number, update interval in milliseconds, at least 1000 */ "autorefresh": { - "enabled": true, + "enabled": false, "interval": 5000 }, @@ -71,7 +67,7 @@ Options in each folder. */ "custom": { - "enabled": true, + "enabled": false, "header": "_{{pkg.name}}.header.html", "footer": "_{{pkg.name}}.footer.html" }, @@ -80,7 +76,7 @@ Options Allow file deletion. */ "delete": { - "enabled": true + "enabled": false }, /* [php, EXPERIMENTAL] @@ -91,7 +87,7 @@ Options - maxfilesize: number, file size is in MB */ "dropbox": { - "enabled": true, + "enabled": false, "maxfiles": 10, "maxfilesize": 1000 }, @@ -104,7 +100,7 @@ Options - packageName: basename of the download package, null for current foldername */ "download": { - "enabled": true, + "enabled": false, "execution": "shell", "format": "zip", "packageName": null @@ -130,6 +126,18 @@ Options "enabled": true }, + /* [aai] + Fetch status for subfolders of the current folder. + + - maxChecks: number, max number of status requests in the current folder + - delay: number, delay in milliseconds after "dom-ready" before starting the requests + */ + "folderstatus": { + "enabled": false, + "maxChecks": 16, + "delay": 2000 + }, + /* [all] Adds Google Analytics asynchronous tracking code. @@ -144,7 +152,7 @@ Options see: http://support.google.com/googleanalytics/bin/topic.py?hl=en&topic=27612 */ "google-analytics": { - "enabled": true, + "enabled": false, "gaq": [] }, @@ -178,7 +186,7 @@ Options 2: mode, servername and -version */ "mode": { - "enabled": true, + "enabled": false, "display": 2 }, @@ -248,7 +256,7 @@ Options - size: width and height in pixel */ "qrcode": { - "enabled": true, + "enabled": false, "size": 150 },