summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo <mo.khan@gmail.com>2017-09-09 12:46:07 -0600
committermo <mo.khan@gmail.com>2017-09-09 12:46:07 -0600
commit70c8209344bbe125867062b74f21a12f73b6faf2 (patch)
tree710f7cf19f71d75265eaf2c10b4d467994b42043
parentc81e44144f9e7f392b5d158c3ec52062fa529532 (diff)
validate search form.
-rw-r--r--app/assets/javascripts/models/search.js.coffee16
-rw-r--r--app/assets/javascripts/views/form_view.js.coffee5
-rw-r--r--app/assets/javascripts/views/search/form.js.coffee5
-rw-r--r--app/views/layouts/_header.html.erb10
-rw-r--r--config/locales/en.yml2
5 files changed, 33 insertions, 5 deletions
diff --git a/app/assets/javascripts/models/search.js.coffee b/app/assets/javascripts/models/search.js.coffee
new file mode 100644
index 00000000..df81bd4a
--- /dev/null
+++ b/app/assets/javascripts/models/search.js.coffee
@@ -0,0 +1,16 @@
+#= require ./translation
+
+class csx.Models.Search extends Backbone.Model
+ translation: new csx.Translation('search')
+ defaults:
+ q: null
+
+ requiredFields: ['q']
+
+ validate: (attributes, options) ->
+ errors = {}
+ _.each @requiredFields, (field) =>
+ if _.isEmpty(attributes[field])
+ errors[field] = @translation.errorFor(field, 'blank')
+
+ return errors if _.keys(errors).length > 0
diff --git a/app/assets/javascripts/views/form_view.js.coffee b/app/assets/javascripts/views/form_view.js.coffee
index d58f7198..43183537 100644
--- a/app/assets/javascripts/views/form_view.js.coffee
+++ b/app/assets/javascripts/views/form_view.js.coffee
@@ -35,6 +35,9 @@ class csx.FormView extends csx.AutoView
else
element.val()
+ fieldName: (name) ->
+ return name if _.isEmpty(@modelKey)
+ "#{@modelKey}_#{name}"
+
field: (name) -> @$("##{@fieldName(name)}")
- fieldName: (name) -> "#{@modelKey}_#{name}"
fieldNameFor: (element) -> element.attr('id').replace("#{@modelKey}_", '')
diff --git a/app/assets/javascripts/views/search/form.js.coffee b/app/assets/javascripts/views/search/form.js.coffee
new file mode 100644
index 00000000..7e1b1f05
--- /dev/null
+++ b/app/assets/javascripts/views/search/form.js.coffee
@@ -0,0 +1,5 @@
+class csx.Views.SearchForm extends csx.FormView
+ @viewName 'search-form'
+ events:
+ 'input #q': 'onInput'
+ 'submit form': 'onSubmit'
diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb
index 2597851a..0e1b403c 100644
--- a/app/views/layouts/_header.html.erb
+++ b/app/views/layouts/_header.html.erb
@@ -40,10 +40,12 @@
</li>
<% end %>
</ul>
- <%= form_tag(configuration_for(:search_path, search_path), method: :get, name: "search", class: "form-inline my-2 my-lg-0") do %>
- <%= text_field_tag :q, params[:q], class: 'form-control mr-sm-2', placeholder: 'Search', 'aria-label' => "Search", required: :required %>
- <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
- <% end %>
+ <div data-autoview="search-form" data-automodel="Search">
+ <%= form_tag(configuration_for(:search_path, search_path), method: :get, name: "search", class: "form-inline my-2 my-lg-0", novalidate: :novalidate) do %>
+ <%= text_field_tag :q, params[:q], class: 'form-control mr-sm-2', placeholder: 'Search', 'aria-label' => "Search", required: :required %>
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+ <% end %>
+ </div>
</div>
</nav>
</div>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 94543825..3ea4c436 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -22,6 +22,8 @@ en:
profile_saved: Your settings have been updated successfully!
activerecord:
attributes:
+ search:
+ q: "Search query"
session:
email: 'Email'
password: 'Password'