зеркало из https://github.com/mozilla/CSOL-site.git
Start work on favorites
Implemented: - DB model - Add badge to favorites view
This commit is contained in:
Родитель
e20a11ba79
Коммит
871e316858
|
@ -1,6 +1,7 @@
|
|||
const openbadger = require('../openbadger');
|
||||
const db = require('../db');
|
||||
const claim = db.model('Claim');
|
||||
const favorite = db.model('Favorite');
|
||||
const loggedIn = require('../middleware').loggedIn;
|
||||
|
||||
module.exports = function (app) {
|
||||
|
@ -92,6 +93,28 @@ module.exports = function (app) {
|
|||
});
|
||||
});
|
||||
|
||||
app.post('/mybadges/:id/favorite', [
|
||||
loggedIn,
|
||||
openbadger.middleware('getUserBadge')
|
||||
], function (req, res, next) {
|
||||
var data = req.remote;
|
||||
var badge = data.badge;
|
||||
var user = res.locals.user;
|
||||
|
||||
favorite.findOrCreate({
|
||||
type: 'badge',
|
||||
itemId: req.params.id, // assume if we got here id is valid input
|
||||
LearnerId: user.id
|
||||
}).complete(function(err, fav) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
res.render('user/badge-favorited.html', {
|
||||
badge: data.badge
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/favorites/:view?', function (req, res, next) {
|
||||
var badge = {
|
||||
thumbnail: '/media/images/badge.png',
|
||||
|
@ -131,4 +154,4 @@ module.exports = function (app) {
|
|||
})
|
||||
})
|
||||
|
||||
};
|
||||
};
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
module.exports = {
|
||||
up: function(migration, DataTypes) {
|
||||
migration.addIndex(
|
||||
'Favorites',
|
||||
['type', 'itemId', 'LearnerId'],
|
||||
{
|
||||
indexName: 'Favorites_unique_item_idx',
|
||||
indicesType: 'UNIQUE'
|
||||
}
|
||||
);
|
||||
},
|
||||
down: function(migration) {
|
||||
migration.removeIndex(
|
||||
'Favorites',
|
||||
['type', 'itemId', 'LearnerId']
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
var db = require('../db');
|
||||
|
||||
module.exports = {
|
||||
properties: {
|
||||
id: {
|
||||
type: db.type.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
type: {
|
||||
type: db.type.ENUM,
|
||||
values: [
|
||||
'badge',
|
||||
'org',
|
||||
'program'
|
||||
],
|
||||
allowNull: false
|
||||
},
|
||||
itemId: {
|
||||
type: db.type.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
},
|
||||
relationships: [
|
||||
{
|
||||
model: 'Learner',
|
||||
type: 'belongsTo'
|
||||
}
|
||||
]
|
||||
};
|
|
@ -16,10 +16,10 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block item_actions %}
|
||||
{#
|
||||
{{ super() }}
|
||||
<a class="btn show-tooltip" title="Add to your favorites" href="{{ item.url }}/favorite"><i class="icon-heart"></i></a>
|
||||
#}
|
||||
<form action="{{ item.url }}/favorite" method="POST" class="favorites-form">
|
||||
<button type="submit" class="btn show-tooltip" title="Add to your favorites"><i class="icon-heart"></i></button>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
@ -48,4 +48,4 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{% extends 'layout.html' %}
|
||||
{% set pageTitle = 'You favorited a badge' %}
|
||||
{% set navItem = 'backpack' %}
|
||||
|
||||
{% block content %}
|
||||
You favorited a badge!
|
||||
{% endblock %}
|
Загрузка…
Ссылка в новой задаче