Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
cd1211d
adds neccessary dependencies
mcarter78 Mar 3, 2016
cf34b3f
completes steps 1 and 2
mcarter78 Mar 3, 2016
28b65fc
completes sprint 1
mcarter78 Mar 3, 2016
77415f9
organizes files
mcarter78 Mar 3, 2016
dedf22f
Merge pull request #1 from mcarter78/reorganizing
mcarter78 Mar 3, 2016
2d2c967
creates index and home views
mcarter78 Mar 3, 2016
c49244d
adds homepage view, adds navbar, builds layout.hbs
jhohohong Mar 4, 2016
5b3e4d8
adds root, index, show routes for albums and api
mcarter78 Mar 4, 2016
98002ae
creates new partial in albums
lenayee7 Mar 4, 2016
a5ea7fa
adds remaining CRUD routes and controller methods
mcarter78 Mar 4, 2016
01fcc04
Merge pull request #3 from mcarter78/routes
mcarter78 Mar 4, 2016
6af3996
adds showpage view, edits homepage view
jhohohong Mar 4, 2016
46bdc09
resolves first merge conflict after routes are added
jhohohong Mar 4, 2016
84e95dd
fixes homepage after merge conflict
jhohohong Mar 4, 2016
a2e6847
Merge pull request #4 from mcarter78/showpage-view
mcarter78 Mar 4, 2016
d484147
adds seed data & modified new form
lenayee7 Mar 4, 2016
f6ed1bd
resolves merge conflicts
lenayee7 Mar 4, 2016
1652557
Merge pull request #5 from mcarter78/new-form
mcarter78 Mar 4, 2016
e092e3f
fixes initial bugs
mcarter78 Mar 4, 2016
b5568b1
connects new form and adds styles
mcarter78 Mar 4, 2016
f66402a
Merge pull request #6 from mcarter78/form-requests
mcarter78 Mar 4, 2016
128b119
adds death metal stuff
jhohohong Mar 4, 2016
cc6ebcb
resolves merge conflicts 2
jhohohong Mar 4, 2016
c5a4fa5
Merge pull request #7 from mcarter78/death-metal
mcarter78 Mar 4, 2016
4967149
saving stuff before my computer dies
jhohohong Mar 4, 2016
1617581
builds index view with image carousel
mcarter78 Mar 4, 2016
5365755
Merge pull request #8 from mcarter78/search-view
mcarter78 Mar 4, 2016
51100f1
able to render album info dynamically
lenayee7 Mar 5, 2016
7af5b56
able to edit & delete album from show page
lenayee7 Mar 5, 2016
862eedf
show page can edit, update, delete, more seed data
lenayee7 Mar 5, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions config/routes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
//require express in our app
var express = require('express');
// generate a new express app and call it 'app'
var app = express();
var router = express.Router();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/tunely');
var path = require('path');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var logger = require('morgan');
var albumsController = require('../controllers/albums');

/*
* HTML Endpoints
*/

router.route('/')
// gets the homepage
.get(albumsController.renderHome);

router.route('/albums')
// gets albums index
.get(albumsController.renderAlbums)
.post(albumsController.createAlbum);

router.route('/albums/new')
.get(albumsController.newAlbum);

router.route('/albums/:id')
// Show album
.get(albumsController.renderAlbum)
.patch(albumsController.updateAlbum)
.delete(albumsController.deleteAlbum);

router.route('/albums/:id/edit')
.get(albumsController.editAlbum);

// DeathMetal

router.route('/deathmetal')
.get(albumsController.deathMetal);

// Search
router.route('/search')
.get(albumsController.search);
/*
* JSON API Endpoints
*/

router.route('/api')
.get(albumsController.apiRoot);

router.route('/api/albums')
.get(albumsController.apiAlbums);

// router.route('/api/albums/:id')
// .get(albumsController.apiAlbum);


module.exports = router;
146 changes: 146 additions & 0 deletions controllers/albums.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
/************
* DATABASE *
************/
var Album = require('../models/album');


function renderHome (req, res) {
res.render('./partials/home');
}

function renderAlbums (req, res) {
Album.find({}, function(err, albums){
if (err) returnError(err);
res.render('./partials/index', {albums:albums});
});
}

function renderAlbum (req, res) {
var id = req.params.id;
console.log(id)
Album.find({_id: id}, function(err, album){
if (err) returnError(err);
console.log('album ', album);
res.render('./partials/show', {album: album[0]});
});
}

function newAlbum (req, res) {
res.render('./partials/new');
}

function createAlbum (req, res) {
var name = req.body.name;
var artistName = req.body.artistName;
var releaseDate = req.body.releaseDate;
var photoUrl = req.body.photoUrl;
Album.create({
name: name,
artistName: artistName,
releaseDate: releaseDate,
photoUrl: photoUrl
}, function(err, album){
if (err) return returnError(err);
res.redirect('/albums/:id', {album: album});
});
}

function editAlbum (req, res) {
var id = req.params.id;
Album.find({_id: id}, function(err, album){
if (err) returnError(err);
console.log('album ', album);
res.render('./partials/edit', {album: album[0]});
});
}

function updateAlbum (req, res) {
var id = req.params.id;

Album.find({_id: id}, function(err, album){
if (err) returnError(err);
if (req.body.name) album.name = req.body.name;
if (req.body.artistName) album.artistName = req.body.artistName;
if (req.body.releaseDate) album.releaseDate = req.body.releaseDate;
if (req.body.photoUrl) album.photoUrl = req.body.photoUrl;
var obj = {
name: album.name,
artistName: album.artistName,
releaseDate: album.releaseDate,
photoUrl: album.photoUrl
}
//save
Album.update({_id: id}, obj, function(err, album) {
if (err) returnError(err);
res.redirect('/albums/'+ id);
});
});
}

function deleteAlbum (req, res) {
var id = req.params.id;
// console.log(id)
Album.findOne({_id: id}, function(err, album){
if (err) returnError(err);
console.log(album)
album.remove(function(){
res.redirect('/albums');
});
});
}

function apiRoot (req, res) {
res.json({
message: "Welcome to tunely!",
documentation_url: "https://github.com/tgaff/tunely/api.md",
base_url: "http://tunely.herokuapp.com",
endpoints: [
{method: "GET", path: "/api", description: "Describes available endpoints"},
{method: "GET", path: "/api/albums", description: "Shows index of all albums"},
{method: "GET", path: "/api/albums/:id", description: "Shows specified album"}
]
});
}

function apiAlbums (req, res){
Album.find({}, function(err, albums){
if (err) returnError(err);
res.json(albums);
});
}

function deathMetal (req, res){
res.render("deathmetal_layout");
}

function search (req, res) {
res.render("./partials/search");
}

// shows specific album -- NOT REALLY PRACTICAL UNLESS YOU KNOW THE GENERATED _ID
// function apiAlbum (req, res){
// var id = req.params.id;
// Album.findById(id, function(err, album){
// if (err) return console.log(err);
// res.json(album);
// });
// }

function returnError (err) {
return console.log(err);
}

module.exports = {
renderHome: renderHome,
renderAlbums: renderAlbums,
renderAlbum: renderAlbum,
newAlbum: newAlbum,
createAlbum: createAlbum,
editAlbum: editAlbum,
updateAlbum: updateAlbum,
deleteAlbum: deleteAlbum,
apiRoot: apiRoot,
apiAlbums: apiAlbums,
deathMetal: deathMetal,
search: search
};
11 changes: 10 additions & 1 deletion models/album.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
var mongoose = require("mongoose");
var Schema = mongoose.Schema;


var albumSchema = mongoose.Schema({
artistName: String,
name: String,
releaseDate: String,
photoUrl: String
});

module.exports = mongoose.model('Album', albumSchema);
2 changes: 0 additions & 2 deletions models/index.js

This file was deleted.

9 changes: 8 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@
},
"homepage": "https://github.com/tgaff/tunely#readme",
"dependencies": {
"express": "^4.13.3"
"body-parser": "^1.15.0",
"express": "^4.13.3",
"hbs": "^4.0.0",
"hbs-utils": "0.0.3",
"method-override": "^2.3.5",
"mongoose": "^4.4.6",
"morgan": "^1.7.0",
"path": "^0.12.7"
}
}
39 changes: 39 additions & 0 deletions public/css/deathmetal_styles.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*DEATH METAL CSS*/

#death_metal_image {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;

/* Set up proportionate scaling */
width: 100%;
height: auto;

/* Set up positioning */
position: fixed;
top: 52px;
left: 0;
}

/*NAVBAR CSS*/
.navbar-default .navbar-nav>li>a:hover {
color: #00AD85;
}
.navbar-default .navbar-brand:hover {
color: #00AD85;
}

/*changes navbar font*/
a.navbar-brand {
font-family: 'Asap', sans-serif;
}

ul.navbar-right {
font-family: 'Asap', sans-serif;
}

#death_metal_header {
font-family: 'Nosifer', cursive;
position: absolute;
top: ;
}
Loading