casey_jones 0.0.99 → 0.0.100
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/lib/ajax_loading/active_record_extensions.rb +15 -0
- data/lib/ajax_loading/ajax_loading.rb +2 -0
- data/lib/ajax_loading/application_helpers.rb +29 -0
- data/lib/ajax_loading/controller_resource.rb +9 -5
- data/lib/generators/loadbehind/USAGE +8 -0
- data/lib/generators/loadbehind/loadbehind_generator.rb +43 -0
- data/lib/generators/loadbehind/templates/_errors.html.haml +5 -0
- data/lib/generators/loadbehind/templates/destroy.js.haml +4 -0
- data/lib/generators/loadbehind/templates/edit.js.haml +4 -0
- data/lib/generators/loadbehind/templates/images/error.png +0 -0
- data/lib/generators/loadbehind/templates/images/growl_bottom.png +0 -0
- data/lib/generators/loadbehind/templates/images/growl_repeat.png +0 -0
- data/lib/generators/loadbehind/templates/images/growl_top.png +0 -0
- data/lib/generators/loadbehind/templates/images/info.png +0 -0
- data/lib/generators/loadbehind/templates/jquery.growl.js +143 -0
- data/lib/generators/loadbehind/templates/loadbehind.js +33 -0
- data/lib/generators/loadbehind/templates/view.js.haml +4 -0
- metadata +19 -4
@@ -0,0 +1,15 @@
|
|
1
|
+
module AjaxLoading
|
2
|
+
module ActiveRecordExtensions
|
3
|
+
def element_id(*args)
|
4
|
+
args << self
|
5
|
+
args.map{|t|
|
6
|
+
t.kind_of?(ActiveRecord::Base) ?
|
7
|
+
"#{t.class.name.underscore}_#{t.new_record? ? "new" : t.id}" :
|
8
|
+
t.to_s
|
9
|
+
}.join('_')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
ActiveRecord::Base.send :include, AjaxLoading::ActiveRecordExtensions
|
15
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module AjaxLoading
|
2
|
+
module ApplicationHelpers
|
3
|
+
def loadbehind_link(name, object, association, options={})
|
4
|
+
# This should go to the controller for the association class!
|
5
|
+
ass_info = object.class.reflect_on_association(association)
|
6
|
+
ass_controller = options[:controller] ||= ass_info.klass.name.tableize
|
7
|
+
controller_action = (ass_info.macro==:belongs_to) ? :show : :index
|
8
|
+
|
9
|
+
if ass_info.macro == :belongs_to
|
10
|
+
link_to name, :controller=>ass_controller,
|
11
|
+
:action=>:show,
|
12
|
+
:id=>object.send(ass_info.association_foreign_key),
|
13
|
+
:container=>object.element_id(association),
|
14
|
+
:remote=>true
|
15
|
+
else
|
16
|
+
form_tag({:controller=>ass_controller, :action=>:index},
|
17
|
+
:method=>:get, :remote=>true, :id=>object.element_id(:show, association)) do
|
18
|
+
concat hidden_field(:associated, :class_name, :value=>object.class.name) +
|
19
|
+
hidden_field(:associated, :id, :value=>object.id) +
|
20
|
+
hidden_field(:associated, :association, :value=>association.to_s) +
|
21
|
+
link_to(name,{},{:href=>"#", "data-submit"=>object.element_id(:show, association)})
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
ActionView::Base.send :include, AjaxLoading::ApplicationHelpers
|
29
|
+
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module LoadBehind
|
2
2
|
class ControllerResource < CanCan::ControllerResource
|
3
3
|
def initialize(controller, name, parent = nil, options = {})
|
4
4
|
super(controller, name, parent, options)
|
@@ -7,12 +7,15 @@ module AjaxLoading
|
|
7
7
|
def load_resource
|
8
8
|
puts "AjaxLoading::load_resource"
|
9
9
|
params = @controller.params
|
10
|
+
set_controller_var 'container', params[:container] if params.has_key?(:container)
|
11
|
+
|
10
12
|
if params.has_key?(:associated)
|
11
13
|
ass_params = params[:associated]
|
12
14
|
relation = ass_params["class_name"].constantize.find(ass_params["id"])
|
13
15
|
association = ass_params["association"]
|
14
|
-
|
15
|
-
|
16
|
+
|
17
|
+
set_controller_var 'container', get_controller_var('container') ||
|
18
|
+
relation.element_id(:show, association)
|
16
19
|
|
17
20
|
self.model_instance = relation.send(association)
|
18
21
|
elsif collection_action?
|
@@ -20,15 +23,16 @@ module AjaxLoading
|
|
20
23
|
else
|
21
24
|
super
|
22
25
|
end
|
26
|
+
set_controller_var 'container', get_controller_var('container') || 'main_container'
|
23
27
|
end
|
24
28
|
|
25
29
|
private
|
26
30
|
|
27
|
-
def
|
31
|
+
def set_controller_var(name, value)
|
28
32
|
name = '@'+name unless name.include?('@')
|
29
33
|
@controller.instance_variable_set(name, value)
|
30
34
|
end
|
31
|
-
def
|
35
|
+
def get_controller_var(name)
|
32
36
|
name = '@'+name unless name.include?('@')
|
33
37
|
@controller.instance_variable_get(name)
|
34
38
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class LoadbehindGenerator < Rails::Generators::NamedBase
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
|
4
|
+
IMAGES=["error", "growl_bottom", "growl_repeat", "growl_top", "info"]
|
5
|
+
JAVASCRIPTS=["loadbehind", "jquery.growl"]
|
6
|
+
|
7
|
+
def generate_loadbehind
|
8
|
+
view_dir = "app/views/#{plural_name}"
|
9
|
+
|
10
|
+
JAVASCRIPTS.each do |js|
|
11
|
+
copy_file "#{js}.js", "public/javascripts/#{js}.js"
|
12
|
+
end
|
13
|
+
|
14
|
+
IMAGES.each do |image|
|
15
|
+
copy_file "images/#{image}.png", "public/images/growl/#{image}.png"
|
16
|
+
end
|
17
|
+
|
18
|
+
["index", "show"].each do |act|
|
19
|
+
self.action_name = act
|
20
|
+
template "view.js.haml", "#{view_dir}/#{action_name}.js.haml"
|
21
|
+
end
|
22
|
+
self.action_name = "show"
|
23
|
+
template "view.js.haml", "#{view_dir}/update.js.haml"
|
24
|
+
|
25
|
+
["edit", "new"].each do |act|
|
26
|
+
self.action_name = act
|
27
|
+
template "edit.js.haml", "#{view_dir}/#{action_name}.js.haml"
|
28
|
+
end
|
29
|
+
|
30
|
+
["destroy.js", "_errors.html"].each do |file|
|
31
|
+
template "#{file}.haml", "#{view_dir}/#{file}.haml"
|
32
|
+
end
|
33
|
+
|
34
|
+
puts "**** Remember to add loadbehind.js and jquery.growl.js to the
|
35
|
+
javascript tags, or add it to your own js files.
|
36
|
+
You'll also need to add handling to see that all your
|
37
|
+
events are reconnected each time you reload. "
|
38
|
+
end
|
39
|
+
|
40
|
+
attr_accessor :action_name
|
41
|
+
|
42
|
+
end
|
43
|
+
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,143 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery Growl plugin
|
3
|
+
* Version 1.0.2 (8/1/2009)
|
4
|
+
* @requires jQuery v1.3.2 or later
|
5
|
+
*
|
6
|
+
* Examples at: http://fragmentedcode.com/jquery-growl
|
7
|
+
* Copyright (c) 2008-2009 David Higgins
|
8
|
+
*
|
9
|
+
* Special thanks to Daniel Mota for inspiration:
|
10
|
+
* http://icebeat.bitacoras.com/mootools/growl/
|
11
|
+
*/
|
12
|
+
|
13
|
+
/*
|
14
|
+
USAGE:
|
15
|
+
|
16
|
+
$.growl(title, msg);
|
17
|
+
$.growl(title, msg, image);
|
18
|
+
$.growl(title, msg, image, priority);
|
19
|
+
|
20
|
+
THEME/SKIN:
|
21
|
+
|
22
|
+
You can override the default look and feel by updating these objects:
|
23
|
+
$.growl.settings.displayTimeout = 4000;
|
24
|
+
$.growl.settings.noticeTemplate = ''
|
25
|
+
+ '<div>'
|
26
|
+
+ '<div style="float: right; background-image: url(my.growlTheme/normalTop.png); position: relative; width: 259px; height: 16px; margin: 0pt;"></div>'
|
27
|
+
+ '<div style="float: right; background-image: url(my.growlTheme/normalBackground.png); position: relative; display: block; color: #ffffff; font-family: Arial; font-size: 12px; line-height: 14px; width: 259px; margin: 0pt;">'
|
28
|
+
+ ' <img style="margin: 14px; margin-top: 0px; float: left;" src="%image%" />'
|
29
|
+
+ ' <h3 style="margin: 0pt; margin-left: 77px; padding-bottom: 10px; font-size: 13px;">%title%</h3>'
|
30
|
+
+ ' <p style="margin: 0pt 14px; margin-left: 77px; font-size: 12px;">%message%</p>'
|
31
|
+
+ '</div>'
|
32
|
+
+ '<div style="float: right; background-image: url(my.growlTheme/normalBottom.png); position: relative; width: 259px; height: 16px; margin-bottom: 10px;"></div>'
|
33
|
+
+ '</div>';
|
34
|
+
$.growl.settings.noticeCss = {
|
35
|
+
position: 'relative'
|
36
|
+
};
|
37
|
+
|
38
|
+
To change the 'dock' look, and position:
|
39
|
+
|
40
|
+
$.growl.settings.dockTemplate = '<div></div>';
|
41
|
+
$.growl.settings.dockCss = {
|
42
|
+
position: 'absolute',
|
43
|
+
top: '10px',
|
44
|
+
right: '10px',
|
45
|
+
width: '300px'
|
46
|
+
};
|
47
|
+
|
48
|
+
The dockCss will allow you to 'dock' the notifications to a specific area
|
49
|
+
on the page, such as TopRight (the default) or TopLeft, perhaps even in a
|
50
|
+
smaller area with "overflow: scroll" enabled?
|
51
|
+
*/
|
52
|
+
|
53
|
+
(function($) {
|
54
|
+
|
55
|
+
$.growl = function(title,message,image,priority) { notify(title,message,image,priority); }
|
56
|
+
$.growl.version = "1.0.2";
|
57
|
+
|
58
|
+
function create(rebuild) {
|
59
|
+
var instance = document.getElementById('growlDock');
|
60
|
+
if(!instance || rebuild) {
|
61
|
+
instance = $(jQuery.growl.settings.dockTemplate).attr('id', 'growlDock').addClass('growl');
|
62
|
+
if(jQuery.growl.settings.defaultStylesheet) {
|
63
|
+
$('head').append('<link rel="stylesheet" type="text/css" href="' + jQuery.growl.settings.defaultStylesheet + '" />');
|
64
|
+
}
|
65
|
+
|
66
|
+
} else {
|
67
|
+
instance = $(instance);
|
68
|
+
}
|
69
|
+
$('body').append(instance.css(jQuery.growl.settings.dockCss));
|
70
|
+
return instance;
|
71
|
+
};
|
72
|
+
|
73
|
+
function r(text, expr, val) {
|
74
|
+
while(expr.test(text)) {
|
75
|
+
text = text.replace(expr, val);
|
76
|
+
}
|
77
|
+
return text;
|
78
|
+
};
|
79
|
+
|
80
|
+
function notify(title,message,image,priority) {
|
81
|
+
var instance = create();
|
82
|
+
var html = jQuery.growl.settings.noticeTemplate;
|
83
|
+
if(typeof(html) == 'object') html = $(html).html();
|
84
|
+
html = r(html, /%message%/, (message?message:''));
|
85
|
+
html = r(html, /%title%/, (title?title:''));
|
86
|
+
html = r(html, /%image%/, (image?image:jQuery.growl.settings.defaultImage));
|
87
|
+
html = r(html, /%priority%/, (priority?priority:'normal'));
|
88
|
+
|
89
|
+
var notice = $(html)
|
90
|
+
.hide()
|
91
|
+
.css(jQuery.growl.settings.noticeCss)
|
92
|
+
.fadeIn(jQuery.growl.settings.notice);;
|
93
|
+
|
94
|
+
$.growl.settings.noticeDisplay(notice);
|
95
|
+
instance.append(notice);
|
96
|
+
$('a[rel="close"]', notice).click(function() {
|
97
|
+
notice.remove();
|
98
|
+
});
|
99
|
+
if ($.growl.settings.displayTimeout > 0) {
|
100
|
+
setTimeout(function(){
|
101
|
+
jQuery.growl.settings.noticeRemove(notice, function(){
|
102
|
+
notice.remove();
|
103
|
+
});
|
104
|
+
}, jQuery.growl.settings.displayTimeout);
|
105
|
+
}
|
106
|
+
};
|
107
|
+
|
108
|
+
|
109
|
+
// default settings
|
110
|
+
$.growl.settings = {
|
111
|
+
dockTemplate: '<div></div>',
|
112
|
+
dockCss: {
|
113
|
+
position: 'fixed',
|
114
|
+
top: '10px',
|
115
|
+
right: '10px',
|
116
|
+
width: '300px',
|
117
|
+
zIndex: 50000
|
118
|
+
},
|
119
|
+
noticeTemplate:
|
120
|
+
'<div class="notice">' +
|
121
|
+
' <h3 style="margin-top: 15px"><a rel="close">%title%</a></h3>' +
|
122
|
+
' <p>%message%</p>' +
|
123
|
+
'</div>',
|
124
|
+
noticeCss: {
|
125
|
+
opacity: .75,
|
126
|
+
backgroundColor: '#333333',
|
127
|
+
color: '#ffffff'
|
128
|
+
},
|
129
|
+
noticeDisplay: function(notice) {
|
130
|
+
notice.css({'opacity':'0'}).fadeIn(jQuery.growl.settings.noticeFadeTimeout);
|
131
|
+
},
|
132
|
+
noticeRemove: function(notice, callback) {
|
133
|
+
notice.animate({opacity: '0', height: '0px'}, {duration:jQuery.growl.settings.noticeFadeTimeout, complete: callback});
|
134
|
+
},
|
135
|
+
noticeFadeTimeout: 'slow',
|
136
|
+
displayTimeout: 3500,
|
137
|
+
defaultImage: 'growl.jpg',
|
138
|
+
defaultStylesheet: null,
|
139
|
+
noticeElement: function(el) {
|
140
|
+
$.growl.settings.noticeTemplate = $(el);
|
141
|
+
}
|
142
|
+
};
|
143
|
+
})(jQuery);
|
@@ -0,0 +1,33 @@
|
|
1
|
+
$(function () {
|
2
|
+
$('[data-submit]').click(function() {
|
3
|
+
$('#'+$(this).attr('data-submit')).submit();
|
4
|
+
return false;
|
5
|
+
});
|
6
|
+
|
7
|
+
$.growl.settings.dockCss.width = '225px';
|
8
|
+
$.growl.settings.noticeTemplate = ''
|
9
|
+
+ '<table width="225" border="0" cellpadding="0" cellspacing="0">'
|
10
|
+
+ ' <tr>'
|
11
|
+
+ ' <td style="background-image: url(images/growl/growl_top.png); width: 225px; height: 49px; background-repeat: no-repeat; color: #fff;">'
|
12
|
+
+ ' <img src="%image%" style="max-width: 25px; max-height: 25px; text-align: center; margin-left: 19px; margin-top: 19px;" />'
|
13
|
+
+ ' <h1 style="font-size: 18px; margin: 0pt; margin-left: 5px; margin-bottom: 10px; display: inline;">%title%</h1>'
|
14
|
+
+ ' </td>'
|
15
|
+
+ ' </tr>'
|
16
|
+
+ ' <tr>'
|
17
|
+
+ ' <td style="background-image: url(images/growl/growl_repeat.png); width: 225px; background-repeat: repeat-y; color: #ddd;">'
|
18
|
+
+ ' <p style="margin: 20px;">%message%</p>'
|
19
|
+
+ ' </td>'
|
20
|
+
+ ' </tr>'
|
21
|
+
+ ' <tr>'
|
22
|
+
+ ' <td style="background-image: url(images/growl/growl_bottom.png); background-repeat: no-repeat; width: 225px; height: 27px;" valign="top" align="right" >'
|
23
|
+
+ ' <a style="margin-right: 25px; font-size: 10px; color: #fff; text-align: right;" href="" onclick="return false;" rel="close">Close</a>'
|
24
|
+
+ ' </td>'
|
25
|
+
+ ' </tr>'
|
26
|
+
'+ </table>';
|
27
|
+
$.growl.settings.noticeCss = {
|
28
|
+
position: 'relative'
|
29
|
+
};
|
30
|
+
|
31
|
+
|
32
|
+
});
|
33
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: casey_jones
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 215
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 100
|
10
|
+
version: 0.0.100
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tyler Gannon
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-22 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -33,7 +33,9 @@ files:
|
|
33
33
|
- Rakefile
|
34
34
|
- install.rb
|
35
35
|
- lib/acts_as_linkable/acts_as_linkable.rb
|
36
|
+
- lib/ajax_loading/active_record_extensions.rb
|
36
37
|
- lib/ajax_loading/ajax_loading.rb
|
38
|
+
- lib/ajax_loading/application_helpers.rb
|
37
39
|
- lib/ajax_loading/controller_resource.rb
|
38
40
|
- lib/anaf_active_record.rb
|
39
41
|
- lib/casey_jones.rb
|
@@ -43,6 +45,19 @@ files:
|
|
43
45
|
- lib/generators/anaf_habtm/anaf_habtm_generator.rb
|
44
46
|
- lib/generators/anaf_habtm/assets/nested_attributes.css
|
45
47
|
- lib/generators/anaf_habtm/assets/nested_attributes.js
|
48
|
+
- lib/generators/loadbehind/USAGE
|
49
|
+
- lib/generators/loadbehind/loadbehind_generator.rb
|
50
|
+
- lib/generators/loadbehind/templates/_errors.html.haml
|
51
|
+
- lib/generators/loadbehind/templates/destroy.js.haml
|
52
|
+
- lib/generators/loadbehind/templates/edit.js.haml
|
53
|
+
- lib/generators/loadbehind/templates/images/error.png
|
54
|
+
- lib/generators/loadbehind/templates/images/growl_bottom.png
|
55
|
+
- lib/generators/loadbehind/templates/images/growl_repeat.png
|
56
|
+
- lib/generators/loadbehind/templates/images/growl_top.png
|
57
|
+
- lib/generators/loadbehind/templates/images/info.png
|
58
|
+
- lib/generators/loadbehind/templates/jquery.growl.js
|
59
|
+
- lib/generators/loadbehind/templates/loadbehind.js
|
60
|
+
- lib/generators/loadbehind/templates/view.js.haml
|
46
61
|
- test/anaf_habtm_test.rb
|
47
62
|
- test/test_helper.rb
|
48
63
|
- uninstall.rb
|