# Pony.fm - A community for pony fan music. # Copyright (C) 2015 Peter Deltchev # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . #window.pfm.preloaders['account-track'] = [ # 'account-tracks', 'account-albums', 'taxonomies', '$state' # (tracks, albums, taxonomies, state) -> # $.when.all [albums.refresh(), taxonomies.refresh(), tracks.getEdit(state.params.track_id, true)] #] angular.module('ponyfm').controller "account-track", [ '$scope', '$state', 'taxonomies', '$dialog', 'account-albums', 'account-tracks', 'images' ($scope, $state, taxonomies, $dialog, albums, tracks, images) -> $scope.trackId = $state.params.track_id # $scope.isDirty = false # $scope.isSaving = false # $scope.taxonomies = taxonomies # $scope.selectedSongsTitle = 'None' # $scope.selectedSongs = {} # $scope.albums = [] # $scope.selectedAlbum = null # # albumsDb = {} # albums.refresh().done (albums) -> # $scope.albums.legnth = 0 # albumsDb = {} # for album in albums # albumsDb[album.id] = album # $scope.albums.push album # # $scope.selectAlbum = (album) -> # $scope.selectedAlbum = album # $scope.edit.album_id = if album then album.id else null # $scope.isDirty = true # # $scope.setCover = (image, type) -> # delete $scope.edit.cover_id # delete $scope.edit.cover # # if image == null # $scope.edit.remove_cover = true # else if type == 'file' # $scope.edit.cover = image # else if type == 'gallery' # $scope.edit.cover_id = image.id # # $scope.isDirty = true # # updateSongDisplay = () -> # if _.size $scope.selectedSongs # $scope.selectedSongsTitle = (_.map _.values($scope.selectedSongs), (s) -> s.title).join(', ') # else # $scope.selectedSongsTitle = 'None' # # $scope.toggleSong = (song) -> # $scope.isDirty = true # if $scope.selectedSongs[song.id] # delete $scope.selectedSongs[song.id] # else # $scope.selectedSongs[song.id] = song # # updateSongDisplay() # # $scope.updateIsVocal = () -> # delete $scope.errors.lyrics if !$scope.edit.is_vocal # # $scope.updateTrack = () -> # xhr = new XMLHttpRequest() # xhr.onload = -> $scope.$apply -> # $scope.isSaving = false # if xhr.status != 200 # errors = # if xhr.getResponseHeader('content-type') == 'application/json' # $.parseJSON(xhr.responseText).errors # else # ['There was an unknown error!'] # # $scope.errors = {} # _.each errors, (value, key) -> $scope.errors[key] = value.join ', ' # return # # track = $.parseJSON(xhr.responseText) # # trackDbItem = $scope.data.selectedTrack # trackDbItem.title = $scope.edit.title # trackDbItem.is_explicit = $scope.edit.is_explicit # trackDbItem.is_vocal = $scope.edit.is_vocal # trackDbItem.genre_id = $scope.edit.genre_id # trackDbItem.is_published = true # trackDbItem.cover_url = track.real_cover_url # $scope.isDirty = false # $scope.errors = {} # images.refresh true # # formData = new FormData(); # _.each $scope.edit, (value, name) -> # if name == 'cover' # return if value == null # if typeof(value) == 'object' # formData.append name, value, value.name # else if value != null # formData.append name, value # # if parseInt($scope.edit.track_type_id) == 2 # formData.append 'show_song_ids', _.map(_.values($scope.selectedSongs), (s) -> s.id).join() # # xhr.open 'POST', '/api/web/tracks/edit/' + $scope.edit.id, true # xhr.setRequestHeader 'X-XSRF-TOKEN', $.cookie('XSRF-TOKEN') # $scope.isSaving = true # xhr.send formData # # # tracks.getEdit($state.params.track_id).done (track) -> # $scope.edit = # id: track.id # title: track.title # description: track.description # lyrics: track.lyrics # is_explicit: track.is_explicit # is_downloadable: track.is_downloadable # is_vocal: track.is_vocal # license_id: track.license_id # genre_id: track.genre_id # track_type_id: track.track_type_id # released_at: if track.released_at then track.released_at.date else '' # remove_cover: false # cover: track.cover_url # album_id: track.album_id # is_published: track.is_published # is_listed: track.is_listed # # $scope.selectedAlbum = if track.album_id then albumsDb[track.album_id] else null # $scope.selectedSongs = {} # $scope.selectedSongs[song.id] = song for song in track.show_songs # updateSongDisplay() # # $scope.touchModel = -> $scope.isDirty = true # # $scope.deleteTrack = (track) -> # $dialog.messageBox('Delete ' + track.title, 'Are you sure you want to delete "' + track.title + '"?', [ # {result: 'ok', label: 'Yes', cssClass: 'btn-danger'}, {result: 'cancel', label: 'No', cssClass: 'btn-primary'} # ]).open().then (res) -> # return if res == 'cancel' # $.post('/api/web/tracks/delete/' + track.id) # .then -> $scope.$apply -> # $scope.$emit 'track-deleted' # $state.transitionTo 'account.tracks' # # $scope.$on '$locationChangeStart', (e) -> # return if !$scope.isDirty # e.preventDefault() if !confirm('Are you sure you want to leave this page without saving your changes?') ]