Merge pull request #1693 from nextcloud/fix-authors-with-mail-and-homepage

Fix authors with mail and homepage
This commit is contained in:
Roeland Jago Douma 2016-10-12 09:01:28 +02:00 committed by GitHub
commit 1992d4be48
1 changed files with 46 additions and 6 deletions

View File

@ -184,7 +184,15 @@ OC.Settings.Apps = OC.Settings.Apps || {
}
if (_.isArray(app.author)) {
app.author = app.author.join(', ');
var authors = [];
_.each(app.author, function (author) {
if (typeof author === 'string') {
authors.push(author);
} else {
authors.push(author['@value']);
}
});
app.author = authors.join(', ');
}
var html = template(app);
@ -486,6 +494,24 @@ OC.Settings.Apps = OC.Settings.Apps || {
);
},
/**
* Splits the query by spaces and tries to find all substring in the app
* @param {string} string
* @param {string} query
* @returns {boolean}
*/
_search: function(string, query) {
var keywords = query.split(' '),
stringLower = string.toLowerCase(),
found = true;
_.each(keywords, function(keyword) {
found = found && stringLower.indexOf(keyword) !== -1;
});
return found;
},
filter: function(query) {
var $appList = $('#apps-list'),
$emptyList = $('#apps-list-empty');
@ -502,25 +528,39 @@ OC.Settings.Apps = OC.Settings.Apps || {
// App Name
var apps = _.filter(OC.Settings.Apps.State.apps, function (app) {
return app.name.toLowerCase().indexOf(query) !== -1;
return OC.Settings.Apps._search(app.name, query);
});
// App ID
apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) {
return app.id.toLowerCase().indexOf(query) !== -1;
return OC.Settings.Apps._search(app.id, query);
}));
// App Description
apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) {
return app.description.toLowerCase().indexOf(query) !== -1;
return OC.Settings.Apps._search(app.description, query);
}));
// Author Name
apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) {
if (_.isArray(app.author)) {
return app.author.join(', ').toLowerCase().indexOf(query) !== -1;
var authors = [];
_.each(app.author, function (author) {
if (typeof author === 'string') {
authors.push(author);
} else {
authors.push(author['@value']);
if (!_.isUndefined(author['@attributes']['homepage'])) {
authors.push(author['@attributes']['homepage']);
}
return app.author.toLowerCase().indexOf(query) !== -1;
if (!_.isUndefined(author['@attributes']['mail'])) {
authors.push(author['@attributes']['mail']);
}
}
});
return OC.Settings.Apps._search(authors.join(' '), query);
}
return OC.Settings.Apps._search(app.author, query);
}));
// App status