From 3adf392e548d05b2c2cf9555d9fe0b66ddd65eaf Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Fri, 7 Sep 2012 11:35:33 +0200 Subject: [PATCH] add javascript translations, darken background and other confirm --- .../images/textures/wood001-vertical.jpg | Bin 8796 -> 37827 bytes .../{qrammer.js.coffee => qwaiter.js.coffee} | 17 ++++++++---- app/assets/javascripts/user/application.js | 26 +++++++++++++++--- app/assets/javascripts/user/quser.js.coffee | 21 +++++++++----- app/controllers/user_controller.rb | 10 +++++-- app/models/list.rb | 4 ++- config/locales/en.yml | 2 ++ 7 files changed, 60 insertions(+), 20 deletions(-) rename app/assets/javascripts/{qrammer.js.coffee => qwaiter.js.coffee} (66%) diff --git a/app/assets/images/textures/wood001-vertical.jpg b/app/assets/images/textures/wood001-vertical.jpg index 95cd605b66476103f0ed025d229d7b9f62159133..6ba55b8b657401c0ecfd1ef52d73303de3440fed 100644 GIT binary patch literal 37827 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 literal 8796 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 alert(msg) - confirm: (callback, content) -> - content ||= 'Are you sure?' + confirm: (options) -> + options ||= {} + content = options.content || 'Are you sure?' + title = options.title || 'Confirm' wrapper = $('') callback_wrapper = -> wrapper.modal('hide') - callback() + options.ok() + callback_cancel_wrapper = -> + wrapper.modal('hide') + options.cancel() if options.cancel header = $('') .append('') - .append('

Confirm

').appendTo(wrapper) + .append('

'+title+'

').appendTo(wrapper) body = $('').append('

'+content+'

').appendTo(wrapper) footer = $('') - .append($('Close').click(-> wrapper.modal('hide'))) + .append($('Close').click(callback_cancel_wrapper)) .append($('Yes').click(callback_wrapper)) .appendTo(wrapper) wrapper.modal() diff --git a/app/assets/javascripts/user/application.js b/app/assets/javascripts/user/application.js index 643dbe9a..77b520b3 100644 --- a/app/assets/javascripts/user/application.js +++ b/app/assets/javascripts/user/application.js @@ -26,6 +26,7 @@ // require twitter/bootstrap/bootstrap-carousel //= require twitter/bootstrap/bootstrap-typeahead //= require twitter/bootstrap/bootstrap-affix +//= require qwaiter //= require_directory . //= require_self var path_mapping = { @@ -34,6 +35,12 @@ var path_mapping = { list_products_for_table: '/user/list_products_for_table', 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){ variables || (variables = {}); var vars = [] @@ -43,8 +50,19 @@ function redirect_to(mapping, variables){ window.location = path_mapping[mapping] + '?' + vars.join('&') } function currency(num) { - if (isNaN(num) || num === '' || num === null) { - num = 0.0; - } - return '€ ' + parseFloat(num).toFixed(2); + return Qwaiter.currency(num); +} +String.prototype.capitalize = function() { + 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; } diff --git a/app/assets/javascripts/user/quser.js.coffee b/app/assets/javascripts/user/quser.js.coffee index 3c1376e2..258c29b2 100644 --- a/app/assets/javascripts/user/quser.js.coffee +++ b/app/assets/javascripts/user/quser.js.coffee @@ -185,10 +185,10 @@ window.Quser= $.get('/user/table_info.json?table_id='+table.table_id, (res)-> if res.current_table_id 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 #nothing has changed, show product list - window.location = '/user/list_products' + redirect_to 'list_products' else if res.current_table_id != table.table_id if res.occupied redirect_to 'user_root', {message: 'table_is_occupied'} @@ -200,11 +200,18 @@ window.Quser= redirect_to 'user_root', {message: 'supplier_is_closed'} else #TODO Offer to move table - $.post('/user/move_table', {table_id: table.table_id}, (res2)-> - if res2.occupied - alert('Cannot move to occupied table') - else - window.location = '/user/list_products' + Qwaiter.confirm( + ok: -> + $.post('/user/move_table', {table_id: table.table_id}, (res2)-> + if res2.occupied + 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 if res.occupied diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index c4324561..3029357d 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -5,8 +5,7 @@ class UserController < ApplicationController alias :list :active_list def home - 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]}") if params[:message].present? && params[:message] =~ /^\w+$/ + handle_message_params render layout: 'phone' end @@ -52,6 +51,7 @@ class UserController < ApplicationController @supplier = list.supplier respond_to do |format| format.html do + handle_message_params render layout: 'phone' end format.json do @@ -260,4 +260,10 @@ class UserController < ApplicationController render json: {occupied: false} 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 diff --git a/app/models/list.rb b/app/models/list.rb index 2d357651..7f895919 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -36,7 +36,9 @@ class List end 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 def close! diff --git a/config/locales/en.yml b/config/locales/en.yml index 6fed67b8..1c0e90d2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -20,6 +20,8 @@ en: 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 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: index: label: Listing %{models}