Add about page with feedback functionality

This commit is contained in:
2014-10-02 17:06:52 +02:00
parent 7c03b4c32c
commit b8ef4943bd
22 changed files with 153 additions and 10 deletions
@@ -0,0 +1,19 @@
App.AboutController = Ember.Controller.extend
feedback_sending: false
feedback_received: false
feedback: ''
submission_error: ''
actions:
submitFeedback: ->
delay = (ms, func) => setTimeout func.bind(@), ms
unless @get('feedback')
@set 'submission_error', t('about.feedback.empty_content')
delay 2000, ->
@set 'submission_error', ''
return
@set 'feedback_sending', true
@send 'sendFeedback', @get('feedback'), (res)=>
@set 'feedback', false
@set 'feedback_sending', false
@set 'feedback_received', true
@@ -8,11 +8,7 @@ ControllerExtensions = Ember.Mixin.create
else
callback.call(@, emberError)
handler
showModal: (options={})->
$(document).foundation('reflow') # needed (stupid!!!)
@confirm_cancel = options.cancel
@set 'controllers.application.modal.title', options.title if options.title
@set 'controllers.application.modal.content', options.content if options.content
Ember.ArrayController.reopen ControllerExtensions
Ember.Controller.reopen ControllerExtensions
Ember.ObjectController.reopen ControllerExtensions
@@ -15,4 +15,5 @@ App.Router.map ->
@route 'settings'
@route 'product_orders'
@route 'error'
@route 'about'
@route 'scanning'
@@ -31,6 +31,10 @@ App.ApplicationRoute = Ember.Route.extend
body: options.body
cancel: options.cancel
ok: options.ok
sendFeedback: (feedback, callback)->
return unless feedback
$.post $user_feedback_path, feedback: feedback, callback
listNeedsPayment: ->
@get('controller').secured ->
@set 'list.needs_payment', true
@@ -1,7 +1,7 @@
App.SelectQrcodeRoute = Ember.Route.extend
setupController: (controller)->
$.ajax
url: Routes.select_qrcode_path()
url: '/select_qrcode'
type: "GET"
dataType: 'json'
async: false
@@ -0,0 +1,17 @@
.row: .large-12.columns
h2.title=t 'about.title'
p=t 'about.body'
.feedback-container.row: .large-12.columns
h3= t 'about.feedback.title'
if feedback_sending
span.fa.fa-3x.fa-support.fa-spin
else
if feedback_received
.feedback-received=t 'about.feedback.received'
else
= textarea valueBinding="feedback" class="feedback-field"
if submission_error
.alert-box.alert= submission_error
else
button.submit-feedback-button.button{action "submitFeedback"}= t 'about.feedback.submit'
@@ -57,6 +57,10 @@ aside.side-menu
=link-to 'settings'
span.settings-icon
span= t 'settings.title'
li
=link-to 'about' class="side-menu-about"
span.about-mozo-icon
span=t 'about.title'
li.hide
a{action "openDebugger"}
span.fa.fa-wrench.fa-lg
@@ -1,5 +1,5 @@
.row
h2=t 'models.list'
h2.title=t 'models.list'
partial "list_content"
link-to 'lists' class="button"
span Go to lists
@@ -1,10 +1,8 @@
#= require jquery
#= require jquery_ujs
#= require ../app/application
#= require faye
#= require moment
#= require translations
#= require js-routes
#= require_directory .
#= require_self
#
@@ -14,7 +12,7 @@
# )(jQuery)
@Qstorage = localStorage
$.extend($translations.en, <%= I18n.t('user', locale: :en).to_json %>);
$.extend($translations.nl, <%= I18n.t('user', locale: :nl).to_json %>);
@@ -33,6 +33,10 @@ aside.side-menu
margin-right: 18px
@extend .fa
@extend .fa-gears
.about-mozo-icon
margin-right: 18px
@extend .fa
@extend .fa-info-circle
a.active
color: $current-color
@@ -0,0 +1,5 @@
.feedback-container
border-top: 1px solid #ccc
margin-top: 1em
.feedback-received
+alert($bg: $info-color)
+5
View File
@@ -197,6 +197,11 @@ class UserController < Users::ApplicationController
end
end
def feedback
UserFeedback.create(user_id: current_user.id, content: params[:feedback].to_s)
render json: {}
end
# POST /user/needs_help.json
def needs_help
respond_to do |format|
+1
View File
@@ -24,6 +24,7 @@ class User
before_save :ensure_authentication_token
has_many :error_logs
has_many :user_feedbacks
view :by_authentication_token, key: :authentication_token
view :by_email, key: :email
+5
View File
@@ -0,0 +1,5 @@
class UserFeedback
include SimplyStored::Couch
property :content
belongs_to :user
end
@@ -13,17 +13,32 @@ html lang="en"
var $data_host = 'http://data.mozo.bar';
var $event_host = '#{Qwaiter.event_host}';
var $assets_path = './assets/';
var $user_feedback_path = 'http://feedback.mozo.bar/user_feedback';
var Qstorage = window.localStorage;
Qstorage.setItem('root_url', '##root_url##');
var $platform = '##platform##';
var $obtain_token_url = 'http://mozo.bar/user/obtain_token';
var $log = function(params){$.post('http://log.mozo.bar/user_app', {log: params})};
- elsif Rails.env.production?
javascript:
var QMobile, Qwaiter, Quser;
var $data_host = null;
var $event_host = '#{Qwaiter.event_host}';
var $assets_path = '/assets/';
var $user_feedback_path = 'http://feedback.mozo.bar/user_feedback';
var Qstorage = window.localStorage;
#{user_dynamic_data_host};
#{user_dynamic_root_url};
#{user_dynamic_obtain_token_url};
var $platform = 'web'
var $log = function(params){console.log('App log:'); console.log(params);console.log('=======================================')};
- else
javascript:
var QMobile, Qwaiter, Quser;
var $data_host = null;
var $event_host = '#{Qwaiter.event_host}';
var $assets_path = '/assets/';
var $user_feedback_path = '/user_feedback';
var Qstorage = window.localStorage;
#{user_dynamic_data_host};
#{user_dynamic_root_url};