sinatra-hexacta 1.4.1 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 62c9a5fdaac939c50a7db24d37977fcb1349d876b2606f7d79b54ba458868716
4
- data.tar.gz: 1a5e0466e7ea6f2f370e0a0e8e2821038c47cb5338978babed93545bf9f1dd10
3
+ metadata.gz: b0bc5b02f5e6b461318773afa357ab6f22a90123c5253a90077575d90c5a639a
4
+ data.tar.gz: fb57adaf1d49b6b744504b7e25e7708c98cf11e5f8baee8c0bd32f8d2872e240
5
5
  SHA512:
6
- metadata.gz: 621e1e86e8ac77296cab1da330d1d9713a883a9e6d3fe15a5fe478a7bd2e752ed454c86132ef413cbdf87d0142240d7568be341b76624afc93cab3926d6697b5
7
- data.tar.gz: 1d117bcda4857a2be6a2ce051f3e7d47b400be73666b7a4d175b1a19223008a994839cac04ae1e2d0c649b61b960c1997fdf584909f72f5820a77dff5dabed81
6
+ metadata.gz: 2820db09ad01271011903d10a37ac905a4a5739e300bd6a28d6385352300f99d59f99bacae9fe5070000e15f73d9c6f88908f36503b49aa27ffea4f642f85caf
7
+ data.tar.gz: 21f7bc48f1a05a019e1c84ff9900f035290d9a4e2d60d41e9e2a1ca2c6770a28ff2c972322b3bc849d6d20f5c8ec3f7024771850f2652018113c6428a3cff8fc
@@ -20,16 +20,32 @@ class MailSender
20
20
  http.start { |http| http.request(request) }
21
21
  end
22
22
 
23
+
23
24
  def _authorize_mail
24
25
  params = [ [ "grant_type", "password" ], [ "client_id", "MailApp" ], [ "client_secret", "MailAppPRD2018!" ] ]
25
- response = _do_connect("https://comunicacion.hexacta.com:4443/apptoken",params)
26
+ retry_times = 0
27
+ begin
28
+ response = _do_connect("https://comunicacion.hexacta.com:4443/apptoken",params)
29
+ rescue StandardError => bang
30
+ response = nil
31
+ end
32
+ until response.is_a?( Net::HTTPSuccess ) || retry_times > 10 do
33
+ begin
34
+ retry_times = retry_times + 1
35
+ sleep(retry_times)
36
+ response = _do_connect("https://comunicacion.hexacta.com:4443/apptoken",params)
37
+ rescue StandardError => bang
38
+ end
39
+ end
26
40
  if( response.is_a?( Net::HTTPSuccess ) )
27
41
  token = JSON.parse(response.body)
28
42
  @access_token = token["access_token"]
29
43
  @refresh_token = token["refresh_token"]
30
44
  @expire = DateTime.parse(token[".expires"])
45
+ return true
31
46
  else
32
47
  NotificationSender.instance.send_error(nil,'Authorize mail failed',response.body)
48
+ return false
33
49
  end
34
50
  end
35
51
 
@@ -54,26 +70,34 @@ class MailSender
54
70
  end
55
71
 
56
72
  def _expired?
57
- expire.nil? || DateTime.now < expire
73
+ @expire.nil? || DateTime.now < @expire
58
74
  end
59
75
 
76
+
60
77
  def do_send(mail)
61
- begin
62
- if _expired?
63
- _authorize_mail
64
- end
78
+ authorized = _expired?? _authorize_mail : true
65
79
 
80
+ if authorized
66
81
  params = [ [ "ApplicationCode", 2009 ], [ "Name", mail.template ], [ "Subject", mail.subject ], [ "EmailAddress", mail.from ] ]
67
82
  params = params + _build_map_values(mail.values) + _build_to_map(mail.to)
68
83
 
69
- response = _do_connect("https://comunicacion.hexacta.com:4444/api/app/TemplateNotification/SendMail",params,@access_token)
70
-
84
+ retry_times = 0
85
+ begin
86
+ response = _do_connect("https://comunicacion.hexacta.com:4444/api/app/TemplateNotification/SendMail",params,@access_token)
87
+ rescue StandardError => bang
88
+ response = nil
89
+ end
90
+ until response.is_a?( Net::HTTPSuccess ) || retry_times > 10 do
91
+ begin
92
+ retry_times = retry_times + 1
93
+ sleep(retry_times)
94
+ response = _do_connect("https://comunicacion.hexacta.com:4444/api/app/TemplateNotification/SendMail",params,@access_token)
95
+ rescue StandardError => bang
96
+ end
97
+ end
71
98
  if( !response.is_a?( Net::HTTPSuccess ) )
72
99
  NotificationSender.instance.send_error(nil,'Send mail failed',response.body)
73
100
  end
74
- rescue StandardError => error
75
- message = error.backtrace.join(',');
76
- NotificationSender.instance.send_error(nil,"Mail send error",message)
77
101
  end
78
102
  end
79
103
 
@@ -9,7 +9,7 @@ module Sinatra
9
9
  ConstantHandler.copy_all_files("/lib/sinatra/views/constants","/app/views/#{Hexacta::GEM_FILE_DIR}/constants")
10
10
 
11
11
  before '/constant*' do
12
- error(403) if authenticated(User).permissions.empty?
12
+ error(403) unless authenticated(User).admin?
13
13
  end
14
14
 
15
15
  get '/constants' do
@@ -11,7 +11,7 @@ module Sinatra
11
11
  end
12
12
 
13
13
  before do
14
- response.headers['Access-Control-Allow-Origin'] = 'https://*.hexacta.com'
14
+ response.headers['Access-Control-Allow-Origin'] = '*'
15
15
  end
16
16
 
17
17
  end
@@ -52,7 +52,7 @@ module Sinatra
52
52
  end
53
53
 
54
54
  before '/reports/*' do
55
- error(403) if authenticated(User).permissions.empty?
55
+ error(403) unless authenticated(User).admin?
56
56
  end
57
57
 
58
58
  get '/reports' do
@@ -5,7 +5,25 @@ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(naviga
5
5
  $('html').addClass('ismobile');
6
6
  }
7
7
 
8
+ // create a new instance of `MutationObserver` named `observer`,
9
+ // passing it a callback function
10
+ const observer = new MutationObserver(function() {
11
+ update_html_elements();
12
+ });
13
+
8
14
  $(document).ready(function(){
15
+ /*
16
+ * Waves Animation
17
+ */
18
+ (function(){
19
+ Waves.attach('.btn:not(.btn-icon):not(.btn-float)');
20
+ Waves.attach('.btn-icon, .btn-float', ['waves-circle', 'waves-float']);
21
+ Waves.init();
22
+ })();
23
+ update_html_elements();
24
+ });
25
+
26
+ function update_html_elements() {
9
27
 
10
28
  // Fix modal inside other components
11
29
  $('.modal').appendTo("body");
@@ -340,15 +358,6 @@ $(document).ready(function(){
340
358
  });
341
359
  }
342
360
 
343
- /*
344
- * Waves Animation
345
- */
346
- (function(){
347
- Waves.attach('.btn:not(.btn-icon):not(.btn-float)');
348
- Waves.attach('.btn-icon, .btn-float', ['waves-circle', 'waves-float']);
349
- Waves.init();
350
- })();
351
-
352
361
  /*
353
362
  * Lightbox
354
363
  */
@@ -499,7 +508,14 @@ $(document).ready(function(){
499
508
  $(this).find(':submit').attr("disabled",false);
500
509
  });
501
510
 
502
- });
511
+ }
512
+
513
+ const elementToObserve = document.querySelector("body");
514
+
515
+ if (elementToObserve != null) {
516
+ observer.observe(elementToObserve, {subtree: true, childList: true});
517
+ }
518
+
503
519
 
504
520
  function start_load() {
505
521
  if (!$("#loader")[0]) {
@@ -677,4 +693,8 @@ function read_notify(id,url) {
677
693
  window.location = url;
678
694
  }
679
695
  });
696
+ }
697
+
698
+ function capitalize(word) {
699
+ return word[0].toUpperCase() + word.slice(1).toLowerCase();
680
700
  }
@@ -394,12 +394,26 @@
394
394
 
395
395
  // VALIDATOR DATA-API
396
396
  // ==================
397
+ const elementToObserve = document.querySelector("body");
397
398
 
398
- $(window).on('load', function () {
399
+ // create a new instance of `MutationObserver` named `observer`,
400
+ // passing it a callback function
401
+ const observer = new MutationObserver(function() {
399
402
  $('form[data-toggle="validator"]').each(function () {
400
403
  var $form = $(this)
401
404
  Plugin.call($form, $form.data())
402
405
  })
403
- })
406
+ });
407
+
408
+ // call `observe()` on that MutationObserver instance,
409
+ // passing it the element to observe, and the options object
410
+ observer.observe(elementToObserve, {subtree: true, childList: true});
411
+
412
+ //$(window).on('load', function () {
413
+ // $('form[data-toggle="validator"]').each(function () {
414
+ // var $form = $(this)
415
+ // Plugin.call($form, $form.data())
416
+ // })
417
+ //})
404
418
 
405
419
  }(jQuery);
@@ -11,7 +11,16 @@
11
11
  -unless defined? readonly
12
12
  -readonly = false
13
13
 
14
- -if required
14
+ -if readonly
15
+ .form-group
16
+ label #{placeholder}
17
+ select.chosen id="#{id}" class="#{clazz}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;") disabled=""
18
+ -for element in elements
19
+ -if chosen == element[:value]
20
+ option value="#{element[:value]}" selected="" #{element[:text]}
21
+ -else
22
+ option value="#{element[:value]}" #{element[:text]}
23
+ -elsif required
15
24
  .form-group.has-success
16
25
  label #{placeholder}
17
26
  select.chosen.form-control id="#{id}" class="#{clazz}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;") required=""
@@ -29,4 +38,11 @@
29
38
  -if chosen == element[:value]
30
39
  option value="#{element[:value]}" selected="" #{element[:text]}
31
40
  -else
32
- option value="#{element[:value]}" #{element[:text]}
41
+ option value="#{element[:value]}" #{element[:text]}
42
+
43
+
44
+ / For enabling
45
+ / var myselect=$('select');
46
+ / myselect.chosen();
47
+ / myselect.prop('disabled', true);
48
+ / myselect.trigger("chosen:updated");
@@ -45,7 +45,7 @@
45
45
  -total_pending = Notification.pending.for(authenticated(User)).exclude_message.count
46
46
 
47
47
  .footer-btn
48
- -unless authenticated(User).permissions.empty?
48
+ -if authenticated(User).admin?
49
49
  a.btn.btn-float.bgm-blue.m-btn.waves-effect.waves-circle.waves-float data-toggle="modal" data-target="#new-notification"
50
50
  i.zmdi.zmdi-notifications-active
51
51
  -if total_pending > 0
@@ -55,13 +55,13 @@
55
55
  i.zmdi.zmdi-delete
56
56
 
57
57
  .footer-text
58
- -unless authenticated(User).permissions.empty?
58
+ -if authenticated(User).admin?
59
59
  a.text.btn.bgm-white.c-gray data-toggle="modal" data-target="#new-notification" Nueva notificación
60
60
  -if total_pending > 0
61
61
  a.text.btn.bgm-white.c-gray onclick="read_all_notifications(#{{Notification.pending.for(authenticated(User)).exclude_message.all.collect { |notification| notification.id}}});this.onclick='';" Marcar como leidas
62
62
  a.text.btn.bgm-white.c-gray.delete-notifications.hidden.animated.bounceIn onclick="delete_all_notifications();this.onclick='';" Borrar notificaciones
63
63
 
64
- -unless authenticated(User).permissions.empty?
64
+ -if authenticated(User).admin?
65
65
  == slim :'sinatra-hexacta/notifications/new'
66
66
 
67
67
  javascript:
@@ -48,7 +48,7 @@
48
48
  .media-body
49
49
  .lv-title Fecha de lectura
50
50
  small.lv-small #{notification.read_date.display}
51
- -unless (authenticated(User).permissions.collect { |permission| permission.class } & [ Superadmin ]).empty?
51
+ -if authenticated(User).superadmin?
52
52
  a.lv-item
53
53
  .media
54
54
  .media-body
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-hexacta
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Zanger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-17 00:00:00.000000000 Z
11
+ date: 2021-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sucker_punch
@@ -250,7 +250,7 @@ homepage: https://rubygems.org/gems/sinatra-hexacta
250
250
  licenses:
251
251
  - MIT
252
252
  metadata: {}
253
- post_install_message:
253
+ post_install_message:
254
254
  rdoc_options: []
255
255
  require_paths:
256
256
  - lib
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
266
  version: '0'
267
267
  requirements: []
268
268
  rubygems_version: 3.0.6
269
- signing_key:
269
+ signing_key:
270
270
  specification_version: 4
271
271
  summary: Hexacta general tools!
272
272
  test_files: []