Added quick feedback form
This commit is contained in:
58
rpg-docs/Model/Meta/Reports.js
Normal file
58
rpg-docs/Model/Meta/Reports.js
Normal 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);
|
||||
},
|
||||
});
|
||||
28
rpg-docs/client/views/feedback/feedback.html
Normal file
28
rpg-docs/client/views/feedback/feedback.html
Normal 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>
|
||||
15
rpg-docs/client/views/feedback/feedback.js
Normal file
15
rpg-docs/client/views/feedback/feedback.js
Normal 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);
|
||||
}
|
||||
});
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
3
rpg-docs/server/publications/user.js
Normal file
3
rpg-docs/server/publications/user.js
Normal file
@@ -0,0 +1,3 @@
|
||||
Meteor.publish("user", function(){
|
||||
return Meteor.users.find(this.userId);
|
||||
});
|
||||
Reference in New Issue
Block a user