From 77c0e36ed65c9b8a04b18787995ca363765bb514 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 23 Oct 2014 14:23:50 +1100 Subject: [PATCH] Adding input validation to welcome page --- .../welcome/controllers/welcome_controller.js.coffee | 10 +++++++++- app/views/spree/admin/overview/welcome.html.haml | 10 +++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/welcome/controllers/welcome_controller.js.coffee b/app/assets/javascripts/admin/welcome/controllers/welcome_controller.js.coffee index f9d43b672e..9883e90937 100644 --- a/app/assets/javascripts/admin/welcome/controllers/welcome_controller.js.coffee +++ b/app/assets/javascripts/admin/welcome/controllers/welcome_controller.js.coffee @@ -1,3 +1,11 @@ angular.module("admin.welcome") .controller "welcomeCtrl", ($scope) -> - $scope.sells = "unspecified" \ No newline at end of file + $scope.sells = "unspecified" + $scope.submitted = false + + $scope.valid = (form) -> + $scope.submitted = !form.$valid + form.$valid + + $scope.submit = (form) -> + event.preventDefault() unless $scope.valid(form) diff --git a/app/views/spree/admin/overview/welcome.html.haml b/app/views/spree/admin/overview/welcome.html.haml index 05bbcd845b..6fdfa40a40 100644 --- a/app/views/spree/admin/overview/welcome.html.haml +++ b/app/views/spree/admin/overview/welcome.html.haml @@ -10,8 +10,9 @@ %br/ the Open Food Network - %form{ name: :sells, method: :put, action: main_app.set_sells_admin_enterprise_path(@enterprise) } - %input{ type: "hidden", id: "sells", name: "sells", ng: { value: "sells" } } + = form_for @enterprise, url: main_app.set_sells_admin_enterprise_path(@enterprise), novalidate: true do |enterprise_form| + -# Have to use hidden:'true' on this input rather than type:'hidden' as the latter seems to break ngPattern and therefore validation + %input{ hidden: "true", id: "sells", name: "sells", ng: { required: true, pattern: "/^(none|own)$/", model: 'sells', value: "sells"} } .options.sixteen.columns.alpha - if @enterprise.is_primary_producer .basic_producer.option.one-third.column.alpha @@ -60,4 +61,7 @@ // Coming soon - Full Hub // Email us if you want this option - %input{ type: 'submit' } \ No newline at end of file + .sixteen.columns.alpha + %span.error{ ng: { show: "(enterprise.sells.$error.pattern || enterprise.sells.$error.pattern) && submitted" } } + Please select an option + %input{ type: 'submit', ng: { click: "submit(enterprise)" } } \ No newline at end of file