block_js 0.0.1
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.markdown +79 -0
- data/Rakefile +1 -0
- data/block_js.gemspec +24 -0
- data/lib/block_js/version.rb +3 -0
- data/lib/block_js.rb +7 -0
- data/vendor/assets/javascripts/block.js +31 -0
- metadata +54 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
Intro
|
2
|
+
-------
|
3
|
+
|
4
|
+
An unobtrusive way to write and organize your javascript. Logic for each block goes to separate js/coffeescript file.
|
5
|
+
|
6
|
+
|
7
|
+
Examples
|
8
|
+
-------
|
9
|
+
|
10
|
+
### HTML
|
11
|
+
```html
|
12
|
+
<div class="b-js" onclick="return {name: 'header_navigation'}">
|
13
|
+
<a href="#" class="language_selector__change">Change Language</a>
|
14
|
+
<div class="language_selector__wrapper" style="display:none;">
|
15
|
+
<!-- some content here -->
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<a href="#" class="login__link">Login</a>
|
19
|
+
<div class="login__dropdown" style="display:none;">
|
20
|
+
<!-- some content here -->
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
```
|
24
|
+
|
25
|
+
### JavaScript
|
26
|
+
```javascript
|
27
|
+
APP.block["header_navigation"] = function(el, params) {
|
28
|
+
this.element = el;
|
29
|
+
this.params = params || {};
|
30
|
+
}
|
31
|
+
|
32
|
+
APP.block["header_navigation"].prototype = {
|
33
|
+
init: function(){
|
34
|
+
this.initLanguageSelector();
|
35
|
+
this.initLoginWindow();
|
36
|
+
},
|
37
|
+
|
38
|
+
initLanguageSelector: function(){
|
39
|
+
$(".language_selector__change", this.element).live("click", function(){
|
40
|
+
$('.language_selector__wrapper', this.element).toggle();
|
41
|
+
return false;
|
42
|
+
});
|
43
|
+
},
|
44
|
+
|
45
|
+
initLoginWindow: function(){
|
46
|
+
$(".login__link", this.element).live("click", function(){
|
47
|
+
$('.login__dropdown', this.element).toggle();
|
48
|
+
return false;
|
49
|
+
});
|
50
|
+
}
|
51
|
+
}
|
52
|
+
```
|
53
|
+
### CoffeeScript
|
54
|
+
```coffeescript
|
55
|
+
class APP.block["header_navigation"]
|
56
|
+
constructor: (el, params) ->
|
57
|
+
@element = el
|
58
|
+
@params = params || {}
|
59
|
+
|
60
|
+
init: ->
|
61
|
+
@initLanguageSelector()
|
62
|
+
@initLoginWindow()
|
63
|
+
|
64
|
+
initLanguageSelector: ->
|
65
|
+
$(".language_selector__change", @element).live "click", ->
|
66
|
+
$('.language_selector__wrapper', @element).toggle()
|
67
|
+
false
|
68
|
+
|
69
|
+
initLoginWindow: ->
|
70
|
+
$(".login__link", @element).live "click", ->
|
71
|
+
$('.login__dropdown', @element).toggle()
|
72
|
+
false
|
73
|
+
```
|
74
|
+
|
75
|
+
Credits
|
76
|
+
-------
|
77
|
+
|
78
|
+
Suggested by:
|
79
|
+
[Leonya](https://github.com/Leonya), [Egze](https://github.com/egze)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/block_js.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "block_js/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "block_js"
|
7
|
+
s.version = BlockJs::VERSION
|
8
|
+
s.authors = ["Jaroslav Kalistsuk"]
|
9
|
+
s.email = ["jaroslav.kalistsuk@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/jarosan/block_js"
|
11
|
+
s.summary = %q{An unobtrusive way to write and organize your javascript.}
|
12
|
+
s.description = %q{An unobtrusive way to write and organize your javascript. Logic for each block goes to separate js/coffeescript file.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "block_js"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
24
|
+
end
|
data/lib/block_js.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
var APP = {};
|
2
|
+
APP.block || (APP.block = {});
|
3
|
+
|
4
|
+
(function($){
|
5
|
+
APP.initBlock || (APP.initBlock = function(context, blockSelector) {
|
6
|
+
context = context || document;
|
7
|
+
blockSelector = blockSelector || '.b-js';
|
8
|
+
$(blockSelector, context).each(function() {
|
9
|
+
var block = $(this),
|
10
|
+
params = this.onclick ? this.onclick() : {},
|
11
|
+
name = params.name || '',
|
12
|
+
init = APP.block[name];
|
13
|
+
|
14
|
+
if (init && !block.data(name)) {
|
15
|
+
var instance = new init(block, params);
|
16
|
+
|
17
|
+
if (typeof instance.init == 'function') {
|
18
|
+
instance.init();
|
19
|
+
block.data(name, true).addClass(name + '_js_inited');
|
20
|
+
} else {
|
21
|
+
console.log('Component', name, 'does not have an init() method');
|
22
|
+
block.data(name, true).addClass(name + '_js_failed');
|
23
|
+
}
|
24
|
+
}
|
25
|
+
});
|
26
|
+
});
|
27
|
+
|
28
|
+
APP.initBlockBound || (APP.initBlockBound = !!$(document).ready(function() {
|
29
|
+
APP.initBlock();
|
30
|
+
}));
|
31
|
+
})(jQuery);
|
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: block_js
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jaroslav Kalistsuk
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-11-22 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: An unobtrusive way to write and organize your javascript. Logic for each
|
15
|
+
block goes to separate js/coffeescript file.
|
16
|
+
email:
|
17
|
+
- jaroslav.kalistsuk@gmail.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- .gitignore
|
23
|
+
- Gemfile
|
24
|
+
- README.markdown
|
25
|
+
- Rakefile
|
26
|
+
- block_js.gemspec
|
27
|
+
- lib/block_js.rb
|
28
|
+
- lib/block_js/version.rb
|
29
|
+
- vendor/assets/javascripts/block.js
|
30
|
+
homepage: https://github.com/jarosan/block_js
|
31
|
+
licenses: []
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirements: []
|
49
|
+
rubyforge_project: block_js
|
50
|
+
rubygems_version: 1.8.11
|
51
|
+
signing_key:
|
52
|
+
specification_version: 3
|
53
|
+
summary: An unobtrusive way to write and organize your javascript.
|
54
|
+
test_files: []
|