add javascript translations, darken background and other confirm

This commit is contained in:
2012-09-07 11:35:33 +02:00
parent 19232be356
commit 3adf392e54
7 changed files with 60 additions and 20 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 37 KiB

@@ -1,19 +1,24 @@
root = exports ? this root = exports ? this
root.Qrammer = root.Qwaiter=
alert: (msg) -> alert: (msg) ->
alert(msg) alert(msg)
confirm: (callback, content) -> confirm: (options) ->
content ||= 'Are you sure?' options ||= {}
content = options.content || 'Are you sure?'
title = options.title || 'Confirm'
wrapper = $('<div class="modal"></div>') wrapper = $('<div class="modal"></div>')
callback_wrapper = -> callback_wrapper = ->
wrapper.modal('hide') wrapper.modal('hide')
callback() options.ok()
callback_cancel_wrapper = ->
wrapper.modal('hide')
options.cancel() if options.cancel
header = $('<div class="modal-header"></div>') header = $('<div class="modal-header"></div>')
.append('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>') .append('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>')
.append('<h3>Confirm</h3>').appendTo(wrapper) .append('<h3>'+title+'</h3>').appendTo(wrapper)
body = $('<div class="modal-body"></div>').append('<p>'+content+'</p>').appendTo(wrapper) body = $('<div class="modal-body"></div>').append('<p>'+content+'</p>').appendTo(wrapper)
footer = $('<div class="modal-footer"></div>') footer = $('<div class="modal-footer"></div>')
.append($('<a href="#" class="btn">Close</a>').click(-> wrapper.modal('hide'))) .append($('<a href="#" class="btn">Close</a>').click(callback_cancel_wrapper))
.append($('<a href="#" class="btn btn-primary">Yes</a>').click(callback_wrapper)) .append($('<a href="#" class="btn btn-primary">Yes</a>').click(callback_wrapper))
.appendTo(wrapper) .appendTo(wrapper)
wrapper.modal() wrapper.modal()
+22 -4
View File
@@ -26,6 +26,7 @@
// require twitter/bootstrap/bootstrap-carousel // require twitter/bootstrap/bootstrap-carousel
//= require twitter/bootstrap/bootstrap-typeahead //= require twitter/bootstrap/bootstrap-typeahead
//= require twitter/bootstrap/bootstrap-affix //= require twitter/bootstrap/bootstrap-affix
//= require qwaiter
//= require_directory . //= require_directory .
//= require_self //= require_self
var path_mapping = { var path_mapping = {
@@ -34,6 +35,12 @@ var path_mapping = {
list_products_for_table: '/user/list_products_for_table', list_products_for_table: '/user/list_products_for_table',
list_products: '/user/list_products' list_products: '/user/list_products'
} }
var translations = {
confirmations: {
move_to_another_table_title: 'Move to another table?',
move_to_another_table: 'Are you sure you want to move to another table?'
}
}
function redirect_to(mapping, variables){ function redirect_to(mapping, variables){
variables || (variables = {}); variables || (variables = {});
var vars = [] var vars = []
@@ -43,8 +50,19 @@ function redirect_to(mapping, variables){
window.location = path_mapping[mapping] + '?' + vars.join('&') window.location = path_mapping[mapping] + '?' + vars.join('&')
} }
function currency(num) { function currency(num) {
if (isNaN(num) || num === '' || num === null) { return Qwaiter.currency(num);
num = 0.0; }
} String.prototype.capitalize = function() {
return '&euro;&nbsp;' + parseFloat(num).toFixed(2); return this.charAt(0).toUpperCase() + this.slice(1);
}
function t(path){
var parts = path.split('.')
var accessor = 'translations["' + parts.join('"]["')+ '"]';
var result;
try{
result = eval(accessor);
} catch(err){
result = parts[parts.length - 1].capitalize();
}
return result;
} }
+14 -7
View File
@@ -185,10 +185,10 @@ window.Quser=
$.get('/user/table_info.json?table_id='+table.table_id, (res)-> $.get('/user/table_info.json?table_id='+table.table_id, (res)->
if res.current_table_id if res.current_table_id
if res.other_supplier if res.other_supplier
#TODO cannot do something with other supplier when list is active redirect_to 'user_root', {message: 'table_is_from_other_supplier'}
else if res.current_table_id == table.table_id else if res.current_table_id == table.table_id
#nothing has changed, show product list #nothing has changed, show product list
window.location = '/user/list_products' redirect_to 'list_products'
else if res.current_table_id != table.table_id else if res.current_table_id != table.table_id
if res.occupied if res.occupied
redirect_to 'user_root', {message: 'table_is_occupied'} redirect_to 'user_root', {message: 'table_is_occupied'}
@@ -200,11 +200,18 @@ window.Quser=
redirect_to 'user_root', {message: 'supplier_is_closed'} redirect_to 'user_root', {message: 'supplier_is_closed'}
else else
#TODO Offer to move table #TODO Offer to move table
$.post('/user/move_table', {table_id: table.table_id}, (res2)-> Qwaiter.confirm(
if res2.occupied ok: ->
alert('Cannot move to occupied table') $.post('/user/move_table', {table_id: table.table_id}, (res2)->
else if res2.occupied
window.location = '/user/list_products' alert('Cannot move to occupied table')
else
redirect_to 'list_products', {message: 'moved_to_another_table'}
)
cancel: ->
redirect_to 'list_products'
title: t('confirmations.move_to_another_table_title')
content: t('confirmations.move_to_another_table')
) )
else else
if res.occupied if res.occupied
+8 -2
View File
@@ -5,8 +5,7 @@ class UserController < ApplicationController
alias :list :active_list alias :list :active_list
def home def home
flash.now[:notice] = t('messages.the_list_has_been_closed', list: List.model_name.human) if params[:list_closed].present? handle_message_params
flash.now[:notice] = t("messages.#{params[:message]}") if params[:message].present? && params[:message] =~ /^\w+$/
render layout: 'phone' render layout: 'phone'
end end
@@ -52,6 +51,7 @@ class UserController < ApplicationController
@supplier = list.supplier @supplier = list.supplier
respond_to do |format| respond_to do |format|
format.html do format.html do
handle_message_params
render layout: 'phone' render layout: 'phone'
end end
format.json do format.json do
@@ -260,4 +260,10 @@ class UserController < ApplicationController
render json: {occupied: false} render json: {occupied: false}
end end
end end
private
def handle_message_params
flash.now[:notice] = t('messages.the_list_has_been_closed', list: List.model_name.human) if params[:list_closed].present?
flash.now[:notice] = t("messages.#{params[:message]}", list: List.model_name.human, supplier: Supplier.model_name.human) if params[:message].present? && params[:message] =~ /^\w+$/
end
end end
+3 -1
View File
@@ -36,7 +36,9 @@ class List
end end
def self.of_user(user, options = {}) def self.of_user(user, options = {})
database.view(association_list_has_and_belongs_to_many_users({startkey: [user.id], endkey: ["#{user.id}\u9999"], include_docs: true, reduce: false}.merge(options))) with_pagination_options(options) do |options|
database.view(association_list_has_and_belongs_to_many_users({startkey: [user.id], endkey: ["#{user.id}\u9999"], include_docs: true, reduce: false}.merge(options)))
end
end end
def close! def close!
+2
View File
@@ -20,6 +20,8 @@ en:
table_is_closed: The table you want to sit on is not available for service table_is_closed: The table you want to sit on is not available for service
supplier_is_closed: The owner of this table is currently not handling orders supplier_is_closed: The owner of this table is currently not handling orders
join_request_rejected: Your request to join the table has been rejected join_request_rejected: Your request to join the table has been rejected
table_is_from_other_supplier: You cannot move to another table when you have a %{list} open
moved_to_another_table: You successfully moved to another table
action: action:
index: index:
label: Listing %{models} label: Listing %{models}