Selaa lähdekoodia

Added option to toggle party mode.

KrisVos130 8 vuotta sitten
vanhempi
sitoutus
dc7b841452

+ 12 - 0
app/client/scripts/events.js

@@ -1663,6 +1663,7 @@ Template.communityStation.events({
         var desc = $("#edit_room_description").val();
         var privacy = $("#edit_room_privacy").val();
         var room = CommunityStations.findOne({name: name});
+        var partyMode = $("#partyModeEnabled").is(":checked");
         if (desc !== room.roomDesc) {
             Meteor.call("changeCommunityStationDescription", name, desc, function (err) {
                 if (err) {
@@ -1696,6 +1697,17 @@ Template.communityStation.events({
                 }
             });
         }
+        if (partyMode !== room.partyModeEnabled) {
+            Meteor.call("setCommunityStationPartyMode", name, partyMode, function (err) {
+                if (err) {
+                    var $toastContent = $('<span><strong>Party mode not changed.</strong> ' + err.reason + '</span>');
+                    Materialize.toast($toastContent, 2000);
+                } else {
+                    var $toastContent = $('<span><strong>Party mode changed.</strong></span>');
+                    Materialize.toast($toastContent, 2000);
+                }
+            });
+        }
         $("#edit_room_modal").closeModal();
     },
     "input #volume_slider": function() {

+ 18 - 0
app/client/scripts/helpers.js

@@ -556,6 +556,24 @@ Template.room.helpers({
 });
 
 Template.communityStation.helpers({
+    partyModeChecked: function() {
+        var name = Session.get("CommunityStationName");
+        var room = CommunityStations.findOne({name: name});
+        if (room.partyModeEnabled === true) {
+            return "checked";
+        } else {
+            return "";
+        }
+    },
+    partyMode: function() {
+        var name = Session.get("CommunityStationName");
+        var room = CommunityStations.findOne({name: name});
+        if (room.partyModeEnabled === true) {
+            return true;
+        } else {
+            return false;
+        }
+    },
     singleVideoResults: function() {
         return Session.get("songResults");
     },

+ 4 - 0
app/client/templates/communityStation.html

@@ -184,6 +184,10 @@
                 </select>
                 <label>Room Privacy</label>
             </div>
+            <p>
+                <input type="checkbox" id="partyModeEnabled" {{partyModeChecked}} />
+                <label for="partyModeEnabled">Party Mode Enabled</label>
+            </p>
             <button class="btn waves-effect waves-light" id="save_edit_room_changes">Save Changes</button>
             <button class="btn waves-effect waves-light right red" id="delete_room">Delete Room</button>
         </div>

+ 5 - 0
app/lib/schemas.js

@@ -362,6 +362,11 @@ Schemas.CommunityStation = new SimpleSchema({
         type: Number,
         label: "Index of the previous song",
         defaultValue: 0
+    },
+    partyModeEnabled: {
+        type: Boolean,
+        label: "Party mode",
+        defaultValue: false
     }
 });
 

+ 8 - 0
app/server/server.js

@@ -963,6 +963,14 @@ Meteor.updatedMethods({
             throw new Meteor.Error(403, "Invalid permissions.");
         }
     },
+    setCommunityStationPartyMode: function(roomName, partyMode) {
+        if ((isAdmin() || isCommunityStationOwner(roomName)) && !isBanned()) {
+            partyMode = (typeof partyMode === "boolean") ? partyMode : false;
+            CommunityStations.update({name: roomName}, {$set: {partyModeEnabled: partyMode}});
+        } else {
+            throw new Meteor.Error(403, "Invalid permissions.");
+        }
+    },
     addVideoToPrivatePlaylist: {
         code: function(name, id) {
             var pl = PrivatePlaylists.findOne({owner: Meteor.userId(), name: name});

+ 3 - 0
app/server/updateDatabase.js

@@ -0,0 +1,3 @@
+Meteor.startup(function() {
+    CommunityStations.update({partyModeEnabled: {$exists: false}}, {$set: {partyModeEnabled: false}});
+});