shopapp 0.2.70 → 0.2.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 213fc1cbb42de44c43a10bd8da52d7ad5e6ebf4f54cc476ee34ddc22c363e3cc
4
- data.tar.gz: 0e7eec3aff1f2d611d35ec4605bdeb594ced9769bd74b34e2c2b8d1f157346f1
3
+ metadata.gz: 874495e5720b2a801792b23fdb4f64397b8c69d5e4ef3f38473f45217857a707
4
+ data.tar.gz: b22cf4b6d9fa37ef383342ec1662fc41ede7cc5cb2eab2f4439670fb8b17eab9
5
5
  SHA512:
6
- metadata.gz: e6f2ae308decae896633f1263487e152591df3588f9c2e08b05df2431b8b190e15fc2744fa1be21c985cb7dec28321dc5da4ad21307cb19a1819fd67623af4de
7
- data.tar.gz: 82c20ae0c651ef494db2988c105b9147b4c6923a81c9071fc39d6c083f47e0ae44bf928000dc358685c42d144b82b1e72b387e3af61018018e6704e3d5bd21ff
6
+ metadata.gz: 4abd1682238b019eaf23b615aaf580a28b9f298bdce62288a031a7524139f62a5e95bd50a8afdd8cb57a7fd9421704cdaf541e102601efa82a6fbf8f648e8d0d
7
+ data.tar.gz: bd72b665b7639efe76b6e4dea240d2a4c425fd7385841cd18f0e11e0f36081b4ea2edf7d0f8e64c8c8adbb23ad9b9960c5151e62bb0e471912f728e5e7d441bf
data/README.md CHANGED
@@ -93,4 +93,4 @@ shopapp to support i18n, add two methods to your ApplicationController:
93
93
 
94
94
  To build new version of this gem, change the version in shopapp.gemspec and run:
95
95
 
96
- gem build shopapp.gemspec ; gem push shopapp-0.2.70.gem; gem install shopapp
96
+ gem build shopapp.gemspec ; gem push shopapp-0.2.71.gem; gem install shopapp
@@ -17,11 +17,17 @@ function shopappSnackbar(message, timeout) {
17
17
  }
18
18
 
19
19
  function shopappAlert(message, type) {
20
- if(type === undefined) {
20
+ if (type === undefined) {
21
21
  type = 'danger';
22
22
  }
23
23
  $('main > div:nth-child(2) > div:first-child').append(
24
- "<div class=\"alert alert-" + type + " alert-dismissible fade mt-3 show\" role=\"alert\">" +
25
- message +
26
- "<button aria-label=\"Close\" class=\"close\" data-dismiss=\"alert\" type=\"button\"><span aria-hidden=\"true\">×</span></button></div>");
24
+ '<div class="alert alert-' + type + ' alert-dismissible fade mt-3 show" role="alert">' +
25
+ message +
26
+ '<button aria-label="Close" class="close" data-dismiss="alert" type="button"><span aria-hidden="true">×</span></button></div>');
27
27
  }
28
+
29
+ // Following makes BS tooltips work. See /views/layouts/application.html.haml
30
+ $(function() {
31
+ $('[data-tooltip="tooltip"]').tooltip();
32
+ $('[data-toggle="tooltip"]').tooltip();
33
+ });
@@ -0,0 +1,46 @@
1
+ module RemoteRequestManager
2
+ extend ActiveSupport::Concern
3
+
4
+ PATH_TO_JS_FILE = "shopapp/modal_errors"
5
+
6
+ included do
7
+ end
8
+
9
+ class_methods do
10
+ end
11
+
12
+ def redirect_remote_request(notice, args = {})
13
+ respond_to do |format|
14
+ format.html { redirect_to redirect_path(args), success: notice }
15
+ format.js do
16
+ flash[:success] = notice
17
+ render js: "window.location='#{redirect_path(args)}'"
18
+ end
19
+ end
20
+ end
21
+
22
+ def rescue_remote_request(error)
23
+ Rails.logger.error error.message
24
+ Rails.logger.error error.backtrace.join("\n")
25
+ if error.instance_of?(ActiveRecord::RecordInvalid)
26
+ respond_to_js(error.record.errors.messages)
27
+ else
28
+ respond_to_js(error)
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def respond_to_js(error_message)
35
+ flash.now[:danger] = error_message
36
+ respond_to do |format|
37
+ format.js do
38
+ render PATH_TO_JS_FILE, locals: { flash: flash }
39
+ end
40
+ end
41
+ end
42
+
43
+ def redirect_path(args)
44
+ args[:to].presence || request.referer || root_path
45
+ end
46
+ end
@@ -0,0 +1,193 @@
1
+ module Shopapp3FormHelper
2
+ def sf_text_field(f, tag, params = {})
3
+ unless params.key?(:label)
4
+ params[:label] = tag.to_s.capitalize
5
+ end
6
+ label_tag = f.label tag, params[:label] unless params[:label].nil?
7
+ input_tag = f.text_field tag,
8
+ value: params[:value],
9
+ placeholder: params[:placeholder],
10
+ class: ["form-control", params[:class]].join(' '),
11
+ required: params[:required],
12
+ 'aria-describedby' => "#{tag}_help",
13
+ readonly: params[:readonly],
14
+ onkeyup: params[:onkeyup],
15
+ pattern: params[:pattern],
16
+ title: params[:title]
17
+
18
+ <<~HTML.html_safe
19
+ <div class="form-group">
20
+ #{label_flag(tag, params)}
21
+ #{label_tag}
22
+ #{input_tag}
23
+ #{help_tag(tag, params)}
24
+ #{invalid_feedback(params)}
25
+ </div>
26
+ HTML
27
+ end
28
+
29
+ def label_flag(tag, params)
30
+ if params[:language].present?
31
+ render partial: 'shopapp/display_flag', locals: { language: params[:language], html_class: ""}
32
+ end
33
+ end
34
+
35
+ def sf_number_field(f, tag, params = {})
36
+ unless params.key?(:label)
37
+ params[:label] = tag.to_s.capitalize
38
+ end
39
+ label_tag = f.label tag, params[:label]
40
+ input_tag = f.number_field tag,
41
+ value: params[:value],
42
+ min: 0,
43
+ placeholder: params[:placeholder],
44
+ class: 'form-control',
45
+ required: params[:required],
46
+ 'aria-describedby' => "#{tag}_help"
47
+
48
+ <<~HTML.html_safe
49
+ <div class="form-group">
50
+ #{label_tag}
51
+ #{input_tag}
52
+ #{help_tag(tag, params)}
53
+ #{invalid_feedback(params)}
54
+ </div>
55
+ HTML
56
+ end
57
+
58
+ def sf_checkbox(f, tag, params = {})
59
+ unless params.key?(:label)
60
+ params[:label] = tag.to_s.capitalize
61
+ end
62
+ label_tag = f.label tag,
63
+ value: params[:label],
64
+ class: 'form-check-label'
65
+ input_tag = f.check_box tag,
66
+ value: params[:value],
67
+ placeholder: params[:placeholder],
68
+ class: 'form-check-input',
69
+ required: params[:required],
70
+ 'aria-describedby' => "#{tag}_help",
71
+ readonly: params[:readonly]
72
+
73
+ <<~HTML.html_safe
74
+ <div class="form-group form-check pt-2">
75
+ #{input_tag}
76
+ #{label_tag}
77
+ #{help_tag(tag, params)}
78
+ #{invalid_feedback(params)}
79
+ </div>
80
+ HTML
81
+ end
82
+
83
+ def sf_select(f, tag, params = {})
84
+ unless params.key?(:label)
85
+ params[:label] = tag.to_s.capitalize
86
+ end
87
+ label_tag = f.label tag, params[:label]
88
+ options_list = if params.key? :enum
89
+ options_for_select(params[:enum].keys, params[:selected_value])
90
+ elsif params.key? :list
91
+ options_for_select(params[:list], params[:selected_value])
92
+ else
93
+ # we will impolement them as we go
94
+ fail NotImplementedError
95
+ end
96
+
97
+ select_tag = f.select tag,
98
+ options_list,
99
+ { include_blank: (params[:blank_option_title] || "Please select...") }.merge(params[:select_params].to_h),
100
+ { class: "custom-select", required: params[:required] }.merge(params[:html_params].to_h)
101
+ help_tag = if params[:help].present?
102
+ %(<small class="form-text text-muted" id="#{tag}_help">#{params[:help]}</small>)
103
+ end
104
+
105
+ <<~HTML.html_safe
106
+ <div class="form-group">
107
+ #{label_tag}
108
+ #{select_tag}
109
+ #{help_tag(tag, params)}
110
+ #{invalid_feedback(params)}
111
+ </div>
112
+ HTML
113
+ end
114
+
115
+ def sf_submit(*params_numbered, **params)
116
+ rails ArgumentError unless params_numbered.count <= 1
117
+ params_numbered << 'Submit' if params_numbered.count < 1
118
+ # label = 'Submit'
119
+ %(<button name="#{params[:name]}" type="submit" class="btn btn-primary float-right ml-2 mt-3 #{params[:class]}">#{params_numbered[0]}</button>).html_safe
120
+ end
121
+
122
+ def sf_cancel(return_path, label = 'Cancel', params = {})
123
+ %(<a href="#{return_path}" class="btn btn-warning float-right ml-2 mt-3" role="button">#{label}</a>).html_safe
124
+ end
125
+
126
+ def sf_action(url, action_name = nil, text = nil, remote: true, method: :post, additional_classes: nil, form_class: nil, onclick: onclick)
127
+ action_name ||= :submit
128
+ button_to((text || action_name.to_s.humanize),
129
+ url,
130
+ {
131
+ form_class: (form_class || 'float-right mr-2'),
132
+ name: :button_action,
133
+ method: method,
134
+ remote: remote,
135
+ class: ["btn", additional_classes || 'btn-secondary'].join(' '),
136
+ data: { disable_with: "Please wait..." },
137
+ onclick: onclick,
138
+ }
139
+ )
140
+ #%button.btn.btn-danger.btn-sm Reject
141
+ end
142
+
143
+ def sf_model_validation(model)
144
+ if model.errors.any?
145
+ <<~HTML.html_safe
146
+ <div class="alert alert-danger">
147
+ <h5>#{pluralize(@product.errors.count, "error")} appeared in the form:</h5>
148
+ <ul>
149
+ #{model.errors.full_messages.map { |msg| "<li>#{msg}</li>" }.join}
150
+ <ul>
151
+ </div>
152
+ HTML
153
+ end
154
+ end
155
+
156
+ def sf_bool_value(value)
157
+ symbol = value ? 'check-outline' : 'close-outline'
158
+ mdi_tag "#{symbol} 24px"
159
+ end
160
+
161
+ # private helpers
162
+
163
+ def help_tag(tag, params)
164
+ if params[:help].present?
165
+ %(<small class="form-text text-muted" id="#{tag}_help">#{params[:help]}</small>)
166
+ end
167
+ end
168
+
169
+ def invalid_feedback(params)
170
+ if params[:invalid_feedback].present?
171
+ %(<div class="invalid-feedback">#{params[:invalid_feedback]}</div>)
172
+ end
173
+
174
+ end
175
+
176
+ def format_js_render_remote_response(destination_selector, partial, locals = {})
177
+ respond_to do |format|
178
+ format.js {
179
+ render_remote_response(destination_selector, partial, locals)
180
+ }
181
+ end
182
+ end
183
+
184
+ def render_remote_response(destination_selector, partial, locals = {})
185
+ status = locals[:status]
186
+ locals.delete :status
187
+ render :render_remote_response, status: status, locals: {
188
+ destination_selector: destination_selector,
189
+ partial: partial.to_s,
190
+ locals: locals
191
+ }
192
+ end
193
+ end
@@ -0,0 +1,4 @@
1
+ - if resolve_asset_path("flags/#{language}.png")
2
+ = image_tag "flags/#{language}.png", style: "height: 24; width: 24px;", class: html_class
3
+ - else
4
+ %h3= language
@@ -0,0 +1,15 @@
1
+ #alert-container
2
+ - flash.keys.each do |f|
3
+ .alert.alert-dismissible.fade.show(class="alert-#{f.gsub('notice', 'info').gsub('alert', 'warning')}" role="alert")
4
+ -if flash[f].is_a? Hash
5
+ - flash[f].values.each do |flsh|
6
+ = "- #{flsh.first}"
7
+ %br
8
+ %button.close(type="button" data-dismiss="alert" aria-label="Close")
9
+ %span(aria-hidden="true")
10
+ = mdi_tag 'close 12px'
11
+ -else
12
+ = flash[f]
13
+ %button.close(type="button" data-dismiss="alert" aria-label="Close")
14
+ %span(aria-hidden="true")
15
+ = mdi_tag 'close 12px'
@@ -0,0 +1,5 @@
1
+ $(".modal-errors").html(
2
+ "<%= escape_javascript(render partial: 'shopapp/modal_errors',
3
+ locals: { flash: flash })
4
+ %>"
5
+ );
@@ -0,0 +1,13 @@
1
+ $("<%= destination_selector %>").html(
2
+ "<%= escape_javascript(render partial: partial,
3
+ locals: locals.except(:snackbar_message, :alert))
4
+ %>"
5
+ );
6
+
7
+ <% if (locals[:snackbar_message]).present? %>
8
+ shopappSnackbar("<%=locals[:snackbar_message]%>");
9
+ <% end %>
10
+
11
+ <% if (locals[:alert]).present? %>
12
+ alert("<%=locals[:alert]%>");
13
+ <% end %>
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'shopapp'
3
- s.version = '0.2.70'
4
- s.date = '2019-10-08'
3
+ s.version = '0.2.71'
4
+ s.date = '2019-12-14'
5
5
  s.summary = 'Do a shoplift.'
6
6
  s.description = 'Ha! Art thou Bedlam? Dost thou thirst base Trojan, to have me fold up Parca\'s fatal web? Hence!\
7
7
  I am qualmish at the smell of leek.'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.70
4
+ version: 0.2.71
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zeljko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-08 00:00:00.000000000 Z
11
+ date: 2019-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -411,6 +411,7 @@ files:
411
411
  - app/assets/stylesheets/variables.scss
412
412
  - app/controllers/api_controller.rb
413
413
  - app/controllers/auth_controller.rb
414
+ - app/controllers/concerns/remote_request_manager.rb
414
415
  - app/controllers/concerns/shopapp3.rb
415
416
  - app/controllers/concerns/shoplift_client.rb
416
417
  - app/controllers/concerns/shoplift_search.rb
@@ -418,15 +419,20 @@ files:
418
419
  - app/controllers/user_authenticated_controller.rb
419
420
  - app/controllers/user_authenticated_or_api_controller.rb
420
421
  - app/helpers/euro_helper.rb
422
+ - app/helpers/shopapp3_form_helper.rb
421
423
  - app/helpers/shopapp3_helper.rb
422
424
  - app/helpers/shopapp_helper.rb
423
425
  - app/views/layouts/_header_menu.html.haml
424
426
  - app/views/shopapp/403.html.haml
427
+ - app/views/shopapp/_display_flag.haml
428
+ - app/views/shopapp/_modal_errors.haml
425
429
  - app/views/shopapp/_shopapp.html.haml
426
430
  - app/views/shopapp/_shopapp2.html.haml
427
431
  - app/views/shopapp/_shopapp3.html.haml
428
432
  - app/views/shopapp/_shopapp_alerts.html.haml
429
433
  - app/views/shopapp/login_message.haml
434
+ - app/views/shopapp/modal_errors.js.erb
435
+ - app/views/shopapp/render_remote_response.js.erb
430
436
  - bin/shop
431
437
  - bin/shopitapp
432
438
  - config/initializers/active_settings.rb