Semantic changes.

This commit is contained in:
Lars Jung 2012-10-27 03:50:35 +02:00
parent 9163996ac2
commit 1dea89befb
24 changed files with 243 additions and 237 deletions

View file

@ -7,7 +7,7 @@
display: list-item; display: list-item;
} }
&.entry { &.item {
a, a:active, a:visited { a, a:active, a:visited {
border-top: 1px solid @item-border-col-sep; border-top: 1px solid @item-border-col-sep;
@ -24,7 +24,7 @@
} }
} }
&.entry + .entry { &.item + .item {
a, a:active, a:visited { a, a:active, a:visited {
border-top: none; border-top: none;

View file

@ -3,7 +3,7 @@
li { li {
&.entry { &.item {
float: left; float: left;
a, a:active, a:visited { a, a:active, a:visited {

View file

@ -4,7 +4,7 @@
li { li {
text-align: center; text-align: center;
&.entry { &.item {
float: left; float: left;
a, a:active, a:visited { a, a:active, a:visited {

View file

@ -3,7 +3,7 @@
li { li {
&.entry { &.item {
a, a:active, a:visited { a, a:active, a:visited {
height: 56px; height: 56px;
@ -17,7 +17,7 @@
} }
} }
&.entry + .entry { &.item + .item {
a, a:active, a:visited { a, a:active, a:visited {
border-top: none; border-top: none;

View file

@ -66,7 +66,7 @@
} }
} }
&.entry { &.item {
a, a:active, a:visited { a, a:active, a:visited {
display: block; display: block;

View file

@ -15,10 +15,10 @@ body {
} }
} }
#extended.view-details { #extended.view-details {
.header .label, .entry .label { .header .label, .item .label {
margin-right: 110px; margin-right: 110px;
} }
.header .date, .entry .date { .header .date, .item .date {
display: none; display: none;
} }
} }

View file

@ -69,35 +69,35 @@ modulejs.define('core/location', ['_', 'modernizr', 'core/settings', 'core/event
getItem = function () { getItem = function () {
return modulejs.require('model/entry').get(absHref); return modulejs.require('model/item').get(absHref);
}, },
load = function (callback) { load = function (callback) {
modulejs.require('core/server').request({action: 'get', entries: true, entriesHref: absHref, entriesWhat: 1}, function (json) { modulejs.require('core/server').request({action: 'get', entries: true, entriesHref: absHref, entriesWhat: 1}, function (json) {
var Entry = modulejs.require('model/entry'), var Item = modulejs.require('model/item'),
entry = Entry.get(absHref); item = Item.get(absHref);
if (json) { if (json) {
var found = {}; var found = {};
_.each(json.entries, function (jsonEntry) { _.each(json.entries, function (jsonItem) {
var e = Entry.get(jsonEntry.absHref, jsonEntry.time, jsonEntry.size, jsonEntry.status, jsonEntry.content); var e = Item.get(jsonItem.absHref, jsonItem.time, jsonItem.size, jsonItem.status, jsonItem.content);
found[e.absHref] = true; found[e.absHref] = true;
}); });
_.each(entry.content, function (e) { _.each(item.content, function (e) {
if (!found[e.absHref]) { if (!found[e.absHref]) {
Entry.remove(e.absHref); Item.remove(e.absHref);
} }
}); });
} }
if (_.isFunction(callback)) { if (_.isFunction(callback)) {
callback(entry); callback(item);
} }
}); });
}, },

View file

@ -14,49 +14,48 @@ modulejs.define('ext/crumb', ['_', '$', 'core/settings', 'core/resource', 'core/
pageHintTemplate = '<img class="hint" src="' + resource.image('page') + '" alt="has index page"/>', pageHintTemplate = '<img class="hint" src="' + resource.image('page') + '" alt="has index page"/>',
statusHintTemplate = '<span class="hint"/>', statusHintTemplate = '<span class="hint"/>',
update = function (entry, force) { update = function (item, force) {
if (!force && entry.$crumb && entry.$crumb.data('status') === entry.status) { if (!force && item.$crumb) {
return entry.$crumb; return item.$crumb;
} }
var $html = $(template), var $html = $(template),
$a = $html.find('a'); $a = $html.find('a');
$html $html
.addClass(entry.isFolder() ? 'folder' : 'file') .addClass(item.isFolder() ? 'folder' : 'file')
.data('item', entry) .data('item', item);
.data('status', entry.status);
location.setLink($a, entry); location.setLink($a, item);
$a.find('span').text(entry.label).end(); $a.find('span').text(item.label).end();
if (entry.isDomain()) { if (item.isDomain()) {
$html.addClass('domain'); $html.addClass('domain');
$a.find('img').attr('src', resource.image('home')); $a.find('img').attr('src', resource.image('home'));
} }
if (entry.isRoot()) { if (item.isRoot()) {
$html.addClass('root'); $html.addClass('root');
$a.find('img').attr('src', resource.image('home')); $a.find('img').attr('src', resource.image('home'));
} }
if (entry.isCurrentFolder()) { if (item.isCurrentFolder()) {
$html.addClass('current'); $html.addClass('current');
} }
if (_.isNumber(entry.status)) { if (_.isNumber(item.status)) {
if (entry.status === 200) { if (item.status === 200) {
$a.append($(pageHintTemplate)); $a.append($(pageHintTemplate));
} else { } else {
$a.append($(statusHintTemplate).text('(' + entry.status + ')')); $a.append($(statusHintTemplate).text('(' + item.status + ')'));
} }
} }
if (entry.$crumb) { if (item.$crumb) {
entry.$crumb.replaceWith($html); item.$crumb.replaceWith($html);
} }
entry.$crumb = $html; item.$crumb = $html;
return $html; return $html;
}, },

View file

@ -45,9 +45,9 @@ modulejs.define('ext/delete', ['_', '$', 'core/settings', 'core/event', 'core/re
selectedHrefsStr = ''; selectedHrefsStr = '';
if (entries.length) { if (entries.length) {
selectedHrefsStr = _.map(entries, function (entry) { selectedHrefsStr = _.map(entries, function (item) {
return entry.absHref; return item.absHref;
}).join(':'); }).join(':');
$delete.appendTo('#navbar').show(); $delete.appendTo('#navbar').show();
} else { } else {

View file

@ -60,9 +60,9 @@ modulejs.define('ext/download', ['_', '$', 'core/settings', 'core/resource', 'co
selectedHrefsStr = ''; selectedHrefsStr = '';
if (entries.length) { if (entries.length) {
selectedHrefsStr = _.map(entries, function (entry) { selectedHrefsStr = _.map(entries, function (item) {
return entry.absHref; return item.absHref;
}).join(':'); }).join(':');
$download.appendTo('#navbar').show(); $download.appendTo('#navbar').show();
} else { } else {

View file

@ -22,7 +22,7 @@ modulejs.define('ext/filter', ['_', '$', 'core/settings', 'core/resource'], func
duration = 200; duration = 200;
if (re) { if (re) {
$('#extended .entry').each(function () { $('#items .item').each(function () {
var label = $(this).find('.label').text(); var label = $(this).find('.label').text();
@ -33,7 +33,7 @@ modulejs.define('ext/filter', ['_', '$', 'core/settings', 'core/resource'], func
} }
}); });
} else { } else {
match = $('#extended .entry'); match = $('#items .item');
} }
if ($(match).length) { if ($(match).length) {

View file

@ -55,7 +55,7 @@ modulejs.define('ext/l10n', ['_', '$', 'core/settings', 'core/langs', 'core/form
format.setDefaultDateFormat(currentLang.dateFormat); format.setDefaultDateFormat(currentLang.dateFormat);
$('#extended .entry .date').each(function () { $('#items .item .date').each(function () {
var $this = $(this); var $this = $(this);

View file

@ -201,32 +201,32 @@ modulejs.define('ext/preview-img', ['_', '$', 'core/settings', 'core/resource',
event.stopImmediatePropagation(); event.stopImmediatePropagation();
}, },
initEntry = function (entry) { initItem = function (item) {
if (entry.$extended && _.indexOf(settings.types, entry.type) >= 0) { if (item.$extended && _.indexOf(settings.types, item.type) >= 0) {
entry.$extended.find('a').on('click', function (event) { item.$extended.find('a').on('click', function (event) {
event.preventDefault(); event.preventDefault();
var matchedEntries = _.compact(_.map($('#extended .entry'), function (entry) { var matchedEntries = _.compact(_.map($('#items .item'), function (item) {
entry = $(entry).data('entry'); item = $(item).data('item');
return _.indexOf(settings.types, entry.type) >= 0 ? entry : null; return _.indexOf(settings.types, item.type) >= 0 ? item : null;
})); }));
onEnter(matchedEntries, _.indexOf(matchedEntries, entry)); onEnter(matchedEntries, _.indexOf(matchedEntries, item));
}); });
} }
}, },
onLocationChanged = function (item) { onLocationChanged = function (item) {
_.each(item.content, initEntry); _.each(item.content, initItem);
}, },
onLocationRefreshed = function (item, added, removed) { onLocationRefreshed = function (item, added, removed) {
_.each(added, initEntry); _.each(added, initItem);
}, },
init = function () { init = function () {

View file

@ -252,32 +252,32 @@ modulejs.define('ext/preview-txt', ['_', '$', 'core/settings', 'core/resource',
event.stopImmediatePropagation(); event.stopImmediatePropagation();
}, },
initEntry = function (entry) { initItem = function (item) {
if (entry.$extended && _.indexOf(_.keys(settings.types), entry.type) >= 0) { if (item.$extended && _.indexOf(_.keys(settings.types), item.type) >= 0) {
entry.$extended.find('a').on('click', function (event) { item.$extended.find('a').on('click', function (event) {
event.preventDefault(); event.preventDefault();
var matchedEntries = _.compact(_.map($('#extended .entry'), function (entry) { var matchedEntries = _.compact(_.map($('#item .item'), function (item) {
entry = $(entry).data('entry'); item = $(item).data('item');
return _.indexOf(_.keys(settings.types), entry.type) >= 0 ? entry : null; return _.indexOf(_.keys(settings.types), item.type) >= 0 ? item : null;
})); }));
onEnter(matchedEntries, _.indexOf(matchedEntries, entry)); onEnter(matchedEntries, _.indexOf(matchedEntries, item));
}); });
} }
}, },
onLocationChanged = function (item) { onLocationChanged = function (item) {
_.each(item.content, initEntry); _.each(item.content, initItem);
}, },
onLocationRefreshed = function (item, added, removed) { onLocationRefreshed = function (item, added, removed) {
_.each(added, initEntry); _.each(added, initItem);
}, },
init = function () { init = function () {

View file

@ -26,7 +26,7 @@ modulejs.define('ext/qrcode', ['_', '$', 'modernizr', 'core/settings', 'core/eve
} }
}, },
update = function (entry) { update = function (item) {
loadQrCodeExtension(function () { loadQrCodeExtension(function () {
$qrcode.empty().qrcode({ $qrcode.empty().qrcode({
@ -34,21 +34,21 @@ modulejs.define('ext/qrcode', ['_', '$', 'modernizr', 'core/settings', 'core/eve
width: settings.size, width: settings.size,
height: settings.size, height: settings.size,
color: '#333', color: '#333',
text: 'http://' + document.domain + entry.absHref text: 'http://' + document.domain + item.absHref
}); });
}); });
}, },
onMouseenter = function (entry) { onMouseenter = function (item) {
if (!entry.isFolder()) { if (!item.isFolder()) {
update(entry); update(item);
clearTimeout(hideTimeoutId); clearTimeout(hideTimeoutId);
$qrcode.stop(true, true).fadeIn(400); $qrcode.stop(true, true).fadeIn(400);
} }
}, },
onMouseleave = function (entry) { onMouseleave = function (item) {
hideTimeoutId = setTimeout(function () { hideTimeoutId = setTimeout(function () {
@ -64,8 +64,8 @@ modulejs.define('ext/qrcode', ['_', '$', 'modernizr', 'core/settings', 'core/eve
$qrcode = $(template).appendTo('body'); $qrcode = $(template).appendTo('body');
event.sub('entry.mouseenter', onMouseenter); event.sub('item.mouseenter', onMouseenter);
event.sub('entry.mouseleave', onMouseleave); event.sub('item.mouseleave', onMouseleave);
}; };
init(); init();

View file

@ -13,9 +13,9 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], functio
publish = function () { publish = function () {
var entries = _.map($('#extended .entry.selected'), function (entryElement) { var entries = _.map($('#items .item.selected'), function (itemElement) {
return $(entryElement).data('entry'); return $(itemElement).data('item');
}); });
event.pub('selection', entries); event.pub('selection', entries);
@ -35,13 +35,13 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], functio
.show(); .show();
var selRect = $selectionRect.fracs('rect'); var selRect = $selectionRect.fracs('rect');
$('#extended .entry').removeClass('selecting').each(function () { $('#items .item').removeClass('selecting').each(function () {
var $entry = $(this), var $item = $(this),
rect = $entry.find('a').fracs('rect'), rect = $item.find('a').fracs('rect'),
inter = selRect.intersection(rect); inter = selRect.intersection(rect);
if (inter && !$entry.hasClass('folder-parent')) { if (inter && !$item.hasClass('folder-parent')) {
$entry.addClass('selecting'); $item.addClass('selecting');
} }
}); });
}, },
@ -50,8 +50,8 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], functio
event.preventDefault(); event.preventDefault();
$document.off('mousemove', selectionUpdate); $document.off('mousemove', selectionUpdate);
$('#extended .entry.selecting.selected').removeClass('selecting').removeClass('selected'); $('#items .item.selecting.selected').removeClass('selecting').removeClass('selected');
$('#extended .entry.selecting').removeClass('selecting').addClass('selected'); $('#items .item.selecting').removeClass('selecting').addClass('selected');
publish(); publish();
$selectionRect $selectionRect
@ -87,7 +87,7 @@ modulejs.define('ext/select', ['_', '$', 'core/settings', 'core/event'], functio
$(':focus').blur(); $(':focus').blur();
if (!event.ctrlKey && !event.metaKey) { if (!event.ctrlKey && !event.metaKey) {
$('#extended .entry').removeClass('selected'); $('#items .item').removeClass('selected');
publish(); publish();
} }

View file

@ -8,13 +8,13 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
storekey = 'sort.order', storekey = 'sort.order',
type = function (entry) { type = function (item) {
var $entry = $(entry); var $item = $(item);
if ($entry.hasClass('folder-parent')) { if ($item.hasClass('folder-parent')) {
return 0; return 0;
} else if ($entry.hasClass('folder')) { } else if ($item.hasClass('folder')) {
return 1; return 1;
} }
return 2; return 2;
@ -22,17 +22,17 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
cmpFn = function (rev, getVal) { cmpFn = function (rev, getVal) {
return function (entry1, entry2) { return function (item1, item2) {
var res, val1, val2; var res, val1, val2;
res = type(entry1) - type(entry2); res = type(item1) - type(item2);
if (res !== 0) { if (res !== 0) {
return res; return res;
} }
val1 = getVal(entry1); val1 = getVal(item1);
val2 = getVal(entry2); val2 = getVal(item2);
if (val1 < val2) { if (val1 < val2) {
return rev ? 1 : -1; return rev ? 1 : -1;
} else if (val1 > val2) { } else if (val1 > val2) {
@ -42,17 +42,17 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
}; };
}, },
getName = function (entry) { getName = function (item) {
return $(entry).find('.label').text().toLowerCase(); return $(item).find('.label').text().toLowerCase();
}, },
getTime = function (entry) { getTime = function (item) {
return $(entry).find('.date').data('time'); return $(item).find('.date').data('time');
}, },
getSize = function (entry) { getSize = function (item) {
return $(entry).find('.size').data('bytes'); return $(item).find('.size').data('bytes');
}, },
$all, orders, $all, orders,
@ -65,10 +65,10 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
$all.removeClass('ascending').removeClass('descending'); $all.removeClass('ascending').removeClass('descending');
order.head.addClass(order.clas); order.head.addClass(order.clas);
$('#extended .entry').detach().sort(order.fn).appendTo('#extended > ul'); $('#items .item').detach().sort(order.fn).appendTo('#items');
}, },
onContentChanged = function (entry) { onContentChanged = function (item) {
sortBy(store.get(storekey) || settings.order); sortBy(store.get(storekey) || settings.order);
}, },
@ -81,7 +81,7 @@ modulejs.define('ext/sort', ['_', '$', 'core/settings', 'core/resource', 'core/e
var $ascending = $('<img src="' + resource.image('ascending') + '" class="sort ascending" alt="ascending" />'), var $ascending = $('<img src="' + resource.image('ascending') + '" class="sort ascending" alt="ascending" />'),
$descending = $('<img src="' + resource.image('descending') + '" class="sort descending" alt="descending" />'), $descending = $('<img src="' + resource.image('descending') + '" class="sort descending" alt="descending" />'),
$header = $('#extended li.header'), $header = $('#items li.header'),
$label = $header.find('a.label'), $label = $header.find('a.label'),
$date = $header.find('a.date'), $date = $header.find('a.date'),
$size = $header.find('a.size'); $size = $header.find('a.size');

View file

@ -54,25 +54,25 @@ modulejs.define('ext/statusbar', ['_', '$', 'core/settings', 'core/format', 'cor
event.sub('location.changed', onLocationChanged); event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationChanged); event.sub('location.refreshed', onLocationChanged);
event.sub('entry.mouseenter', function (entry) { event.sub('item.mouseenter', function (item) {
if (entry.isCurrentParentFolder()) { if (item.isCurrentParentFolder()) {
return; return;
} }
var $span = $('<span/>').append(entry.label); var $span = $('<span/>').append(item.label);
if (_.isNumber(entry.time)) { if (_.isNumber(item.time)) {
$span.append(sepTemplate).append(format.formatDate(entry.time)); $span.append(sepTemplate).append(format.formatDate(item.time));
} }
if (_.isNumber(entry.size)) { if (_.isNumber(item.size)) {
$span.append(sepTemplate).append(format.formatSize(entry.size)); $span.append(sepTemplate).append(format.formatSize(item.size));
} }
update($span); update($span);
}); });
event.sub('entry.mouseleave', function (entry) { event.sub('item.mouseleave', function (item) {
update(); update();
}); });

View file

@ -25,45 +25,55 @@ modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/ser
}); });
}, },
checkEntry = function (entry) { checkItem = function (item) {
var type = null; var type = null;
if (_.indexOf(settings.img, entry.type) >= 0) { if (_.indexOf(settings.img, item.type) >= 0) {
type = 'img'; type = 'img';
} else if (_.indexOf(settings.mov, entry.type) >= 0) { } else if (_.indexOf(settings.mov, item.type) >= 0) {
type = 'mov'; type = 'mov';
} else if (_.indexOf(settings.doc, entry.type) >= 0) { } else if (_.indexOf(settings.doc, item.type) >= 0) {
type = 'doc'; type = 'doc';
} }
if (type) { if (type) {
requestThumbSmall(type, entry.absHref, function (src) { if (item.thumbSmall) {
item.$extended.find('.icon.small img').addClass('thumb').attr('src', item.thumbSmall);
} else {
requestThumbSmall(type, item.absHref, function (src) {
if (src && entry.$extended) { if (src && item.$extended) {
entry.$extended.find('.icon.small img').addClass('thumb').attr('src', src); item.thumbSmall = src;
item.$extended.find('.icon.small img').addClass('thumb').attr('src', src);
} }
}); });
requestThumbBig(type, entry.absHref, function (src) { }
if (item.thumbBig) {
item.$extended.find('.icon.big img').addClass('thumb').attr('src', item.thumbBig);
} else {
requestThumbBig(type, item.absHref, function (src) {
if (src && entry.$extended) { if (src && item.$extended) {
entry.$extended.find('.icon.big img').addClass('thumb').attr('src', src); item.thumbBig = src;
item.$extended.find('.icon.big img').addClass('thumb').attr('src', src);
} }
}); });
} }
}
}, },
onLocationChanged = function (item) { onLocationChanged = function (item) {
setTimeout(function () { setTimeout(function () {
_.each(item.content, checkEntry); _.each(item.content, checkItem);
}, settings.delay); }, settings.delay);
}, },
onLocationRefreshed = function (item, added, removed) { onLocationRefreshed = function (item, added, removed) {
_.each(added, checkEntry); _.each(added, checkItem);
}, },
init = function () { init = function () {

View file

@ -7,7 +7,7 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
maxSubfolders: 50 maxSubfolders: 50
}, allsettings.tree), }, allsettings.tree),
template = '<div class="entry">' + template = '<div class="item">' +
'<span class="indicator none">' + '<span class="indicator none">' +
'<img src="' + resource.image('tree') + '"/>' + '<img src="' + resource.image('tree') + '"/>' +
'</span>' + '</span>' +
@ -20,7 +20,7 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
magicSequence = '=h5ai=', magicSequence = '=h5ai=',
update = function (entry) { update = function (item) {
var $html = $(template), var $html = $(template),
$indicator = $html.find('.indicator'), $indicator = $html.find('.indicator'),
@ -29,26 +29,26 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
$label = $html.find('.label'); $label = $html.find('.label');
$html $html
.addClass(entry.isFolder() ? 'folder' : 'file') .addClass(item.isFolder() ? 'folder' : 'file')
.data('entry', entry) .data('item', item)
.data('status', entry.status); .data('status', item.status);
location.setLink($a, entry); location.setLink($a, item);
$img.attr('src', resource.icon(entry.type)); $img.attr('src', resource.icon(item.type));
$label.text(entry.label); $label.text(item.label);
if (entry.isFolder()) { if (item.isFolder()) {
var subfolders = entry.getSubfolders(); var subfolders = item.getSubfolders();
// indicator // indicator
if (!entry.status || (entry.status === magicSequence && !entry.isContentFetched) || subfolders.length) { if (!item.status || (item.status === magicSequence && !item.isContentFetched) || subfolders.length) {
$indicator.removeClass('none'); $indicator.removeClass('none');
if (!entry.status || (entry.status === magicSequence && !entry.isContentFetched)) { if (!item.status || (item.status === magicSequence && !item.isContentFetched)) {
$indicator.addClass('unknown'); $indicator.addClass('unknown');
} else if (entry.isContentVisible) { } else if (item.isContentVisible) {
$indicator.addClass('open'); $indicator.addClass('open');
} else { } else {
$indicator.addClass('close'); $indicator.addClass('close');
@ -56,19 +56,19 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
} }
// is it the domain? // is it the domain?
if (entry.isDomain()) { if (item.isDomain()) {
$html.addClass('domain'); $html.addClass('domain');
$img.attr('src', resource.icon('folder-home')); $img.attr('src', resource.icon('folder-home'));
} }
// is it the root? // is it the root?
if (entry.isRoot()) { if (item.isRoot()) {
$html.addClass('root'); $html.addClass('root');
$img.attr('src', resource.icon('folder-home')); $img.attr('src', resource.icon('folder-home'));
} }
// is it the current folder? // is it the current folder?
if (entry.isCurrentFolder()) { if (item.isCurrentFolder()) {
$html.addClass('current'); $html.addClass('current');
$img.attr('src', resource.icon('folder-open')); $img.attr('src', resource.icon('folder-open'));
} }
@ -86,27 +86,27 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
if (subfolders.length > settings.maxSubfolders) { if (subfolders.length > settings.maxSubfolders) {
$('<li class="summary">… ' + (subfolders.length - settings.maxSubfolders) + ' more subfolders</li>').appendTo($ul); $('<li class="summary">… ' + (subfolders.length - settings.maxSubfolders) + ' more subfolders</li>').appendTo($ul);
} }
if (!entry.isContentVisible) { if (!item.isContentVisible) {
$ul.hide(); $ul.hide();
} }
} }
// reflect folder status // reflect folder status
if (_.isNumber(entry.status)) { if (_.isNumber(item.status)) {
if (entry.status === 200) { if (item.status === 200) {
$img.attr('src', resource.icon('folder-page')); $img.attr('src', resource.icon('folder-page'));
} else { } else {
$html.addClass('error'); $html.addClass('error');
$a.append($(statusHintTemplate).text(entry.status)); $a.append($(statusHintTemplate).text(item.status));
} }
} }
} }
if (entry.$tree) { if (item.$tree) {
entry.$tree.replaceWith($html); item.$tree.replaceWith($html);
} }
entry.$tree = $html; item.$tree = $html;
return $html; return $html;
}, },
@ -114,9 +114,9 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
createOnIndicatorClick = function () { createOnIndicatorClick = function () {
var $tree = $('#tree'), var $tree = $('#tree'),
slide = function (entry, $indicator, $content, down) { slide = function (item, $indicator, $content, down) {
entry.isContentVisible = down; item.isContentVisible = down;
$indicator.removeClass('open close').addClass(down ? 'open' : 'close'); $indicator.removeClass('open close').addClass(down ? 'open' : 'close');
$tree.scrollpanel('update', true); $tree.scrollpanel('update', true);
$content[down ? 'slideDown' : 'slideUp'](function () { $content[down ? 'slideDown' : 'slideUp'](function () {
@ -128,32 +128,32 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
return function () { return function () {
var $indicator = $(this), var $indicator = $(this),
$entry = $indicator.closest('.entry'), $item = $indicator.closest('.item'),
entry = $entry.data('entry'), item = $item.data('item'),
$content = $entry.find('> ul.content'); $content = $item.find('> ul.content');
if ($indicator.hasClass('unknown')) { if ($indicator.hasClass('unknown')) {
entry.fetchContent(function (entry) { item.fetchContent(function (item) {
entry.isContentVisible = false; item.isContentVisible = false;
var $entry = update(entry), var $item = update(item),
$indicator = $entry.find('> .indicator'), $indicator = $item.find('> .indicator'),
$content = $entry.find('> ul.content'); $content = $item.find('> ul.content');
if (!$indicator.hasClass('none')) { if (!$indicator.hasClass('none')) {
slide(entry, $indicator, $content, true); slide(item, $indicator, $content, true);
} }
}); });
} else if ($indicator.hasClass('open')) { } else if ($indicator.hasClass('open')) {
slide(entry, $indicator, $content, false); slide(item, $indicator, $content, false);
} else if ($indicator.hasClass('close')) { } else if ($indicator.hasClass('close')) {
slide(entry, $indicator, $content, true); slide(item, $indicator, $content, true);
} }
}; };
}, },
@ -171,15 +171,15 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
} }
}, },
fetchTree = function (entry, callback) { fetchTree = function (item, callback) {
entry.isContentVisible = true; item.isContentVisible = true;
entry.fetchContent(function (entry) { item.fetchContent(function (item) {
if (entry.parent) { if (item.parent) {
fetchTree(entry.parent, callback); fetchTree(item.parent, callback);
} else { } else {
callback(entry); callback(item);
} }
}); });
}, },
@ -199,13 +199,13 @@ modulejs.define('ext/tree', ['_', '$', 'core/settings', 'core/resource', 'core/e
$tree.scrollpanel('update'); $tree.scrollpanel('update');
}, },
onContentChanged = function (entry) { onContentChanged = function (item) {
while (entry.parent) { while (item.parent) {
entry = entry.parent; item = item.parent;
} }
update(entry); update(item);
adjustSpacing(); adjustSpacing();
shiftTree(false, true); shiftTree(false, true);
}, },

View file

@ -1,5 +1,5 @@
modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings', 'core/server', 'core/location'], function (_, types, event, settings, server, location) { modulejs.define('model/item', ['_', 'core/types', 'core/event', 'core/settings', 'core/server', 'core/location'], function (_, types, event, settings, server, location) {
var reEndsWithSlash = /\/$/, var reEndsWithSlash = /\/$/,
@ -39,11 +39,9 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
// Cache
cache = {}, cache = {},
getEntry = function (absHref, time, size, status, isContentFetched) { getItem = function (absHref, time, size, status, isContentFetched) {
absHref = location.forceEncoding(absHref); absHref = location.forceEncoding(absHref);
@ -51,7 +49,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
return null; return null;
} }
var self = cache[absHref] || new Entry(absHref); var self = cache[absHref] || new Item(absHref);
if (_.isNumber(time)) { if (_.isNumber(time)) {
self.time = time; self.time = time;
@ -69,7 +67,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
return self; return self;
}, },
removeEntry = function (absHref) { removeItem = function (absHref) {
absHref = location.forceEncoding(absHref); absHref = location.forceEncoding(absHref);
@ -80,16 +78,16 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
if (self.parent) { if (self.parent) {
delete self.parent.content[self.absHref]; delete self.parent.content[self.absHref];
} }
_.each(self.content, function (entry) { _.each(self.content, function (item) {
removeEntry(entry.absHref); removeItem(item.absHref);
}); });
} }
}, },
fetchContent = function (absHref, callback) { fetchContent = function (absHref, callback) {
var self = getEntry(absHref); var self = getItem(absHref);
if (!_.isFunction(callback)) { if (!_.isFunction(callback)) {
callback = function () {}; callback = function () {};
@ -101,8 +99,8 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
server.request({action: 'get', entries: true, entriesHref: self.absHref, entriesWhat: 1}, function (response) { server.request({action: 'get', entries: true, entriesHref: self.absHref, entriesWhat: 1}, function (response) {
if (response.entries) { if (response.entries) {
_.each(response.entries, function (entry) { _.each(response.entries, function (item) {
getEntry(entry.absHref, entry.time, entry.size, entry.status, entry.content); getItem(item.absHref, item.time, item.size, item.status, item.content);
}); });
} }
@ -113,9 +111,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
// Entry var Item = function (absHref) {
var Entry = function (absHref) {
var split = splitPath(absHref); var split = splitPath(absHref);
@ -131,7 +127,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
this.content = {}; this.content = {};
if (split.parent) { if (split.parent) {
this.parent = getEntry(split.parent); this.parent = getItem(split.parent);
this.parent.content[this.absHref] = this; this.parent.content[this.absHref] = this;
if (_.keys(this.parent.content).length > 1) { if (_.keys(this.parent.content).length > 1) {
this.parent.isContentFetched = true; this.parent.isContentFetched = true;
@ -139,7 +135,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
} }
}; };
_.extend(Entry.prototype, { _.extend(Item.prototype, {
isFolder: function () { isFolder: function () {
@ -158,7 +154,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
isCurrentParentFolder: function () { isCurrentParentFolder: function () {
return this === getEntry(location.getAbsHref()).parent; return this === getItem(location.getAbsHref()).parent;
}, },
isDomain: function () { isDomain: function () {
@ -188,12 +184,12 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
getCrumb: function () { getCrumb: function () {
var entry = this, var item = this,
crumb = [entry]; crumb = [item];
while (entry.parent) { while (item.parent) {
entry = entry.parent; item = item.parent;
crumb.unshift(entry); crumb.unshift(item);
} }
return crumb; return crumb;
@ -201,12 +197,12 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
getSubfolders: function () { getSubfolders: function () {
return _.sortBy(_.filter(this.content, function (entry) { return _.sortBy(_.filter(this.content, function (item) {
return entry.isFolder(); return item.isFolder();
}), function (entry) { }), function (item) {
return entry.label.toLowerCase(); return item.label.toLowerCase();
}); });
}, },
@ -215,9 +211,9 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
var folders = 0, var folders = 0,
files = 0; files = 0;
_.each(this.content, function (entry) { _.each(this.content, function (item) {
if (entry.isFolder()) { if (item.isFolder()) {
folders += 1; folders += 1;
} else { } else {
files += 1; files += 1;
@ -225,11 +221,11 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
}); });
var depth = 0, var depth = 0,
entry = this; item = this;
while (entry.parent) { while (item.parent) {
depth += 1; depth += 1;
entry = entry.parent; item = item.parent;
} }
return { return {
@ -241,7 +237,7 @@ modulejs.define('model/entry', ['_', 'core/types', 'core/event', 'core/settings'
}); });
return { return {
get: getEntry, get: getItem,
remove: removeEntry remove: removeItem
}; };
}); });

View file

@ -6,7 +6,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
binaryPrefix: false binaryPrefix: false
}, allsettings.view), }, allsettings.view),
template = '<li class="entry">' + itemTemplate = '<li class="item">' +
'<a>' + '<a>' +
'<span class="icon small"><img/></span>' + '<span class="icon small"><img/></span>' +
'<span class="icon big"><img/></span>' + '<span class="icon big"><img/></span>' +
@ -16,7 +16,7 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
'</a>' + '</a>' +
'</li>', '</li>',
hintTemplate = '<span class="hint"/>', hintTemplate = '<span class="hint"/>',
listTemplate = '<ul>' + itemsTemplate = '<ul id="items">' +
'<li class="header">' + '<li class="header">' +
'<a class="icon"/>' + '<a class="icon"/>' +
'<a class="label" href="#"><span class="l10n-name"/></a>' + '<a class="label" href="#"><span class="l10n-name"/></a>' +
@ -27,14 +27,14 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
emptyTemplate = '<div class="empty l10n-empty"/>', emptyTemplate = '<div class="empty l10n-empty"/>',
contentTemplate = '<div id="content"><div id="extended" class="clearfix"/></div>', contentTemplate = '<div id="content"><div id="extended" class="clearfix"/></div>',
// updates this single entry // updates this single item
update = function (entry, force) { update = function (item, force) {
if (!force && entry.$extended && entry.status && entry.$extended.data('status') === entry.status) { if (!force && item.$extended) {
return entry.$extended; return item.$extended;
} }
var $html = $(template), var $html = $(itemTemplate),
$a = $html.find('a'), $a = $html.find('a'),
$imgSmall = $html.find('.icon.small img'), $imgSmall = $html.find('.icon.small img'),
$imgBig = $html.find('.icon.big img'), $imgBig = $html.find('.icon.big img'),
@ -43,30 +43,29 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
$size = $html.find('.size'); $size = $html.find('.size');
$html $html
.addClass(entry.isFolder() ? 'folder' : 'file') .addClass(item.isFolder() ? 'folder' : 'file')
.data('entry', entry) .data('item', item);
.data('status', entry.status);
location.setLink($a, entry); location.setLink($a, item);
$imgSmall.attr('src', resource.icon(entry.type)).attr('alt', entry.type); $imgSmall.attr('src', resource.icon(item.type)).attr('alt', item.type);
$imgBig.attr('src', resource.icon(entry.type, true)).attr('alt', entry.type); $imgBig.attr('src', resource.icon(item.type, true)).attr('alt', item.type);
$label.text(entry.label); $label.text(item.label);
$date.data('time', entry.time).text(format.formatDate(entry.time)); $date.data('time', item.time).text(format.formatDate(item.time));
$size.data('bytes', entry.size).text(format.formatSize(entry.size)); $size.data('bytes', item.size).text(format.formatSize(item.size));
if (entry.isFolder() && _.isNumber(entry.status)) { if (item.isFolder() && _.isNumber(item.status)) {
if (entry.status === 200) { if (item.status === 200) {
$html.addClass('page'); $html.addClass('page');
$imgSmall.attr('src', resource.icon('folder-page')); $imgSmall.attr('src', resource.icon('folder-page'));
$imgBig.attr('src', resource.icon('folder-page', true)); $imgBig.attr('src', resource.icon('folder-page', true));
} else { } else {
$html.addClass('error'); $html.addClass('error');
$label.append($(hintTemplate).text(' ' + entry.status + ' ')); $label.append($(hintTemplate).text(' ' + item.status + ' '));
} }
} }
if (entry.isCurrentParentFolder()) { if (item.isCurrentParentFolder()) {
$imgSmall.attr('src', resource.icon('folder-parent')); $imgSmall.attr('src', resource.icon('folder-parent'));
$imgBig.attr('src', resource.icon('folder-parent', true)); $imgBig.attr('src', resource.icon('folder-parent', true));
if (!settings.setParentFolderLabels) { if (!settings.setParentFolderLabels) {
@ -75,41 +74,41 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
$html.addClass('folder-parent'); $html.addClass('folder-parent');
} }
if (entry.$extended) { if (item.$extended) {
entry.$extended.replaceWith($html); item.$extended.replaceWith($html);
} }
entry.$extended = $html; item.$extended = $html;
return $html; return $html;
}, },
onMouseenter = function () { onMouseenter = function () {
var entry = $(this).closest('.entry').data('entry'); var item = $(this).closest('.item').data('item');
event.pub('entry.mouseenter', entry); event.pub('item.mouseenter', item);
}, },
onMouseleave = function () { onMouseleave = function () {
var entry = $(this).closest('.entry').data('entry'); var item = $(this).closest('.item').data('item');
event.pub('entry.mouseleave', entry); event.pub('item.mouseleave', item);
}, },
onLocationChanged = function (item) { onLocationChanged = function (item) {
var $extended = $('#extended'), var $extended = $('#extended'),
$ul = $extended.find('ul'), $items = $('#items'),
$empty = $extended.find('.empty'); $empty = $extended.find('.empty');
$ul.find('.entry').remove(); $items.find('.item').remove();
if (item.parent) { if (item.parent) {
$ul.append(update(item.parent)); $items.append(update(item.parent, true));
} }
_.each(item.content, function (e) { _.each(item.content, function (e) {
$ul.append(update(e)); $items.append(update(e, true));
}); });
if (item.isEmpty()) { if (item.isEmpty()) {
@ -122,12 +121,12 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
onLocationRefreshed = function (item, added, removed) { onLocationRefreshed = function (item, added, removed) {
var $extended = $('#extended'), var $extended = $('#extended'),
$ul = $extended.find('ul'), $items = $('#items'),
$empty = $extended.find('.empty'); $empty = $extended.find('.empty');
_.each(added, function (item) { _.each(added, function (item) {
update(item, true).hide().appendTo($ul).fadeIn(400); update(item, true).hide().appendTo($items).fadeIn(400);
}); });
_.each(removed, function (item) { _.each(removed, function (item) {
@ -148,16 +147,18 @@ modulejs.define('view/items', ['_', '$', 'core/settings', 'core/resource', 'core
var $content = $(contentTemplate), var $content = $(contentTemplate),
$extended = $content.find('#extended'), $extended = $content.find('#extended'),
$ul = $(listTemplate), $items = $(itemsTemplate),
$emtpy = $(emptyTemplate).hide(); $emtpy = $(emptyTemplate).hide();
format.setDefaultMetric(settings.binaryPrefix); format.setDefaultMetric(settings.binaryPrefix);
$extended $extended
.append($ul) .append($items)
.append($emtpy) .append($emtpy);
.on('mouseenter', '.entry a', onMouseenter)
.on('mouseleave', '.entry a', onMouseleave); $items
.on('mouseenter', '.item a', onMouseenter)
.on('mouseleave', '.item a', onMouseleave);
event.sub('location.changed', onLocationChanged); event.sub('location.changed', onLocationChanged);
event.sub('location.refreshed', onLocationRefreshed); event.sub('location.refreshed', onLocationRefreshed);

View file

@ -20,7 +20,7 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c
var contentWidth = $('#content').width(), var contentWidth = $('#content').width(),
$extended = $('#extended'), $extended = $('#extended'),
itemWidth = ($extended.hasClass('view-icons') || $extended.hasClass('view-grid')) ? ($extended.find('.entry').eq(0).width() || 1) : 1; itemWidth = ($extended.hasClass('view-icons') || $extended.hasClass('view-grid')) ? ($extended.find('.item').eq(0).width() || 1) : 1;
$extended.width(Math.floor(contentWidth / itemWidth) * itemWidth); $extended.width(Math.floor(contentWidth / itemWidth) * itemWidth);
}, },

View file

@ -55,7 +55,7 @@ Options
- interval: number, update interval in milliseconds, at least 1000 - interval: number, update interval in milliseconds, at least 1000
*/ */
"autorefresh": { "autorefresh": {
"enabled": true, "enabled": false,
"interval": 5000 "interval": 5000
}, },