Added quick feedback form

This commit is contained in:
Stefan Zermatten
2015-05-12 09:32:28 +02:00
parent 43c4122fe3
commit 95b7b66390
6 changed files with 116 additions and 0 deletions

View File

@@ -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);
},
});

View File

@@ -0,0 +1,28 @@
<template name="feedback">
<div class="feedback">
<div layout horizontal>
<paper-input id="feedbackTitle" label="Title" floatinglabel></paper-input>
<paper-dropdown-menu class="typeDropdown" label="Operation" flex>
<paper-dropdown layered class="dropdown">
<core-menu class="menu typeMenu" selected="general">
<paper-item name="general">General Feedback</paper-item>
<paper-item name="bug">Bug</paper-item>
<paper-item name="change">Suggested Change</paper-item>
<paper-item name="feature">Feature Request</paper-item>
</core-menu>
</paper-dropdown>
</paper-dropdown-menu>
</div>
<div layout horizontal center>
<div>Importance</div>
<paper-slider id="severity" max=10 pin value=5 snap></paper-slider>
</div>
<paper-input-decorator label="Description" floatinglabel layout vertical>
<paper-autogrow-textarea>
<textarea id="feedbackDescription"></textarea>
</paper-autogrow-textarea>
</paper-input-decorator>
</div>
<paper-button id="cancelButton" affirmative>Cancel</paper-button>
<paper-button id="sendButton" affirmative>Send </paper-button>
</template>

View File

@@ -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);
}
});

View File

@@ -13,6 +13,7 @@
<div id="navPanel">
<core-item id="homeNav" icon="home" label="Home"></core-item>
{{> characterSideList}}
<core-item id="feedback" icon="bug-report" label="Send Feedback"></core-item>
</div>
</core-header-panel>
<core-animated-pages main

View File

@@ -1,3 +1,7 @@
Template.layout.onCreated(function() {
this.subscribe("user");
});
Template.layout.rendered = function() {
$(window).on("popstate", GlobalUI.popStateHandler);
};
@@ -23,4 +27,11 @@ Template.layout.events({
"tap #profileLink": function(event, instance){
Router.go("profile");
},
"tap #feedback": function(event, instance) {
GlobalUI.showDialog({
heading: "Feedback",
template: "feedback",
fullOnMobile: true,
});
},
});

View File

@@ -0,0 +1,3 @@
Meteor.publish("user", function(){
return Meteor.users.find(this.userId);
});