From 2fec0b3bb6a315fbdddd0e6e7d9642c469f25498 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Wed, 16 Jul 2014 17:41:43 +0200 Subject: [PATCH] Refactor supplier settings --- .rspec | 2 + Gemfile | 2 +- Gemfile.lock | 2 + .../application_controller.js.coffee | 15 +++- .../controllers/settings_controller.js.coffee | 9 ++ .../supplier/app/models/supplier.js.coffee | 12 +++ .../modifications/model_extensions.js.coffee | 3 + .../javascripts/supplier/app/router.js.coffee | 1 + .../app/routes/settings_route.js.coffee | 7 ++ .../supplier/app/templates/settings.emblem | 40 +++++++++ .../app/views/application_view.js.coffee | 14 +++ .../supplier/app/views/email_field.js.coffee | 3 + .../app/views/settings_view.js.coffee | 90 +++++++++++++++++++ .../supplier/foundation1/application.js.erb | 2 + .../foundation1/initializer.js.coffee | 40 +++++---- .../model_modifications.js.coffee | 4 +- .../supplier/foundation1/_menu_side.css.sass | 3 + .../supplier/foundation1/application.css.sass | 2 +- .../_forms.css.sass} | 6 ++ app/controllers/supplier_controller.rb | 45 ++++++++-- app/models/supplier.rb | 11 ++- .../supplier_supplier_serializer.rb | 3 +- app/views/layouts/tablet.html.slim | 3 + app/views/supplier/edit.html.slim | 4 +- .../suppliers/application/_top_menu.html.slim | 18 ++-- app/views/suppliers/sessions/new.html.slim | 3 + config/locales/supplier.en.yml | 2 +- config/locales/supplier.nl.yml | 2 +- config/routes.rb | 2 + spec/spec_helper.rb | 9 ++ wip.md | 1 + 31 files changed, 311 insertions(+), 49 deletions(-) create mode 100644 app/assets/javascripts/supplier/app/controllers/settings_controller.js.coffee create mode 100644 app/assets/javascripts/supplier/app/routes/settings_route.js.coffee create mode 100644 app/assets/javascripts/supplier/app/templates/settings.emblem create mode 100644 app/assets/javascripts/supplier/app/views/application_view.js.coffee create mode 100644 app/assets/javascripts/supplier/app/views/email_field.js.coffee create mode 100644 app/assets/javascripts/supplier/app/views/settings_view.js.coffee rename app/assets/stylesheets/supplier/foundation1/{_qforms.css.sass => components/_forms.css.sass} (80%) diff --git a/.rspec b/.rspec index 7115a783..1df8b322 100644 --- a/.rspec +++ b/.rspec @@ -1,2 +1,4 @@ --color --format Fuubar +--format html +--out coverage/rspec_results.html -r turnip/rspec diff --git a/Gemfile b/Gemfile index 740418a2..6782b2a1 100644 --- a/Gemfile +++ b/Gemfile @@ -65,7 +65,7 @@ gem 'rqrcode' gem 'mini_magick' #gem 'geokit' -#gem 'iso_country_codes' +gem 'iso_country_codes' #gem "less-rails-bootstrap-devise", :git => 'git://github.com/bigbento/less-rails-bootstrap-devise.git' # To use ActiveModel has_secure_password diff --git a/Gemfile.lock b/Gemfile.lock index 1483b728..420b4948 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -221,6 +221,7 @@ GEM hike (1.2.3) http_parser.rb (0.6.0) i18n (0.6.11) + iso_country_codes (0.4.3) jquery-rails (3.1.1) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) @@ -435,6 +436,7 @@ DEPENDENCIES font-awesome-rails foundation-rails fuubar + iso_country_codes jquery-rails jquery-ui-rails js-routes diff --git a/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee index 1ec03012..89acc15a 100644 --- a/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/application_controller.js.coffee @@ -1,4 +1,15 @@ Qsupplier.App.ApplicationController = Ember.Controller.extend init: -> - #@set 'supplier', @store.createRecord('supplier', name: 'kkkl') - @set 'supplier', @store.find('supplier', 'current') + #success = (supplier)=> + ## A supplier record with id current and with the content of the returned supplier is created + ## at the moment remove the dummy supplier, this should be resolved by Ember eventually + #if error_supplier = @store.all('supplier').findBy('id', 'current') + #error_supplier.eraseRecord() + #@set 'supplier', supplier + + #error = (emberError)=> + #if error_supplier = @store.all('supplier').findBy('id', 'current') + #error_supplier.eraseRecord() + #@set 'supplier', null + #@store.find('supplier', 'current').then success, error + @set 'supplier', @store.find('supplier', supplier_id) diff --git a/app/assets/javascripts/supplier/app/controllers/settings_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/settings_controller.js.coffee new file mode 100644 index 00000000..909c2780 --- /dev/null +++ b/app/assets/javascripts/supplier/app/controllers/settings_controller.js.coffee @@ -0,0 +1,9 @@ +Qsupplier.App.SettingsController = Ember.ObjectController.extend + needs: ['application'] + model: (-> @get('controllers.application.supplier')).property('controllers.application.supplier') + time_zones: (-> window.time_zones ).property() + countries: (-> window.countries ).property() + editIensProfile: (-> @get('model.country') is 'Netherlands' ).property('model.country') + actions: + saveSettings: -> + @get('model').save() diff --git a/app/assets/javascripts/supplier/app/models/supplier.js.coffee b/app/assets/javascripts/supplier/app/models/supplier.js.coffee index 5f9aeba0..a3da6c2d 100644 --- a/app/assets/javascripts/supplier/app/models/supplier.js.coffee +++ b/app/assets/javascripts/supplier/app/models/supplier.js.coffee @@ -1,3 +1,15 @@ attr = DS.attr Qsupplier.App.Supplier = DS.Model.extend name: attr 'string' + email: attr 'string' + time_zone: attr 'string' + address: attr 'string' + house_number: attr 'number' + house_number_addition: attr 'string' + postal_code: attr 'string' + city: attr 'string' + country: attr 'string' + facebook_promotion_url: attr 'string' + iens_profile: attr 'string' + lat: attr 'number' + lng: attr 'number' diff --git a/app/assets/javascripts/supplier/app/modifications/model_extensions.js.coffee b/app/assets/javascripts/supplier/app/modifications/model_extensions.js.coffee index 4e536eed..3bff9128 100644 --- a/app/assets/javascripts/supplier/app/modifications/model_extensions.js.coffee +++ b/app/assets/javascripts/supplier/app/modifications/model_extensions.js.coffee @@ -1,6 +1,9 @@ DS.Model.reopen created_at: DS.attr('date') updated_at: DS.attr('date') + eraseRecord: -> + @clearRelationships() + @transitionTo('deleted.saved') DS.Model.reopenClass findCached: (id)-> return null unless id diff --git a/app/assets/javascripts/supplier/app/router.js.coffee b/app/assets/javascripts/supplier/app/router.js.coffee index 50ee286c..e9714c62 100644 --- a/app/assets/javascripts/supplier/app/router.js.coffee +++ b/app/assets/javascripts/supplier/app/router.js.coffee @@ -10,4 +10,5 @@ Qsupplier.App.Router.map -> @resource 'section', path: ':section_id' @resource 'lists', -> @resource 'list', path: ':list_id' + @route 'settings' #@resource 'lists', queryParams: ['state'] diff --git a/app/assets/javascripts/supplier/app/routes/settings_route.js.coffee b/app/assets/javascripts/supplier/app/routes/settings_route.js.coffee new file mode 100644 index 00000000..2d4c1154 --- /dev/null +++ b/app/assets/javascripts/supplier/app/routes/settings_route.js.coffee @@ -0,0 +1,7 @@ +Qsupplier.App.SettingsRoute = Ember.Route.extend + model: -> + Em.RSVP.hash + supplier: @controllerFor('application').get('supplier') + setupController: (controller, model)-> + #controller.set 'model', controller.get('controllers.application.supplier') + controller.set 'model', model.supplier diff --git a/app/assets/javascripts/supplier/app/templates/settings.emblem b/app/assets/javascripts/supplier/app/templates/settings.emblem new file mode 100644 index 00000000..ea1dd666 --- /dev/null +++ b/app/assets/javascripts/supplier/app/templates/settings.emblem @@ -0,0 +1,40 @@ +h2 These are Ember settings +.form-row + .form-label: label=t 'attributes.supplier.name' + .form-field: Ember.TextField valueBinding="controller.model.name" +.form-row + .form-label: label=t 'attributes.supplier.email' + .form-field: Qsupplier.App.EmailField valueBinding="controller.model.email" +/input.location_picker name="location" type="text" valueBinding="location" +/.form-row + .location_picker_map + = image_tag 'supplier/settings/location-balloon.png' +/.form-row + .form-label: label=t 'attributes.supplier.time_zone' + .form-field: Ember.Select content=time_zones optionValuePath="content.name" optionLabelPath="content.formatted" valueBinding="controller.model.time_zone" +.form-row + .form-label: label=t 'attributes.supplier.address' + .form-field.full + .row + .large-8.medium-8.columns: Ember.TextField valueBinding="controller.model.address" + .large-1.show-for-large-up.columns   + .large-2.medium-2.small-3.columns: Qsupplier.App.NumberField valueBinding="controller.model.house_number" + .large-1.medium-2.small-2.columns: Ember.TextField valueBinding="controller.model.house_number_addition" +.form-row + .form-label: label=t 'attributes.supplier.postal_code' + .form-field: Ember.TextField valueBinding="controller.model.postal_code" +.form-row + .form-label: label=t 'attributes.supplier.city' + .form-field: Ember.TextField valueBinding="controller.model.city" +.form-row + .form-label: label=t 'attributes.supplier.country' + .form-field: Ember.Select content=countries optionValuePath="content.name" optionLabelPath="content.name" valueBinding="controller.model.country" +if editIensProfile + .form-row + .form-label: label=t 'attributes.supplier.iens_profile' + .form-field + Qsupplier.App.NumberField valueBinding="controller.model.iens_profile" + = image_tag 'supplier/settings/iens-example.png' + span=t "settings.reviews.explanation" +.form-row.form-actions + button.button{action 'saveSettings'} Save settings diff --git a/app/assets/javascripts/supplier/app/views/application_view.js.coffee b/app/assets/javascripts/supplier/app/views/application_view.js.coffee new file mode 100644 index 00000000..54c210c1 --- /dev/null +++ b/app/assets/javascripts/supplier/app/views/application_view.js.coffee @@ -0,0 +1,14 @@ +Qsupplier.App.ApplicationView = Ember.View.extend + didInsertElement: -> + selector_mappings = + '.top-menu-root': '/' + '.top-menu-lists': 'lists' + '.top-menu-sections': 'sections' + '.top-menu-lists': 'lists' + '.supplier-settings-link': 'settings' + + for selector, route of selector_mappings + do (selector, route)=> + $(selector).click (e)=> + e.preventDefault() + @get('controller').transitionToRoute route diff --git a/app/assets/javascripts/supplier/app/views/email_field.js.coffee b/app/assets/javascripts/supplier/app/views/email_field.js.coffee new file mode 100644 index 00000000..4753ab64 --- /dev/null +++ b/app/assets/javascripts/supplier/app/views/email_field.js.coffee @@ -0,0 +1,3 @@ +Qsupplier.App.EmailField = Ember.TextField.extend + type: 'email' + #attributeBindings: ['min', 'max', 'step'] diff --git a/app/assets/javascripts/supplier/app/views/settings_view.js.coffee b/app/assets/javascripts/supplier/app/views/settings_view.js.coffee new file mode 100644 index 00000000..b2f26755 --- /dev/null +++ b/app/assets/javascripts/supplier/app/views/settings_view.js.coffee @@ -0,0 +1,90 @@ +Qsupplier.App.SettingsView = Ember.View.extend + templateName: 'settings' + didInsertElement: -> + return + + iconBase = 'https://maps.google.com/mapfiles/kml/' + #location_input = @$('.location_picker') + #map_div = $('
').addClass("location_picker_map") + map_div = @$('.location_picker_map') + + #location_input.before(map_div) + #this.parentNode.insertBefore(map_div, this) + #location_input.hide() + + #lat = 52.07436798080633 + #lng = 4.316811561584473 + #if @get('controller.location') and @get('controller.location').split(',').length == 2 + #values = @get('controller.location').split(',') + #lat = values[0] + #lng = values[1] + lat = @get('controller.model.lat') + lng = @get('controller.model.lng') + center = new google.maps.LatLng(lat,lng) + mapOptions = + zoom: 15 + center: center + mapTypeId: google.maps.MapTypeId.ROADMAP, + zoomControl: true + zoomControlOptions: + style: google.maps.ZoomControlStyle.SMALL + mapTypeControl: false + panControl: false + scaleControl: false + streetViewControl: false + + map = new google.maps.Map(map_div.get(0), mapOptions) + marker = new google.maps.Marker( + position: center + map: map + title: 'Location' + icon: '/assets/icons/maps_location.png' + ) + google.maps.event.addListener(map, 'click', (point)=> + marker.setPosition(point.latLng) + #location_input.val point.latLng.lat() + ','+ point.latLng.lng() + @set 'controller.model.lat', point.latLng.lat() + @set 'controller.model.lng', point.latLng.lng() + ) + + search_field = $('') + search_field.addClass('location_picker_search') + autocomplete = new google.maps.places.Autocomplete(search_field.get(0)) + autocomplete.bindTo('bounds', map) + search_field.keypress( (e) -> + if e.which == 13 + e.preventDefault() + ) + window.autocomplete = autocomplete + map_div.before(search_field) + infowindow = new google.maps.InfoWindow() + search_marker = new google.maps.Marker({map: map, icon: iconBase + 'shapes/placemark_circle.png'}) + google.maps.event.addListener autocomplete, 'place_changed', -> + infowindow.close() + search_marker.setVisible(false) + place = autocomplete.getPlace() + return unless place.geometry + #if place.geometry.viewport + # map.fitBounds(place.geometry.viewport) + #else + map.setCenter(place.geometry.location) + map.setZoom(17) + image = + url: place.icon + size: new google.maps.Size(71, 71) + origin: new google.maps.Point(0, 0) + anchor: new google.maps.Point(17, 34) + scaledSize: new google.maps.Size(35, 35) + #search_marker.setIcon(image) + search_marker.setPosition(place.geometry.location) + search_marker.setVisible(true) + + address = '' + if place.address_components + address = [ + (place.address_components[0] && place.address_components[0].short_name || ''), + (place.address_components[1] && place.address_components[1].short_name || ''), + (place.address_components[2] && place.address_components[2].short_name || '') + ].join(' ') + infowindow.setContent('
' + place.name + '
' + address + '
') + infowindow.open(map, search_marker) diff --git a/app/assets/javascripts/supplier/foundation1/application.js.erb b/app/assets/javascripts/supplier/foundation1/application.js.erb index 9bc748e1..cdd60c1e 100644 --- a/app/assets/javascripts/supplier/foundation1/application.js.erb +++ b/app/assets/javascripts/supplier/foundation1/application.js.erb @@ -23,6 +23,8 @@ $.extend($translations.nl, <%= I18n.t('supplier', locale: :nl).to_json %>); String.prototype.capitalize = function() { return this.charAt(0).toUpperCase() + this.slice(1); } +window.time_zones = <%= ActiveSupport::TimeZone.all.map{|tz| {name: tz.name, formatted: "GMT#{tz.formatted_offset} #{tz.name}"}}.to_json.html_safe %>; +window.countries = <%= IsoCountryCodes.all.map{|cc| {name: cc.name}}.to_json.html_safe %>; var path_mapping = { user_root: '/user', diff --git a/app/assets/javascripts/supplier/foundation1/initializer.js.coffee b/app/assets/javascripts/supplier/foundation1/initializer.js.coffee index 9e5c4bc7..0ca9790b 100644 --- a/app/assets/javascripts/supplier/foundation1/initializer.js.coffee +++ b/app/assets/javascripts/supplier/foundation1/initializer.js.coffee @@ -40,7 +40,26 @@ $ -> setupTranslations() - # GOOGLE LOCATION PICKER + + $('.toggle-side-menu,.side-menu').click -> + menu = $('aside.side-menu') + toggle = $('.toggle-side-menu') + if menu.is(':visible') + menu.animate left: -255, -> $(@).hide() + toggle.animate left: 0, -> $(@).removeClass('open') + else + menu.show().animate left: 0 + toggle.animate left: 222 - 30, -> $(@).addClass('open') + + $('[data-boolean]').each -> + $(@).addClass(if $(@).data('boolean') then 'boolean-true' else 'boolean-false') + + # Hide alert boxes on click + $(document).on 'click', '.general-alerts .alert-box', -> $(@).slideUp() + + $(document).on 'click', '.supplier-is-closed', -> $(@).slideUp() +# GOOGLE LOCATION PICKER +### $("input.location_picker").each (i)-> #return if typeof(google) == 'undefined' iconBase = 'https://maps.google.com/mapfiles/kml/' @@ -124,21 +143,4 @@ $ -> infowindow.setContent('
' + place.name + '
' + address + '
') infowindow.open(map, search_marker) # end google location map - - $('.toggle-side-menu,.side-menu').click -> - menu = $('aside.side-menu') - toggle = $('.toggle-side-menu') - if menu.is(':visible') - menu.animate left: -255, -> $(@).hide() - toggle.animate left: 0, -> $(@).removeClass('open') - else - menu.show().animate left: 0 - toggle.animate left: 222 - 30, -> $(@).addClass('open') - - $('[data-boolean]').each -> - $(@).addClass(if $(@).data('boolean') then 'boolean-true' else 'boolean-false') - - # Hide alert boxes on click - $(document).on 'click', '.general-alerts .alert-box', -> $(@).slideUp() - - $(document).on 'click', '.supplier-is-closed', -> $(@).slideUp() +### diff --git a/app/assets/javascripts/user/app/modifications/model_modifications.js.coffee b/app/assets/javascripts/user/app/modifications/model_modifications.js.coffee index bfd0bb96..b9647292 100644 --- a/app/assets/javascripts/user/app/modifications/model_modifications.js.coffee +++ b/app/assets/javascripts/user/app/modifications/model_modifications.js.coffee @@ -2,5 +2,5 @@ DS.Model.reopen created_at: DS.attr('date') updated_at: DS.attr('date') eraseRecord: -> - @clearRelationships(); - @transitionTo('deleted.saved'); + @clearRelationships() + @transitionTo('deleted.saved') diff --git a/app/assets/stylesheets/supplier/foundation1/_menu_side.css.sass b/app/assets/stylesheets/supplier/foundation1/_menu_side.css.sass index f8a929b4..36d5e7c1 100644 --- a/app/assets/stylesheets/supplier/foundation1/_menu_side.css.sass +++ b/app/assets/stylesheets/supplier/foundation1/_menu_side.css.sass @@ -11,3 +11,6 @@ aside.side-menu list-style: none a color: white +.supplier-close-shop + +alert($bg: $alert-color, $radius: true) + padding: 3px diff --git a/app/assets/stylesheets/supplier/foundation1/application.css.sass b/app/assets/stylesheets/supplier/foundation1/application.css.sass index 22bb29ad..785ae0d4 100644 --- a/app/assets/stylesheets/supplier/foundation1/application.css.sass +++ b/app/assets/stylesheets/supplier/foundation1/application.css.sass @@ -8,7 +8,7 @@ @import ./qdashboard @import ./qdisplays @import ./form_actions -@import ./qforms +@import ./components/* @import ./menu_main @import ./menu_side @import ./qsections diff --git a/app/assets/stylesheets/supplier/foundation1/_qforms.css.sass b/app/assets/stylesheets/supplier/foundation1/components/_forms.css.sass similarity index 80% rename from app/assets/stylesheets/supplier/foundation1/_qforms.css.sass rename to app/assets/stylesheets/supplier/foundation1/components/_forms.css.sass index 65742f9d..3dd2e783 100644 --- a/app/assets/stylesheets/supplier/foundation1/_qforms.css.sass +++ b/app/assets/stylesheets/supplier/foundation1/components/_forms.css.sass @@ -15,8 +15,14 @@ @media #{$large-up} +grid-column($columns: 3, $last-column:true) &.full + @media #{$small-only} + +grid-column($columns:10, $center:true, $last-column:true) + @media #{$medium-only} + +grid-column($columns:6, $last-column:true) @media #{$large-up} +grid-column($columns: 9, $last-column:true) + &.form-actions + padding-top: 12px body label &.number diff --git a/app/controllers/supplier_controller.rb b/app/controllers/supplier_controller.rb index 347898f6..cc193497 100644 --- a/app/controllers/supplier_controller.rb +++ b/app/controllers/supplier_controller.rb @@ -12,18 +12,24 @@ class SupplierController < ApplicationController end def current - respond_to do |format| - format.json { render json: {supplier: current_supplier.as_json} } - end + render json: SupplierSupplierSerializer.new(current_supplier).as_json end # POST /supplier/settings def update @supplier = current_supplier - if current_supplier.update_attributes(supplier_params) - redirect_to supplier_root_path - else - render action: :edit + respond_to do |format| + format.html do + if current_supplier.update_attributes(supplier_params) + redirect_to supplier_root_path + else + render action: :edit + end + end + format.json do + current_supplier.update_attributes(supplier_params) + render nothing: true + end end end @@ -119,6 +125,29 @@ class SupplierController < ApplicationController private def supplier_params - params.require(:supplier).permit(:name, :email, :open, :time_zone, :night_offset, :location, :lat, :lng, :offer_wifi, :wifi_ssid, :wifi_type, :wifi_password, :iens_profile) + params.require(:supplier).permit( + :name, + :email, + :open, + :time_zone, + :night_offset, + :location, + :lat, + :lng, + :offer_wifi, + :wifi_ssid, + :wifi_type, + :wifi_password, + :iens_profile, + :address, + :house_number, + :house_number_addition, + :postal_code, + :city, + :country, + :facebook_promotion_url, + :created_at, + :updated_at + ) end end diff --git a/app/models/supplier.rb b/app/models/supplier.rb index 47176da1..41b6c652 100644 --- a/app/models/supplier.rb +++ b/app/models/supplier.rb @@ -10,10 +10,17 @@ class Supplier property :open, type: :boolean, default: false property :time_zone, default: 'UTC' property :night_offset, type: Fixnum, default: 0 # Minutes + property :address + property :house_number + property :house_number_addition + property :postal_code + property :city + property :country, default: 'Netherlands' + property :facebook_promotion_url #LOCATION - property :lat, type: Float, default: 52.08062426379751 - property :lng, type: Float, default: 4.312562942504883 + property :lat, type: Float #, default: 52.08062426379751 + property :lng, type: Float #, default: 4.312562942504883 #WIFI property :offer_wifi diff --git a/app/serializers/supplier_supplier_serializer.rb b/app/serializers/supplier_supplier_serializer.rb index cf9037d1..b129c95f 100644 --- a/app/serializers/supplier_supplier_serializer.rb +++ b/app/serializers/supplier_supplier_serializer.rb @@ -1,6 +1,7 @@ class SupplierSupplierSerializer < Qwaiter::Serializer self.root = :supplier - attributes :extended_version, :open, :name + attributes :extended_version, :open, :name, :lat, :lng, :email, :time_zone, :address, :house_number, :house_number_addition, :postal_code, :city, :country, + :facebook_promotion_url, :iens_profile def extended_version false diff --git a/app/views/layouts/tablet.html.slim b/app/views/layouts/tablet.html.slim index dfb7b11c..2a2710a1 100644 --- a/app/views/layouts/tablet.html.slim +++ b/app/views/layouts/tablet.html.slim @@ -15,6 +15,9 @@ html lang="en" = render 'suppliers/application/head' = javascript_include_tag "supplier/foundation1/application" = yield :head + = javascript_include_tag "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places&language=#{I18n.locale}" + javascript: + supplier_id="#{current_supplier.id}"; body = render 'suppliers/application/top_menu' diff --git a/app/views/supplier/edit.html.slim b/app/views/supplier/edit.html.slim index 61928ac5..aae10acd 100644 --- a/app/views/supplier/edit.html.slim +++ b/app/views/supplier/edit.html.slim @@ -1,7 +1,7 @@ - content_for :head do - = javascript_include_tag "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places&language=#{I18n.locale}" + = javascript_include_tag 'supplier/app/application' -= form_for @supplier, url: supplier_update_settings_path, html: {class: 'form-horizontal'} do |f| +/= form_for @supplier, url: supplier_update_settings_path, html: {class: 'form-horizontal'} do |f| = render 'suppliers/application/error_messages', target: current_supplier .control-group class=(@supplier.errors[:name].any? ? 'error' : nil) = f.label :name, class: 'control-label' diff --git a/app/views/suppliers/application/_top_menu.html.slim b/app/views/suppliers/application/_top_menu.html.slim index 289027f5..ef86624d 100644 --- a/app/views/suppliers/application/_top_menu.html.slim +++ b/app/views/suppliers/application/_top_menu.html.slim @@ -5,12 +5,12 @@ header.top-menu section.main-buttons //li= link_to t('supplier.menu.active_orders', orders: Order.model_name.human_plural), supplier_active_orders_path //li= link_to t('supplier.menu.active_lists', lists: List.model_name.human_plural), supplier_active_lists_path - = link_to image_tag('icons/logo-small.png'), supplier_root_path - = link_to ProductCategory.model_name.human_plural, suppliers_product_categories_path, data: {t: 'models.plural.product_category'} - = link_to Product.model_name.human_plural, suppliers_products_path, data: {t: 'models.plural.product'} - = link_to Section.model_name.human_plural, suppliers_sections_path, data: {t: 'models.plural.section'} - = link_to Table.model_name.human_plural, suppliers_tables_path, data: {t: 'models.plural.table'} - = link_to List.model_name.human_plural, suppliers_lists_path, data: {t: 'models.plural.list'} + = link_to image_tag('icons/logo-small.png'), supplier_root_path, class: 'top-menu-root' + = link_to ProductCategory.model_name.human_plural, suppliers_product_categories_path, data: {t: 'models.plural.product_category'}, class: 'top-menu-product_categories' + = link_to Product.model_name.human_plural, suppliers_products_path, data: {t: 'models.plural.product'}, class: 'top-menu-products' + = link_to Section.model_name.human_plural, suppliers_sections_path, data: {t: 'models.plural.section'}, class: 'top-menu-sections' + = link_to Table.model_name.human_plural, suppliers_tables_path, data: {t: 'models.plural.table'}, class: 'top-menu-tables' + = link_to List.model_name.human_plural, suppliers_lists_path, data: {t: 'models.plural.list'}, class: 'top-menu-lists' section.extra-info .supplier-info-row .supplier-name= current_supplier.name.presence || current_supplier.email @@ -29,9 +29,9 @@ aside.side-menu - if current_supplier.open? li = form_tag supplier_mark_as_closed_path do - = submit_tag t('supplier.close'), class: [:btn, 'btn-danger'], onClick: %|$(this).parents('form').submit()| - li= link_to 'Settings', supplier_settings_path - li= link_to 'Logout', destroy_supplier_session_path, method: :delete + = submit_tag t('supplier.close'), class: 'supplier-close-shop', onClick: %|$(this).parents('form').submit()| + li= link_to 'Settings', supplier_settings_path, class: 'supplier-settings-link' + li= link_to 'Logout', destroy_supplier_session_path, method: :delete, class: 'supplier-sign-out-link' /.navbar.navbar-fixed-top.navbar-inverse .navbar-inner .container diff --git a/app/views/suppliers/sessions/new.html.slim b/app/views/suppliers/sessions/new.html.slim index 45a082f7..cb0c88b5 100644 --- a/app/views/suppliers/sessions/new.html.slim +++ b/app/views/suppliers/sessions/new.html.slim @@ -4,6 +4,9 @@ h2= t('devise.sessions.title') = f.row :email do .form-label= f.label :email .form-field= f.email_field :email + = f.row :email do + .form-label= f.label :password, class: 'control-label' + .form-field= f.password_field :password .form-row = f.label :remember_me do = f.check_box :remember_me diff --git a/config/locales/supplier.en.yml b/config/locales/supplier.en.yml index e4111080..ae55a016 100644 --- a/config/locales/supplier.en.yml +++ b/config/locales/supplier.en.yml @@ -86,7 +86,7 @@ en: settings: reviews: title: Reviews - explanation: Fill in your Iens id. You can find this id in the web location of your profile + explanation: Fill in your Iens id. You can find this id in the web location of your page product_category: week_days: abbreviation: diff --git a/config/locales/supplier.nl.yml b/config/locales/supplier.nl.yml index 1b1fff3a..130f048d 100644 --- a/config/locales/supplier.nl.yml +++ b/config/locales/supplier.nl.yml @@ -86,7 +86,7 @@ nl: settings: reviews: title: Reviews - explanation: Vul hier je iens id in. Deze kan je halen uit de url van je iens profiel + explanation: Vul hier je iens id in. Deze kan je halen uit de url van je iens pagina product_category: week_days: abbreviation: diff --git a/config/routes.rb b/config/routes.rb index d62bce2e..06b3ba16 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -83,6 +83,8 @@ Qwaiter::Application.routes.draw do get '/supplier/suppliers/current' => 'supplier#current' #ember + get '/supplier/suppliers/:id' => 'supplier#current' #ember + put '/supplier/suppliers/:id' => 'supplier#update' #ember #match '/show_products' => 'dashboard#show_products', as: :user_products # GENERAL diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 918f3121..c51dc52f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -125,6 +125,15 @@ RSpec.configure do |config| Capybara.session_name = :default end + config.after :suite do + rspec_outfile = Rails.root.join('coverage/rspec_results.html') + result = File.read rspec_outfile + replacement = %|
Coverage
| + result.gsub! //, replacement + File.open(rspec_outfile, 'w'){|f| f.puts result} + `open #{rspec_outfile}` + end + # If true, the base class of anonymous controllers will be inferred # automatically. This will be the default behavior in future versions of # rspec-rails. diff --git a/wip.md b/wip.md index d9672d43..7afae031 100644 --- a/wip.md +++ b/wip.md @@ -60,3 +60,4 @@ Users can disable their own help request (maak ongedaan?) Users can disable their own bill request (maak ongedaan?) Think about extra confirmation box for these requests Supplier section 100% on ember :) +Supplier give help for settings