From bc01b221f4bcdfc62bcdb67657f84e9b61762151 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Fri, 10 Jan 2014 01:29:27 +0000 Subject: [PATCH] Added notification for comments --- spa/models/comment.py | 22 +- spa/models/notification.py | 3 +- static/js/app/appv2.js | 251 +++++------ static/js/app/lib/controller.coffee | 3 + static/js/app/lib/controller.js | 391 +++++++++--------- static/js/app/lib/router.coffee | 1 + static/js/app/lib/router.js | 84 ++-- static/js/app/models/mix/mixItem.js | 95 ++--- static/js/app/views/mix/mixEditView.js | 375 ++++++++--------- static/js/app/views/mix/mixItemView.js | 261 ++++++------ static/js/app/views/mix/mixListLayout.js | 107 ++--- static/js/app/views/mix/mixListView.js | 71 ++-- .../notifications/notificationsListView.js | 155 +++---- static/js/app/views/user/userItemView.js | 61 +-- static/js/app/views/user/userListView.js | 129 +++--- static/js/app/views/user/userProfileView.js | 131 +++--- static/js/app/views/widgets/headerView.js | 177 ++++---- templates/views/_MixItemInsert.html | 2 +- 18 files changed, 1195 insertions(+), 1124 deletions(-) diff --git a/spa/models/comment.py b/spa/models/comment.py index 4e9070a..3a2a22e 100755 --- a/spa/models/comment.py +++ b/spa/models/comment.py @@ -1,9 +1,9 @@ from django.contrib.auth.models import User from django.db import models -from spa.models._basemodel import _BaseModel +from spa.models import _BaseModel, UserProfile +from spa.models.notification import Notification from spa.models.mix import Mix - class Comment(_BaseModel): class Meta: app_label = 'spa' @@ -17,3 +17,21 @@ class Comment(_BaseModel): def get_absolute_url(self): return '/comment/%i' % self.id + def create_notification(self): + notification = Notification() + notification.to_user = self.mix.user.user + notification.notification_url = self.mix.get_absolute_url() + notification.verb = "Commented on" + notification.target = self.mix.title + + if self.user is not None: + notification.from_user = self.user.get_profile() + notification.notification_text = "%s %s %s" % ( + self.user.get_profile().get_nice_name(), notification.verb, self.mix.title + ) + else: + notification.notification_text = "%s %s %s" % ( + "Anonymouse", notification.verb, self.mix.title + ) + + notification.save() diff --git a/spa/models/notification.py b/spa/models/notification.py index c9c1fad..cf067bf 100644 --- a/spa/models/notification.py +++ b/spa/models/notification.py @@ -1,3 +1,4 @@ +from django.contrib.auth.models import User import threading from django.db import models from core.realtime.notification import post_notification @@ -17,7 +18,7 @@ class NotificationThread(threading.Thread): class Notification(_BaseModel): - to_user = models.ForeignKey(UserProfile, related_name='to_notications') + to_user = models.ForeignKey(User, related_name='to_notications') from_user = models.ForeignKey(UserProfile, related_name='notifications', null=True, blank=True) date = models.DateTimeField(auto_now=True) diff --git a/static/js/app/appv2.js b/static/js/app/appv2.js index dc650d4..98e4a07 100755 --- a/static/js/app/appv2.js +++ b/static/js/app/appv2.js @@ -1,137 +1,140 @@ // Generated by CoffeeScript 1.4.0 +(function() { -define(['backbone', 'marionette', 'vent', 'utils', 'app.lib/social', 'app.lib/router', 'app.lib/panningRegion', 'app.lib/realtimeController', 'app.lib/audioController', 'models/user/userItem', 'models/mix/mixCollection', 'views/widgets/headerView', 'views/sidebar/sidebarView'], function(Backbone, Marionette, vent, utils, social, DssRouter, PanningRegion, RealtimeController, AudioController, UserItem, MixCollection, HeaderView, SidebarView) { - var App, sidebarView; - App = new Marionette.Application(); - App.audioController = new AudioController(); - App.realtimeController = new RealtimeController(); - App.realtimeController.startSocketIO(); - App.vent.on("routing:started", function() { - var enablePushState, pushState; - console.log("App(vent): routing:started"); - enablePushState = true; - pushState = !!(enablePushState && window.history && window.history.pushState); - Backbone.history.start({ - pushState: pushState, - hashChange: true + define(['backbone', 'marionette', 'vent', 'utils', 'app.lib/social', 'app.lib/router', 'app.lib/panningRegion', 'app.lib/realtimeController', 'app.lib/audioController', 'models/user/userItem', 'models/mix/mixCollection', 'views/widgets/headerView', 'views/sidebar/sidebarView'], function(Backbone, Marionette, vent, utils, social, DssRouter, PanningRegion, RealtimeController, AudioController, UserItem, MixCollection, HeaderView, SidebarView) { + var App, sidebarView; + App = new Marionette.Application(); + App.audioController = new AudioController(); + App.realtimeController = new RealtimeController(); + App.realtimeController.startSocketIO(); + App.vent.on("routing:started", function() { + var enablePushState, pushState; + console.log("App(vent): routing:started"); + enablePushState = true; + pushState = !!(enablePushState && window.history && window.history.pushState); + Backbone.history.start({ + pushState: pushState, + hashChange: true + }); + return true; }); - return true; - }); - App.addRegions({ - headerRegion: "#header", - contentRegion: { - selector: "#content" - }, - footerRegion: "#footer", - sidebarRegion: "#sidebar" - }); - App.addInitializer(function() { - console.log("App: routing starting"); - App.Router = new DssRouter(); - return App.vent.trigger("routing:started"); - }); - App.addInitializer(function() { - $(document).on("click", "a[href]:not([data-bypass])", function(evt) { - var href, root; - href = { - prop: $(this).prop("href"), - attr: $(this).attr("href") - }; - root = location.protocol + "//" + location.host + (App.root || '/'); - if (href.prop.slice(0, root.length) === root) { - evt.preventDefault(); - App.Router.navigate(href.attr, true); + App.addRegions({ + headerRegion: "#header", + contentRegion: { + selector: "#content" + }, + footerRegion: "#footer", + sidebarRegion: "#sidebar" + }); + App.addInitializer(function() { + console.log("App: routing starting"); + App.Router = new DssRouter(); + return App.vent.trigger("routing:started"); + }); + App.addInitializer(function() { + $(document).on("click", "a[href]:not([data-bypass])", function(evt) { + var href, root; + href = { + prop: $(this).prop("href"), + attr: $(this).attr("href") + }; + root = location.protocol + "//" + location.host + (App.root || '/'); + if (href.prop.slice(0, root.length) === root) { + evt.preventDefault(); + App.Router.navigate(href.attr, true); + return true; + } + }); + return true; + }); + App.addInitializer(function() { + this.listenTo(vent, "app:login", function() { + utils.modal("/dlg/LoginView"); return true; - } - }); - return true; - }); - App.addInitializer(function() { - this.listenTo(vent, "app:login", function() { - utils.modal("/dlg/LoginView"); - return true; - }); - this.listenTo(vent, "app:donate", function() { - console.log("App: donate"); - utils.modal("/dlg/Donate"); - return true; - }); - this.listenTo(vent, "mix:favourite", function(model) { - console.log("App(vent): mix:favourite"); - model.save('favourited', !model.get('favourited'), { - patch: true }); - return true; - }); - this.listenTo(vent, "mix:like", function(model, id, success, favourite) { - console.log("App(vent): mix:like"); - model.save('liked', !model.get('liked'), { - patch: true + this.listenTo(vent, "app:donate", function() { + console.log("App: donate"); + utils.modal("/dlg/Donate"); + return true; }); - return true; - }); - this.listenTo(vent, "mix:delete", function(model) { - console.log("App(vent): mix:like"); - return utils.messageBox("/dlg/DeleteMixConfirm", { - yes: function() { - console.log("Controller: mixDeleteYES!!"); - mix.destroy(); - return Backbone.history.navigate("/", { - trigger: true - }); - }, - no: function() { - return console.log("Controller: mixDeleteNO!!"); - } + this.listenTo(vent, "mix:favourite", function(model) { + console.log("App(vent): mix:favourite"); + model.save('favourited', !model.get('favourited'), { + patch: true + }); + return true; }); - }); - this.listenTo(vent, "user:follow", function(model) { - var target, user, - _this = this; - console.log("App(vent): user:follow"); - user = new UserItem({ - id: com.podnoms.settings.currentUser + this.listenTo(vent, "mix:like", function(model, id, success, favourite) { + console.log("App(vent): mix:like"); + model.save('liked', !model.get('liked'), { + patch: true + }); + return true; }); - target = com.podnoms.settings.urlRoot + "user/" + model.get("id") + "/"; - user.fetch({ - success: function() { - var f, newFollowers; - if (!model.get("is_following")) { - newFollowers = user.get("following").concat([target]); - user.save({ - "following": newFollowers, - "is_following": true, - patch: true + this.listenTo(vent, "mix:delete", function(model) { + console.log("App(vent): mix:like"); + return utils.messageBox("/dlg/DeleteMixConfirm", { + yes: function() { + console.log("Controller: mixDeleteYES!!"); + mix.destroy(); + return Backbone.history.navigate("/", { + trigger: true }); - model.set("is_following", true); - } else { - f = user.get("following"); - f.splice(f.indexOf(target), 1); - user.save({ - "following": f, - "is_following": false, - patch: true - }); - model.set("is_following", false); + }, + no: function() { + return console.log("Controller: mixDeleteNO!!"); } - } + }); + }); + this.listenTo(vent, "user:follow", function(model) { + var target, user, + _this = this; + console.log("App(vent): user:follow"); + user = new UserItem({ + id: com.podnoms.settings.currentUser + }); + target = com.podnoms.settings.urlRoot + "user/" + model.get("id") + "/"; + user.fetch({ + success: function() { + var f, newFollowers; + if (!model.get("is_following")) { + newFollowers = user.get("following").concat([target]); + user.save({ + "following": newFollowers, + "is_following": true, + patch: true + }); + model.set("is_following", true); + } else { + f = user.get("following"); + f.splice(f.indexOf(target), 1); + user.save({ + "following": f, + "is_following": false, + patch: true + }); + model.set("is_following", false); + } + } + }); + return true; + }); + return this.listenTo(vent, "mix:share", function(mode, model) { + console.log("App(vent): mix:share (" + mode + ")"); + if (mode === "facebook") { + social.sharePageToFacebook(model); + } else if (mode === "twitter") { + social.sharePageToTwitter(model); + } else if (mode === "embed") { + social.generateEmbedCode(model); + } + return true; }); - return true; - }); - return this.listenTo(vent, "mix:share", function(mode, model) { - console.log("App(vent): mix:share (" + mode + ")"); - if (mode === "facebook") { - social.sharePageToFacebook(model); - } else if (mode === "twitter") { - social.sharePageToTwitter(model); - } else if (mode === "embed") { - social.generateEmbedCode(model); - } - return true; }); + App.headerRegion.show(new HeaderView()); + sidebarView = new SidebarView(); + App.sidebarRegion.show(sidebarView); + return App; }); - App.headerRegion.show(new HeaderView()); - sidebarView = new SidebarView(); - App.sidebarRegion.show(sidebarView); - return App; -}); + +}).call(this); diff --git a/static/js/app/lib/controller.coffee b/static/js/app/lib/controller.coffee index 24876fe..f63e7a4 100755 --- a/static/js/app/lib/controller.coffee +++ b/static/js/app/lib/controller.coffee @@ -27,6 +27,9 @@ define ['app', 'marionette', 'vent', 'utils' @showMixList({stream: true}) showMixListType: (type) -> + @showMixList({order_by: type}) + + showMixListGenre: (type) -> @showMixList({genres__slug: type, order_by: 'latest'}) showMix: (slug)-> diff --git a/static/js/app/lib/controller.js b/static/js/app/lib/controller.js index 604c461..6a796d0 100755 --- a/static/js/app/lib/controller.js +++ b/static/js/app/lib/controller.js @@ -1,217 +1,226 @@ // Generated by CoffeeScript 1.4.0 -var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['app', 'marionette', 'vent', 'utils', 'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView', 'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView', 'models/mix/mixCollection', 'models/mix/mixItem', 'models/user/userItem'], function(App, Marionette, vent, utils, MixListLayout, MixListView, MixDetailView, MixEditView, UserProfileView, UserListView, UserEditView, MixCollection, MixItem, UserItem) { - var DssController; - DssController = (function(_super) { + define(['app', 'marionette', 'vent', 'utils', 'views/mix/mixListLayout', 'views/mix/mixListView', 'views/mix/mixDetailView', 'views/mix/mixEditView', 'views/user/userProfileView', 'views/user/userListView', 'views/user/userEditView', 'models/mix/mixCollection', 'models/mix/mixItem', 'models/user/userItem'], function(App, Marionette, vent, utils, MixListLayout, MixListView, MixDetailView, MixEditView, UserProfileView, UserListView, UserEditView, MixCollection, MixItem, UserItem) { + var DssController; + DssController = (function(_super) { - __extends(DssController, _super); + __extends(DssController, _super); - function DssController() { - return DssController.__super__.constructor.apply(this, arguments); - } + function DssController() { + return DssController.__super__.constructor.apply(this, arguments); + } - DssController.prototype.initialize = function() { - return this.listenTo(vent, "mix:random", this.showRandomMix); - }; + DssController.prototype.initialize = function() { + return this.listenTo(vent, "mix:random", this.showRandomMix); + }; - DssController.prototype.home = function() { - console.log("Controller: home"); - return this.showMixList(); - }; + DssController.prototype.home = function() { + console.log("Controller: home"); + return this.showMixList(); + }; - DssController.prototype.doLogin = function() { - return vent.trigger('app:login'); - }; + DssController.prototype.doLogin = function() { + return vent.trigger('app:login'); + }; - DssController.prototype.showMixList = function(options) { - var app; - app = require('app'); - app.contentRegion.show(new MixListLayout(options || { - order_by: 'latest' - })); - return vent.trigger('mix:showlist', options || { - order_by: 'latest' - }); - }; + DssController.prototype.showMixList = function(options) { + var app; + app = require('app'); + app.contentRegion.show(new MixListLayout(options || { + order_by: 'latest' + })); + return vent.trigger('mix:showlist', options || { + order_by: 'latest' + }); + }; - DssController.prototype.showStreamList = function() { - return this.showMixList({ - stream: true - }); - }; + DssController.prototype.showStreamList = function() { + return this.showMixList({ + stream: true + }); + }; - DssController.prototype.showMixListType = function(type) { - return this.showMixList({ - genres__slug: type, - order_by: 'latest' - }); - }; + DssController.prototype.showMixListType = function(type) { + return this.showMixList({ + order_by: type + }); + }; - DssController.prototype.showMix = function(slug) { - var app, mix; - console.log("Controller: showMix"); - app = require('app'); - mix = new MixItem({ - id: slug - }); - return mix.fetch({ - success: function() { - return app.contentRegion.show(new MixDetailView({ - model: mix - })); - } - }); - }; + DssController.prototype.showMixListGenre = function(type) { + return this.showMixList({ + genres__slug: type, + order_by: 'latest' + }); + }; - DssController.prototype.showRandomMix = function() { - var app, mix; - console.log("Controller: showRandomMix"); - app = require('app'); - mix = new MixItem({ - id: 'random' - }); - mix.fetch({ - success: function() { - return app.contentRegion.show(new MixDetailView({ - model: mix - })); - } - }); - return Backbone.history.navigate("/random", { - trigger: false - }); - }; + DssController.prototype.showMix = function(slug) { + var app, mix; + console.log("Controller: showMix"); + app = require('app'); + mix = new MixItem({ + id: slug + }); + return mix.fetch({ + success: function() { + return app.contentRegion.show(new MixDetailView({ + model: mix + })); + } + }); + }; - DssController.prototype.uploadMix = function() { - var app, mix; - console.log("Controller: mixUpload"); - app = require('app'); - mix = new MixItem({ - title: '', - description: '', - mix_image: com.podnoms.settings.staticUrl + 'img/default-track.png', - download_allowed: true, - is_featured: false - }); - app.contentRegion.show(new MixEditView({ - model: mix - })); - return true; - }; + DssController.prototype.showRandomMix = function() { + var app, mix; + console.log("Controller: showRandomMix"); + app = require('app'); + mix = new MixItem({ + id: 'random' + }); + mix.fetch({ + success: function() { + return app.contentRegion.show(new MixDetailView({ + model: mix + })); + } + }); + return Backbone.history.navigate("/random", { + trigger: false + }); + }; - DssController.prototype.editMix = function(slug) { - var app, mix; - console.log("Controller: mixEdit"); - app = require('app'); - mix = new MixItem({ - id: slug - }); - mix.fetch({ - success: function() { - return app.contentRegion.show(new MixEditView({ - model: mix - })); - } - }); - return true; - }; + DssController.prototype.uploadMix = function() { + var app, mix; + console.log("Controller: mixUpload"); + app = require('app'); + mix = new MixItem({ + title: '', + description: '', + mix_image: com.podnoms.settings.staticUrl + 'img/default-track.png', + download_allowed: true, + is_featured: false + }); + app.contentRegion.show(new MixEditView({ + model: mix + })); + return true; + }; - DssController.prototype.showChat = function() { - var app; - console.log("Controller: showChat"); - app = require('app'); - return app.contentRegion.show(new ChatView()); - }; + DssController.prototype.editMix = function(slug) { + var app, mix; + console.log("Controller: mixEdit"); + app = require('app'); + mix = new MixItem({ + id: slug + }); + mix.fetch({ + success: function() { + return app.contentRegion.show(new MixEditView({ + model: mix + })); + } + }); + return true; + }; - DssController.prototype.showUserList = function() { - var app; - console.log("Controller: showUserList"); - app = require('app'); - return app.contentRegion.show(new UserListView()); - }; + DssController.prototype.showChat = function() { + var app; + console.log("Controller: showChat"); + app = require('app'); + return app.contentRegion.show(new ChatView()); + }; - DssController.prototype.showUserProfile = function(slug) { - var app, user; - console.log("Controller: showUserProfile"); - app = require('app'); - user = new UserItem({ - id: slug - }); - return user.fetch({ - success: function() { - return app.contentRegion.show(new UserProfileView({ - model: user - })); - }, - error: function(a, b, c) { - return console.log("Error fetching user"); - } - }); - }; + DssController.prototype.showUserList = function() { + var app; + console.log("Controller: showUserList"); + app = require('app'); + return app.contentRegion.show(new UserListView()); + }; - DssController.prototype.showUserFavourites = function(slug) { - console.log("Controller: showUserFavourites"); - return this.showMixList({ - order_by: 'latest', - favourites__slug: slug - }); - }; + DssController.prototype.showUserProfile = function(slug) { + var app, user; + console.log("Controller: showUserProfile"); + app = require('app'); + user = new UserItem({ + id: slug + }); + return user.fetch({ + success: function() { + return app.contentRegion.show(new UserProfileView({ + model: user + })); + }, + error: function(a, b, c) { + return console.log("Error fetching user"); + } + }); + }; - DssController.prototype.showUserLikes = function(slug) { - console.log("Controller: showUserLikes"); - return this.showMixList({ - order_by: 'latest', - likes__slug: slug - }); - }; + DssController.prototype.showUserFavourites = function(slug) { + console.log("Controller: showUserFavourites"); + return this.showMixList({ + order_by: 'latest', + favourites__slug: slug + }); + }; - DssController.prototype.showUserMixes = function(slug) { - console.log("Controller: showUserMixes"); - return this.showMixList({ - order_by: 'latest', - user: slug - }); - }; + DssController.prototype.showUserLikes = function(slug) { + console.log("Controller: showUserLikes"); + return this.showMixList({ + order_by: 'latest', + likes__slug: slug + }); + }; - DssController.prototype.showUserFollowing = function(slug) { - var app; - console.log("Controller: showUserFollowing"); - app = require('app'); - return app.contentRegion.show(new UserListView({ - followers__slug: slug - })); - }; + DssController.prototype.showUserMixes = function(slug) { + console.log("Controller: showUserMixes"); + return this.showMixList({ + order_by: 'latest', + user: slug + }); + }; - DssController.prototype.showUserFollowers = function(slug) { - var app; - console.log("Controller: showUserFollowers"); - app = require('app'); - return app.contentRegion.show(new UserListView({ - following__slug: slug - })); - }; + DssController.prototype.showUserFollowing = function(slug) { + var app; + console.log("Controller: showUserFollowing"); + app = require('app'); + return app.contentRegion.show(new UserListView({ + followers__slug: slug + })); + }; - DssController.prototype.editUser = function() { - var app, user; - console.log("Controller: editUser"); - app = require('app'); - user = new UserItem({ - id: com.podnoms.settings.currentUser - }); - user.fetch({ - success: function() { - return app.contentRegion.show(new UserEditView({ - model: user - })); - } - }); - return true; - }; + DssController.prototype.showUserFollowers = function(slug) { + var app; + console.log("Controller: showUserFollowers"); + app = require('app'); + return app.contentRegion.show(new UserListView({ + following__slug: slug + })); + }; + DssController.prototype.editUser = function() { + var app, user; + console.log("Controller: editUser"); + app = require('app'); + user = new UserItem({ + id: com.podnoms.settings.currentUser + }); + user.fetch({ + success: function() { + return app.contentRegion.show(new UserEditView({ + model: user + })); + } + }); + return true; + }; + + return DssController; + + })(Marionette.Controller); return DssController; + }); - })(Marionette.Controller); - return DssController; -}); +}).call(this); diff --git a/static/js/app/lib/router.coffee b/static/js/app/lib/router.coffee index 06ef4a2..0f7c475 100755 --- a/static/js/app/lib/router.coffee +++ b/static/js/app/lib/router.coffee @@ -9,6 +9,7 @@ define ['marionette', 'vent', 'app.lib/controller'], "mix/upload": "uploadMix", "mixes": "showMixList", "mixes/:type": "showMixListType" + "mixes/genre/:type": "showMixListGenre" "mix/:slug": "showMix" "mix/edit/:slug": "editMix", diff --git a/static/js/app/lib/router.js b/static/js/app/lib/router.js index 11a37fd..33ef889 100755 --- a/static/js/app/lib/router.js +++ b/static/js/app/lib/router.js @@ -1,49 +1,53 @@ // Generated by CoffeeScript 1.4.0 -var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['marionette', 'vent', 'app.lib/controller'], function(Marionette, vent, Controller) { - var DssRouter; - return DssRouter = (function(_super) { + define(['marionette', 'vent', 'app.lib/controller'], function(Marionette, vent, Controller) { + var DssRouter; + return DssRouter = (function(_super) { - __extends(DssRouter, _super); + __extends(DssRouter, _super); - function DssRouter() { - return DssRouter.__super__.constructor.apply(this, arguments); - } + function DssRouter() { + return DssRouter.__super__.constructor.apply(this, arguments); + } - DssRouter.prototype.controller = new Controller; + DssRouter.prototype.controller = new Controller; - DssRouter.prototype.appRoutes = { - "": "home", - "/": "home", - "mix/upload": "uploadMix", - "mixes": "showMixList", - "mixes/:type": "showMixListType", - "mix/:slug": "showMix", - "mix/edit/:slug": "editMix", - "chat": "showChat", - "random": "showRandomMix", - "stream": "showStreamList", - "login": "doLogin", - "users": "showUserList", - "user/:slug/favourites": "showUserFavourites", - "user/:slug/likes": "showUserLikes", - "user/:slug/followers": "showUserFollowers", - "user/:slug/following": "showUserFollowing", - "user/:slug/mixes": "showUserMixes", - "user/:slug": "showUserProfile", - "me": "editUser" - }; + DssRouter.prototype.appRoutes = { + "": "home", + "/": "home", + "mix/upload": "uploadMix", + "mixes": "showMixList", + "mixes/:type": "showMixListType", + "mixes/genre/:type": "showMixListGenre", + "mix/:slug": "showMix", + "mix/edit/:slug": "editMix", + "chat": "showChat", + "random": "showRandomMix", + "stream": "showStreamList", + "login": "doLogin", + "users": "showUserList", + "user/:slug/favourites": "showUserFavourites", + "user/:slug/likes": "showUserLikes", + "user/:slug/followers": "showUserFollowers", + "user/:slug/following": "showUserFollowing", + "user/:slug/mixes": "showUserMixes", + "user/:slug": "showUserProfile", + "me": "editUser" + }; - DssRouter.prototype.initialize = function() { - console.log("Router: initialize"); - return this.listenTo(vent, "navigate:mix", function(slug) { - return this.navigate('mix/' + slug, true); - }); - }; + DssRouter.prototype.initialize = function() { + console.log("Router: initialize"); + return this.listenTo(vent, "navigate:mix", function(slug) { + return this.navigate('mix/' + slug, true); + }); + }; - return DssRouter; + return DssRouter; - })(Marionette.AppRouter); -}); + })(Marionette.AppRouter); + }); + +}).call(this); diff --git a/static/js/app/models/mix/mixItem.js b/static/js/app/models/mix/mixItem.js index dc7dbca..349ef76 100755 --- a/static/js/app/models/mix/mixItem.js +++ b/static/js/app/models/mix/mixItem.js @@ -1,57 +1,60 @@ // Generated by CoffeeScript 1.4.0 -var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['utils', 'vent', 'models/comment/commentCollection', 'models/comment/commentItem', 'models/genre/genreCollection', 'models/genre/genreItem', 'app.lib/backbone.dss.model'], function(utils, vent, CommentCollection, CommentItem, GenreCollection, GenreItem, DssModel) { - var MixItem; - return MixItem = (function(_super) { + define(['utils', 'vent', 'models/comment/commentCollection', 'models/comment/commentItem', 'models/genre/genreCollection', 'models/genre/genreItem', 'app.lib/backbone.dss.model'], function(utils, vent, CommentCollection, CommentItem, GenreCollection, GenreItem, DssModel) { + var MixItem; + return MixItem = (function(_super) { - __extends(MixItem, _super); + __extends(MixItem, _super); - function MixItem() { - return MixItem.__super__.constructor.apply(this, arguments); - } - - MixItem.prototype.urlRoot = com.podnoms.settings.urlRoot + "mix/"; - - MixItem.prototype.relations = [ - { - type: Backbone.Many, - key: "comments", - relatedModel: CommentItem, - collectionType: CommentCollection - }, { - type: Backbone.Many, - key: "genres", - relatedModel: GenreItem, - collectionType: GenreCollection + function MixItem() { + return MixItem.__super__.constructor.apply(this, arguments); } - ]; - MixItem.prototype.addComment = function(comment, success, error) { - var c; - c = void 0; - if (comment) { - return c = this.get("comments").create({ - comment: comment, - mix_id: this.get("slug") + MixItem.prototype.urlRoot = com.podnoms.settings.urlRoot + "mix/"; + + MixItem.prototype.relations = [ + { + type: Backbone.Many, + key: "comments", + relatedModel: CommentItem, + collectionType: CommentCollection }, { - success: function() { - return success(); - }, - error: function() { - return error(); - } - }); - } else { - return error("Comment cannot be empty"); - } - }; + type: Backbone.Many, + key: "genres", + relatedModel: GenreItem, + collectionType: GenreCollection + } + ]; - MixItem; + MixItem.prototype.addComment = function(comment, success, error) { + var c; + c = void 0; + if (comment) { + return c = this.get("comments").create({ + comment: comment, + mix_id: this.get("slug") + }, { + success: function() { + return success(); + }, + error: function() { + return error(); + } + }); + } else { + return error("Comment cannot be empty"); + } + }; + + MixItem; - return MixItem; + return MixItem; - })(DssModel); -}); + })(DssModel); + }); + +}).call(this); diff --git a/static/js/app/views/mix/mixEditView.js b/static/js/app/views/mix/mixEditView.js index 9e55663..3fede79 100644 --- a/static/js/app/views/mix/mixEditView.js +++ b/static/js/app/views/mix/mixEditView.js @@ -1,71 +1,72 @@ // Generated by CoffeeScript 1.4.0 -var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['app.lib/editableView', 'vent', 'moment', 'utils', 'backbone.syphon', 'text!/tpl/MixEditView', 'models/genre/genreCollection', 'lib/jdataview', 'ace', 'dropzone', 'wizard', 'ajaxfileupload', 'jquery.fileupload', 'lib/ace/uncompressed/select2'], function(EditableView, vent, moment, utils, Syphon, Template, GenreCollection, jDataView) { - var MixEditView; - return MixEditView = (function(_super) { + define(['app.lib/editableView', 'vent', 'moment', 'utils', 'backbone.syphon', 'text!/tpl/MixEditView', 'models/genre/genreCollection', 'lib/jdataview', 'ace', 'dropzone', 'wizard', 'ajaxfileupload', 'jquery.fileupload', 'lib/ace/uncompressed/select2'], function(EditableView, vent, moment, utils, Syphon, Template, GenreCollection, jDataView) { + var MixEditView; + return MixEditView = (function(_super) { - __extends(MixEditView, _super); + __extends(MixEditView, _super); - function MixEditView() { - this.saveChanges = __bind(this.saveChanges, this); - return MixEditView.__super__.constructor.apply(this, arguments); - } - - MixEditView.prototype.template = _.template(Template); - - MixEditView.prototype.events = { - "click #login": "login", - "change input[name='...']": "imageChanged" - }; - - MixEditView.prototype.ui = { - image: "#mix-image", - progress: "#mix-upload-progress", - uploadError: '#mix-upload-error' - }; - - MixEditView.prototype.initialize = function() { - this.guid = utils.generateGuid(); - this.uploadState = 0; - this.detailsEntered = false; - return this.patch = false; - }; - - MixEditView.prototype.onRender = function() { - var wizard, - _this = this; - console.log("MixEditView: onRender js"); - $('.progress', this.el).hide(); - this.sendImage = false; - if (!this.model.id) { - $('input[name="upload-hash"]', this.el).val(this.guid); - } else { - $('#header-step1', this.el).remove(); - $('#step1', this.el).remove(); - $('#header-step2', this.el).addClass("active"); - $('#step2', this.el).addClass("active"); - $('.progress', this.el).hide(); - this.patch = true; - this.uploadState = 2; + function MixEditView() { + this.saveChanges = __bind(this.saveChanges, this); + return MixEditView.__super__.constructor.apply(this, arguments); } - wizard = $("#fuelux-wizard", this.el).ace_wizard().on("change", function(e, info) { - if (info.step === 1 && _this.uploadState === 0) { - console.log("MixEditView: No mix uploaded"); - _this.ui.uploadError.fadeIn(); - $('#step1').addClass("alert-danger"); - return false; + + MixEditView.prototype.template = _.template(Template); + + MixEditView.prototype.events = { + "click #login": "login", + "change input[name='...']": "imageChanged" + }; + + MixEditView.prototype.ui = { + image: "#mix-image", + progress: "#mix-upload-progress", + uploadError: '#mix-upload-error' + }; + + MixEditView.prototype.initialize = function() { + this.guid = utils.generateGuid(); + this.uploadState = 0; + this.detailsEntered = false; + return this.patch = false; + }; + + MixEditView.prototype.onRender = function() { + var wizard, + _this = this; + console.log("MixEditView: onRender js"); + $('.progress', this.el).hide(); + this.sendImage = false; + if (!this.model.id) { + $('input[name="upload-hash"]', this.el).val(this.guid); } else { - return true; + $('#header-step1', this.el).remove(); + $('#step1', this.el).remove(); + $('#header-step2', this.el).addClass("active"); + $('#step2', this.el).addClass("active"); + $('.progress', this.el).hide(); + this.patch = true; + this.uploadState = 2; } - }).on("finished", function(e) { - console.log("Finished"); - return _this.saveChanges(); - }); - $("#mix-upload-form", this.el).dropzone({ - previewTemplate: '
\n\ + wizard = $("#fuelux-wizard", this.el).ace_wizard().on("change", function(e, info) { + if (info.step === 1 && _this.uploadState === 0) { + console.log("MixEditView: No mix uploaded"); + _this.ui.uploadError.fadeIn(); + $('#step1').addClass("alert-danger"); + return false; + } else { + return true; + } + }).on("finished", function(e) { + console.log("Finished"); + return _this.saveChanges(); + }); + $("#mix-upload-form", this.el).dropzone({ + previewTemplate: '
\n\
\n\
\n\
\n\ @@ -78,147 +79,149 @@ define(['app.lib/editableView', 'vent', 'moment', 'utils', 'backbone.syphon', 't
\n\
\n\
', - dictDefaultMessage: ' Drop files to upload\ + dictDefaultMessage: ' Drop files to upload\ (or click)
\ ', - uploadprogress: function(e, progress, bytesSent) { - var percentage; - $('.progress', _this.el).hide(); - _this.uploadState = 1; - percentage = Math.round(progress); - console.log("Progressing"); - return _this.ui.progress.css("width", percentage + "%").parent().attr("data-percent", percentage + "%"); - }, - complete: function() { - _this.uploadState = 2; - return _this.checkRedirect(); - } - }); - $("#genres", this.el).select2({ - placeholder: "Start typing and choose from list or create your own.", - minimumInputLength: 1, - multiple: true, - ajax: { - url: "/ajax/lookup/genre/", - dataType: "json", - data: function(term, page) { - return { - q: term - }; + uploadprogress: function(e, progress, bytesSent) { + var percentage; + $('.progress', _this.el).hide(); + _this.uploadState = 1; + percentage = Math.round(progress); + console.log("Progressing"); + return _this.ui.progress.css("width", percentage + "%").parent().attr("data-percent", percentage + "%"); }, - results: function(data, page) { - return { - results: data - }; + complete: function() { + _this.uploadState = 2; + return _this.checkRedirect(); } - }, - formatResult: function(genre) { - return genre.description; - }, - formatSelection: function(genre) { - return "
" + genre.description + "
"; - }, - initSelection: function(element, callback) { - var genres, result; - console.log("MixEditView: genres:initSelection"); - result = []; - genres = _this.model.get("genres"); - if (genres !== undefined) { - genres.each(function(data) { - return result.push({ - id: data.get("id"), - description: data.get("description") + }); + $("#genres", this.el).select2({ + placeholder: "Start typing and choose from list or create your own.", + minimumInputLength: 1, + multiple: true, + ajax: { + url: "/ajax/lookup/genre/", + dataType: "json", + data: function(term, page) { + return { + q: term + }; + }, + results: function(data, page) { + return { + results: data + }; + } + }, + formatResult: function(genre) { + return genre.description; + }, + formatSelection: function(genre) { + return "
" + genre.description + "
"; + }, + initSelection: function(element, callback) { + var genres, result; + console.log("MixEditView: genres:initSelection"); + result = []; + genres = _this.model.get("genres"); + if (genres !== undefined) { + genres.each(function(data) { + return result.push({ + id: data.get("id"), + description: data.get("description") + }); }); - }); + } + return callback(result); } - return callback(result); - } - }, "createSearchChoice: (term, data) ->\n if $(data).filter(->\n @description.localeCompare(term) is 0\n ).length is 0\n id: term\n text: term"); - return true; - }; + }, "createSearchChoice: (term, data) ->\n if $(data).filter(->\n @description.localeCompare(term) is 0\n ).length is 0\n id: term\n text: term"); + return true; + }; - MixEditView.prototype.saveChanges = function() { - var flair, - _this = this; - console.log("MixEditView: saveChanges"); - this.model.set(Syphon.serialize($("#mix-details-form", this.el)[0])); - flair = Syphon.serialize($("#mix-flair-form", this.el)[0], { - exclude: ["...", ""] - }); - this.model.set(flair); - this.model.set("upload-hash", this.guid); - this.model.set("upload-extension", $("#upload-extension", this.el).val()); - this.model.set("genres", new GenreCollection()); - $.each($("#genres", this.el).select2("data"), function(i, item) { - "if @model.get(\"genres\") is undefined\n @model.set(\"genres\", new GenreCollection())"; - return _this.model.get("genres").add({ - id: item.id, - description: item.text + MixEditView.prototype.saveChanges = function() { + var flair, + _this = this; + console.log("MixEditView: saveChanges"); + this.model.set(Syphon.serialize($("#mix-details-form", this.el)[0])); + flair = Syphon.serialize($("#mix-flair-form", this.el)[0], { + exclude: ["...", ""] }); - }); - if (!this.sendImage) { - this.model.unset("mix_image"); - } - this.model.unset("comments"); - this._saveChanges({ - patch: this.patch, - success: function() { - if (_this.sendImage) { - $.ajaxFileUpload({ - url: "/ajax/upload_mix_image/" + _this.model.get("id") + "/", - secureuri: false, - fileElementId: "input[name='...']", - success: function(data, status) { - if (typeof data.error !== "undefined") { - if (data.error !== "") { - return alert(data.error); + this.model.set(flair); + this.model.set("upload-hash", this.guid); + this.model.set("upload-extension", $("#upload-extension", this.el).val()); + this.model.set("genres", new GenreCollection()); + $.each($("#genres", this.el).select2("data"), function(i, item) { + "if @model.get(\"genres\") is undefined\n @model.set(\"genres\", new GenreCollection())"; + return _this.model.get("genres").add({ + id: item.id, + description: item.text + }); + }); + if (!this.sendImage) { + this.model.unset("mix_image"); + } + this.model.unset("comments"); + this._saveChanges({ + patch: this.patch, + success: function() { + if (_this.sendImage) { + $.ajaxFileUpload({ + url: "/ajax/upload_mix_image/" + _this.model.get("id") + "/", + secureuri: false, + fileElementId: "input[name='...']", + success: function(data, status) { + if (typeof data.error !== "undefined") { + if (data.error !== "") { + return alert(data.error); + } else { + return alert(data.msg); + } } else { - return alert(data.msg); + $("#mix-upload-wizard", _this.el).hide(); + _this.detailsEntered = true; + return _this.checkRedirect(); } - } else { - $("#mix-upload-wizard", _this.el).hide(); - _this.detailsEntered = true; - return _this.checkRedirect(); + }, + error: function(data, status, e) { + return utils.showError(e); } - }, - error: function(data, status, e) { - return utils.showError(e); - } - }); - } else { - $("#mix-upload-wizard", _this.el).hide(); - _this.detailsEntered = true; - _this.checkRedirect(); + }); + } else { + $("#mix-upload-wizard", _this.el).hide(); + _this.detailsEntered = true; + _this.checkRedirect(); + } + return true; + }, + error: function(model, response) { + return utils.showError("Error", "Something went wrong
Nerd stuff is: " + response); } - return true; - }, - error: function(model, response) { - return utils.showError("Error", "Something went wrong
Nerd stuff is: " + response); - } - }); - return false; - }; - - MixEditView.prototype.checkRedirect = function() { - if (this.detailsEntered && this.uploadState === 2) { - return Backbone.history.navigate("/mix/" + this.model.get("slug"), { - trigger: true }); - } - }; + return false; + }; - MixEditView.prototype.login = function() { - return vent.trigger('app:login'); - }; + MixEditView.prototype.checkRedirect = function() { + if (this.detailsEntered && this.uploadState === 2) { + return Backbone.history.navigate("/mix/" + this.model.get("slug"), { + trigger: true + }); + } + }; - MixEditView.prototype.imageChanged = function(evt) { - return this.sendImage = true; - }; + MixEditView.prototype.login = function() { + return vent.trigger('app:login'); + }; - MixEditView; + MixEditView.prototype.imageChanged = function(evt) { + return this.sendImage = true; + }; + + MixEditView; - return MixEditView; + return MixEditView; - })(EditableView); -}); + })(EditableView); + }); + +}).call(this); diff --git a/static/js/app/views/mix/mixItemView.js b/static/js/app/views/mix/mixItemView.js index 17c4538..379f95b 100755 --- a/static/js/app/views/mix/mixItemView.js +++ b/static/js/app/views/mix/mixItemView.js @@ -1,153 +1,156 @@ // Generated by CoffeeScript 1.4.0 -var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['moment', 'app', 'vent', 'marionette', 'utils', 'text!/tpl/MixListItemView'], function(moment, App, vent, Marionette, utils, Template) { - var MixItemView; - MixItemView = (function(_super) { + define(['moment', 'app', 'vent', 'marionette', 'utils', 'text!/tpl/MixListItemView'], function(moment, App, vent, Marionette, utils, Template) { + var MixItemView; + MixItemView = (function(_super) { - __extends(MixItemView, _super); + __extends(MixItemView, _super); - function MixItemView() { - this.doStart = __bind(this.doStart, this); + function MixItemView() { + this.doStart = __bind(this.doStart, this); - this.onRender = __bind(this.onRender, this); + this.onRender = __bind(this.onRender, this); - this.initialize = __bind(this.initialize, this); - return MixItemView.__super__.constructor.apply(this, arguments); - } - - MixItemView.prototype.template = _.template(Template); - - MixItemView.prototype.tagName = MixItemView.tagName || "li"; - - MixItemView.prototype.className = MixItemView.className || ""; - - MixItemView.prototype.events = { - "click .play-button-small-start": "doStart", - "click .play-button-small-resume": "doResume", - "click .play-button-small-pause": "doPause", - "click .mix-link": "mixLink", - "click .delete-button a": "mixDelete", - "click .like-button a": "mixLike", - "click .favourite-button a": "mixFavourite", - "click .share-button": "mixShare", - "click .download-button a": "mixDownload", - "click .login-download-button a": "login" - }; - - MixItemView.prototype.ui = { - playButton: ".play-button-small" - }; - - MixItemView.prototype.initialize = function() { - this.listenTo(this.model, 'change:favourited', this.render); - this.listenTo(this.model, 'change:liked', this.render); - this.listenTo(this.model, 'nested-change', this.render); - this.listenTo(vent, 'mix:play', this.mixPlay); - this.listenTo(vent, 'mix:pause', this.mixPause); - return true; - }; - - MixItemView.prototype.onRender = function() { - var id; - id = this.model.get('id'); - if (this.model.get('duration')) { - $('#player-duration-' + id, this.el).text(this.model.secondsToHms('duration')); + this.initialize = __bind(this.initialize, this); + return MixItemView.__super__.constructor.apply(this, arguments); } - window.scrollTo(0, 0); - }; - MixItemView.prototype.onShow = function() { - if (com.podnoms.player.isPlayingId(this.model.id)) { - com.podnoms.settings.setupPlayerWrapper(this.model.get('id'), com.podnoms.player.getStreamUrl(), this.el); - this.mixPlay(this.model); - } - return true; - }; + MixItemView.prototype.template = _.template(Template); - MixItemView.prototype.doStart = function() { - console.log("MixItemView: mixStart"); - this.ui.playButton.toggleClass('play-button-small-start', false).toggleClass('play-button-small-resume', false).toggleClass('play-button-small-pause', true); - vent.trigger('mix:init', this.model); - }; + MixItemView.prototype.tagName = MixItemView.tagName || "li"; - MixItemView.prototype.doPause = function() { - console.log("MixItemView: mixPause"); - vent.trigger("mix:pause", this.model); - return true; - }; + MixItemView.prototype.className = MixItemView.className || ""; - MixItemView.prototype.doResume = function() { - console.log("MixItemView: mixResume"); - vent.trigger("mix:play", this.model); - return true; - }; + MixItemView.prototype.events = { + "click .play-button-small-start": "doStart", + "click .play-button-small-resume": "doResume", + "click .play-button-small-pause": "doPause", + "click .mix-link": "mixLink", + "click .delete-button a": "mixDelete", + "click .like-button a": "mixLike", + "click .favourite-button a": "mixFavourite", + "click .share-button": "mixShare", + "click .download-button a": "mixDownload", + "click .login-download-button a": "login" + }; - MixItemView.prototype.mixPlay = function(model) { - if (this.model.get('id') === model.get('id')) { + MixItemView.prototype.ui = { + playButton: ".play-button-small" + }; + + MixItemView.prototype.initialize = function() { + this.listenTo(this.model, 'change:favourited', this.render); + this.listenTo(this.model, 'change:liked', this.render); + this.listenTo(this.model, 'nested-change', this.render); + this.listenTo(vent, 'mix:play', this.mixPlay); + this.listenTo(vent, 'mix:pause', this.mixPause); + return true; + }; + + MixItemView.prototype.onRender = function() { + var id; + id = this.model.get('id'); + if (this.model.get('duration')) { + $('#player-duration-' + id, this.el).text(this.model.secondsToHms('duration')); + } + window.scrollTo(0, 0); + }; + + MixItemView.prototype.onShow = function() { + if (com.podnoms.player.isPlayingId(this.model.id)) { + com.podnoms.settings.setupPlayerWrapper(this.model.get('id'), com.podnoms.player.getStreamUrl(), this.el); + this.mixPlay(this.model); + } + return true; + }; + + MixItemView.prototype.doStart = function() { + console.log("MixItemView: mixStart"); this.ui.playButton.toggleClass('play-button-small-start', false).toggleClass('play-button-small-resume', false).toggleClass('play-button-small-pause', true); - } - }; + vent.trigger('mix:init', this.model); + }; - MixItemView.prototype.mixPause = function(model) { - if (this.model.get('id') === model.get('id')) { - this.ui.playButton.toggleClass('play-button-small-start', false).toggleClass('play-button-small-resume', true).toggleClass('play-button-small-pause', false); - } - }; + MixItemView.prototype.doPause = function() { + console.log("MixItemView: mixPause"); + vent.trigger("mix:pause", this.model); + return true; + }; - MixItemView.prototype.mixStop = function(model) { - if (this.model.get('id') === model.get('id')) { - this.ui.playButton.toggleClass('play-button-small-start', true).toggleClass('play-button-small-resume', false).toggleClass('play-button-small-pause', false); - } - }; + MixItemView.prototype.doResume = function() { + console.log("MixItemView: mixResume"); + vent.trigger("mix:play", this.model); + return true; + }; - MixItemView.prototype.mixFavourite = function() { - var app; - console.log("MixItemView: favouriteMix"); - app = require('app'); - vent.trigger("mix:favourite", this.model); - return true; - }; + MixItemView.prototype.mixPlay = function(model) { + if (this.model.get('id') === model.get('id')) { + this.ui.playButton.toggleClass('play-button-small-start', false).toggleClass('play-button-small-resume', false).toggleClass('play-button-small-pause', true); + } + }; - MixItemView.prototype.mixDelete = function() { - var _this = this; - console.log("MixItemView: mixDelete"); - return utils.messageBox("/dlg/DeleteMixConfirm", function() { - return _this.model.destroy(); - }); - }; + MixItemView.prototype.mixPause = function(model) { + if (this.model.get('id') === model.get('id')) { + this.ui.playButton.toggleClass('play-button-small-start', false).toggleClass('play-button-small-resume', true).toggleClass('play-button-small-pause', false); + } + }; - MixItemView.prototype.mixLike = function() { - console.log("MixItemView: likeMix"); - vent.trigger("mix:like", this.model); - return true; - }; + MixItemView.prototype.mixStop = function(model) { + if (this.model.get('id') === model.get('id')) { + this.ui.playButton.toggleClass('play-button-small-start', true).toggleClass('play-button-small-resume', false).toggleClass('play-button-small-pause', false); + } + }; - MixItemView.prototype.mixShare = function(e) { - var mode; - console.log("MixItemView: shareMix"); - mode = $(e.currentTarget).data("mode"); - console.log("MixItemView: " + mode); - vent.trigger("mix:share", mode, this.model); - return true; - }; + MixItemView.prototype.mixFavourite = function() { + var app; + console.log("MixItemView: favouriteMix"); + app = require('app'); + vent.trigger("mix:favourite", this.model); + return true; + }; - MixItemView.prototype.mixDownload = function() { - console.log("MixItemView: mixDownload"); - utils.downloadURL("/audio/download/" + this.model.get('id')); - return true; - }; + MixItemView.prototype.mixDelete = function() { + var _this = this; + console.log("MixItemView: mixDelete"); + return utils.messageBox("/dlg/DeleteMixConfirm", function() { + return _this.model.destroy(); + }); + }; - MixItemView.prototype.login = function() { - console.log("MixItemView: login"); - vent.trigger('app:login'); - return true; - }; + MixItemView.prototype.mixLike = function() { + console.log("MixItemView: likeMix"); + vent.trigger("mix:like", this.model); + return true; + }; + MixItemView.prototype.mixShare = function(e) { + var mode; + console.log("MixItemView: shareMix"); + mode = $(e.currentTarget).data("mode"); + console.log("MixItemView: " + mode); + vent.trigger("mix:share", mode, this.model); + return true; + }; + + MixItemView.prototype.mixDownload = function() { + console.log("MixItemView: mixDownload"); + utils.downloadURL("/audio/download/" + this.model.get('id')); + return true; + }; + + MixItemView.prototype.login = function() { + console.log("MixItemView: login"); + vent.trigger('app:login'); + return true; + }; + + return MixItemView; + + })(Marionette.ItemView); return MixItemView; + }); - })(Marionette.ItemView); - return MixItemView; -}); +}).call(this); diff --git a/static/js/app/views/mix/mixListLayout.js b/static/js/app/views/mix/mixListLayout.js index 1885f61..0f75f6e 100644 --- a/static/js/app/views/mix/mixListLayout.js +++ b/static/js/app/views/mix/mixListLayout.js @@ -1,65 +1,68 @@ // Generated by CoffeeScript 1.4.0 -var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['marionette', 'vent', 'models/user/userItem', 'models/mix/mixCollection', 'views/widgets/mixTabHeaderView', 'views/user/userItemView', 'views/mix/mixListView', 'text!/tpl/MixListLayoutView'], function(Marionette, vent, UserItem, MixCollection, MixTabHeaderView, UserItemView, MixListView, Template) { - var MixListLayout; - MixListLayout = (function(_super) { + define(['marionette', 'vent', 'models/user/userItem', 'models/mix/mixCollection', 'views/widgets/mixTabHeaderView', 'views/user/userItemView', 'views/mix/mixListView', 'text!/tpl/MixListLayoutView'], function(Marionette, vent, UserItem, MixCollection, MixTabHeaderView, UserItemView, MixListView, Template) { + var MixListLayout; + MixListLayout = (function(_super) { - __extends(MixListLayout, _super); + __extends(MixListLayout, _super); - function MixListLayout() { - return MixListLayout.__super__.constructor.apply(this, arguments); - } + function MixListLayout() { + return MixListLayout.__super__.constructor.apply(this, arguments); + } - MixListLayout.prototype.template = _.template(Template); + MixListLayout.prototype.template = _.template(Template); - MixListLayout.prototype.regions = { - headerRegion: "#mix-list-heading", - bodyRegion: "#mix-list-body" - }; + MixListLayout.prototype.regions = { + headerRegion: "#mix-list-heading", + bodyRegion: "#mix-list-body" + }; - MixListLayout.prototype.initialize = function(options) { - this.listenTo(vent, "mix:showlist", this.showMixList); - this.listenTo(vent, "user:showdetail", this.showUserView); - return this.showMixList(options); - }; + MixListLayout.prototype.initialize = function(options) { + this.listenTo(vent, "mix:showlist", this.showMixList); + this.listenTo(vent, "user:showdetail", this.showUserView); + return this.showMixList(options); + }; - MixListLayout.prototype.onShow = function() { - return this.headerRegion.show(new MixTabHeaderView()); - }; + MixListLayout.prototype.onShow = function() { + return this.headerRegion.show(new MixTabHeaderView()); + }; - MixListLayout.prototype.showMixList = function(options) { - var _this = this; - this.collection = new MixCollection(); - return this.collection.fetch({ - data: options, - success: function(collection) { - return _this.bodyRegion.show(new MixListView({ - collection: collection - })); - } - }); - }; + MixListLayout.prototype.showMixList = function(options) { + var _this = this; + this.collection = new MixCollection(); + return this.collection.fetch({ + data: options, + success: function(collection) { + return _this.bodyRegion.show(new MixListView({ + collection: collection + })); + } + }); + }; - MixListLayout.prototype.showUserView = function(options) { - var user, - _this = this; - this.bodyRegion.show(new MixListView(options)); - user = new UserItem({ - id: options.user - }); - return user.fetch({ - success: function() { - return _this.headerRegion.show(new UserItemView({ - model: user - })); - } - }); - }; + MixListLayout.prototype.showUserView = function(options) { + var user, + _this = this; + this.bodyRegion.show(new MixListView(options)); + user = new UserItem({ + id: options.user + }); + return user.fetch({ + success: function() { + return _this.headerRegion.show(new UserItemView({ + model: user + })); + } + }); + }; + return MixListLayout; + + })(Marionette.Layout); return MixListLayout; + }); - })(Marionette.Layout); - return MixListLayout; -}); +}).call(this); diff --git a/static/js/app/views/mix/mixListView.js b/static/js/app/views/mix/mixListView.js index dd8f159..4aa9e04 100755 --- a/static/js/app/views/mix/mixListView.js +++ b/static/js/app/views/mix/mixListView.js @@ -1,43 +1,46 @@ // Generated by CoffeeScript 1.4.0 -var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['marionette', 'vent', 'models/mix/mixCollection', 'views/mix/mixItemView', 'text!/tpl/MixListView'], function(Marionette, vent, MixCollection, MixItemView, Template) { - var MixListView; - MixListView = (function(_super) { - var currentMix; + define(['marionette', 'vent', 'models/mix/mixCollection', 'views/mix/mixItemView', 'text!/tpl/MixListView'], function(Marionette, vent, MixCollection, MixItemView, Template) { + var MixListView; + MixListView = (function(_super) { + var currentMix; - __extends(MixListView, _super); + __extends(MixListView, _super); - function MixListView() { - return MixListView.__super__.constructor.apply(this, arguments); - } - - MixListView.prototype.template = _.template(Template); - - MixListView.prototype.className = "mix-listing audio-listing"; - - MixListView.prototype.itemView = MixItemView; - - MixListView.prototype.itemViewContainer = "#mix-list-container-ul"; - - currentMix = -1; - - MixListView.prototype.mixPlay = function(model) { - var v; - if (currentMix !== -1) { - v = this.children.findByModelCid(currentMix); - v.mixStop(v.model); + function MixListView() { + return MixListView.__super__.constructor.apply(this, arguments); } - currentMix = model.cid; - }; - MixListView.prototype.onRender = function() { - return window.scrollTo(0, 0); - }; + MixListView.prototype.template = _.template(Template); + MixListView.prototype.className = "mix-listing audio-listing"; + + MixListView.prototype.itemView = MixItemView; + + MixListView.prototype.itemViewContainer = "#mix-list-container-ul"; + + currentMix = -1; + + MixListView.prototype.mixPlay = function(model) { + var v; + if (currentMix !== -1) { + v = this.children.findByModelCid(currentMix); + v.mixStop(v.model); + } + currentMix = model.cid; + }; + + MixListView.prototype.onRender = function() { + return window.scrollTo(0, 0); + }; + + return MixListView; + + })(Marionette.CompositeView); return MixListView; + }); - })(Marionette.CompositeView); - return MixListView; -}); +}).call(this); diff --git a/static/js/app/views/notifications/notificationsListView.js b/static/js/app/views/notifications/notificationsListView.js index 1668f47..4b62b10 100644 --- a/static/js/app/views/notifications/notificationsListView.js +++ b/static/js/app/views/notifications/notificationsListView.js @@ -1,86 +1,89 @@ // Generated by CoffeeScript 1.4.0 -var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['marionette', 'underscore', 'vent', 'utils', 'models/notifications/notificationCollection', 'views/notifications/notificationsItemView', 'text!/tpl/NotificationsListView'], function(Marionette, _, vent, utils, NotificationCollection, NotificationsItemView, Template) { - var NotificationsListView; - NotificationsListView = (function(_super) { + define(['marionette', 'underscore', 'vent', 'utils', 'models/notifications/notificationCollection', 'views/notifications/notificationsItemView', 'text!/tpl/NotificationsListView'], function(Marionette, _, vent, utils, NotificationCollection, NotificationsItemView, Template) { + var NotificationsListView; + NotificationsListView = (function(_super) { - __extends(NotificationsListView, _super); + __extends(NotificationsListView, _super); - function NotificationsListView() { - this.initialize = __bind(this.initialize, this); - return NotificationsListView.__super__.constructor.apply(this, arguments); - } - - NotificationsListView.prototype.template = _.template(Template); - - NotificationsListView.prototype.itemView = NotificationsItemView; - - NotificationsListView.prototype.itemViewContainer = "#notif_list_node"; - - NotificationsListView.prototype.tagName = "li"; - - NotificationsListView.prototype.events = { - "click #notifications-dropdown": "showNotifications" - }; - - NotificationsListView.prototype.ui = { - notificationSurround: "#notification-surround", - notificationCountBadge: "#notification-count-badge", - notificationCount: "#notification-count" - }; - - NotificationsListView.prototype.initialize = function() { - var _this = this; - this.collection = new NotificationCollection; - return this.collection.fetch({ - success: function() { - _this.renderBeacon(); - return _this.collection.on({ - 'add': function(model, collection) { - _this.collection.meta.is_new += 1; - return _this.renderBeacon(model); - } - }); - }, - error: function() { - return $(_this.ui.notificationSurround).hide(); - } - }); - }; - - NotificationsListView.prototype.renderBeacon = function(model) { - var newCount; - newCount = this.collection.meta.is_new; - if (newCount === 0) { - $(this.ui.notificationCount).text("Notifications"); - return $(this.ui.notificationCountBadge).hide(); - } else { - $(this.ui.notificationCount).text(newCount + " new notifications"); - $(this.ui.notificationCountBadge).show(); - $(this.ui.notificationCountBadge).addClass('animate pulse'); - $('#notification-icon', this.el).addClass('icon-animated-bell'); - return $(this.ui.notificationCountBadge).text(newCount); + function NotificationsListView() { + this.initialize = __bind(this.initialize, this); + return NotificationsListView.__super__.constructor.apply(this, arguments); } - }; - NotificationsListView.prototype.showNotifications = function() { - var _this = this; - console.log("NotificationsListView: showNotifications"); - return $.ajax({ - url: '/ajax/mark_read/', - type: 'post', - success: function() { - $(_this.ui.notificationCountBadge).hide(); - return _this.collection.meta.is_new = 0; + NotificationsListView.prototype.template = _.template(Template); + + NotificationsListView.prototype.itemView = NotificationsItemView; + + NotificationsListView.prototype.itemViewContainer = "#notif_list_node"; + + NotificationsListView.prototype.tagName = "li"; + + NotificationsListView.prototype.events = { + "click #notifications-dropdown": "showNotifications" + }; + + NotificationsListView.prototype.ui = { + notificationSurround: "#notification-surround", + notificationCountBadge: "#notification-count-badge", + notificationCount: "#notification-count" + }; + + NotificationsListView.prototype.initialize = function() { + var _this = this; + this.collection = new NotificationCollection; + return this.collection.fetch({ + success: function() { + _this.renderBeacon(); + return _this.collection.on({ + 'add': function(model, collection) { + _this.collection.meta.is_new += 1; + return _this.renderBeacon(model); + } + }); + }, + error: function() { + return $(_this.ui.notificationSurround).hide(); + } + }); + }; + + NotificationsListView.prototype.renderBeacon = function(model) { + var newCount; + newCount = this.collection.meta.is_new; + if (newCount === 0) { + $(this.ui.notificationCount).text("Notifications"); + return $(this.ui.notificationCountBadge).hide(); + } else { + $(this.ui.notificationCount).text(newCount + " new notifications"); + $(this.ui.notificationCountBadge).show(); + $(this.ui.notificationCountBadge).addClass('animate pulse'); + $('#notification-icon', this.el).addClass('icon-animated-bell'); + return $(this.ui.notificationCountBadge).text(newCount); } - }); - }; + }; + NotificationsListView.prototype.showNotifications = function() { + var _this = this; + console.log("NotificationsListView: showNotifications"); + return $.ajax({ + url: '/ajax/mark_read/', + type: 'post', + success: function() { + $(_this.ui.notificationCountBadge).hide(); + return _this.collection.meta.is_new = 0; + } + }); + }; + + return NotificationsListView; + + })(Marionette.CompositeView); return NotificationsListView; + }); - })(Marionette.CompositeView); - return NotificationsListView; -}); +}).call(this); diff --git a/static/js/app/views/user/userItemView.js b/static/js/app/views/user/userItemView.js index 84b09c0..cf0e4c8 100755 --- a/static/js/app/views/user/userItemView.js +++ b/static/js/app/views/user/userItemView.js @@ -1,38 +1,41 @@ // Generated by CoffeeScript 1.4.0 -var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['app', 'moment', 'app.lib/dssView', 'vent', 'text!/tpl/UserListItemView'], function(App, moment, DssView, vent, Template) { - var UserItemView; - UserItemView = (function(_super) { + define(['app', 'moment', 'app.lib/dssView', 'vent', 'text!/tpl/UserListItemView'], function(App, moment, DssView, vent, Template) { + var UserItemView; + UserItemView = (function(_super) { - __extends(UserItemView, _super); + __extends(UserItemView, _super); - function UserItemView() { - this.initialize = __bind(this.initialize, this); - return UserItemView.__super__.constructor.apply(this, arguments); - } - - UserItemView.prototype.template = _.template(Template); - - UserItemView.prototype.className = "row"; - - UserItemView.prototype.events = { - "click #follow-button": function() { - return vent.trigger("user:follow", this.model); - }, - "click #follow-button-login": function() { - return vent.trigger("app:login", this.model); + function UserItemView() { + this.initialize = __bind(this.initialize, this); + return UserItemView.__super__.constructor.apply(this, arguments); } - }; - UserItemView.prototype.initialize = function() { - return this.listenTo(this.model, 'change:is_following', this.render); - }; + UserItemView.prototype.template = _.template(Template); + UserItemView.prototype.className = "row"; + + UserItemView.prototype.events = { + "click #follow-button": function() { + return vent.trigger("user:follow", this.model); + }, + "click #follow-button-login": function() { + return vent.trigger("app:login", this.model); + } + }; + + UserItemView.prototype.initialize = function() { + return this.listenTo(this.model, 'change:is_following', this.render); + }; + + return UserItemView; + + })(DssView); return UserItemView; + }); - })(DssView); - return UserItemView; -}); +}).call(this); diff --git a/static/js/app/views/user/userListView.js b/static/js/app/views/user/userListView.js index 4a28d23..6254c14 100755 --- a/static/js/app/views/user/userListView.js +++ b/static/js/app/views/user/userListView.js @@ -1,74 +1,77 @@ // Generated by CoffeeScript 1.4.0 -var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['jquery', 'marionette', 'models/user/userCollection', 'views/user/userItemView', 'text!/tpl/UserListView'], function($, Marionette, UserCollection, UserItemView, Template) { - var UserListView; - UserListView = (function(_super) { + define(['jquery', 'marionette', 'models/user/userCollection', 'views/user/userItemView', 'text!/tpl/UserListView'], function($, Marionette, UserCollection, UserItemView, Template) { + var UserListView; + UserListView = (function(_super) { - __extends(UserListView, _super); + __extends(UserListView, _super); - function UserListView() { - this.doSearch = __bind(this.doSearch, this); + function UserListView() { + this.doSearch = __bind(this.doSearch, this); - this._fetchCollection = __bind(this._fetchCollection, this); + this._fetchCollection = __bind(this._fetchCollection, this); - this.initialize = __bind(this.initialize, this); - return UserListView.__super__.constructor.apply(this, arguments); - } - - UserListView.prototype.template = _.template(Template); - - UserListView.prototype.events = { - "keyup #search-text": "doSearch" - }; - - UserListView.prototype.ui = { - searchText: "#search-text" - }; - - UserListView.prototype.className = "row"; - - UserListView.prototype.itemView = UserItemView; - - UserListView.prototype.itemViewContainer = "#user-table"; - - UserListView.prototype.initialize = function(options) { - console.log("UserListView: initialize"); - this.collection = new UserCollection(); - this._fetchCollection(options); - }; - - UserListView.prototype._fetchCollection = function(options) { - var _this = this; - return this.collection.fetch({ - data: options, - success: function() { - console.log("UserListView: Collection fetched"); - } - }); - }; - - UserListView.prototype.doSearch = function() { - var query; - console.log("UserListView: doSearch"); - query = this.ui.searchText.val(); - if (query) { - return this._fetchCollection({ - q: query - }); - } else { - return this._fetchCollection(this.options); + this.initialize = __bind(this.initialize, this); + return UserListView.__super__.constructor.apply(this, arguments); } - }; - UserListView.prototype.onRender = function() { - return window.scrollTo(0, 0); - }; + UserListView.prototype.template = _.template(Template); + UserListView.prototype.events = { + "keyup #search-text": "doSearch" + }; + + UserListView.prototype.ui = { + searchText: "#search-text" + }; + + UserListView.prototype.className = "row"; + + UserListView.prototype.itemView = UserItemView; + + UserListView.prototype.itemViewContainer = "#user-table"; + + UserListView.prototype.initialize = function(options) { + console.log("UserListView: initialize"); + this.collection = new UserCollection(); + this._fetchCollection(options); + }; + + UserListView.prototype._fetchCollection = function(options) { + var _this = this; + return this.collection.fetch({ + data: options, + success: function() { + console.log("UserListView: Collection fetched"); + } + }); + }; + + UserListView.prototype.doSearch = function() { + var query; + console.log("UserListView: doSearch"); + query = this.ui.searchText.val(); + if (query) { + return this._fetchCollection({ + q: query + }); + } else { + return this._fetchCollection(this.options); + } + }; + + UserListView.prototype.onRender = function() { + return window.scrollTo(0, 0); + }; + + return UserListView; + + })(Marionette.CompositeView); return UserListView; + }); - })(Marionette.CompositeView); - return UserListView; -}); +}).call(this); diff --git a/static/js/app/views/user/userProfileView.js b/static/js/app/views/user/userProfileView.js index de6143d..6ed9710 100644 --- a/static/js/app/views/user/userProfileView.js +++ b/static/js/app/views/user/userProfileView.js @@ -1,77 +1,80 @@ // Generated by CoffeeScript 1.4.0 -var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; +(function() { + var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(['app', 'utils', 'moment', 'marionette', 'vent', 'app.lib/editableView', 'models/user/userItem', 'text!/tpl/UserProfileView', 'ace-editable', 'wysiwyg'], function(App, utils, moment, Marionette, vent, EditableView, UserItem, Template) { - var UserProfileView; - UserProfileView = (function(_super) { + define(['app', 'utils', 'moment', 'marionette', 'vent', 'app.lib/editableView', 'models/user/userItem', 'text!/tpl/UserProfileView', 'ace-editable', 'wysiwyg'], function(App, utils, moment, Marionette, vent, EditableView, UserItem, Template) { + var UserProfileView; + UserProfileView = (function(_super) { - __extends(UserProfileView, _super); + __extends(UserProfileView, _super); - function UserProfileView() { - this.initialize = __bind(this.initialize, this); - return UserProfileView.__super__.constructor.apply(this, arguments); - } - - UserProfileView.prototype.template = _.template(Template); - - UserProfileView.prototype.events = { - "click #follow-button": function() { - return vent.trigger("user:follow", this.model); - }, - "click #follow-button-login": function() { - return vent.trigger("app:login", this.model); + function UserProfileView() { + this.initialize = __bind(this.initialize, this); + return UserProfileView.__super__.constructor.apply(this, arguments); } - }; - UserProfileView.prototype.initialize = function() { - return this.listenTo(this.model, 'change:is_following', this.render); - }; + UserProfileView.prototype.template = _.template(Template); - UserProfileView.prototype.templateHelpers = { - humanise: function(date) { - return moment(date).fromNow(); - } - }; + UserProfileView.prototype.events = { + "click #follow-button": function() { + return vent.trigger("user:follow", this.model); + }, + "click #follow-button-login": function() { + return vent.trigger("app:login", this.model); + } + }; - UserProfileView.prototype.onDomRefresh = function() { - var _this = this; - console.log("UserProfileView: initialize"); - this.setupImageEditable({ - el: $("#avatar", this.el), - url: "/ajax/upload_avatar_image/", - chooseMessage: "Choose profile image" - }); - $.fn.editable.defaults.mode = "inline"; - $.fn.editableform.loading = "
"; - $.fn.editableform.buttons = "" + ""; - if (utils.isMe(this.model.get("id"))) { - $("#about", this.el).editable({ - mode: "inline", - type: "wysiwyg", - name: "about", - wysiwyg: {}, - css: { - 'max-width': '300px' - }, - success: function(response, newValue) { - console.log("Update model with new value"); - return _this.model.save('description', newValue, { - patch: true - }); - } + UserProfileView.prototype.initialize = function() { + return this.listenTo(this.model, 'change:is_following', this.render); + }; + + UserProfileView.prototype.templateHelpers = { + humanise: function(date) { + return moment(date).fromNow(); + } + }; + + UserProfileView.prototype.onDomRefresh = function() { + var _this = this; + console.log("UserProfileView: initialize"); + this.setupImageEditable({ + el: $("#avatar", this.el), + url: "/ajax/upload_avatar_image/", + chooseMessage: "Choose profile image" }); - } - return $(".usereditable").attr('class', utils.isMe(this.model.get("id")) ? "editable editable-click" : "user-info"); - }; + $.fn.editable.defaults.mode = "inline"; + $.fn.editableform.loading = "
"; + $.fn.editableform.buttons = "" + ""; + if (utils.isMe(this.model.get("id"))) { + $("#about", this.el).editable({ + mode: "inline", + type: "wysiwyg", + name: "about", + wysiwyg: {}, + css: { + 'max-width': '300px' + }, + success: function(response, newValue) { + console.log("Update model with new value"); + return _this.model.save('description', newValue, { + patch: true + }); + } + }); + } + return $(".usereditable").attr('class', utils.isMe(this.model.get("id")) ? "editable editable-click" : "user-info"); + }; - UserProfileView.prototype.onRender = function() { - return window.scrollTo(0, 0); - }; + UserProfileView.prototype.onRender = function() { + return window.scrollTo(0, 0); + }; + return UserProfileView; + + })(EditableView); return UserProfileView; + }); - })(EditableView); - return UserProfileView; -}); +}).call(this); diff --git a/static/js/app/views/widgets/headerView.js b/static/js/app/views/widgets/headerView.js index 6dd3728..6bb2cee 100644 --- a/static/js/app/views/widgets/headerView.js +++ b/static/js/app/views/widgets/headerView.js @@ -1,4 +1,5 @@ // Generated by CoffeeScript 1.4.0 + /* @license @@ -8,114 +9,118 @@ Copyright (c) 2012, Fergal Moran. All rights reserved. Code provided under the BSD License: */ -var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; -define(["underscore", "marionette", "vent", "utils", "views/widgets/searchView", "views/notifications/notificationsListView", "text!/tpl/HeaderView"], function(_, Marionette, vent, utils, SearchView, NotificationsListView, Template) { - var HeaderView; - HeaderView = (function(_super) { - var NowrapRegion; +(function() { + var __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; - __extends(HeaderView, _super); + define(["underscore", "marionette", "vent", "utils", "views/widgets/searchView", "views/notifications/notificationsListView", "text!/tpl/HeaderView"], function(_, Marionette, vent, utils, SearchView, NotificationsListView, Template) { + var HeaderView; + HeaderView = (function(_super) { + var NowrapRegion; - function HeaderView() { - return HeaderView.__super__.constructor.apply(this, arguments); - } + __extends(HeaderView, _super); - NowrapRegion = Marionette.Region.extend({ - open: function(view) { - return this.$el.html(view.$el.html()); + function HeaderView() { + return HeaderView.__super__.constructor.apply(this, arguments); } - }); - HeaderView.prototype.template = _.template(Template); + NowrapRegion = Marionette.Region.extend({ + open: function(view) { + return this.$el.html(view.$el.html()); + } + }); - HeaderView.prototype.className = "navbar navbar-default"; + HeaderView.prototype.template = _.template(Template); - HeaderView.prototype.events = { - "click #header-random-button": "showRandom", - "click #header-play-pause-button": "togglePlayState", - "click #header-login-button": "login", - "click #header-donate-button": "donate", - "click #header-live-button.btn-success": "playLive", - "click #header-live-button.btn-danger": "pauseLive" - }; + HeaderView.prototype.className = "navbar navbar-default"; - HeaderView.prototype.ui = { - liveButton: "#header-live-button" - }; + HeaderView.prototype.events = { + "click #header-random-button": "showRandom", + "click #header-play-pause-button": "togglePlayState", + "click #header-login-button": "login", + "click #header-donate-button": "donate", + "click #header-live-button.btn-success": "playLive", + "click #header-live-button.btn-danger": "pauseLive" + }; - HeaderView.prototype.regions = { - searchRegion: "#header-search", - notificationsRegion: { - selector: "#header-notifications" - } - }; + HeaderView.prototype.ui = { + liveButton: "#header-live-button" + }; - HeaderView.prototype.initialize = function() { - this.render(); - this.listenTo(vent, "mix:play", this.trackPlaying); - return this.listenTo(vent, "mix:pause", this.trackPaused); - }; + HeaderView.prototype.regions = { + searchRegion: "#header-search", + notificationsRegion: { + selector: "#header-notifications" + } + }; - HeaderView.prototype.onShow = function() { - this.searchRegion.show(new SearchView()); - if (com.podnoms.settings.currentUser !== -1) { - return this.notificationsRegion.show(new NotificationsListView()); - } - }; + HeaderView.prototype.initialize = function() { + this.render(); + this.listenTo(vent, "mix:play", this.trackPlaying); + return this.listenTo(vent, "mix:pause", this.trackPaused); + }; - HeaderView.prototype.showRandom = function() { - console.log("headerView: showRandom"); - return vent.trigger("mix:random"); - }; + HeaderView.prototype.onShow = function() { + this.searchRegion.show(new SearchView()); + if (com.podnoms.settings.currentUser !== -1) { + return this.notificationsRegion.show(new NotificationsListView()); + } + }; - HeaderView.prototype.login = function() { - return vent.trigger('app:login'); - }; + HeaderView.prototype.showRandom = function() { + console.log("headerView: showRandom"); + return vent.trigger("mix:random"); + }; - HeaderView.prototype.donate = function() { - return vent.trigger('app:donate'); - }; + HeaderView.prototype.login = function() { + return vent.trigger('app:login'); + }; - HeaderView.prototype.logout = function() { - return utils.showAlert("Success", "You are now logged out"); - }; + HeaderView.prototype.donate = function() { + return vent.trigger('app:donate'); + }; - HeaderView.prototype.trackChanged = function(data) { - $(this.el).find("#track-description").text(data.title); - return $(this.el).find("#track-description").attr("href", "#" + data.item_url); - }; + HeaderView.prototype.logout = function() { + return utils.showAlert("Success", "You are now logged out"); + }; - HeaderView.prototype.trackPlaying = function(data) { - $(this.el).find("#header-play-button-icon").removeClass("icon-play"); - return $(this.el).find("#header-play-button-icon").addClass("icon-pause"); - }; + HeaderView.prototype.trackChanged = function(data) { + $(this.el).find("#track-description").text(data.title); + return $(this.el).find("#track-description").attr("href", "#" + data.item_url); + }; - HeaderView.prototype.trackPaused = function(data) { - $(this.el).find("#header-play-button-icon").removeClass("icon-pause"); - return $(this.el).find("#header-play-button-icon").addClass("icon-play"); - }; + HeaderView.prototype.trackPlaying = function(data) { + $(this.el).find("#header-play-button-icon").removeClass("icon-play"); + return $(this.el).find("#header-play-button-icon").addClass("icon-pause"); + }; - HeaderView.prototype.render = function() { - $(this.el).html(this.template()); - return this; - }; + HeaderView.prototype.trackPaused = function(data) { + $(this.el).find("#header-play-button-icon").removeClass("icon-pause"); + return $(this.el).find("#header-play-button-icon").addClass("icon-play"); + }; - HeaderView.prototype.playLive = function() { - console.log("HeaderView: playLive"); - $(this.ui.liveButton).toggleClass('btn-success', false).toggleClass('btn-danger', true); - return vent.trigger('live:play'); - }; + HeaderView.prototype.render = function() { + $(this.el).html(this.template()); + return this; + }; - HeaderView.prototype.pauseLive = function() { - console.log("HeaderView: pauseLive"); - $(this.ui.liveButton).toggleClass('btn-success', true).toggleClass('btn-danger', false); - return vent.trigger('live:pause'); - }; + HeaderView.prototype.playLive = function() { + console.log("HeaderView: playLive"); + $(this.ui.liveButton).toggleClass('btn-success', false).toggleClass('btn-danger', true); + return vent.trigger('live:play'); + }; + HeaderView.prototype.pauseLive = function() { + console.log("HeaderView: pauseLive"); + $(this.ui.liveButton).toggleClass('btn-success', true).toggleClass('btn-danger', false); + return vent.trigger('live:pause'); + }; + + return HeaderView; + + })(Marionette.Layout); return HeaderView; + }); - })(Marionette.Layout); - return HeaderView; -}); +}).call(this); diff --git a/templates/views/_MixItemInsert.html b/templates/views/_MixItemInsert.html index 11c4f30..d7ae390 100755 --- a/templates/views/_MixItemInsert.html +++ b/templates/views/_MixItemInsert.html @@ -54,7 +54,7 @@
<% _.each(genres, function(i) { %> - <%= i.description %> + <%= i.description %> <% }); %>