add user.name, list fixes
This commit is contained in:
parent
ed2b7cebfc
commit
98d1725d19
15 changed files with 180 additions and 203 deletions
|
@ -240,6 +240,7 @@ class Changelog(db.Model):
|
|||
|
||||
def action_editusername(self, user, timestamp, username):
|
||||
user.info['username'] = username
|
||||
user.update_name()
|
||||
user.save()
|
||||
return True
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ from user.models import List, User
|
|||
def create_default_lists(user_id=None):
|
||||
user_id = user_id or settings.USER_ID
|
||||
user = User.get_or_create(user_id)
|
||||
user.update_name()
|
||||
for list in settings.config['lists']:
|
||||
l = List.get(user_id, list['title'])
|
||||
if not l:
|
||||
|
|
|
@ -58,6 +58,10 @@ def setPreferences(data):
|
|||
}
|
||||
'''
|
||||
update_dict(settings.preferences, data)
|
||||
if 'username' in data:
|
||||
u = state.user()
|
||||
u.update_name()
|
||||
u.save()
|
||||
return settings.preferences
|
||||
actions.register(setPreferences)
|
||||
|
||||
|
@ -102,7 +106,7 @@ def getLists(data):
|
|||
'items': Item.query.count(),
|
||||
'name': 'Libraries',
|
||||
'type': 'libraries',
|
||||
'user': '',
|
||||
'user': None,
|
||||
})
|
||||
for u in models.User.query.filter((models.User.peered==True)|(models.User.id==settings.USER_ID)):
|
||||
lists += u.lists_json()
|
||||
|
@ -245,7 +249,11 @@ def editUser(data):
|
|||
'''
|
||||
if 'nickname' in data:
|
||||
p = models.User.get_or_create(data['id'])
|
||||
p.set_nickname(data['nickname'])
|
||||
if data['nickname']:
|
||||
p.info['nickname'] = data['nickname']
|
||||
elif 'nickname' in p.info:
|
||||
del p.info['nickname']
|
||||
p.update_name()
|
||||
p.save()
|
||||
return {}
|
||||
actions.register(editUser, cache=False)
|
||||
|
|
|
@ -50,6 +50,11 @@ class User(db.Model):
|
|||
db.session.add(self)
|
||||
db.session.commit()
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
name = self.nickname if self.id != settings.USER_ID else ''
|
||||
return name
|
||||
|
||||
def json(self):
|
||||
j = {}
|
||||
if self.info:
|
||||
|
@ -59,7 +64,9 @@ class User(db.Model):
|
|||
j['pending'] = self.pending
|
||||
j['peered'] = self.peered
|
||||
j['online'] = self.is_online()
|
||||
j['nickname'] = self.nickname
|
||||
j['nickname'] = self.info.get('nickname')
|
||||
j['username'] = self.info.get('username') if self.id != settings.USER_ID else settings.preferences['username']
|
||||
j['name'] = self.name
|
||||
return j
|
||||
|
||||
def is_online(self):
|
||||
|
@ -71,7 +78,7 @@ class User(db.Model):
|
|||
'name': 'Library',
|
||||
'type': 'library',
|
||||
'items': self.items.count(),
|
||||
'user': self.nickname if self.id != settings.USER_ID else settings.preferences['username'],
|
||||
'user': self.name
|
||||
}] + [l.json() for l in self.lists.order_by('index_')]
|
||||
|
||||
def update_peering(self, peered, username=None):
|
||||
|
@ -80,11 +87,7 @@ class User(db.Model):
|
|||
self.pending = ''
|
||||
if username:
|
||||
self.info['username'] = username
|
||||
else:
|
||||
username = self.info.get('username')
|
||||
if not username:
|
||||
username = 'anonymous'
|
||||
self.set_nickname(username)
|
||||
self.update_name()
|
||||
# FIXME: need to set peered to False to not trigger changelog event
|
||||
# before other side receives acceptPeering request
|
||||
self.peered = False
|
||||
|
@ -97,7 +100,7 @@ class User(db.Model):
|
|||
else:
|
||||
self.pending = ''
|
||||
self.peered = False
|
||||
self.nickname = None
|
||||
self.update_name()
|
||||
self.save()
|
||||
List.query.filter_by(user_id=self.id).delete()
|
||||
for i in self.items:
|
||||
|
@ -112,11 +115,15 @@ class User(db.Model):
|
|||
Changelog.record(state.user(), 'removepeer', self.id)
|
||||
self.save()
|
||||
|
||||
def set_nickname(self, nickname):
|
||||
username = nickname
|
||||
def update_name(self):
|
||||
if self.id == settings.USER_ID:
|
||||
name = settings.preferences.get('username', 'anonymous')
|
||||
else:
|
||||
name = self.info.get('nickname') or self.info.get('username') or 'anonymous'
|
||||
nickname = name
|
||||
n = 2
|
||||
while self.query.filter_by(nickname=nickname).filter(User.id!=self.id).first():
|
||||
nickname = '%s [%d]' % (username, n)
|
||||
nickname = '%s [%d]' % (name, n)
|
||||
n += 1
|
||||
self.nickname = nickname
|
||||
|
||||
|
@ -261,7 +268,7 @@ class List(db.Model):
|
|||
def json(self):
|
||||
r = {
|
||||
'id': self.public_id,
|
||||
'user': self.user.nickname if self.user_id != settings.USER_ID else settings.preferences['username'],
|
||||
'user': self.user.name,
|
||||
'name': self.name,
|
||||
'index': self.index_,
|
||||
'items': self.items_count(),
|
||||
|
|
|
@ -59,6 +59,7 @@ oml.UI = (function() {
|
|||
// and list may then change listSort and listView,
|
||||
// which we don't want to trigger, since find triggers
|
||||
// (values we put in add will be changed, but won't trigger)
|
||||
// FIXME: ABOVE COMMENT DOES NOT APPLY
|
||||
list = oml.getListState(args.find);
|
||||
ui._list = list;
|
||||
ui._filterState = oml.getFilterState(args.find);
|
||||
|
@ -74,12 +75,13 @@ oml.UI = (function() {
|
|||
// then for each setting that corresponds to a list setting
|
||||
if (!ui.lists[list]) {
|
||||
// either add the default setting
|
||||
add[setting] = oml.config.user.ui[setting];
|
||||
args[setting] = oml.config.user.ui[setting];
|
||||
} else {
|
||||
// or the existing list setting
|
||||
add[setting] = ui.lists[list][listSetting]
|
||||
args[setting] = ui.lists[list][listSetting];
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
list = previousUI._list;
|
||||
}
|
||||
|
@ -97,13 +99,13 @@ oml.UI = (function() {
|
|||
var key = 'lists.' + that.encode(list) + '.' + listSetting;
|
||||
if (setting in args) {
|
||||
// the setting passed to UI.set
|
||||
add[key] = args[setting];
|
||||
args[key] = args[setting];
|
||||
} else if (setting in add) {
|
||||
// or the setting changed via find
|
||||
add[key] = add[setting];
|
||||
args[key] = add[setting];
|
||||
} else if (!ui.lists[list]) {
|
||||
// or the default setting
|
||||
add[key] = oml.config.user.ui[setting];
|
||||
args[key] = oml.config.user.ui[setting];
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -134,8 +136,6 @@ oml.UI = (function() {
|
|||
add['mediaState.' + item] = {position: 0, zoom: 1};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// items in args trigger events, items in add do not
|
||||
[args, add].forEach(function(object, isAdd) {
|
||||
Ox.forEach(object, function(value, key) {
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
oml.ui.folders = function() {
|
||||
|
||||
var ui = oml.user.ui,
|
||||
username = oml.user.preferences.username,
|
||||
|
||||
userIndex,
|
||||
users,
|
||||
|
@ -13,7 +12,6 @@ oml.ui.folders = function() {
|
|||
that = Ox.Element()
|
||||
.css({
|
||||
overflowX: 'hidden',
|
||||
//overflowY: 'auto',
|
||||
})
|
||||
.bindEvent({
|
||||
oml_find: selectList,
|
||||
|
@ -35,7 +33,7 @@ oml.ui.folders = function() {
|
|||
|
||||
function getFolderList(list) {
|
||||
var index = users.map(function(user) {
|
||||
return user.nickname;
|
||||
return user.name;
|
||||
}).indexOf(list.user);
|
||||
return list.id == '' ? oml.$ui.librariesList
|
||||
: Ox.endsWith(list.id, ':') ? oml.$ui.libraryList[index]
|
||||
|
@ -43,8 +41,10 @@ oml.ui.folders = function() {
|
|||
}
|
||||
|
||||
function getUsersAndLists(callback) {
|
||||
oml.getUsers(function() {
|
||||
users = arguments[0];
|
||||
oml.getUsers(function(users_) {
|
||||
users = users_.filter(function(user) {
|
||||
return user.id == oml.user.id || user.peered;
|
||||
});
|
||||
oml.getLists(function(lists) {
|
||||
callback(users, lists);
|
||||
});
|
||||
|
@ -53,7 +53,7 @@ oml.ui.folders = function() {
|
|||
|
||||
function selectList() {
|
||||
var split = ui._list.split(':'),
|
||||
index = userIndex[split[0] || oml.user.preferences.username],
|
||||
index = userIndex[split[0]],
|
||||
list = split[1],
|
||||
$selectedList = !ui._list ? oml.$ui.librariesList
|
||||
: !list ? oml.$ui[!list ? 'libraryList' : 'folderList'][index]
|
||||
|
@ -84,14 +84,7 @@ oml.ui.folders = function() {
|
|||
|
||||
$lists.push(
|
||||
oml.$ui.librariesList = oml.ui.folderList({
|
||||
items: [
|
||||
{
|
||||
id: '',
|
||||
name: Ox._('All Libraries'),
|
||||
type: 'libraries',
|
||||
items: Ox.getObjectById(lists, '').items
|
||||
}
|
||||
]
|
||||
items: [lists[0]]
|
||||
})
|
||||
.bindEvent({
|
||||
select: function() {
|
||||
|
@ -101,7 +94,7 @@ oml.ui.folders = function() {
|
|||
selectnext: function() {
|
||||
oml.UI.set(Ox.extend(
|
||||
{find: getFind(':')},
|
||||
'showFolder.' + username,
|
||||
'showFolder.',
|
||||
true
|
||||
));
|
||||
},
|
||||
|
@ -115,15 +108,15 @@ oml.ui.folders = function() {
|
|||
|
||||
var $content,
|
||||
items = lists.filter(function(list) {
|
||||
return list.user == user.nickname
|
||||
return list.user === user.name
|
||||
&& list.type != 'library';
|
||||
}),
|
||||
libraryId = (!index ? '' : user.nickname) + ':'
|
||||
libraryId = user.name + ':';
|
||||
|
||||
userIndex[user.nickname] = index;
|
||||
userIndex[user.name] = index;
|
||||
|
||||
oml.$ui.folder[index] = Ox.CollapsePanel({
|
||||
collapsed: !ui.showFolder[user.nickname],
|
||||
collapsed: !ui.showFolder[user.name],
|
||||
extras: [
|
||||
oml.ui.statusIcon(user, index),
|
||||
{},
|
||||
|
@ -146,18 +139,22 @@ oml.ui.folders = function() {
|
|||
}
|
||||
})
|
||||
],
|
||||
title: Ox.encodeHTMLEntities(user.nickname)
|
||||
title: Ox.encodeHTMLEntities(
|
||||
!index
|
||||
? oml.user.preferences.username || 'anonymous'
|
||||
: user.name
|
||||
)
|
||||
})
|
||||
.css({
|
||||
width: ui.sidebarSize
|
||||
})
|
||||
.bindEvent({
|
||||
toggle: function(data) {
|
||||
oml.UI.set('showFolder.' + user.nickname, !data.collapsed);
|
||||
oml.UI.set('showFolder.' + user.name, !data.collapsed);
|
||||
}
|
||||
})
|
||||
.bindEvent(
|
||||
'oml_showfolder.' + user.nickname.toLowerCase(),
|
||||
'oml_showfolder.' + user.name.toLowerCase(),
|
||||
function(data) {
|
||||
oml.$ui.folder[index].options({collapsed: !data.value});
|
||||
}
|
||||
|
@ -171,14 +168,10 @@ oml.ui.folders = function() {
|
|||
|
||||
$lists.push(
|
||||
oml.$ui.libraryList[index] = oml.ui.folderList({
|
||||
items: [
|
||||
{
|
||||
id: libraryId,
|
||||
name: Ox._('Library'),
|
||||
type: 'library',
|
||||
items: Ox.getObjectById(lists, libraryId).items
|
||||
}
|
||||
]
|
||||
items: lists.filter(function(list) {
|
||||
return list.user == user.name
|
||||
&& list.type == 'library';
|
||||
})
|
||||
})
|
||||
.bindEvent({
|
||||
add: function() {
|
||||
|
@ -196,12 +189,12 @@ oml.ui.folders = function() {
|
|||
if (!index) {
|
||||
set = {find: getFind('')};
|
||||
} else {
|
||||
user = users[index - 1].nickname;
|
||||
user = users[index - 1].name;
|
||||
userLists = lists.filter(function(list) {
|
||||
return list.user == user;
|
||||
});
|
||||
set = {find: getFind(
|
||||
!userLists.length ? (user == oml.user.preferences.username ? '' : user) + ':'
|
||||
!userLists.length ? user + ':'
|
||||
: Ox.last(userLists).id
|
||||
)};
|
||||
Ox.extend(set, 'showFolder.' + user, true);
|
||||
|
@ -248,8 +241,8 @@ oml.ui.folders = function() {
|
|||
selectnext: function() {
|
||||
if (index < users.length - 1) {
|
||||
oml.UI.set(Ox.extend(
|
||||
{find: getFind(users[index + 1].nickname + ':')},
|
||||
'showFolder.' + users[index + 1].nickname,
|
||||
{find: getFind(users[index + 1].name + ':')},
|
||||
'showFolder.' + users[index + 1].name,
|
||||
true
|
||||
));
|
||||
}
|
||||
|
@ -299,8 +292,7 @@ oml.ui.folders = function() {
|
|||
that.updateOwnLists = function(callback) {
|
||||
oml.getLists(function(lists) {
|
||||
var items = lists.filter(function(list) {
|
||||
return list.user == oml.user.preferences.username
|
||||
&& list.type != 'library';
|
||||
return list.user == '' && list.type != 'library';
|
||||
});
|
||||
oml.$ui.folder[0].$content
|
||||
.css({height: 16 + items.length * 16 + 'px'});
|
||||
|
|
|
@ -8,6 +8,14 @@ oml.ui.infoView = function(identifyData) {
|
|||
|
||||
css = getCSS(iconSize, oml.config.iconRatio),
|
||||
|
||||
ids = [
|
||||
{key: 'isbn', url: 'https://google.com/search?q=ISBN+{0}'},
|
||||
{key: 'asin', url: 'http://www.amazon.com/dp/{0}'},
|
||||
{key: 'lccn', url: 'http://lccn.loc.gov/{0}'},
|
||||
{key: 'oclc', url: 'https://www.worldcat.org/oclc/{0}'},
|
||||
{key: 'olid', url: 'https://openlibrary.org/books/{0}'}
|
||||
],
|
||||
|
||||
that = Ox.Element()
|
||||
.addClass('OxTextPage')
|
||||
.css({overflowY: 'auto'})
|
||||
|
@ -132,14 +140,12 @@ oml.ui.infoView = function(identifyData) {
|
|||
}),
|
||||
data.mediastate == 'available' && data.primaryid
|
||||
? Ox.Select({
|
||||
items: Ox.flatten([
|
||||
'isbn', 'asin', 'lccn', 'oclc', 'olid'
|
||||
].map(function(key) {
|
||||
return (data[key] || []).map(function(value) {
|
||||
items: Ox.flatten(ids.map(function(id) {
|
||||
return (data[id.key] || []).map(function(value) {
|
||||
return {
|
||||
id: key + ':' + value,
|
||||
id: id.key + ':' + value,
|
||||
title: '<b>' + Ox.getObjectById(
|
||||
oml.config.itemKeys, key
|
||||
oml.config.itemKeys, id.key
|
||||
).title + ':</b> ' + value
|
||||
};
|
||||
});
|
||||
|
@ -632,12 +638,10 @@ oml.ui.infoView = function(identifyData) {
|
|||
|
||||
renderIdentifyButton(data).appendTo($data);
|
||||
|
||||
[
|
||||
'isbn', 'asin', 'lccn', 'oclc', 'olid'
|
||||
].forEach(function(id, index) {
|
||||
ids.forEach(function(id, index) {
|
||||
var title;
|
||||
if (data[id] && !Ox.isEmpty(data[id])) {
|
||||
title = Ox.getObjectById(oml.config.itemKeys, id).title;
|
||||
if (data[id.key] && !Ox.isEmpty(data[id.key])) {
|
||||
title = Ox.getObjectById(oml.config.itemKeys, id.key).title;
|
||||
$('<div>')
|
||||
.css({
|
||||
marginTop: (index == 0 ? 10 : 6) + 'px',
|
||||
|
@ -645,16 +649,17 @@ oml.ui.infoView = function(identifyData) {
|
|||
})
|
||||
.text(title)
|
||||
.appendTo($data);
|
||||
Ox.makeArray(data[id]/*FIXME!*/).forEach(function(value) {
|
||||
var isPrimary = data.primaryid[0] == id
|
||||
Ox.makeArray(data[id.key]/*FIXME!*/).forEach(function(value) {
|
||||
var isPrimary = data.primaryid[0] == id.key
|
||||
&& data.primaryid[1] == value;
|
||||
value = Ox.encodeHTMLEntities(value);
|
||||
Ox.Element({
|
||||
tooltip: isPrimary ? 'Primary ID' : ''
|
||||
})
|
||||
.html(
|
||||
Ox.encodeHTMLEntities(value) + (
|
||||
isPrimary ? ' (*)' : ''
|
||||
)
|
||||
'<a href="' + Ox.formatString(id.url, [value])
|
||||
+ '" target="_blank">' + value + '</a>'
|
||||
+ (isPrimary ? ' (*)' : '')
|
||||
)
|
||||
.appendTo($data);
|
||||
});
|
||||
|
|
|
@ -113,7 +113,10 @@ oml.ui.list = function() {
|
|||
oml.UI.set({listSelection: data.ids});
|
||||
},
|
||||
oml_find: function() {
|
||||
if (ui.listView == oml.UI.getPrevious().listView) {
|
||||
Ox.print('NEW FIND, SAME LIST VIEW, RELOADING')
|
||||
that.reloadList();
|
||||
}
|
||||
},
|
||||
oml_item: function() {
|
||||
if (!ui.item) {
|
||||
|
@ -123,10 +126,16 @@ oml.ui.list = function() {
|
|||
}
|
||||
},
|
||||
oml_listselection: function(data) {
|
||||
if (ui._list == oml.UI.getPrevious()._list) {
|
||||
that.options({selected: data.value});
|
||||
}
|
||||
},
|
||||
oml_listsort: function(data) {
|
||||
if (ui._list == oml.UI.getPrevious()._list) {
|
||||
Ox.print('NEW LIST SORT, SAME LIST, SETTING SORT OPTION')
|
||||
Ox.print('OLD:', that.options('sort'), 'NEW:', data.value);
|
||||
that.options({sort: data.value});
|
||||
}
|
||||
},
|
||||
oml_sidebarsize: function(data) {
|
||||
that.size();
|
||||
|
|
|
@ -28,6 +28,7 @@ oml.ui.listInnerPanel = function() {
|
|||
})
|
||||
.bindEvent({
|
||||
oml_listview: function() {
|
||||
Ox.print('LIST VIEW HAS CHANGED, REPLACING LIST')
|
||||
that.replaceElement(1, oml.$ui.list = oml.ui.list());
|
||||
},
|
||||
oml_showfilters: function(data) {
|
||||
|
|
|
@ -21,9 +21,16 @@ oml.ui.listViewButtons = function() {
|
|||
.bindEvent({
|
||||
change: function(data) {
|
||||
oml.UI.set({listView: data.value});
|
||||
},
|
||||
oml_listview: function() {
|
||||
that.updateElement();
|
||||
}
|
||||
});
|
||||
|
||||
that.updateElement = function() {
|
||||
return that.options({value: ui.listView});
|
||||
};
|
||||
|
||||
return that;
|
||||
|
||||
};
|
|
@ -221,6 +221,15 @@ oml.ui.mainMenu = function() {
|
|||
title: Ox._('Advanced Sort'),
|
||||
keyboard: 'shift control s',
|
||||
disabled: true
|
||||
},
|
||||
{},
|
||||
{
|
||||
id: 'sorttitles',
|
||||
title: Ox._('Sort Titles...')
|
||||
},
|
||||
{
|
||||
id: 'sortnames',
|
||||
title: Ox._('Sort Names...')
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -11,7 +11,6 @@ oml.ui.preferencesDialog = function() {
|
|||
id: 'username',
|
||||
title: 'Username',
|
||||
value: preferences.username,
|
||||
placeholder: 'anonymous',
|
||||
help: 'Your username doesn\'t have to be your real name, and you can change it at any time. You can also leave it blank, in which case you will appear as "anonymous". Any characters other than colons and leading, trailing or consecutive spaces are okay.'
|
||||
},
|
||||
{
|
||||
|
@ -430,7 +429,7 @@ oml.ui.preferencesDialog = function() {
|
|||
var key = data.id,
|
||||
value = data.data.value[0];
|
||||
if (key == 'username') {
|
||||
value = getValidName(value, [], ':');
|
||||
value = oml.getValidName(value, [], ':');
|
||||
}
|
||||
if (key in oml.config.user.preferences) {
|
||||
oml.Preferences.set(key, value);
|
||||
|
|
|
@ -238,7 +238,7 @@ oml.ui.usersDialog = function() {
|
|||
disabled: true,
|
||||
label: Ox._('Download Link'),
|
||||
labelWidth: 128,
|
||||
value: 'https://openmedialibrary.com/#download',
|
||||
value: 'http://openmedialibrary.com/#download',
|
||||
width: 480
|
||||
})
|
||||
.css({
|
||||
|
@ -260,27 +260,16 @@ oml.ui.usersDialog = function() {
|
|||
Ox.Input({
|
||||
label: Ox._('Nickname'),
|
||||
labelWidth: 128,
|
||||
placeholder: 'anonymous',
|
||||
value: user.nickname || user.username || '',
|
||||
value: user.nickname,
|
||||
width: 480
|
||||
})
|
||||
.bindEvent({
|
||||
change: function(data) {
|
||||
var value = oml.getValidName(
|
||||
data.value || 'anonymous',
|
||||
// FIXME: WRONG
|
||||
users.filter(function(user_) {
|
||||
return user_.nickname != user.nickname;
|
||||
}).map(function(u) {
|
||||
return user_.nickname;
|
||||
}),
|
||||
':'
|
||||
);
|
||||
this.value(value);
|
||||
oml.api.editUser({
|
||||
id: user.id,
|
||||
nickname: value
|
||||
}, function() {
|
||||
nickname: data.value
|
||||
}, function(result) {
|
||||
Ox.print('EDIT USER', result.data);
|
||||
// ...
|
||||
});
|
||||
}
|
||||
|
@ -331,8 +320,7 @@ oml.ui.usersDialog = function() {
|
|||
disabled: true,
|
||||
label: Ox._('Username'),
|
||||
labelWidth: 128,
|
||||
placeholder: 'anonymous',
|
||||
value: user.username || '',
|
||||
value: user.username,
|
||||
width: 480
|
||||
})
|
||||
.css({
|
||||
|
@ -474,11 +462,9 @@ oml.ui.usersDialog = function() {
|
|||
},
|
||||
{
|
||||
format: function(value) {
|
||||
return value
|
||||
? Ox.encodeHTMLEntities(value)
|
||||
: '<span class="OxLight">anonymous</span>';
|
||||
return Ox.encodeHTMLEntities(value);
|
||||
},
|
||||
id: folder.id == 'peers' ? 'nickname' : 'username',
|
||||
id: 'name',
|
||||
visible: true,
|
||||
width: 240
|
||||
}
|
||||
|
@ -533,14 +519,16 @@ oml.ui.usersDialog = function() {
|
|||
}
|
||||
|
||||
function updateUsers(callback) {
|
||||
|
||||
Ox.Request.clearCache('getUsers');
|
||||
|
||||
oml.api.getUsers(function(result) {
|
||||
|
||||
users = result.data.users;
|
||||
peerIds = users.filter(function(user) {
|
||||
return user.peered;
|
||||
}).map(function(user) {
|
||||
return user.id
|
||||
return user.id;
|
||||
});
|
||||
folders.forEach(function(folder) {
|
||||
folder.items = [];
|
||||
|
@ -595,14 +583,13 @@ oml.ui.usersDialog = function() {
|
|||
});
|
||||
|
||||
}
|
||||
that.updateElement = function() {
|
||||
|
||||
that.updateElement = function() {
|
||||
that.options({
|
||||
content: Ox.LoadingScreen().start()
|
||||
});
|
||||
updateUsers();
|
||||
return that;
|
||||
|
||||
};
|
||||
|
||||
return that.updateElement();
|
||||
|
|
|
@ -800,7 +800,7 @@ oml.getLists = function(callback) {
|
|||
: list.type == 'library' ? Ox._('Library') : list.name;
|
||||
return Ox.extend(list, {
|
||||
editable: list.user == username && list.type == 'static',
|
||||
own: list.user == username,
|
||||
own: list.user == '',
|
||||
title: (list.user ? list.user + ': ' : '') + list.name
|
||||
});
|
||||
});
|
||||
|
@ -836,71 +836,22 @@ oml.getSortOperator = function(key) {
|
|||
};
|
||||
|
||||
oml.getUsers = function(callback) {
|
||||
var users = [{
|
||||
id: oml.user.id,
|
||||
nickname: oml.user.preferences.username,
|
||||
online: oml.user.online
|
||||
}];
|
||||
oml.api.getUsers(function(result) {
|
||||
users = users.concat(
|
||||
result.data.users.filter(function(user) {
|
||||
return user.peered;
|
||||
})
|
||||
);
|
||||
callback(users);
|
||||
});
|
||||
}
|
||||
|
||||
oml.getUsersAndLists = function(callback) {
|
||||
var lists = [{
|
||||
id: '',
|
||||
name: Ox._('All Libraries'),
|
||||
type: 'libraries'
|
||||
}],
|
||||
ui = oml.user.ui,
|
||||
username = oml.user.preferences.username,
|
||||
var ui = oml.user.ui,
|
||||
users = [{
|
||||
id: oml.user.id,
|
||||
nickname: username,
|
||||
name: '',
|
||||
online: oml.user.online
|
||||
}];
|
||||
Ox.Request.clearCache('getUsers');
|
||||
Ox.Request.clearCache('getLists');
|
||||
oml.api.getUsers(function(result) {
|
||||
users = users.concat(
|
||||
result.data.users.filter(function(user) {
|
||||
return user.peered;
|
||||
})
|
||||
);
|
||||
oml.api.getLists(function(result) {
|
||||
users.forEach(function(user) {
|
||||
lists = lists.concat([{
|
||||
id: (user.nickname == username ? '' : user.nickname) + ':',
|
||||
name: Ox._('Library'),
|
||||
type: 'library',
|
||||
user: user.nickname
|
||||
}].concat(
|
||||
result.data.lists.filter(function(list) {
|
||||
return list.user == user.nickname;
|
||||
})
|
||||
));
|
||||
ui._users = users;
|
||||
callback(users);
|
||||
});
|
||||
lists = lists.map(function(list) {
|
||||
// FIXME: 'editable' is notoriously vague
|
||||
return Ox.extend(list, {
|
||||
editable: list.user == username && list.type == 'static',
|
||||
own: list.user == username,
|
||||
title: (list.user ? list.user + ': ' : '') + list.name
|
||||
});
|
||||
})
|
||||
if (!ui.lists) {
|
||||
oml.$ui.mainMenu.updateElement();
|
||||
}
|
||||
ui._lists = lists;
|
||||
Ox.print('GOT LISTS ::::', lists);
|
||||
callback(users, lists);
|
||||
});
|
||||
})
|
||||
};
|
||||
|
||||
oml.getValidName = function(value, names, chars) {
|
||||
|
|
|
@ -6,25 +6,25 @@ oml.ui.viewer = function() {
|
|||
|
||||
that = Ox.Element()
|
||||
.bindEvent({
|
||||
oml_item: function(data) {
|
||||
that.updateElement();
|
||||
},
|
||||
oml_itemview: function(data) {
|
||||
that.updateElement();
|
||||
if (ui.item != item && ui.itemView == 'book') {
|
||||
that.updateElement(ui.item);
|
||||
}
|
||||
}
|
||||
}),
|
||||
|
||||
$iframe;
|
||||
$iframe, item;
|
||||
|
||||
that.updateElement = function() {
|
||||
if (ui.item && ui.itemView == 'book') {
|
||||
item = ui.item;
|
||||
if (item) {
|
||||
$iframe = $iframe || Ox.Element('<iframe>').css({
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
border: 0
|
||||
}).appendTo(that);
|
||||
$iframe.attr({
|
||||
src: '/' + ui.item + '/reader/'
|
||||
src: '/' + item + '/reader/'
|
||||
});
|
||||
}
|
||||
return that;
|
||||
|
|
Loading…
Reference in a new issue