浏览代码

finished feedback page

Akira Laine 9 年之前
父节点
当前提交
8599dc259b

+ 7 - 0
app/client/app.css

@@ -1062,3 +1062,10 @@ input[type="checkbox"]:checked + #two-label:after {
     height: auto;
 }
 
+.lowercase{
+    text-transform: none !important;
+}
+
+.modal-trigger{
+    margin-left: 10px;
+}

+ 1 - 1
app/client/scripts/events.js

@@ -230,7 +230,7 @@ Template.alertsDashboard.events({
 Template.feedback.events({
     "click #feedback_submit": function(){
         if($("#feedback_message").val().length !== 0){
-            Meteor.call("sendFeedback", Meteor.user().profile.username, $("#feedback_message").val());
+            Meteor.call("sendFeedback", $("#feedback_message").val());
         }
     }
 });

+ 6 - 1
app/client/scripts/helpers.js

@@ -87,7 +87,12 @@ Template.banned.helpers({
 
 Template.feedback.helpers({
     feedback: function(){
-        return Feedback.find({});
+        var data = Feedback.findOne();
+        if(data !== undefined) {
+            return data.messages.reverse();
+        } else{
+            return [];
+        }
     }
 })
 

+ 4 - 0
app/client/scripts/onCreated.js

@@ -49,6 +49,10 @@ Template.login.onCreated(function() {
     });
 });
 
+Template.feedback.onCreated(function(){
+    Meteor.subscribe("feedback");
+})
+
 Template.profile.onCreated(function() {
     var parts = Router.current().url.split('/');
     var username = parts.pop();

+ 15 - 7
app/client/templates/feedback.html

@@ -3,17 +3,25 @@
     <main>
         <h3 class="black-text thin text-center">Feedback</h3>
         <a class="waves-effect waves-light btn modal-trigger" href="#modal1">Send New Feedback</a>
-        {{#each feedback}}
-            <p>
-                {{user}}
-                {{message}}
-            </p>
-        {{/each}}
+        <div class="row">
+            {{#each feedback}}
+                <div class="col s12 m4">
+                    <div class="card blue-grey darken-1">
+                        <div class="card-content white-text">
+                            <p>{{message}}</p>
+                        </div>
+                        <div class="card-action">
+                            <a class="lowercase" href="/u/{{username}}">{{username}}</a>
+                        </div>
+                    </div>
+                </div>
+            {{/each}}
+        </div>
     </main>
     <div id="modal1" class="modal">
         <div class="modal-content teal darken-4">
             <div class="input-field">
-                <textarea id="feedback_message" class="materialize-textarea" length="100"></textarea>
+                <textarea id="feedback_message" class="materialize-textarea" length="500"></textarea>
                 <label for="feedback_message">Give us your feedback and suggestions!</label>
             </div>
             <a id="feedback_submit" class="waves-effect waves-light btn">Submit</a>

+ 1 - 1
app/database/schemas.js

@@ -171,7 +171,7 @@ Schemas.Feedback = new SimpleSchema({
         type: Object,
         label: "Object for each feedback"
     },
-    "messages.$.user": {
+    "messages.$.username": {
         type: String,
         label: "Username of user who submitted feedback"
     },

+ 14 - 2
app/server/server.js

@@ -503,6 +503,10 @@ Meteor.publish("isModerator", function () {
     return Meteor.users.find({_id: this.userId, "profile.rank": "moderator"});
 });
 
+Meteor.publish("feedback", function(){
+    return Feedback.find();
+})
+
 function isAdmin() {
     var userData = Meteor.users.find(Meteor.userId());
     if (Meteor.userId() && userData.count !== 0 && userData.fetch()[0].profile.rank === "admin") {
@@ -1139,8 +1143,16 @@ Meteor.methods({
             throw new Meteor.Error(403, "Invalid permissions.");
         }
     },
-    sendFeedback: function(user, message){
-
+    sendFeedback: function(message){
+        if(Meteor.userId() && !isBanned()) {
+            HTTP.call("GET", "http://www.wdyl.com/profanity?q=" + encodeURIComponent(message), function (err, res) {
+                if (res.content.indexOf("true") > -1) {
+                    return true;
+                } else {
+                    Feedback.update({}, {$push: {messages: {username: Meteor.user().profile.username, message: message}}});
+                }
+            });
+        }
     }
 });