Commit 70c82093
Changed files (5)
app
assets
javascripts
models
views
views
layouts
config
locales
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
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'
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}_", '')
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>
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'