SrBuj 0.8.5 → 0.9.0alpha

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- M2VkNTA0NTZhMDQzMmViZmFhNWUzOTAzMmE0YjQ2MThhNTk4MTNmMw==
4
+ MTdkZTUxYmU1ZDUzMWZkYmE4NDBmMjM2NzQxMmJmMzYzYWZjZDI5NA==
5
5
  data.tar.gz: !binary |-
6
- NDIyZDM4NjBkYzEyZDZjODdhMmVmMzhkOTBiNTJiYmIxNzA0OGFjNA==
6
+ ZmJkZGZhMmExZjU5MjBjYWUzNTkwODdhZDMzNjhlMzcyZTljZmQ4OQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- OTNmMWNlNDA0NGIxNTQ1YzAxZmM3NGJmZTg5YjIwYmZlYWU1MDE0YTE5MTQz
10
- NjUyN2UyNzNmOWM0OWRmZWU3MTFiOWYwZmJmZDhiMjE1NzRkZGY4ZGFjYTZh
11
- YzgyMGU5NTQyMGJhYjc0NmRiNmM4ZjI5MTRjNzdiY2YzMGIwYjA=
9
+ YWFmMDU1ODFmODM3ZWZkNmFlMDhjN2VmMjk4YTc4YTA5NjhlNGI2MzExY2Qy
10
+ NzQzMmE5MmY1YTliOWQ5NDE5YTNmOWU3MzVmZTUzZmFjMGY4YzdkZjFkY2Q1
11
+ NzRmODM1MDQ4NGExOTIzNThjYTAzYmExOGNjOGFkOGEyYjJhMDU=
12
12
  data.tar.gz: !binary |-
13
- YTI4ZDc0MTU2ZGFiZjg4ODY3ZmZmMDBmMmIzZjM5MjRkMTU4MzJkYjJiMGFi
14
- OWYzNjY4NDcyNWM2ZWFiZTVjMmJkZTc0MjFlOTc0ODA4ZmMwNWJlOTUwZDkz
15
- MTNmZDkwOWZlMDgyZTc5YjU2NzM2ZDc5ZDRlMDUyZTYwODA3NzM=
13
+ NmEzMjU5OTM5ZTllYmU1MjUyYmYwZGZmNGU3OTBkOTQxYjhkODBkZGJmNjdk
14
+ OWEwMjJjZWE5NzQ5NTg3Y2E0MTcwZmY3ZTM5ODM0NWUwZmM4MTkxM2RhMjY2
15
+ YzlmYWFiMmFhYTEwOGFlZjlhZDI5MWQ4YjE4YTI1MTBkYzI4Njg=
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  SrBuj
2
2
  =
3
+
4
+ [![Gem Version](https://badge.fury.io/rb/SrBuj.png)](https://rubygems.org/gems/SrBuj)[![Dependency Status](https://gemnasium.com/gagoar/SrBuj.png)](https://gemnasium.com/gagoar/SrBuj) [![Code Climate](https://codeclimate.com/github/gagoar/SrBuj.png)](https://codeclimate.com/github/gagoar/SrBuj.png)
3
5
 
4
6
  Better Unobtrusive JavaScript Respond (for Rails and jquery_ujs, twitter/bootstrap modal.js)
5
7
 
data/lib/SrBuj.rb CHANGED
@@ -1,8 +1,12 @@
1
- require "SrBuj/version"
1
+ equire 'SrBuj/version'
2
+ require 'active_support'
2
3
 
3
4
  module SrBuj
4
5
  module Rails
5
6
  class Engine < ::Rails::Engine
7
+ ActiveSupport.on_load(:action_controller) do
8
+ require 'SrBuj/rails/action_controller/helpers'
9
+ end
6
10
  end
7
11
  end
8
12
  end
@@ -0,0 +1,37 @@
1
+ module SrBuj
2
+ module ActionController
3
+ module Helpers
4
+
5
+ #=> helpfull method to return redirect_to in an js way.
6
+ # use: js_redirect(to: root_path)
7
+ # use: js_redirect(reload: true)
8
+ def js_redirect(opts = {})
9
+ js = if defined? opts[:to]
10
+ "window.location.href = '#{opts[:to]}';"
11
+ elsif defined? opts[:reload]
12
+ "window.location.reload();"
13
+ end
14
+ render js: js
15
+ end
16
+
17
+ #=> this method sets 2 simple headers to be handled (later on) for the SrBuj respond librery in js.
18
+ # the :type attribute could be any css class that you need to append
19
+ # options:
20
+ # type: [error, info, warning] or any other class (the first 3 clases are going to be used as alert-error, alert-info and alert-warning)
21
+ # side: [right, left] wich side the message will appear
22
+ # position: [top, bottom]
23
+ # time: [numeric] will change the time that the message will be displayed
24
+ # use: js_notify (message: 'this is madness!', type: 'error', side: 'right', position: 'top', time: 2000 )
25
+ def js_notify(options = {})
26
+ if options[:message]
27
+ response.headers['X-SRBUJ-MSG'] = options[:message].to_s
28
+ response.headers['X-SRBUJ-TYPE'] = options[:type].to_s if options[:type]
29
+ response.headers['X-SRBUJ-SIDE'] = options[:side].to_s if options[:side]
30
+ response.headers['X-SRBUJ-POS'] = options[:position].to_s if options[:position]
31
+ response.headers['X-SRBUJ-TIME'] = options[:time].to_s if options[:time]
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ ActionController::Base.send(:include, SrBuj::ActionController::Helpers)
@@ -0,0 +1 @@
1
+ require 'SrBuj/rails/action_controller/helpers'
data/lib/SrBuj/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SrBuj
2
- VERSION = '0.8.5'
2
+ VERSION = '0.9.0alpha'
3
3
  end
@@ -19,8 +19,9 @@
19
19
  };
20
20
  var SrBuj;
21
21
  $.SrBuj = SrBuj = {
22
- version: '0.8.5',
22
+ version: '0.9.0alpha',
23
23
  selector: '[data-remote][data-target]',
24
+ notifyHeaders: { message: 'X-SRBUJ-MSG', type: 'X-SRBUJ-TYPE', side: 'X-SRBUJ-SIDE', position: 'X-SRBUJ-POS', time: 'X-SRBUJ-TIME' },
24
25
  defaults: {
25
26
  '$el': undefined,
26
27
  target: undefined,
@@ -113,50 +114,55 @@
113
114
  'remove': $el.is('[data-srbuj]')
114
115
  };
115
116
  user_options = user_options || {};
116
- for (var attr in this.defaults) {
117
- if (this.defaults.hasOwnProperty(attr)) {
117
+ for ( var attr in this.defaults ) {
118
+ if ( this.defaults.hasOwnProperty( attr ) ) {
118
119
  options[attr] = user_options[attr] || el_options[attr] || this.defaults[attr];
119
120
  }
120
121
  }
121
122
  return options;
122
123
  },
123
124
  success: function (e, data, status, xhr, user_options) {
124
- if ( xhr && (/javascript/).test( xhr.getResponseHeader('Content-Type') ) ){
125
- return true;
126
- }else{
127
- var options = $.SrBuj.getOptions(e.target, user_options),
128
- $target = options.jqueryselector ? $(options.target).present() : $(document.getElementById(options.target)),
129
- $wrapper = options.jqueryselector ? $(options.wrapper) : $(document.getElementById(options.wrapper));
130
- if ($target.present()) {
131
- e.stopPropagation();
132
- if (!options.custom) {
133
- if (options.change) {
134
- $.SrBuj.changeDom(options.method, $target, data);
135
- }
136
- if (options.modal) {
137
- if (options.wrapper) {
138
- $wrapper.modal('toggle');
139
- } else {
140
- $target.modal('toggle');
141
- }
142
- }
125
+ if ( xhr ){
126
+ var notify = {};
127
+ for ( var attr in $.SrBuj.notifyHeaders )
128
+ if ( $.SrBuj.notifyHeaders.hasOwnProperty( attr ) ) {
129
+ notify[attr] = xhr.getResponseHeader( $.SrBuj.notifyHeaders[attr] );
130
+ }
131
+ if ( notify.message ){ $.SrBuj.Util.notify(notify) }
132
+ if ( (/javascript/).test( xhr.getResponseHeader('Content-Type') )){
133
+ return true;
143
134
  }
144
- if(options.url && options.push && $.SrBuj.needToChangeUrl(options.url) && $.SrBuj.browserSupportsPushState() ){
145
- window.history.pushState({ SrBuj: true }, '', options.url)
135
+ }
136
+ var options = $.SrBuj.getOptions(e.target, user_options),
137
+ $target = options.jqueryselector ? $(options.target).present() : $(document.getElementById(options.target)),
138
+ $wrapper = options.jqueryselector ? $(options.wrapper) : $(document.getElementById(options.wrapper));
139
+ if ($target.present()) {
140
+ e.stopPropagation();
141
+ if (!options.custom) {
142
+ if (options.change) {
143
+ $.SrBuj.changeDom(options.method, $target, data);
146
144
  }
147
- if (options.callback) {
148
- var callback = $.SrBuj.kindOfCallback(options.callback);
149
- if (callback) {
150
- callback.apply(this, [e, data, status]);
145
+ if (options.modal) {
146
+ if (options.wrapper) {
147
+ $wrapper.modal('toggle');
148
+ } else {
149
+ $target.modal('toggle');
151
150
  }
152
151
  }
153
- if (options.remove){
154
- this.remove();
152
+ }
153
+ if(options.url && options.push && $.SrBuj.needToChangeUrl(options.url) && $.SrBuj.browserSupportsPushState() ){
154
+ window.history.pushState({ SrBuj: true }, '', options.url)
155
+ }
156
+ if (options.callback) {
157
+ var callback = $.SrBuj.kindOfCallback(options.callback);
158
+ if (callback) {
159
+ callback.apply(this, [e, data, status]);
155
160
  }
156
-
157
161
  }
158
- }
159
- },
162
+ if (options.remove){
163
+ this.remove();
164
+ }
165
+ }},
160
166
  fail: function (e, data, status, error_code, user_options) {
161
167
  e.stopPropagation();
162
168
  var $el = $(e.target).present(),
@@ -175,6 +181,32 @@
175
181
  $(document).on('ajax:error', selector, this.fail);
176
182
  },
177
183
  Util: {
184
+ notify: function (options){
185
+ /* This function will show a growling element, with the message and attached class that was given.
186
+ * will endure only a few seconds and its going to be removed from DOM afterwards.
187
+ * use: $.SrBuj.Util.notify({message: 'This is Madness', type: 'info'}) this will produce
188
+ * <s id=_growlingMsg class=info>This is Madness</s>
189
+ */
190
+ var options = options || {};
191
+ if( options.message ){
192
+ var _growlingMsg = document.createElement('s');
193
+ _growlingMsg.id = '_growlingMsg';
194
+ if ( options.type ){
195
+ _growlingMsg.className = (/^(info|warning|error)$/).test( options.type ) ?
196
+ ['alert', '-' , options.type ].join('') : options.type;
197
+ }else{
198
+ _growlingMsg.className = 'alert-info';
199
+ }
200
+ _growlingMsg.textContent = options.message;
201
+ $('body').append(_growlingMsg);
202
+ _growlingMsg.className += [' alert', options.side || 'right', options.position || 'bottom', 'srbuj-notify' ].join(' ').toLowerCase();
203
+ options.time = Number( options.time ) > 0 ? options.time : 2000;
204
+ setInterval($.SrBuj.Util.removeNotify, options.time);
205
+ }
206
+ },
207
+ removeNotify: function(){
208
+ $('#_growlingMsg').remove();
209
+ },
178
210
  link: function (user_options){
179
211
  /* This function will create a link with options, trigger it and remove the link afterwards
180
212
  * user_options must be a hash (Obj) with key: value without the data word
@@ -0,0 +1,30 @@
1
+ #_growlingMsg.top{
2
+ top: 10px;
3
+ }
4
+ #_growlingMsg.left{
5
+ left: 10px;
6
+ }
7
+ #_growlingMsg.right{
8
+ right: 10px;
9
+ }
10
+ #_growlingMsg.bottom{
11
+ bottom: 10px;
12
+ }
13
+
14
+ s#_growlingMsg{
15
+ -webkit-transition:all 0.5s ease-in-out;
16
+ -ms-transition:all 0.5s ease-in-out;
17
+ -o-transition:all 0.5s ease-in-out;
18
+ -moz-transition:all 0.5s ease-in-out;
19
+ transition:all 0.5s ease-in-out;
20
+ opacity: 0;
21
+ display: block;
22
+ position: fixed;
23
+ margin: 0;
24
+ z-index: 1000;
25
+ text-decoration: none;
26
+ }
27
+ s#_growlingMsg.srbuj-notify{
28
+ opacity: 1;
29
+ }
30
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: SrBuj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.5
4
+ version: 0.9.0alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - gagoar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-04 00:00:00.000000000 Z
11
+ date: 2013-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,6 +74,9 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - lib/assets/javascripts/SrBuj.js
77
+ - lib/assets/stylesheets/SrBuj.css
78
+ - lib/SrBuj/rails/action_controller/helpers.rb
79
+ - lib/SrBuj/rails/action_controller_helpers.rb
77
80
  - lib/SrBuj/version.rb
78
81
  - lib/SrBuj.rb
79
82
  - LICENSE.txt
@@ -93,9 +96,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
96
  version: '0'
94
97
  required_rubygems_version: !ruby/object:Gem::Requirement
95
98
  requirements:
96
- - - ! '>='
99
+ - - ! '>'
97
100
  - !ruby/object:Gem::Version
98
- version: '0'
101
+ version: 1.3.1
99
102
  requirements: []
100
103
  rubyforge_project:
101
104
  rubygems_version: 2.0.3
@@ -103,4 +106,3 @@ signing_key:
103
106
  specification_version: 4
104
107
  summary: http://github.com/gagoar/SrBuj/
105
108
  test_files: []
106
- has_rdoc: