puffer 0.0.5 → 0.0.6
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/.rspec +1 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +12 -0
- data/VERSION +1 -1
- data/app/cells/puffer/base/additional.html.erb +17 -0
- data/app/cells/puffer/base_cell.rb +25 -0
- data/app/controllers/admin/dashboard_controller.rb +12 -0
- data/app/views/admin/dashboard/index.html.erb +1 -0
- data/app/views/layouts/puffer.html.erb +41 -23
- data/app/views/puffer/_form.html.erb +3 -11
- data/app/views/puffer/edit.html.erb +6 -4
- data/app/views/puffer/index.html.erb +11 -38
- data/app/views/puffer/new.html.erb +5 -2
- data/app/views/puffer/show.html.erb +4 -4
- data/config/routes.rb +7 -0
- data/lib/generators/puffer/controller/controller_generator.rb +1 -1
- data/lib/generators/puffer/install/templates/puffer/javascripts/rails-src.js +399 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/rails.js +14 -175
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-calendar-src.js +1461 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js +36 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit-src.js +369 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js +13 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox-src.js +905 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js +24 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-sortable-src.js +428 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js +17 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-src.js +5892 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-tabs-src.js +1145 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js +29 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right.js +95 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/stylesheets/puffer.css +168 -0
- data/lib/generators/puffer/install/templates/puffer/stylesheets/reset.css +60 -0
- data/lib/puffer.rb +2 -1
- data/lib/puffer/base.rb +15 -14
- data/lib/puffer/controller/config.rb +52 -16
- data/lib/puffer/controller/dsl.rb +27 -29
- data/lib/puffer/controller/helpers.rb +54 -9
- data/lib/puffer/controller/mutate.rb +4 -22
- data/lib/puffer/engine.rb +9 -0
- data/lib/puffer/extensions/controller.rb +5 -3
- data/lib/puffer/extensions/form.rb +14 -0
- data/lib/puffer/extensions/mapper.rb +36 -0
- data/lib/puffer/fields.rb +21 -0
- data/lib/puffer/fields/field.rb +8 -3
- data/lib/puffer/inputs.rb +23 -0
- data/lib/puffer/inputs/association.rb +11 -0
- data/lib/puffer/inputs/base.rb +39 -0
- data/lib/puffer/inputs/boolean.rb +19 -0
- data/lib/puffer/inputs/collection_association.rb +11 -0
- data/lib/puffer/inputs/date_time.rb +16 -0
- data/lib/puffer/inputs/file.rb +11 -0
- data/lib/puffer/inputs/password.rb +11 -0
- data/lib/puffer/inputs/select.rb +11 -0
- data/lib/puffer/inputs/text.rb +11 -0
- data/lib/puffer/path_set.rb +17 -0
- data/lib/puffer/resource.rb +14 -14
- data/puffer.gemspec +75 -8
- data/spec/dummy/app/controllers/admin/categories_controller.rb +4 -0
- data/spec/dummy/app/controllers/admin/posts_controller.rb +4 -0
- data/spec/dummy/app/controllers/admin/profiles_controller.rb +5 -0
- data/spec/dummy/app/controllers/admin/users_controller.rb +4 -0
- data/spec/dummy/app/models/friendship.rb +4 -0
- data/spec/dummy/app/models/profile.rb +2 -0
- data/spec/dummy/app/models/user.rb +7 -0
- data/spec/dummy/app/views/admin/users/index.html.erb +1 -0
- data/spec/dummy/config/puffer.rb +0 -0
- data/spec/dummy/db/migrate/20110107082706_create_friendships.rb +15 -0
- data/spec/dummy/db/schema.rb +9 -1
- data/spec/dummy/public/puffer/javascripts/rails-src.js +399 -0
- data/spec/dummy/public/puffer/javascripts/rails.js +14 -0
- data/spec/dummy/public/puffer/javascripts/right-calendar-src.js +1461 -0
- data/spec/dummy/public/puffer/javascripts/right-calendar.js +36 -0
- data/spec/dummy/public/puffer/javascripts/right-calendar.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-in-edit-src.js +369 -0
- data/spec/dummy/public/puffer/javascripts/right-in-edit.js +13 -0
- data/spec/dummy/public/puffer/javascripts/right-in-edit.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-lightbox-src.js +905 -0
- data/spec/dummy/public/puffer/javascripts/right-lightbox.js +24 -0
- data/spec/dummy/public/puffer/javascripts/right-lightbox.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-sortable-src.js +428 -0
- data/spec/dummy/public/puffer/javascripts/right-sortable.js +17 -0
- data/spec/dummy/public/puffer/javascripts/right-sortable.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-src.js +5892 -0
- data/spec/dummy/public/puffer/javascripts/right-tabs-src.js +1145 -0
- data/spec/dummy/public/puffer/javascripts/right-tabs.js +29 -0
- data/spec/dummy/public/puffer/javascripts/right-tabs.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right.js +95 -0
- data/spec/dummy/public/puffer/javascripts/right.js.gz +0 -0
- data/spec/dummy/public/puffer/stylesheets/puffer.css +168 -0
- data/spec/dummy/public/puffer/stylesheets/reset.css +60 -0
- data/spec/lib/fields_spec.rb +2 -0
- data/spec/lib/params_spec.rb +55 -54
- metadata +114 -23
- data/lib/generators/puffer/install/templates/puffer/javascripts/application.js +0 -2
- data/lib/generators/puffer/install/templates/puffer/javascripts/controls.js +0 -965
- data/lib/generators/puffer/install/templates/puffer/javascripts/dragdrop.js +0 -974
- data/lib/generators/puffer/install/templates/puffer/javascripts/effects.js +0 -1123
- data/lib/generators/puffer/install/templates/puffer/javascripts/prototype.js +0 -6001
- data/lib/puffer/railtie.rb +0 -5
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
class User < ActiveRecord::Base
|
|
2
2
|
has_one :profile
|
|
3
3
|
has_many :posts
|
|
4
|
+
|
|
5
|
+
has_many :friendships
|
|
6
|
+
has_many :friendship_requests, :source => :friend, :through => :friendships, :conditions => {:state => 'requested'}
|
|
7
|
+
has_many :friends, :through => :friendships, :conditions => {:state => 'accepted'}
|
|
8
|
+
|
|
9
|
+
validates_presence_of :email, :password
|
|
10
|
+
validates_length_of :password, :minimum => 6
|
|
4
11
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
HELO!!!
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class CreateFriendships < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :friendships do |t|
|
|
4
|
+
t.integer :user_id
|
|
5
|
+
t.integer :friend_id
|
|
6
|
+
t.string :state
|
|
7
|
+
|
|
8
|
+
t.timestamps
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.down
|
|
13
|
+
drop_table :friendships
|
|
14
|
+
end
|
|
15
|
+
end
|
data/spec/dummy/db/schema.rb
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#
|
|
11
11
|
# It's strongly recommended to check this file into your version control system.
|
|
12
12
|
|
|
13
|
-
ActiveRecord::Schema.define(:version =>
|
|
13
|
+
ActiveRecord::Schema.define(:version => 20110107082706) do
|
|
14
14
|
|
|
15
15
|
create_table "categories", :force => true do |t|
|
|
16
16
|
t.string "title"
|
|
@@ -18,6 +18,14 @@ ActiveRecord::Schema.define(:version => 20101011160326) do
|
|
|
18
18
|
t.datetime "updated_at"
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
create_table "friendships", :force => true do |t|
|
|
22
|
+
t.integer "user_id"
|
|
23
|
+
t.integer "friend_id"
|
|
24
|
+
t.string "state"
|
|
25
|
+
t.datetime "created_at"
|
|
26
|
+
t.datetime "updated_at"
|
|
27
|
+
end
|
|
28
|
+
|
|
21
29
|
create_table "post_categories", :force => true do |t|
|
|
22
30
|
t.integer "post_id"
|
|
23
31
|
t.integer "category_id"
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Ruby On Rails plugin for RightJS
|
|
3
|
+
* http://github.com/MadRabbit/right-rails
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2009-2010 Nikolay Nemshilov
|
|
6
|
+
*/
|
|
7
|
+
(function(window, document, RightJS) {
|
|
8
|
+
/**
|
|
9
|
+
* Underscored aliases for Ruby On Rails
|
|
10
|
+
*
|
|
11
|
+
* Copyright (C) 2009-2010 Nikolay Nemshilov
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The Rails plugin initialization script
|
|
16
|
+
*
|
|
17
|
+
* Copyright (C) 2010 Nikolay Nemshilov
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
var R = RightJS,
|
|
21
|
+
$ = RightJS.$,
|
|
22
|
+
$$ = RightJS.$$,
|
|
23
|
+
$E = RightJS.$E,
|
|
24
|
+
Xhr = RightJS.Xhr,
|
|
25
|
+
Object = RightJS.Object;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// the language and window level aliases
|
|
30
|
+
R([
|
|
31
|
+
RightJS.String.prototype,
|
|
32
|
+
RightJS.Array.prototype,
|
|
33
|
+
RightJS.Function.prototype,
|
|
34
|
+
RightJS.Object,
|
|
35
|
+
RightJS.Options,
|
|
36
|
+
RightJS.Observer,
|
|
37
|
+
RightJS.Observer.prototype,
|
|
38
|
+
window,
|
|
39
|
+
document
|
|
40
|
+
]).each(function(object) {
|
|
41
|
+
for (var key in object) {
|
|
42
|
+
try { // some keys are not accessable
|
|
43
|
+
|
|
44
|
+
if (/[A-Z]/.test(key) && typeof(object[key]) === 'function') {
|
|
45
|
+
var u_key = R(key).underscored();
|
|
46
|
+
if (object[u_key] === null || object[u_key] === undefined) {
|
|
47
|
+
object[u_key] = object[key];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
} catch (e) {}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// DOM package aliases
|
|
56
|
+
R([
|
|
57
|
+
RightJS.Element,
|
|
58
|
+
RightJS.Event,
|
|
59
|
+
RightJS.Form,
|
|
60
|
+
RightJS.Input
|
|
61
|
+
]).each(function(object) {
|
|
62
|
+
if (!object) { return; }
|
|
63
|
+
|
|
64
|
+
var aliases = {}, methods = object.prototype;
|
|
65
|
+
|
|
66
|
+
for (var key in methods) {
|
|
67
|
+
if (/[A-Z]/.test(key) && typeof(methods[key]) === 'function') {
|
|
68
|
+
object.prototype[R(key).underscored()] = methods[key];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// various ruby-like method aliases
|
|
74
|
+
RightJS.$alias(RightJS.String.prototype, {
|
|
75
|
+
index_of: 'indexOf',
|
|
76
|
+
last_index_of: 'lastIndexOf',
|
|
77
|
+
to_f: 'toFloat',
|
|
78
|
+
to_i: 'toInt',
|
|
79
|
+
gsub: 'replace',
|
|
80
|
+
downcase: 'toLowerCase',
|
|
81
|
+
upcase: 'toUpperCase',
|
|
82
|
+
index: 'indexOf',
|
|
83
|
+
rindex: 'lastIndexOf',
|
|
84
|
+
strip: 'trim'
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
RightJS.$alias(RightJS.Array.prototype, {
|
|
88
|
+
collect: 'map',
|
|
89
|
+
detect: 'filter',
|
|
90
|
+
index_of: 'indexOf',
|
|
91
|
+
last_index_of: 'lastIndexOf',
|
|
92
|
+
index: 'indexOf',
|
|
93
|
+
rindex: 'lastIndexOf'
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Rails 3 UJS support module
|
|
98
|
+
*
|
|
99
|
+
* Copyright (C) 2010 Nikolay Nemshilov
|
|
100
|
+
*/
|
|
101
|
+
(function() {
|
|
102
|
+
// tries to cancel the event via confirmation
|
|
103
|
+
var user_cancels = function(event, element) {
|
|
104
|
+
var message = element.get('data-confirm');
|
|
105
|
+
if (message && !confirm(message)) {
|
|
106
|
+
event.stop();
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// adds XHR events to the element
|
|
112
|
+
var add_xhr_events = function(element, options) {
|
|
113
|
+
return Object.merge({
|
|
114
|
+
onCreate: function() { element.fire('ajax:loading', this); },
|
|
115
|
+
onComplete: function() { element.fire('ajax:complete', this); },
|
|
116
|
+
onSuccess: function() { element.fire('ajax:success', this); },
|
|
117
|
+
onFailure: function() { element.fire('ajax:failure', this); }
|
|
118
|
+
}, options);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// processes link clicks
|
|
122
|
+
var try_link_submit = function(event) {
|
|
123
|
+
var link = event.target,
|
|
124
|
+
method = link.get('data-method'),
|
|
125
|
+
remote = link.get('data-remote'),
|
|
126
|
+
url = link.get('href');
|
|
127
|
+
|
|
128
|
+
if (user_cancels(event, link)) { return; }
|
|
129
|
+
if (method || remote) { event.stop(); }
|
|
130
|
+
|
|
131
|
+
if (remote) {
|
|
132
|
+
Xhr.load(url, add_xhr_events(link, {
|
|
133
|
+
method: method || 'get',
|
|
134
|
+
spinner: link.get('data-spinner')
|
|
135
|
+
}));
|
|
136
|
+
|
|
137
|
+
} else if (method) {
|
|
138
|
+
var param = $$('meta[name=csrf-param]')[0],
|
|
139
|
+
token = $$('meta[name=csrf-token]')[0],
|
|
140
|
+
form = $E('form', {action: url, method: 'post'});
|
|
141
|
+
|
|
142
|
+
if (param && token) {
|
|
143
|
+
form.insert('<input type="hidden" name="'+param.get('content')+'" value="'+token.get('content')+'" />');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
form.insert('<input type="hidden" name="_method" value="'+method+'"/>')
|
|
147
|
+
.insertTo(document.body).submit();
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
// global events listeners
|
|
152
|
+
$(document).on({
|
|
153
|
+
click: function(event) {
|
|
154
|
+
var tag = event.target._.tagName;
|
|
155
|
+
if (tag === 'A' || tag === 'BUTTON') {
|
|
156
|
+
try_link_submit(event);
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
submit: function(event) {
|
|
161
|
+
var form = event.target;
|
|
162
|
+
if (form.has('data-remote') && !user_cancels(event, form)) {
|
|
163
|
+
event.stop();
|
|
164
|
+
form.send(add_xhr_events(form, {
|
|
165
|
+
spinner: form.get('data-spinner') || form.first('.spinner')
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
})();
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* RR is the common ajax operations wrapper for ruby on rails
|
|
175
|
+
*
|
|
176
|
+
* Copyright (C) 2009-2010 Nikolay Nemshilov
|
|
177
|
+
*/
|
|
178
|
+
var RR = {
|
|
179
|
+
/**
|
|
180
|
+
* Basic options
|
|
181
|
+
*
|
|
182
|
+
* NOTE: DO NOT CHANGE this hash right here
|
|
183
|
+
* Use your application.js file to alter the options
|
|
184
|
+
*/
|
|
185
|
+
Options: {
|
|
186
|
+
format: 'js', // the working format for remote requests over the application
|
|
187
|
+
|
|
188
|
+
flashId: 'flashes', // the flashes element id
|
|
189
|
+
flashHideFx: 'slide', // use null if you don't want any fx in here
|
|
190
|
+
flashHideDelay: 3200, // use -1 to disable the flash element hidding
|
|
191
|
+
|
|
192
|
+
highlightUpdates: true,
|
|
193
|
+
|
|
194
|
+
removeFx: 'fade', // blocks removing fx
|
|
195
|
+
insertFx: 'fade', // blocks insertion fx
|
|
196
|
+
|
|
197
|
+
insertPosition: 'bottom', // default insert position
|
|
198
|
+
|
|
199
|
+
linkToAjaxEdit: '.ajax_edit',
|
|
200
|
+
linkToAjaxDelete: '.ajax_delete',
|
|
201
|
+
|
|
202
|
+
rescanWithScopes: true // if it should rescan only updated elements
|
|
203
|
+
},
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Updates the flashes block with the source
|
|
207
|
+
*
|
|
208
|
+
* @param String new content
|
|
209
|
+
* @return RR this
|
|
210
|
+
*/
|
|
211
|
+
update_flash: function(content) {
|
|
212
|
+
var element = $(this.Options.flashId);
|
|
213
|
+
if (element) {
|
|
214
|
+
this.replace(element, content).hide_flash();
|
|
215
|
+
}
|
|
216
|
+
return this;
|
|
217
|
+
},
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Initializes the delayed flashes hide call
|
|
221
|
+
*
|
|
222
|
+
* @return RR this
|
|
223
|
+
*/
|
|
224
|
+
hide_flash: function() {
|
|
225
|
+
if (this.Options.flashHideDelay > -1) {
|
|
226
|
+
var element = $(this.Options.flashId);
|
|
227
|
+
if (element && element.visible()) {
|
|
228
|
+
element.hide.bind(element, this.Options.flashHideFx).delay(this.Options.flashHideDelay);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return this;
|
|
232
|
+
},
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Highlights the element according to the options
|
|
236
|
+
*
|
|
237
|
+
* @param String element id
|
|
238
|
+
* @return RR this
|
|
239
|
+
*/
|
|
240
|
+
highlight: function(id) {
|
|
241
|
+
if ($(id) && this.Options.highlightUpdates) {
|
|
242
|
+
$(id).highlight();
|
|
243
|
+
}
|
|
244
|
+
return this;
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Inserts the content into the given element
|
|
249
|
+
*
|
|
250
|
+
* @param destination String destination id
|
|
251
|
+
* @param content String content
|
|
252
|
+
* @param position String position
|
|
253
|
+
* @return RR this
|
|
254
|
+
*/
|
|
255
|
+
insert: function(where, what, in_position) {
|
|
256
|
+
var position = in_position || this.Options.insertPosition, new_element,
|
|
257
|
+
container = $(where).insert(what, position);
|
|
258
|
+
|
|
259
|
+
// trying to find the new block
|
|
260
|
+
switch (position) {
|
|
261
|
+
case 'bottom': new_element = container.children().last(); break;
|
|
262
|
+
case 'top': new_element = container.first(); break;
|
|
263
|
+
case 'before': new_element = container.prev(); break;
|
|
264
|
+
case 'after': new_element = container.next(); break;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// necely displaying the new block
|
|
268
|
+
if (new_element && this.Options.insertFx) {
|
|
269
|
+
new_element.hide().show(this.Options.insertFx, {
|
|
270
|
+
onFinish: this.highlight.bind(this, new_element)
|
|
271
|
+
});
|
|
272
|
+
} else {
|
|
273
|
+
this.highlight(new_element);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return this.rescan(where);
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Replaces the given element with a new content
|
|
281
|
+
*
|
|
282
|
+
* @param destination String destination id
|
|
283
|
+
* @param content String content
|
|
284
|
+
* @return RR this
|
|
285
|
+
*/
|
|
286
|
+
replace: function(id, source) {
|
|
287
|
+
$(id).replace(source);
|
|
288
|
+
return this.highlight(id).rescan(id);
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* removes the element by id
|
|
293
|
+
*
|
|
294
|
+
* @param String element id
|
|
295
|
+
* @return RR this
|
|
296
|
+
*/
|
|
297
|
+
remove: function(id) {
|
|
298
|
+
if ($(id)) {
|
|
299
|
+
$(id).remove(this.Options.removeFx);
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Makes a remote form out of the form
|
|
305
|
+
*
|
|
306
|
+
* @param String form id
|
|
307
|
+
* @return RR this
|
|
308
|
+
*/
|
|
309
|
+
remotize_form: function(id) {
|
|
310
|
+
var form = $(id);
|
|
311
|
+
if (form) {
|
|
312
|
+
form.remotize().enable()._.action += '.'+this.Options.format;
|
|
313
|
+
}
|
|
314
|
+
return this;
|
|
315
|
+
},
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Replaces the form with new content and makes it remote
|
|
319
|
+
*
|
|
320
|
+
* @param form id String form id
|
|
321
|
+
* @param content String content
|
|
322
|
+
* @return RR this
|
|
323
|
+
*/
|
|
324
|
+
replace_form: function(id, source) {
|
|
325
|
+
var form = $(id);
|
|
326
|
+
if (form) {
|
|
327
|
+
form.replace(source);
|
|
328
|
+
this.remotize_form(id);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
return this.rescan(id);
|
|
332
|
+
},
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Inserts the form source into the given element
|
|
336
|
+
*
|
|
337
|
+
* @param target id String target id
|
|
338
|
+
* @param source String form source
|
|
339
|
+
* @return RR this
|
|
340
|
+
*/
|
|
341
|
+
show_form_for: function(id, source) {
|
|
342
|
+
$(id).select('form').each('remove'); // removing old forms
|
|
343
|
+
$(id).insert(source);
|
|
344
|
+
|
|
345
|
+
return this.remotize_form($(id).first('form')).rescan(id);
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* watches link clicks and processes the ajax edit/delete operations
|
|
350
|
+
*
|
|
351
|
+
* @param Event event
|
|
352
|
+
*/
|
|
353
|
+
process_click: function(event) {
|
|
354
|
+
var link;
|
|
355
|
+
|
|
356
|
+
if ((link = event.find('a'+ this.Options.linkToAjaxEdit))) {
|
|
357
|
+
event.stop();
|
|
358
|
+
Xhr.load(link.get('href') + '.' + this.Options.format);
|
|
359
|
+
} else if ((link = event.find('a'+ this.Options.linkToAjaxDelete)) && link.has('onclick')) {
|
|
360
|
+
event.stop();
|
|
361
|
+
eval('({f:'+ link.onclick.toString().replace('.submit', '.send')+'})').f.call(link);
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Scans for updated elements
|
|
367
|
+
*
|
|
368
|
+
* @return RR this
|
|
369
|
+
*/
|
|
370
|
+
rescan: function(scope) {
|
|
371
|
+
$w('Draggable Droppable Tabs Slider Selectable').each(function(name) {
|
|
372
|
+
if (name in window) {
|
|
373
|
+
window[name].rescan(this.Options.rescanWithScopes ? scope : null);
|
|
374
|
+
}
|
|
375
|
+
}, this);
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
return this;
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* the document onload hooks
|
|
385
|
+
*
|
|
386
|
+
* Copyright (C) 2010 Nikolay Nemshilov
|
|
387
|
+
*/
|
|
388
|
+
$(document).on({
|
|
389
|
+
ready: function() {
|
|
390
|
+
RR.hide_flash();
|
|
391
|
+
},
|
|
392
|
+
|
|
393
|
+
click: function(event) {
|
|
394
|
+
RR.process_click(event);
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
window.RR = RR;
|
|
399
|
+
})(window, document, RightJS);
|