diff --git a/spa/api/v1/PlaylistResource.py b/spa/api/v1/PlaylistResource.py index ad4dc30..ccf5dff 100644 --- a/spa/api/v1/PlaylistResource.py +++ b/spa/api/v1/PlaylistResource.py @@ -7,7 +7,7 @@ from tastypie.exceptions import ImmediateHttpResponse from tastypie.http import HttpUnauthorized from tastypie.utils import trailing_slash from spa.api.v1.BackboneCompatibleResource import BackboneCompatibleResource -from spa.models import Playlist, Mix +from spa.models import Playlist, Mix, UserProfile class PlaylistResource(BackboneCompatibleResource): @@ -46,6 +46,15 @@ class PlaylistResource(BackboneCompatibleResource): bundle.obj.user = bundle.request.user.get_profile() return bundle + def dehydrate(self, bundle): + try: + bundle.data['playlist_image'] = bundle.obj.mixes.objects.all()[0].get_image_url() + except: + bundle.data['playlist_image'] = UserProfile.get_default_avatar_image() + + bundle.data['item_url'] = '/playlist/%s' % bundle.obj.slug + return bundle + def obj_update(self, bundle, skip_errors=False, **kwargs): mixes = bundle.data['mixes'] bundle.data.pop('mixes') diff --git a/static/css/dss.main.css b/static/css/dss.main.css index 677fe7f..93abc4a 100644 --- a/static/css/dss.main.css +++ b/static/css/dss.main.css @@ -775,9 +775,10 @@ img.mix-listing-image { .playlist-functions { position: absolute; - top: 8px; + top: 16px; right: 0; } -.share-button{ + +.btn-group a{ cursor: pointer; } \ No newline at end of file diff --git a/static/js/dss/app.coffee b/static/js/dss/app.coffee index a622117..fcbbcc3 100644 --- a/static/js/dss/app.coffee +++ b/static/js/dss/app.coffee @@ -116,6 +116,15 @@ true + @listenTo @vent, "playlist:share", (mode, model) -> + console.log "App(vent): playlist:share (" + mode + ")" + if (mode == "facebook") + social.sharePlaylistToFacebook(model) + else if (mode == "twitter") + social.sharePlaylistToTwitter(model) + + true + App.on "start", -> if Backbone.history Backbone.history.start diff --git a/static/js/dss/apps/mix/models/mixCollection.coffee b/static/js/dss/apps/mix/models/mixCollection.coffee index e9e21f1..a6948d0 100644 --- a/static/js/dss/apps/mix/models/mixCollection.coffee +++ b/static/js/dss/apps/mix/models/mixCollection.coffee @@ -2,6 +2,6 @@ class Models.MixCollection extends Backbone.Collection model: Models.MixItem - url:com.podnoms.settings.urlRoot + "mix/?limit=10" + url:com.podnoms.settings.urlRoot + "mix/?limit=100" Models.MixCollection \ No newline at end of file diff --git a/static/js/dss/apps/playlist/views/PlaylistDetailHeaderView.coffee b/static/js/dss/apps/playlist/views/PlaylistDetailHeaderView.coffee index e4954c9..be960f3 100644 --- a/static/js/dss/apps/playlist/views/PlaylistDetailHeaderView.coffee +++ b/static/js/dss/apps/playlist/views/PlaylistDetailHeaderView.coffee @@ -4,7 +4,14 @@ events: "click #playlist-rss-feed": "showPlaylistRssFeed" + "click .share-button": "playlistShare", showPlaylistRssFeed: (e) -> - window.open("/podcast/playlist?type=playlist&name=" + @model.get("name")) \ No newline at end of file + window.open("/podcast/playlist?type=playlist&name=" + @model.get("name")) + + playlistShare: (e) -> + mode = $(e.currentTarget).data("mode"); + console.log("PlaylistDetailHeaderView: " + mode) + App.vent.trigger("playlist:share", mode, @model) + diff --git a/static/js/dss/lib/social.coffee b/static/js/dss/lib/social.coffee index 86cd302..cc75926 100644 --- a/static/js/dss/lib/social.coffee +++ b/static/js/dss/lib/social.coffee @@ -11,21 +11,25 @@ utils.modal "/dlg/embed/" + model.get('slug') sharePageToTwitter: (model) -> - - #We get the URL of the link - loc = $(this).attr("href") - - #We get the title of the link title = $(this).attr("title") + url = "http://" + window.location.host + model.get("item_url") + text = model.get("title") + window.open "http://twitter.com/share?url=#{url}&text={#text}", "twitterwindow", "height=450, width=550, top=" + ($(window).height() / 2 - 225) + ", left=" + $(window).width() / 2 + ", toolbar=0, location=0, menubar=0, directories=0, scrollbars=0" - #We trigger a new window with the Twitter dialog, in the middle of the page - window.open "http://twitter.com/share?url=" + "http://" + window.location.host + "/" + model.get("item_url") + "&text=" + model.get("title"), "twitterwindow", "height=450, width=550, top=" + ($(window).height() / 2 - 225) + ", left=" + $(window).width() / 2 + ", toolbar=0, location=0, menubar=0, directories=0, scrollbars=0" + sharePlaylistToTwitter: (model) -> + url = "http://" + window.location.host + model.get("item_url") + text = model.get("name") + window.open "http://twitter.com/share?url=#{url}&text={#text}", "twitterwindow", "height=450, width=550, top=" + ($(window).height() / 2 - 225) + ", left=" + $(window).width() / 2 + ", toolbar=0, location=0, menubar=0, directories=0, scrollbars=0" - sharePageToFacebook: (model) -> + _initFacebook: -> FB.init({ appId : '154504534677009', xfbml : true }); + + sharePageToFacebook: (model) -> + @_initFacebook() + FB.getLoginStatus (oResponse) -> if oResponse.status is "connected" FB.ui @@ -42,3 +46,20 @@ else utils.showError "Error", "Failure sharing post" + sharePlaylistToFacebook: (model) -> + @_initFacebook() + FB.getLoginStatus (oResponse) -> + if oResponse.status is "connected" + FB.ui + method: "feed" + name: "Check out this playlist on Deep South Sounds" + display: "iframe" + link: "http://" + window.location.host + "/" + model.get("item_url") + picture: model.get("playlist_image") + caption: model.get("name") + description: model.get("name") + , (response) -> + if response and response.post_id + utils.showAlert "Success", "Post shared to facebook" + else + utils.showError "Error", "Failure sharing post" diff --git a/static/js/dss/templates/playlistheaderview.jst b/static/js/dss/templates/playlistheaderview.jst index a6303e2..ed28ecc 100644 --- a/static/js/dss/templates/playlistheaderview.jst +++ b/static/js/dss/templates/playlistheaderview.jst @@ -2,17 +2,22 @@

<%= name %>

+
-
-
- - +