Selaa lähdekoodia

Merge branch 'master' of https://github.com/Musare/Musare

Akira Laine 9 vuotta sitten
vanhempi
sitoutus
6e8e5570f0

+ 47 - 3
app/client/app.css

@@ -807,7 +807,7 @@ footer .fa {
     margin: 0 auto;
 }
 
-#song-results {
+#song-results, #youtube-import-queue {
     margin: 0 auto;
     color: white;
     margin-top: 1em;
@@ -815,6 +815,10 @@ footer .fa {
     text-align: center;
 }
 
+.youtube-import-queue-item {
+    position: relative !important;
+}
+
 #song-results > div {
     margin: 0;
     padding: 5px;
@@ -868,7 +872,13 @@ footer .fa {
 .hidden {
     visibility: hidden;
 }
-
+.hidden-2 {
+    visibility: hidden;
+    height: 0px;
+    width: 0px;
+    margin: 0;
+    padding: 0;
+}
 .footerButtons {
     background: none !important;
     border: none;
@@ -1254,6 +1264,9 @@ nav form input[type="image"]{
     font-size: 20px;
     color: white;
 }
+.chat-message:first-child {
+    margin-top: 30px;
+}
 #chat-ul, #global-chat-ul {
     overflow-y: hidden;
     margin: 0;
@@ -1559,4 +1572,35 @@ input[type="checkbox"]:checked + #two-label:after {
 .user-num{
     font-size: 2em !important;
     line-height: 100px;
-}
+}
+
+.remove-import-song {
+    position: absolute;
+    right: 0px;
+    top: 0px;
+}
+
+.remove-import-song:hover {
+    color: #0e90d2;
+    cursor: pointer;
+}
+
+#current-arrow {
+    color: #0e90d2;
+}
+#import-progress-container {
+    width: 304px;
+    margin-right: auto;
+    margin-left: auto;
+    margin-top: 10px;
+    color: #50a3a2;
+}
+
+#add-youtube-playlist {
+    background-color: green;
+    color: white;
+    margin-top: 10px;
+    margin-left: auto;
+    margin-right: auto;
+    display: block;
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 546 - 789
app/client/client.js


+ 20 - 20
app/client/head.html

@@ -31,6 +31,7 @@
     <script src="/bootstrap-slider.min.js"></script>
     <script src="/jquery.textcomplete.min.js"></script>
     <script src="/emojidropdown.js"></script>
+    <script src="https://connect.soundcloud.com/sdk-2.0.0.js"></script>
     <script type="application/javascript">
         addEventListener("load", function() {
             setTimeout(hideURLbar, 0);
@@ -39,27 +40,8 @@
         function hideURLbar() {
             window.scrollTo(0, 1);
         }
-    </script>
-    <script src="https://connect.soundcloud.com/sdk-2.0.0.js"></script>
-    <script>
-        function init() {
-            SC.initialize({
-                client_id: "577d3fbbdb5fe05bb4af698d686508fe"
-            });
-        }
-        init();
-    </script>
-    <script>
-        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-                    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-        ga('create', 'UA-69432115-1', 'auto');
-        ga('send', 'pageview');
 
-    </script>
-    <script type="text/javascript">
+        // Doorbell Initialising
         window.doorbellOptions = {
             strings: {
                 'email-input-placeholder': 'Your email address (optional)'
@@ -70,10 +52,28 @@
             var g = d.createElement(t);g.id = 'doorbellScript';g.type = 'text/javascript';g.async = true;g.src = 'https://embed.doorbell.io/button/2408?t='+(new Date().getTime());(d.getElementsByTagName('head')[0]||d.getElementsByTagName('body')[0]).appendChild(g);
         }(document, 'script'));
 
+        // YouTube Iniialising
         Session.set("YTLoaded", false);
 
         function onYouTubeIframeAPIReady() {
             Session.set("YTLoaded", true);
         }
+
+        // Google Analytics Initialising
+        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+                    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+        ga('create', 'UA-69432115-1', 'auto');
+        ga('send', 'pageview');
+
+        // SoundCloud initialising
+        function init() {
+            SC.initialize({
+                client_id: "577d3fbbdb5fe05bb4af698d686508fe"
+            });
+        }
+        init();
     </script>
 </head>

+ 1 - 1
app/client/templates/playlist.html

@@ -3,7 +3,7 @@
     <ul id="playlist-ul">
       {{#each playlist_songs}}
         <li class="pl-item">
-            {{#if current}}<i class="fa fa-arrow-right"></i>{{/if}}
+            {{#if current}}<i class="fa fa-arrow-right" id="current-arrow"></i>{{/if}}
             <p style="float:right;padding-right:10px;font-weight:900">{{formatTime duration}}</p>
             <strong>{{title}}</strong>
             <p id="pl-artist">{{artist}}</p>

+ 12 - 2
app/client/templates/room.html

@@ -176,7 +176,7 @@
                                 <option name="single" id="select_single" title="Add a single video to the queue.">Single Video</option>
                                 <option name="playlist" id="select_playlist" title="Add all video's in a playlist to the queue.">Playlist</option>
                             </select>
-
+                            <hr>
                             <div id="search-info">
                                 <select name="type" id="search_type" class="song-input-select">
                                     <option name="youtube" id="search_youtube">YouTube</option>
@@ -204,8 +204,18 @@
                                 <button type="button" id="add-song-button" class="button">Add Song</button>
                             </div>
 
-                            <div id="playlist-buttons" style="display:none">
+                            <div id="playlist-import" style="display:none">
+                                <input type="text" id="youtube-playlist-input" class="song-input" placeholder="Playlist URL"/>
                                 <button id="youtube-playlist-button" class="button">Import YouTube Playlist</button>
+                                <button id="add-youtube-playlist" class="button hidden-2">Add Songs To Queue</button>
+                                <div class="progress" id="import-progress-container">
+                                    <div id="import-progress" class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%; min-width: 2em;">
+                                        0%
+                                    </div>
+                                </div>
+                                <div id="playlist-import-queue">
+
+                                </div>
                             </div>
 
                             <!--small id="search-alert">Searching for a song fills out the above fields automatically, but you will still have to verify them.</small-->

+ 19 - 4
app/server/server.js

@@ -69,11 +69,19 @@ function checkUsersPR() {
         //not sure what these are, i count none in my tests
         //var usubs = connection._meteorSession._universalSubs;
     });
+    var emptyStations = [];
+    stations.forEach(function(station) {
+        emptyStations.push(station);
+    });
     for (var key in output) {
-        getStation(key, function() {
+        getStation(key, function(station) {
+            emptyStations.splice(emptyStations.indexOf(station), 1);
             Rooms.update({type: key}, {$set: {users: output[key]}});
         });
     }
+    emptyStations.forEach(function(emptyStation) {
+        Rooms.update({type: emptyStation.type}, {$set: {users: 0}});
+    });
     return output;
 }
 
@@ -862,6 +870,7 @@ Meteor.methods({
     addSongToQueue: function(type, songData) {
         if (Meteor.userId() && !isBanned()) {
             type = type.toLowerCase();
+            var userId = Meteor.userId();
             if (Rooms.find({type: type}).count() === 1) {
                 if (Queues.find({type: type}).count() === 0) {
                     Queues.insert({type: type, songs: []});
@@ -887,10 +896,14 @@ Meteor.methods({
                                     likes: songData.likes,
                                     dislikes: songData.dislikes,
                                     img: songData.img,
-                                    type: songData.type
+                                    type: songData.type,
+                                    requestedBy: userId
                                 }
                             }
                         });
+                        var songsRequested = (Meteor.user().profile !== undefined && Meteor.user().profile.statistics !== undefined && Meteor.user().profile.statistics.songsRequested !== undefined) ? Meteor.user().profile.statistics.songsRequested : 0;
+                        songsRequested++;
+                        Meteor.users.update(Meteor.userId(), {$set: {"profile.statistics.songsRequested": songsRequested}}); // TODO Make mongo query use $inc correctly.
                         return true;
                     } else {
                         throw new Meteor.Error(500, "Am error occured.");
@@ -963,7 +976,7 @@ Meteor.methods({
                 if (Playlists.find({type: type}).count() === 0) {
                     Playlists.insert({type: type, songs: []});
                 }
-                var requiredProperties = ["type", "mid", "id", "title", "artist", "duration", "skipDuration", "img", "likes", "dislikes"];
+                var requiredProperties = ["type", "mid", "id", "title", "artist", "duration", "skipDuration", "img", "likes", "dislikes", "requestedBy"];
                 if (songData !== undefined && Object.keys(songData).length === requiredProperties.length) {
                     for (var property in requiredProperties) {
                         if (songData[requiredProperties[property]] === undefined) {
@@ -982,7 +995,9 @@ Meteor.methods({
                                 img: songData.img,
                                 type: songData.type,
                                 likes: Number(songData.likes),
-                                dislikes: Number(songData.dislikes)
+                                dislikes: Number(songData.dislikes),
+                                requesedBy: songData.requestedBy,
+                                approvedBy: Meteor.userId()
                             }
                         }
                     });

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä