From 95b7b66390c6cb0520d3cc6c594e596b953320cc Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Tue, 12 May 2015 09:32:28 +0200 Subject: [PATCH] Added quick feedback form --- rpg-docs/Model/Meta/Reports.js | 58 ++++++++++++++++++++ rpg-docs/client/views/feedback/feedback.html | 28 ++++++++++ rpg-docs/client/views/feedback/feedback.js | 15 +++++ rpg-docs/client/views/layout/layout.html | 1 + rpg-docs/client/views/layout/layout.js | 11 ++++ rpg-docs/server/publications/user.js | 3 + 6 files changed, 116 insertions(+) create mode 100644 rpg-docs/Model/Meta/Reports.js create mode 100644 rpg-docs/client/views/feedback/feedback.html create mode 100644 rpg-docs/client/views/feedback/feedback.js create mode 100644 rpg-docs/server/publications/user.js diff --git a/rpg-docs/Model/Meta/Reports.js b/rpg-docs/Model/Meta/Reports.js new file mode 100644 index 00000000..1544ced2 --- /dev/null +++ b/rpg-docs/Model/Meta/Reports.js @@ -0,0 +1,58 @@ +Reports = new Mongo.Collection("reports"); + +Schemas.Report = new SimpleSchema({ + owner: { + type: String, + regEx: SimpleSchema.RegEx.Id, + }, + title: { + type: String, + trim: false, + }, + description: { + type: String, + trim: false, + }, + type: { + type: String, + allowedValues: ["bug", "change", "feature", "general"], + defaultValue: "bug", + }, + //the immediate impact of doing this action (eg. -1 rages) + severity: { + type: Number, + defaultValue: 5, + min: 1, + max: 10, + }, + metaData: { + type: Object, + blackbox: true, + }, +}); + +Reports.attachSchema(Schemas.Report); + +Meteor.methods({ + insertReport: function(report) { + check(report, { + title: String, + description: String, + type: String, + severity: Number, + metaData: Object, + }); + report.owner = this.userId; + Reports.insert(report); + }, + deleteReport: function(id) { + var user = Meteor.users.findOne(this.userId); + if (!_.contains(user.roles, "admin")){ + throw new Meteor.Error( + "not admin", + "The user must be an administrator to delete feedback" + ); + } + Reports.remove(id); + }, +}); diff --git a/rpg-docs/client/views/feedback/feedback.html b/rpg-docs/client/views/feedback/feedback.html new file mode 100644 index 00000000..154f2b7b --- /dev/null +++ b/rpg-docs/client/views/feedback/feedback.html @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/rpg-docs/client/views/feedback/feedback.js b/rpg-docs/client/views/feedback/feedback.js new file mode 100644 index 00000000..58c0d836 --- /dev/null +++ b/rpg-docs/client/views/feedback/feedback.js @@ -0,0 +1,15 @@ +Template.feedback.events({ + "tap #sendButton": function(event, instance) { + var report = {}; + report.title = instance.find("#feedbackTitle").value; + report.severity = instance.find("#severity").value; + report.type = instance.find(".typeMenu").selected; + report.description = instance.find("#feedbackDescription").value; + report.metaData = { + url: window.location.href, + session: _.pairs(Session.keys), + }; + console.log(report); + Meteor.call("insertReport", report); + } +}); diff --git a/rpg-docs/client/views/layout/layout.html b/rpg-docs/client/views/layout/layout.html index 7e2028d4..c8e5bb87 100644 --- a/rpg-docs/client/views/layout/layout.html +++ b/rpg-docs/client/views/layout/layout.html @@ -13,6 +13,7 @@