diff --git a/rpg-docs/client/views/GeneralCSS/globalDetail.css b/rpg-docs/client/views/GeneralCSS/globalDetail.css index d1fb07ec..30196b18 100644 --- a/rpg-docs/client/views/GeneralCSS/globalDetail.css +++ b/rpg-docs/client/views/GeneralCSS/globalDetail.css @@ -29,7 +29,7 @@ padding: 24px; } -html /deep/ .red-button { +html /deep/ .red-button:not([disabled]) { background: #d23f31; color: #fff; margin-top: 16px; diff --git a/rpg-docs/client/views/character/characterSettings/shareDialog.html b/rpg-docs/client/views/character/characterSettings/shareDialog.html index f205eba6..e3e8ec39 100644 --- a/rpg-docs/client/views/character/characterSettings/shareDialog.html +++ b/rpg-docs/client/views/character/characterSettings/shareDialog.html @@ -1,24 +1,26 @@ diff --git a/rpg-docs/client/views/character/characterSettings/shareDialog.js b/rpg-docs/client/views/character/characterSettings/shareDialog.js index 6271b53c..f8b65b97 100644 --- a/rpg-docs/client/views/character/characterSettings/shareDialog.js +++ b/rpg-docs/client/views/character/characterSettings/shareDialog.js @@ -1,29 +1,55 @@ -Template.shareDialog.helpers({ +Template.shareDialog.onCreated(function(){ + this.userId = new ReactiveVar(); +}); +Template.shareDialog.helpers({ + readers: function(){ + var char = Characters.findOne(this._id, {fields: {readers: 1}}); + return char && char.readers; + }, + writers: function(){ + var char = Characters.findOne(this._id, {fields: {writers: 1}}); + return char && char.writers; + }, + shareButtonDisabled: function(){ + return !Template.instance().userId.get(); + }, + userFindError: function(){ + if (!Template.instance().userId.get()){ + return "User not found"; + } + } }); Template.shareDialog.events({ - "tap #shareButton": function(event, instance){ - var self = this; + "input #userNameOrEmailInput, change #userNameOrEmailInput": function(event, instance){ var userName = instance.find("#userNameOrEmailInput").value; - var permission = instance.find("#accessLevelMenu").value; - Meteor.call("getUserId", userName, function (err, result) { - if(err){ - this.userFindError = true; - } else{ - if(permission === "write"){ - Characters.update(self._id, { - $push: {writers: result}, - $pull: {readers: result} - }); - } else { - Characters.update(self._id, { - $push: {readers: result}, - $pull: {writers: result} - }); - } - GlobalUI.closeDialog(); - } - }); + instance.userId.set(undefined); + Meteor.call("getUserId", userName, function (err, result) { + if(err){ + console.error(err); + } else{ + console.log(result); + instance.userId.set(result); + } + }); + }, + "tap #shareButton": function(event, instance){ + var self = this; + var permission = instance.find("#accessLevelMenu").selected; + if(!permission) throw "no permission set"; + var userId = instance.userId.get(); + if(!userId) return; + if(permission === "write"){ + Characters.update(self._id, { + $addToSet: {writers: userId}, + $pull: {readers: userId} + }); + } else { + Characters.update(self._id, { + $addToSet: {readers: userId}, + $pull: {writers: userId} + }); + } } }); diff --git a/rpg-docs/client/views/layout/imports.html b/rpg-docs/client/views/layout/imports.html index 9f7bff68..9d25c4e2 100644 --- a/rpg-docs/client/views/layout/imports.html +++ b/rpg-docs/client/views/layout/imports.html @@ -28,6 +28,8 @@ + + diff --git a/rpg-docs/lib/functions/shareCharacter.js b/rpg-docs/lib/functions/shareCharacter.js new file mode 100644 index 00000000..f6e66286 --- /dev/null +++ b/rpg-docs/lib/functions/shareCharacter.js @@ -0,0 +1,7 @@ +Meteor.methods({ + "getUserId": function(username){ + if(!username) return; + var user = Meteor.users.findOne({$or: [{username: username}, {"emails.address": username}]}); + return user && user._id; + } +});