rails 2.1.2 → 2.2.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rails might be problematic. Click here for more details.
- data/CHANGELOG +27 -3
- data/Rakefile +70 -10
- data/bin/about +0 -0
- data/bin/console +0 -0
- data/bin/destroy +0 -0
- data/bin/generate +0 -0
- data/bin/performance/benchmarker +0 -0
- data/bin/performance/profiler +0 -0
- data/bin/performance/request +0 -0
- data/bin/plugin +0 -0
- data/bin/process/inspector +0 -0
- data/bin/process/reaper +0 -0
- data/bin/process/spawner +0 -0
- data/bin/runner +0 -0
- data/bin/server +0 -0
- data/config.ru +17 -0
- data/configs/apache.conf +0 -0
- data/configs/databases/ibm_db.yml +62 -0
- data/configs/databases/mysql.yml +3 -0
- data/configs/databases/postgresql.yml +3 -0
- data/configs/databases/sqlite2.yml +3 -0
- data/configs/databases/sqlite3.yml +3 -0
- data/configs/locales/en.yml +5 -0
- data/dispatches/dispatch.fcgi +1 -1
- data/dispatches/dispatch.rb +2 -2
- data/dispatches/gateway.cgi +2 -2
- data/doc/README_FOR_APP +5 -2
- data/doc/guides/html/2_2_release_notes.html +1185 -0
- data/doc/guides/html/actioncontroller_basics.html +1270 -0
- data/doc/guides/html/activerecord_validations_callbacks.html +749 -0
- data/doc/guides/html/association_basics.html +2585 -0
- data/doc/guides/html/authors.html +240 -0
- data/doc/guides/html/benchmarking_and_profiling.html +1018 -0
- data/doc/guides/html/caching_with_rails.html +583 -0
- data/doc/guides/html/command_line.html +434 -0
- data/doc/guides/html/configuring.html +438 -0
- data/doc/guides/html/creating_plugins.html +1594 -0
- data/doc/guides/html/debugging_rails_applications.html +1175 -0
- data/doc/guides/html/finders.html +1090 -0
- data/doc/guides/html/form_helpers.html +638 -0
- data/doc/guides/html/getting_started_with_rails.html +2066 -0
- data/doc/guides/html/index.html +349 -0
- data/doc/guides/html/layouts_and_rendering.html +1406 -0
- data/doc/guides/html/migrations.html +921 -0
- data/doc/guides/html/routing_outside_in.html +2213 -0
- data/doc/guides/html/security.html +1346 -0
- data/doc/guides/html/testing_rails_applications.html +1859 -0
- data/doc/guides/source/2_2_release_notes.txt +435 -0
- data/doc/guides/source/actioncontroller_basics/changelog.txt +5 -0
- data/doc/guides/source/actioncontroller_basics/cookies.txt +34 -0
- data/doc/guides/source/actioncontroller_basics/csrf.txt +32 -0
- data/doc/guides/source/actioncontroller_basics/filters.txt +119 -0
- data/doc/guides/source/actioncontroller_basics/http_auth.txt +24 -0
- data/doc/guides/source/actioncontroller_basics/index.txt +40 -0
- data/doc/guides/source/actioncontroller_basics/introduction.txt +9 -0
- data/doc/guides/source/actioncontroller_basics/methods.txt +39 -0
- data/doc/guides/source/actioncontroller_basics/parameter_filtering.txt +14 -0
- data/doc/guides/source/actioncontroller_basics/params.txt +93 -0
- data/doc/guides/source/actioncontroller_basics/request_response_objects.txt +43 -0
- data/doc/guides/source/actioncontroller_basics/rescue.txt +67 -0
- data/doc/guides/source/actioncontroller_basics/session.txt +187 -0
- data/doc/guides/source/actioncontroller_basics/streaming.txt +91 -0
- data/doc/guides/source/actioncontroller_basics/verification.txt +40 -0
- data/doc/guides/source/active_record_basics.txt +181 -0
- data/doc/guides/source/activerecord_validations_callbacks.txt +404 -0
- data/doc/guides/source/association_basics.txt +1840 -0
- data/doc/guides/source/authors.txt +39 -0
- data/doc/guides/source/benchmarking_and_profiling/appendix.txt +95 -0
- data/doc/guides/source/benchmarking_and_profiling/digging_deeper.txt +105 -0
- data/doc/guides/source/benchmarking_and_profiling/edge_rails_features.txt +185 -0
- data/doc/guides/source/benchmarking_and_profiling/gameplan.txt +27 -0
- data/doc/guides/source/benchmarking_and_profiling/index.txt +242 -0
- data/doc/guides/source/benchmarking_and_profiling/rubyprof.txt +179 -0
- data/doc/guides/source/benchmarking_and_profiling/statistics.txt +57 -0
- data/doc/guides/source/caching_with_rails.txt +367 -0
- data/doc/guides/source/command_line.txt +147 -0
- data/doc/guides/source/configuring.txt +225 -0
- data/doc/guides/source/creating_plugins/acts_as_yaffle.txt +191 -0
- data/doc/guides/source/creating_plugins/appendix.txt +46 -0
- data/doc/guides/source/creating_plugins/controllers.txt +59 -0
- data/doc/guides/source/creating_plugins/core_ext.txt +123 -0
- data/doc/guides/source/creating_plugins/custom_route.txt +69 -0
- data/doc/guides/source/creating_plugins/gem.txt +1 -0
- data/doc/guides/source/creating_plugins/generator_method.txt +89 -0
- data/doc/guides/source/creating_plugins/helpers.txt +51 -0
- data/doc/guides/source/creating_plugins/index.txt +52 -0
- data/doc/guides/source/creating_plugins/migration_generator.txt +156 -0
- data/doc/guides/source/creating_plugins/models.txt +76 -0
- data/doc/guides/source/creating_plugins/odds_and_ends.txt +69 -0
- data/doc/guides/source/creating_plugins/test_setup.txt +230 -0
- data/doc/guides/source/debugging_rails_applications.txt +733 -0
- data/doc/guides/source/finders.txt +668 -0
- data/doc/guides/source/form_helpers.txt +345 -0
- data/doc/guides/source/getting_started_with_rails.txt +1256 -0
- data/doc/guides/source/images/belongs_to.png +0 -0
- data/doc/guides/source/images/bullet.gif +0 -0
- data/doc/guides/source/images/csrf.png +0 -0
- data/doc/guides/source/images/habtm.png +0 -0
- data/doc/guides/source/images/has_many.png +0 -0
- data/doc/guides/source/images/has_many_through.png +0 -0
- data/doc/guides/source/images/has_one.png +0 -0
- data/doc/guides/source/images/has_one_through.png +0 -0
- data/doc/guides/source/images/header_backdrop.png +0 -0
- data/doc/guides/source/images/icons/README +5 -0
- data/doc/guides/source/images/icons/callouts/1.png +0 -0
- data/doc/guides/source/images/icons/callouts/10.png +0 -0
- data/doc/guides/source/images/icons/callouts/11.png +0 -0
- data/doc/guides/source/images/icons/callouts/12.png +0 -0
- data/doc/guides/source/images/icons/callouts/13.png +0 -0
- data/doc/guides/source/images/icons/callouts/14.png +0 -0
- data/doc/guides/source/images/icons/callouts/15.png +0 -0
- data/doc/guides/source/images/icons/callouts/2.png +0 -0
- data/doc/guides/source/images/icons/callouts/3.png +0 -0
- data/doc/guides/source/images/icons/callouts/4.png +0 -0
- data/doc/guides/source/images/icons/callouts/5.png +0 -0
- data/doc/guides/source/images/icons/callouts/6.png +0 -0
- data/doc/guides/source/images/icons/callouts/7.png +0 -0
- data/doc/guides/source/images/icons/callouts/8.png +0 -0
- data/doc/guides/source/images/icons/callouts/9.png +0 -0
- data/doc/guides/source/images/icons/caution.png +0 -0
- data/doc/guides/source/images/icons/example.png +0 -0
- data/doc/guides/source/images/icons/home.png +0 -0
- data/doc/guides/source/images/icons/important.png +0 -0
- data/doc/guides/source/images/icons/next.png +0 -0
- data/doc/guides/source/images/icons/note.png +0 -0
- data/doc/guides/source/images/icons/prev.png +0 -0
- data/doc/guides/source/images/icons/tip.png +0 -0
- data/doc/guides/source/images/icons/up.png +0 -0
- data/doc/guides/source/images/icons/warning.png +0 -0
- data/doc/guides/source/images/polymorphic.png +0 -0
- data/doc/guides/source/images/rails_logo_remix.gif +0 -0
- data/doc/guides/source/images/ruby_on_rails_by_mike_rundle2.gif +0 -0
- data/doc/guides/source/images/session_fixation.png +0 -0
- data/doc/guides/source/index.txt +118 -0
- data/doc/guides/source/layouts_and_rendering.txt +982 -0
- data/doc/guides/source/migrations/anatomy_of_a_migration.txt +85 -0
- data/doc/guides/source/migrations/changelog.txt +5 -0
- data/doc/guides/source/migrations/creating_a_migration.txt +109 -0
- data/doc/guides/source/migrations/foreign_keys.txt +8 -0
- data/doc/guides/source/migrations/index.txt +22 -0
- data/doc/guides/source/migrations/rakeing_around.txt +111 -0
- data/doc/guides/source/migrations/scheming.txt +47 -0
- data/doc/guides/source/migrations/using_models_in_migrations.txt +46 -0
- data/doc/guides/source/migrations/writing_a_migration.txt +159 -0
- data/doc/guides/source/routing_outside_in.txt +986 -0
- data/doc/guides/source/security.txt +984 -0
- data/doc/guides/source/stylesheets/base.css +358 -0
- data/doc/guides/source/stylesheets/forms.css +35 -0
- data/doc/guides/source/stylesheets/more.css +82 -0
- data/doc/guides/source/templates/guides.html.erb +97 -0
- data/doc/guides/source/templates/inline.css +165 -0
- data/doc/guides/source/testing_rails_applications.txt +995 -0
- data/environments/boot.rb +2 -2
- data/environments/environment.rb +9 -1
- data/environments/production.rb +3 -1
- data/helpers/performance_test.rb +9 -0
- data/html/500.html +4 -1
- data/html/javascripts/controls.js +72 -72
- data/html/javascripts/dragdrop.js +165 -164
- data/html/javascripts/effects.js +173 -165
- data/html/javascripts/prototype.js +362 -267
- data/lib/commands/console.rb +13 -0
- data/lib/commands/dbconsole.rb +2 -2
- data/lib/commands/ncgi/listener +2 -2
- data/lib/commands/ncgi/tracker +2 -2
- data/lib/commands/plugin.rb +41 -24
- data/lib/commands/process/spawner.rb +4 -4
- data/lib/commands/runner.rb +1 -1
- data/lib/commands/server.rb +11 -1
- data/lib/commands/servers/thin.rb +25 -0
- data/lib/fcgi_handler.rb +1 -3
- data/lib/initializer.rb +162 -39
- data/lib/performance_test_help.rb +5 -0
- data/lib/rails/gem_builder.rb +3 -3
- data/lib/rails/gem_dependency.rb +155 -33
- data/lib/rails/mongrel_server/commands.rb +1 -1
- data/lib/rails/plugin.rb +10 -2
- data/lib/rails/rack.rb +6 -0
- data/lib/rails/rack/logger.rb +28 -0
- data/lib/rails/rack/static.rb +35 -0
- data/lib/rails/vendor_gem_source_index.rb +140 -0
- data/lib/rails/version.rb +1 -1
- data/lib/rails_generator/commands.rb +10 -16
- data/lib/rails_generator/generated_attribute.rb +4 -0
- data/lib/rails_generator/generators/applications/app/app_generator.rb +9 -3
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +1 -1
- data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +1 -1
- data/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +1 -1
- data/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +2 -2
- data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +1 -1
- data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +2 -3
- data/lib/rails_generator/generators/components/model/model_generator.rb +1 -1
- data/lib/rails_generator/generators/components/model/templates/model.rb +3 -0
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +1 -1
- data/lib/rails_generator/generators/components/observer/observer_generator.rb +1 -1
- data/lib/rails_generator/generators/components/observer/templates/unit_test.rb +1 -1
- data/lib/rails_generator/generators/components/performance_test/USAGE +8 -0
- data/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb +16 -0
- data/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb +9 -0
- data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +11 -11
- data/lib/rails_generator/generators/components/plugin/templates/Rakefile +1 -0
- data/lib/rails_generator/generators/components/plugin/templates/test_helper.rb +3 -0
- data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +4 -4
- data/lib/rails_generator/generators/components/resource/resource_generator.rb +2 -2
- data/lib/rails_generator/generators/components/resource/templates/functional_test.rb +1 -1
- data/lib/rails_generator/generators/components/scaffold/USAGE +9 -5
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +10 -3
- data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +7 -7
- data/lib/rails_generator/scripts.rb +1 -1
- data/lib/rails_generator/scripts/destroy.rb +6 -7
- data/lib/rails_generator/secret_key_generator.rb +5 -147
- data/lib/tasks/annotations.rake +8 -11
- data/lib/tasks/databases.rake +42 -15
- data/lib/tasks/documentation.rake +15 -0
- data/lib/tasks/framework.rake +5 -1
- data/lib/tasks/gems.rake +24 -8
- data/lib/tasks/misc.rake +3 -4
- data/lib/tasks/testing.rake +25 -4
- data/lib/test_help.rb +1 -2
- data/lib/webrick_server.rb +2 -11
- metadata +165 -9
data/html/javascripts/effects.js
CHANGED
@@ -3,46 +3,46 @@
|
|
3
3
|
// Justin Palmer (http://encytemedia.com/)
|
4
4
|
// Mark Pilgrim (http://diveintomark.org/)
|
5
5
|
// Martin Bialasinki
|
6
|
-
//
|
6
|
+
//
|
7
7
|
// script.aculo.us is freely distributable under the terms of an MIT-style license.
|
8
|
-
// For details, see the script.aculo.us web site: http://script.aculo.us/
|
8
|
+
// For details, see the script.aculo.us web site: http://script.aculo.us/
|
9
9
|
|
10
|
-
// converts rgb() and #xxx to #xxxxxx format,
|
11
|
-
// returns self (or first argument) if not convertable
|
12
|
-
String.prototype.parseColor = function() {
|
10
|
+
// converts rgb() and #xxx to #xxxxxx format,
|
11
|
+
// returns self (or first argument) if not convertable
|
12
|
+
String.prototype.parseColor = function() {
|
13
13
|
var color = '#';
|
14
|
-
if (this.slice(0,4) == 'rgb(') {
|
15
|
-
var cols = this.slice(4,this.length-1).split(',');
|
16
|
-
var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
|
17
|
-
} else {
|
18
|
-
if (this.slice(0,1) == '#') {
|
19
|
-
if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
|
20
|
-
if (this.length==7) color = this.toLowerCase();
|
21
|
-
}
|
22
|
-
}
|
23
|
-
return (color.length==7 ? color : (arguments[0] || this));
|
14
|
+
if (this.slice(0,4) == 'rgb(') {
|
15
|
+
var cols = this.slice(4,this.length-1).split(',');
|
16
|
+
var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
|
17
|
+
} else {
|
18
|
+
if (this.slice(0,1) == '#') {
|
19
|
+
if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
|
20
|
+
if (this.length==7) color = this.toLowerCase();
|
21
|
+
}
|
22
|
+
}
|
23
|
+
return (color.length==7 ? color : (arguments[0] || this));
|
24
24
|
};
|
25
25
|
|
26
26
|
/*--------------------------------------------------------------------------*/
|
27
27
|
|
28
|
-
Element.collectTextNodes = function(element) {
|
28
|
+
Element.collectTextNodes = function(element) {
|
29
29
|
return $A($(element).childNodes).collect( function(node) {
|
30
|
-
return (node.nodeType==3 ? node.nodeValue :
|
30
|
+
return (node.nodeType==3 ? node.nodeValue :
|
31
31
|
(node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
|
32
32
|
}).flatten().join('');
|
33
33
|
};
|
34
34
|
|
35
|
-
Element.collectTextNodesIgnoreClass = function(element, className) {
|
35
|
+
Element.collectTextNodesIgnoreClass = function(element, className) {
|
36
36
|
return $A($(element).childNodes).collect( function(node) {
|
37
|
-
return (node.nodeType==3 ? node.nodeValue :
|
38
|
-
((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
|
37
|
+
return (node.nodeType==3 ? node.nodeValue :
|
38
|
+
((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
|
39
39
|
Element.collectTextNodesIgnoreClass(node, className) : ''));
|
40
40
|
}).flatten().join('');
|
41
41
|
};
|
42
42
|
|
43
43
|
Element.setContentZoom = function(element, percent) {
|
44
|
-
element = $(element);
|
45
|
-
element.setStyle({fontSize: (percent/100) + 'em'});
|
44
|
+
element = $(element);
|
45
|
+
element.setStyle({fontSize: (percent/100) + 'em'});
|
46
46
|
if (Prototype.Browser.WebKit) window.scrollBy(0,0);
|
47
47
|
return element;
|
48
48
|
};
|
@@ -70,28 +70,23 @@ var Effect = {
|
|
70
70
|
Transitions: {
|
71
71
|
linear: Prototype.K,
|
72
72
|
sinoidal: function(pos) {
|
73
|
-
return (-Math.cos(pos*Math.PI)/2) +
|
73
|
+
return (-Math.cos(pos*Math.PI)/2) + .5;
|
74
74
|
},
|
75
75
|
reverse: function(pos) {
|
76
76
|
return 1-pos;
|
77
77
|
},
|
78
78
|
flicker: function(pos) {
|
79
|
-
var pos = ((-Math.cos(pos*Math.PI)/4) +
|
79
|
+
var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;
|
80
80
|
return pos > 1 ? 1 : pos;
|
81
81
|
},
|
82
82
|
wobble: function(pos) {
|
83
|
-
return (-Math.cos(pos*Math.PI*(9*pos))/2) +
|
83
|
+
return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;
|
84
84
|
},
|
85
|
-
pulse: function(pos, pulses) {
|
86
|
-
|
87
|
-
return (
|
88
|
-
((pos % (1/pulses)) * pulses).round() == 0 ?
|
89
|
-
((pos * pulses * 2) - (pos * pulses * 2).floor()) :
|
90
|
-
1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
|
91
|
-
);
|
85
|
+
pulse: function(pos, pulses) {
|
86
|
+
return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;
|
92
87
|
},
|
93
|
-
spring: function(pos) {
|
94
|
-
return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
|
88
|
+
spring: function(pos) {
|
89
|
+
return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
|
95
90
|
},
|
96
91
|
none: function(pos) {
|
97
92
|
return 0;
|
@@ -112,14 +107,14 @@ var Effect = {
|
|
112
107
|
tagifyText: function(element) {
|
113
108
|
var tagifyStyle = 'position:relative';
|
114
109
|
if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
|
115
|
-
|
110
|
+
|
116
111
|
element = $(element);
|
117
112
|
$A(element.childNodes).each( function(child) {
|
118
113
|
if (child.nodeType==3) {
|
119
114
|
child.nodeValue.toArray().each( function(character) {
|
120
115
|
element.insertBefore(
|
121
116
|
new Element('span', {style: tagifyStyle}).update(
|
122
|
-
character == ' ' ? String.fromCharCode(160) : character),
|
117
|
+
character == ' ' ? String.fromCharCode(160) : character),
|
123
118
|
child);
|
124
119
|
});
|
125
120
|
Element.remove(child);
|
@@ -128,13 +123,13 @@ var Effect = {
|
|
128
123
|
},
|
129
124
|
multiple: function(element, effect) {
|
130
125
|
var elements;
|
131
|
-
if (((typeof element == 'object') ||
|
132
|
-
Object.isFunction(element)) &&
|
126
|
+
if (((typeof element == 'object') ||
|
127
|
+
Object.isFunction(element)) &&
|
133
128
|
(element.length))
|
134
129
|
elements = element;
|
135
130
|
else
|
136
131
|
elements = $(element).childNodes;
|
137
|
-
|
132
|
+
|
138
133
|
var options = Object.extend({
|
139
134
|
speed: 0.1,
|
140
135
|
delay: 0.0
|
@@ -156,7 +151,7 @@ var Effect = {
|
|
156
151
|
var options = Object.extend({
|
157
152
|
queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
|
158
153
|
}, arguments[2] || { });
|
159
|
-
Effect[element.visible() ?
|
154
|
+
Effect[element.visible() ?
|
160
155
|
Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
|
161
156
|
}
|
162
157
|
};
|
@@ -168,20 +163,20 @@ Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
|
|
168
163
|
Effect.ScopedQueue = Class.create(Enumerable, {
|
169
164
|
initialize: function() {
|
170
165
|
this.effects = [];
|
171
|
-
this.interval = null;
|
166
|
+
this.interval = null;
|
172
167
|
},
|
173
168
|
_each: function(iterator) {
|
174
169
|
this.effects._each(iterator);
|
175
170
|
},
|
176
171
|
add: function(effect) {
|
177
172
|
var timestamp = new Date().getTime();
|
178
|
-
|
179
|
-
var position = Object.isString(effect.options.queue) ?
|
173
|
+
|
174
|
+
var position = Object.isString(effect.options.queue) ?
|
180
175
|
effect.options.queue : effect.options.queue.position;
|
181
|
-
|
176
|
+
|
182
177
|
switch(position) {
|
183
178
|
case 'front':
|
184
|
-
// move unstarted effects after this effect
|
179
|
+
// move unstarted effects after this effect
|
185
180
|
this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
|
186
181
|
e.startOn += effect.finishOn;
|
187
182
|
e.finishOn += effect.finishOn;
|
@@ -195,13 +190,13 @@ Effect.ScopedQueue = Class.create(Enumerable, {
|
|
195
190
|
timestamp = this.effects.pluck('finishOn').max() || timestamp;
|
196
191
|
break;
|
197
192
|
}
|
198
|
-
|
193
|
+
|
199
194
|
effect.startOn += timestamp;
|
200
195
|
effect.finishOn += timestamp;
|
201
196
|
|
202
197
|
if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
|
203
198
|
this.effects.push(effect);
|
204
|
-
|
199
|
+
|
205
200
|
if (!this.interval)
|
206
201
|
this.interval = setInterval(this.loop.bind(this), 15);
|
207
202
|
},
|
@@ -214,7 +209,7 @@ Effect.ScopedQueue = Class.create(Enumerable, {
|
|
214
209
|
},
|
215
210
|
loop: function() {
|
216
211
|
var timePos = new Date().getTime();
|
217
|
-
for(var i=0, len=this.effects.length;i<len;i++)
|
212
|
+
for(var i=0, len=this.effects.length;i<len;i++)
|
218
213
|
this.effects[i] && this.effects[i].loop(timePos);
|
219
214
|
}
|
220
215
|
});
|
@@ -223,7 +218,7 @@ Effect.Queues = {
|
|
223
218
|
instances: $H(),
|
224
219
|
get: function(queueName) {
|
225
220
|
if (!Object.isString(queueName)) return queueName;
|
226
|
-
|
221
|
+
|
227
222
|
return this.instances.get(queueName) ||
|
228
223
|
this.instances.set(queueName, new Effect.ScopedQueue());
|
229
224
|
}
|
@@ -248,23 +243,35 @@ Effect.Base = Class.create({
|
|
248
243
|
this.fromToDelta = this.options.to-this.options.from;
|
249
244
|
this.totalTime = this.finishOn-this.startOn;
|
250
245
|
this.totalFrames = this.options.fps*this.options.duration;
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
246
|
+
|
247
|
+
this.render = (function() {
|
248
|
+
function dispatch(effect, eventName) {
|
249
|
+
if (effect.options[eventName + 'Internal'])
|
250
|
+
effect.options[eventName + 'Internal'](effect);
|
251
|
+
if (effect.options[eventName])
|
252
|
+
effect.options[eventName](effect);
|
253
|
+
}
|
254
|
+
|
255
|
+
return function(pos) {
|
256
|
+
if (this.state === "idle") {
|
257
|
+
this.state = "running";
|
258
|
+
dispatch(this, 'beforeSetup');
|
259
|
+
if (this.setup) this.setup();
|
260
|
+
dispatch(this, 'afterSetup');
|
261
|
+
}
|
262
|
+
if (this.state === "running") {
|
263
|
+
pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;
|
264
|
+
this.position = pos;
|
265
|
+
dispatch(this, 'beforeUpdate');
|
266
|
+
if (this.update) this.update(pos);
|
267
|
+
dispatch(this, 'afterUpdate');
|
268
|
+
}
|
269
|
+
};
|
270
|
+
})();
|
271
|
+
|
265
272
|
this.event('beforeStart');
|
266
273
|
if (!this.options.sync)
|
267
|
-
Effect.Queues.get(Object.isString(this.options.queue) ?
|
274
|
+
Effect.Queues.get(Object.isString(this.options.queue) ?
|
268
275
|
'global' : this.options.queue.scope).add(this);
|
269
276
|
},
|
270
277
|
loop: function(timePos) {
|
@@ -273,9 +280,9 @@ Effect.Base = Class.create({
|
|
273
280
|
this.render(1.0);
|
274
281
|
this.cancel();
|
275
282
|
this.event('beforeFinish');
|
276
|
-
if (this.finish) this.finish();
|
283
|
+
if (this.finish) this.finish();
|
277
284
|
this.event('afterFinish');
|
278
|
-
return;
|
285
|
+
return;
|
279
286
|
}
|
280
287
|
var pos = (timePos - this.startOn) / this.totalTime,
|
281
288
|
frame = (pos * this.totalFrames).round();
|
@@ -287,7 +294,7 @@ Effect.Base = Class.create({
|
|
287
294
|
},
|
288
295
|
cancel: function() {
|
289
296
|
if (!this.options.sync)
|
290
|
-
Effect.Queues.get(Object.isString(this.options.queue) ?
|
297
|
+
Effect.Queues.get(Object.isString(this.options.queue) ?
|
291
298
|
'global' : this.options.queue.scope).remove(this);
|
292
299
|
this.state = 'finished';
|
293
300
|
},
|
@@ -325,10 +332,10 @@ Effect.Parallel = Class.create(Effect.Base, {
|
|
325
332
|
Effect.Tween = Class.create(Effect.Base, {
|
326
333
|
initialize: function(object, from, to) {
|
327
334
|
object = Object.isString(object) ? $(object) : object;
|
328
|
-
var args = $A(arguments), method = args.last(),
|
335
|
+
var args = $A(arguments), method = args.last(),
|
329
336
|
options = args.length == 5 ? args[3] : null;
|
330
337
|
this.method = Object.isFunction(method) ? method.bind(object) :
|
331
|
-
Object.isFunction(object[method]) ? object[method].bind(object) :
|
338
|
+
Object.isFunction(object[method]) ? object[method].bind(object) :
|
332
339
|
function(value) { object[method] = value };
|
333
340
|
this.start(Object.extend({ from: from, to: to }, options || { }));
|
334
341
|
},
|
@@ -392,7 +399,7 @@ Effect.Move = Class.create(Effect.Base, {
|
|
392
399
|
|
393
400
|
// for backwards compatibility
|
394
401
|
Effect.MoveBy = function(element, toTop, toLeft) {
|
395
|
-
return new Effect.Move(element,
|
402
|
+
return new Effect.Move(element,
|
396
403
|
Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
|
397
404
|
};
|
398
405
|
|
@@ -414,15 +421,15 @@ Effect.Scale = Class.create(Effect.Base, {
|
|
414
421
|
setup: function() {
|
415
422
|
this.restoreAfterFinish = this.options.restoreAfterFinish || false;
|
416
423
|
this.elementPositioning = this.element.getStyle('position');
|
417
|
-
|
424
|
+
|
418
425
|
this.originalStyle = { };
|
419
426
|
['top','left','width','height','fontSize'].each( function(k) {
|
420
427
|
this.originalStyle[k] = this.element.style[k];
|
421
428
|
}.bind(this));
|
422
|
-
|
429
|
+
|
423
430
|
this.originalTop = this.element.offsetTop;
|
424
431
|
this.originalLeft = this.element.offsetLeft;
|
425
|
-
|
432
|
+
|
426
433
|
var fontSize = this.element.getStyle('font-size') || '100%';
|
427
434
|
['em','px','%','pt'].each( function(fontSizeType) {
|
428
435
|
if (fontSize.indexOf(fontSizeType)>0) {
|
@@ -430,9 +437,9 @@ Effect.Scale = Class.create(Effect.Base, {
|
|
430
437
|
this.fontSizeType = fontSizeType;
|
431
438
|
}
|
432
439
|
}.bind(this));
|
433
|
-
|
440
|
+
|
434
441
|
this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
|
435
|
-
|
442
|
+
|
436
443
|
this.dims = null;
|
437
444
|
if (this.options.scaleMode=='box')
|
438
445
|
this.dims = [this.element.offsetHeight, this.element.offsetWidth];
|
@@ -507,17 +514,16 @@ Effect.Highlight = Class.create(Effect.Base, {
|
|
507
514
|
|
508
515
|
Effect.ScrollTo = function(element) {
|
509
516
|
var options = arguments[1] || { },
|
510
|
-
|
511
|
-
|
512
|
-
max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();
|
517
|
+
scrollOffsets = document.viewport.getScrollOffsets(),
|
518
|
+
elementOffsets = $(element).cumulativeOffset();
|
513
519
|
|
514
520
|
if (options.offset) elementOffsets[1] += options.offset;
|
515
521
|
|
516
522
|
return new Effect.Tween(null,
|
517
523
|
scrollOffsets.top,
|
518
|
-
elementOffsets[1]
|
524
|
+
elementOffsets[1],
|
519
525
|
options,
|
520
|
-
function(p){ scrollTo(scrollOffsets.left, p.round()) }
|
526
|
+
function(p){ scrollTo(scrollOffsets.left, p.round()); }
|
521
527
|
);
|
522
528
|
};
|
523
529
|
|
@@ -529,9 +535,9 @@ Effect.Fade = function(element) {
|
|
529
535
|
var options = Object.extend({
|
530
536
|
from: element.getOpacity() || 1.0,
|
531
537
|
to: 0.0,
|
532
|
-
afterFinishInternal: function(effect) {
|
538
|
+
afterFinishInternal: function(effect) {
|
533
539
|
if (effect.options.to!=0) return;
|
534
|
-
effect.element.hide().setStyle({opacity: oldOpacity});
|
540
|
+
effect.element.hide().setStyle({opacity: oldOpacity});
|
535
541
|
}
|
536
542
|
}, arguments[1] || { });
|
537
543
|
return new Effect.Opacity(element,options);
|
@@ -547,15 +553,15 @@ Effect.Appear = function(element) {
|
|
547
553
|
effect.element.forceRerendering();
|
548
554
|
},
|
549
555
|
beforeSetup: function(effect) {
|
550
|
-
effect.element.setOpacity(effect.options.from).show();
|
556
|
+
effect.element.setOpacity(effect.options.from).show();
|
551
557
|
}}, arguments[1] || { });
|
552
558
|
return new Effect.Opacity(element,options);
|
553
559
|
};
|
554
560
|
|
555
561
|
Effect.Puff = function(element) {
|
556
562
|
element = $(element);
|
557
|
-
var oldStyle = {
|
558
|
-
opacity: element.getInlineOpacity(),
|
563
|
+
var oldStyle = {
|
564
|
+
opacity: element.getInlineOpacity(),
|
559
565
|
position: element.getStyle('position'),
|
560
566
|
top: element.style.top,
|
561
567
|
left: element.style.left,
|
@@ -563,12 +569,12 @@ Effect.Puff = function(element) {
|
|
563
569
|
height: element.style.height
|
564
570
|
};
|
565
571
|
return new Effect.Parallel(
|
566
|
-
[ new Effect.Scale(element, 200,
|
567
|
-
{ sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
|
568
|
-
new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
|
569
|
-
Object.extend({ duration: 1.0,
|
572
|
+
[ new Effect.Scale(element, 200,
|
573
|
+
{ sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
|
574
|
+
new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
|
575
|
+
Object.extend({ duration: 1.0,
|
570
576
|
beforeSetupInternal: function(effect) {
|
571
|
-
Position.absolutize(effect.effects[0].element)
|
577
|
+
Position.absolutize(effect.effects[0].element);
|
572
578
|
},
|
573
579
|
afterFinishInternal: function(effect) {
|
574
580
|
effect.effects[0].element.hide().setStyle(oldStyle); }
|
@@ -580,12 +586,12 @@ Effect.BlindUp = function(element) {
|
|
580
586
|
element = $(element);
|
581
587
|
element.makeClipping();
|
582
588
|
return new Effect.Scale(element, 0,
|
583
|
-
Object.extend({ scaleContent: false,
|
584
|
-
scaleX: false,
|
589
|
+
Object.extend({ scaleContent: false,
|
590
|
+
scaleX: false,
|
585
591
|
restoreAfterFinish: true,
|
586
592
|
afterFinishInternal: function(effect) {
|
587
593
|
effect.element.hide().undoClipping();
|
588
|
-
}
|
594
|
+
}
|
589
595
|
}, arguments[1] || { })
|
590
596
|
);
|
591
597
|
};
|
@@ -593,15 +599,15 @@ Effect.BlindUp = function(element) {
|
|
593
599
|
Effect.BlindDown = function(element) {
|
594
600
|
element = $(element);
|
595
601
|
var elementDimensions = element.getDimensions();
|
596
|
-
return new Effect.Scale(element, 100, Object.extend({
|
597
|
-
scaleContent: false,
|
602
|
+
return new Effect.Scale(element, 100, Object.extend({
|
603
|
+
scaleContent: false,
|
598
604
|
scaleX: false,
|
599
605
|
scaleFrom: 0,
|
600
606
|
scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
|
601
607
|
restoreAfterFinish: true,
|
602
608
|
afterSetup: function(effect) {
|
603
|
-
effect.element.makeClipping().setStyle({height: '0px'}).show();
|
604
|
-
},
|
609
|
+
effect.element.makeClipping().setStyle({height: '0px'}).show();
|
610
|
+
},
|
605
611
|
afterFinishInternal: function(effect) {
|
606
612
|
effect.element.undoClipping();
|
607
613
|
}
|
@@ -616,16 +622,16 @@ Effect.SwitchOff = function(element) {
|
|
616
622
|
from: 0,
|
617
623
|
transition: Effect.Transitions.flicker,
|
618
624
|
afterFinishInternal: function(effect) {
|
619
|
-
new Effect.Scale(effect.element, 1, {
|
625
|
+
new Effect.Scale(effect.element, 1, {
|
620
626
|
duration: 0.3, scaleFromCenter: true,
|
621
627
|
scaleX: false, scaleContent: false, restoreAfterFinish: true,
|
622
|
-
beforeSetup: function(effect) {
|
628
|
+
beforeSetup: function(effect) {
|
623
629
|
effect.element.makePositioned().makeClipping();
|
624
630
|
},
|
625
631
|
afterFinishInternal: function(effect) {
|
626
632
|
effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
|
627
633
|
}
|
628
|
-
})
|
634
|
+
});
|
629
635
|
}
|
630
636
|
}, arguments[1] || { }));
|
631
637
|
};
|
@@ -637,16 +643,16 @@ Effect.DropOut = function(element) {
|
|
637
643
|
left: element.getStyle('left'),
|
638
644
|
opacity: element.getInlineOpacity() };
|
639
645
|
return new Effect.Parallel(
|
640
|
-
[ new Effect.Move(element, {x: 0, y: 100, sync: true }),
|
646
|
+
[ new Effect.Move(element, {x: 0, y: 100, sync: true }),
|
641
647
|
new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
|
642
648
|
Object.extend(
|
643
649
|
{ duration: 0.5,
|
644
650
|
beforeSetup: function(effect) {
|
645
|
-
effect.effects[0].element.makePositioned();
|
651
|
+
effect.effects[0].element.makePositioned();
|
646
652
|
},
|
647
653
|
afterFinishInternal: function(effect) {
|
648
654
|
effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
|
649
|
-
}
|
655
|
+
}
|
650
656
|
}, arguments[1] || { }));
|
651
657
|
};
|
652
658
|
|
@@ -674,7 +680,7 @@ Effect.Shake = function(element) {
|
|
674
680
|
new Effect.Move(effect.element,
|
675
681
|
{ x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
|
676
682
|
effect.element.undoPositioned().setStyle(oldStyle);
|
677
|
-
}}) }}) }}) }}) }}) }});
|
683
|
+
}}); }}); }}); }}); }}); }});
|
678
684
|
};
|
679
685
|
|
680
686
|
Effect.SlideDown = function(element) {
|
@@ -682,9 +688,9 @@ Effect.SlideDown = function(element) {
|
|
682
688
|
// SlideDown need to have the content of the element wrapped in a container element with fixed height!
|
683
689
|
var oldInnerBottom = element.down().getStyle('bottom');
|
684
690
|
var elementDimensions = element.getDimensions();
|
685
|
-
return new Effect.Scale(element, 100, Object.extend({
|
686
|
-
scaleContent: false,
|
687
|
-
scaleX: false,
|
691
|
+
return new Effect.Scale(element, 100, Object.extend({
|
692
|
+
scaleContent: false,
|
693
|
+
scaleX: false,
|
688
694
|
scaleFrom: window.opera ? 0 : 1,
|
689
695
|
scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
|
690
696
|
restoreAfterFinish: true,
|
@@ -692,11 +698,11 @@ Effect.SlideDown = function(element) {
|
|
692
698
|
effect.element.makePositioned();
|
693
699
|
effect.element.down().makePositioned();
|
694
700
|
if (window.opera) effect.element.setStyle({top: ''});
|
695
|
-
effect.element.makeClipping().setStyle({height: '0px'}).show();
|
701
|
+
effect.element.makeClipping().setStyle({height: '0px'}).show();
|
696
702
|
},
|
697
703
|
afterUpdateInternal: function(effect) {
|
698
704
|
effect.element.down().setStyle({bottom:
|
699
|
-
(effect.dims[0] - effect.element.clientHeight) + 'px' });
|
705
|
+
(effect.dims[0] - effect.element.clientHeight) + 'px' });
|
700
706
|
},
|
701
707
|
afterFinishInternal: function(effect) {
|
702
708
|
effect.element.undoClipping().undoPositioned();
|
@@ -710,8 +716,8 @@ Effect.SlideUp = function(element) {
|
|
710
716
|
var oldInnerBottom = element.down().getStyle('bottom');
|
711
717
|
var elementDimensions = element.getDimensions();
|
712
718
|
return new Effect.Scale(element, window.opera ? 0 : 1,
|
713
|
-
Object.extend({ scaleContent: false,
|
714
|
-
scaleX: false,
|
719
|
+
Object.extend({ scaleContent: false,
|
720
|
+
scaleX: false,
|
715
721
|
scaleMode: 'box',
|
716
722
|
scaleFrom: 100,
|
717
723
|
scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
|
@@ -721,7 +727,7 @@ Effect.SlideUp = function(element) {
|
|
721
727
|
effect.element.down().makePositioned();
|
722
728
|
if (window.opera) effect.element.setStyle({top: ''});
|
723
729
|
effect.element.makeClipping().show();
|
724
|
-
},
|
730
|
+
},
|
725
731
|
afterUpdateInternal: function(effect) {
|
726
732
|
effect.element.down().setStyle({bottom:
|
727
733
|
(effect.dims[0] - effect.element.clientHeight) + 'px' });
|
@@ -734,15 +740,15 @@ Effect.SlideUp = function(element) {
|
|
734
740
|
);
|
735
741
|
};
|
736
742
|
|
737
|
-
// Bug in opera makes the TD containing this element expand for a instance after finish
|
743
|
+
// Bug in opera makes the TD containing this element expand for a instance after finish
|
738
744
|
Effect.Squish = function(element) {
|
739
|
-
return new Effect.Scale(element, window.opera ? 1 : 0, {
|
745
|
+
return new Effect.Scale(element, window.opera ? 1 : 0, {
|
740
746
|
restoreAfterFinish: true,
|
741
747
|
beforeSetup: function(effect) {
|
742
|
-
effect.element.makeClipping();
|
743
|
-
},
|
748
|
+
effect.element.makeClipping();
|
749
|
+
},
|
744
750
|
afterFinishInternal: function(effect) {
|
745
|
-
effect.element.hide().undoClipping();
|
751
|
+
effect.element.hide().undoClipping();
|
746
752
|
}
|
747
753
|
});
|
748
754
|
};
|
@@ -762,13 +768,13 @@ Effect.Grow = function(element) {
|
|
762
768
|
width: element.style.width,
|
763
769
|
opacity: element.getInlineOpacity() };
|
764
770
|
|
765
|
-
var dims = element.getDimensions();
|
771
|
+
var dims = element.getDimensions();
|
766
772
|
var initialMoveX, initialMoveY;
|
767
773
|
var moveX, moveY;
|
768
|
-
|
774
|
+
|
769
775
|
switch (options.direction) {
|
770
776
|
case 'top-left':
|
771
|
-
initialMoveX = initialMoveY = moveX = moveY = 0;
|
777
|
+
initialMoveX = initialMoveY = moveX = moveY = 0;
|
772
778
|
break;
|
773
779
|
case 'top-right':
|
774
780
|
initialMoveX = dims.width;
|
@@ -793,11 +799,11 @@ Effect.Grow = function(element) {
|
|
793
799
|
moveY = -dims.height / 2;
|
794
800
|
break;
|
795
801
|
}
|
796
|
-
|
802
|
+
|
797
803
|
return new Effect.Move(element, {
|
798
804
|
x: initialMoveX,
|
799
805
|
y: initialMoveY,
|
800
|
-
duration: 0.01,
|
806
|
+
duration: 0.01,
|
801
807
|
beforeSetup: function(effect) {
|
802
808
|
effect.element.hide().makeClipping().makePositioned();
|
803
809
|
},
|
@@ -806,17 +812,17 @@ Effect.Grow = function(element) {
|
|
806
812
|
[ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
|
807
813
|
new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
|
808
814
|
new Effect.Scale(effect.element, 100, {
|
809
|
-
scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
|
815
|
+
scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
|
810
816
|
sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
|
811
817
|
], Object.extend({
|
812
818
|
beforeSetup: function(effect) {
|
813
|
-
effect.effects[0].element.setStyle({height: '0px'}).show();
|
819
|
+
effect.effects[0].element.setStyle({height: '0px'}).show();
|
814
820
|
},
|
815
821
|
afterFinishInternal: function(effect) {
|
816
|
-
effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
|
822
|
+
effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
|
817
823
|
}
|
818
824
|
}, options)
|
819
|
-
)
|
825
|
+
);
|
820
826
|
}
|
821
827
|
});
|
822
828
|
};
|
@@ -838,7 +844,7 @@ Effect.Shrink = function(element) {
|
|
838
844
|
|
839
845
|
var dims = element.getDimensions();
|
840
846
|
var moveX, moveY;
|
841
|
-
|
847
|
+
|
842
848
|
switch (options.direction) {
|
843
849
|
case 'top-left':
|
844
850
|
moveX = moveY = 0;
|
@@ -855,19 +861,19 @@ Effect.Shrink = function(element) {
|
|
855
861
|
moveX = dims.width;
|
856
862
|
moveY = dims.height;
|
857
863
|
break;
|
858
|
-
case 'center':
|
864
|
+
case 'center':
|
859
865
|
moveX = dims.width / 2;
|
860
866
|
moveY = dims.height / 2;
|
861
867
|
break;
|
862
868
|
}
|
863
|
-
|
869
|
+
|
864
870
|
return new Effect.Parallel(
|
865
871
|
[ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
|
866
872
|
new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
|
867
873
|
new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
|
868
|
-
], Object.extend({
|
874
|
+
], Object.extend({
|
869
875
|
beforeStartInternal: function(effect) {
|
870
|
-
effect.effects[0].element.makePositioned().makeClipping();
|
876
|
+
effect.effects[0].element.makePositioned().makeClipping();
|
871
877
|
},
|
872
878
|
afterFinishInternal: function(effect) {
|
873
879
|
effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
|
@@ -877,12 +883,14 @@ Effect.Shrink = function(element) {
|
|
877
883
|
|
878
884
|
Effect.Pulsate = function(element) {
|
879
885
|
element = $(element);
|
880
|
-
var options = arguments[1] || { }
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
+
var options = arguments[1] || { },
|
887
|
+
oldOpacity = element.getInlineOpacity(),
|
888
|
+
transition = options.transition || Effect.Transitions.linear,
|
889
|
+
reverser = function(pos){
|
890
|
+
return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);
|
891
|
+
};
|
892
|
+
|
893
|
+
return new Effect.Opacity(element,
|
886
894
|
Object.extend(Object.extend({ duration: 2.0, from: 0,
|
887
895
|
afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
|
888
896
|
}, options), {transition: reverser}));
|
@@ -896,12 +904,12 @@ Effect.Fold = function(element) {
|
|
896
904
|
width: element.style.width,
|
897
905
|
height: element.style.height };
|
898
906
|
element.makeClipping();
|
899
|
-
return new Effect.Scale(element, 5, Object.extend({
|
907
|
+
return new Effect.Scale(element, 5, Object.extend({
|
900
908
|
scaleContent: false,
|
901
909
|
scaleX: false,
|
902
910
|
afterFinishInternal: function(effect) {
|
903
|
-
new Effect.Scale(element, 1, {
|
904
|
-
scaleContent: false,
|
911
|
+
new Effect.Scale(element, 1, {
|
912
|
+
scaleContent: false,
|
905
913
|
scaleY: false,
|
906
914
|
afterFinishInternal: function(effect) {
|
907
915
|
effect.element.hide().undoClipping().setStyle(oldStyle);
|
@@ -916,7 +924,7 @@ Effect.Morph = Class.create(Effect.Base, {
|
|
916
924
|
var options = Object.extend({
|
917
925
|
style: { }
|
918
926
|
}, arguments[1] || { });
|
919
|
-
|
927
|
+
|
920
928
|
if (!Object.isString(options.style)) this.style = $H(options.style);
|
921
929
|
else {
|
922
930
|
if (options.style.include(':'))
|
@@ -934,18 +942,18 @@ Effect.Morph = Class.create(Effect.Base, {
|
|
934
942
|
effect.transforms.each(function(transform) {
|
935
943
|
effect.element.style[transform.style] = '';
|
936
944
|
});
|
937
|
-
}
|
945
|
+
};
|
938
946
|
}
|
939
947
|
}
|
940
948
|
this.start(options);
|
941
949
|
},
|
942
|
-
|
950
|
+
|
943
951
|
setup: function(){
|
944
952
|
function parseColor(color){
|
945
953
|
if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
|
946
954
|
color = color.parseColor();
|
947
955
|
return $R(0,2).map(function(i){
|
948
|
-
return parseInt( color.slice(i*2+1,i*2+3), 16 )
|
956
|
+
return parseInt( color.slice(i*2+1,i*2+3), 16 );
|
949
957
|
});
|
950
958
|
}
|
951
959
|
this.transforms = this.style.map(function(pair){
|
@@ -965,9 +973,9 @@ Effect.Morph = Class.create(Effect.Base, {
|
|
965
973
|
}
|
966
974
|
|
967
975
|
var originalValue = this.element.getStyle(property);
|
968
|
-
return {
|
969
|
-
style: property.camelize(),
|
970
|
-
originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
|
976
|
+
return {
|
977
|
+
style: property.camelize(),
|
978
|
+
originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
|
971
979
|
targetValue: unit=='color' ? parseColor(value) : value,
|
972
980
|
unit: unit
|
973
981
|
};
|
@@ -978,13 +986,13 @@ Effect.Morph = Class.create(Effect.Base, {
|
|
978
986
|
transform.unit != 'color' &&
|
979
987
|
(isNaN(transform.originalValue) || isNaN(transform.targetValue))
|
980
988
|
)
|
981
|
-
)
|
989
|
+
);
|
982
990
|
});
|
983
991
|
},
|
984
992
|
update: function(position) {
|
985
993
|
var style = { }, transform, i = this.transforms.length;
|
986
994
|
while(i--)
|
987
|
-
style[(transform = this.transforms[i]).style] =
|
995
|
+
style[(transform = this.transforms[i]).style] =
|
988
996
|
transform.unit=='color' ? '#'+
|
989
997
|
(Math.round(transform.originalValue[0]+
|
990
998
|
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
|
@@ -993,7 +1001,7 @@ Effect.Morph = Class.create(Effect.Base, {
|
|
993
1001
|
(Math.round(transform.originalValue[2]+
|
994
1002
|
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
|
995
1003
|
(transform.originalValue +
|
996
|
-
(transform.targetValue - transform.originalValue) * position).toFixed(3) +
|
1004
|
+
(transform.targetValue - transform.originalValue) * position).toFixed(3) +
|
997
1005
|
(transform.unit === null ? '' : transform.unit);
|
998
1006
|
this.element.setStyle(style, true);
|
999
1007
|
}
|
@@ -1030,7 +1038,7 @@ Effect.Transform = Class.create({
|
|
1030
1038
|
});
|
1031
1039
|
|
1032
1040
|
Element.CSS_PROPERTIES = $w(
|
1033
|
-
'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
|
1041
|
+
'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
|
1034
1042
|
'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
|
1035
1043
|
'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
|
1036
1044
|
'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
|
@@ -1039,7 +1047,7 @@ Element.CSS_PROPERTIES = $w(
|
|
1039
1047
|
'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
|
1040
1048
|
'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
|
1041
1049
|
'right textIndent top width wordSpacing zIndex');
|
1042
|
-
|
1050
|
+
|
1043
1051
|
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
|
1044
1052
|
|
1045
1053
|
String.__parseStyleElement = document.createElement('div');
|
@@ -1051,11 +1059,11 @@ String.prototype.parseStyle = function(){
|
|
1051
1059
|
String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
|
1052
1060
|
style = String.__parseStyleElement.childNodes[0].style;
|
1053
1061
|
}
|
1054
|
-
|
1062
|
+
|
1055
1063
|
Element.CSS_PROPERTIES.each(function(property){
|
1056
|
-
if (style[property]) styleRules.set(property, style[property]);
|
1064
|
+
if (style[property]) styleRules.set(property, style[property]);
|
1057
1065
|
});
|
1058
|
-
|
1066
|
+
|
1059
1067
|
if (Prototype.Browser.IE && this.include('opacity'))
|
1060
1068
|
styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
|
1061
1069
|
|
@@ -1074,14 +1082,14 @@ if (document.defaultView && document.defaultView.getComputedStyle) {
|
|
1074
1082
|
Element.getStyles = function(element) {
|
1075
1083
|
element = $(element);
|
1076
1084
|
var css = element.currentStyle, styles;
|
1077
|
-
styles = Element.CSS_PROPERTIES.inject({ }, function(
|
1078
|
-
|
1079
|
-
return
|
1085
|
+
styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {
|
1086
|
+
results[property] = css[property];
|
1087
|
+
return results;
|
1080
1088
|
});
|
1081
|
-
if (!styles.opacity) styles.
|
1089
|
+
if (!styles.opacity) styles.opacity = element.getOpacity();
|
1082
1090
|
return styles;
|
1083
1091
|
};
|
1084
|
-
}
|
1092
|
+
}
|
1085
1093
|
|
1086
1094
|
Effect.Methods = {
|
1087
1095
|
morph: function(element, style) {
|
@@ -1090,7 +1098,7 @@ Effect.Methods = {
|
|
1090
1098
|
return element;
|
1091
1099
|
},
|
1092
1100
|
visualEffect: function(element, effect, options) {
|
1093
|
-
element = $(element)
|
1101
|
+
element = $(element);
|
1094
1102
|
var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
|
1095
1103
|
new Effect[klass](element, options);
|
1096
1104
|
return element;
|
@@ -1104,17 +1112,17 @@ Effect.Methods = {
|
|
1104
1112
|
|
1105
1113
|
$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
|
1106
1114
|
'pulsate shake puff squish switchOff dropOut').each(
|
1107
|
-
function(effect) {
|
1115
|
+
function(effect) {
|
1108
1116
|
Effect.Methods[effect] = function(element, options){
|
1109
1117
|
element = $(element);
|
1110
1118
|
Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
|
1111
1119
|
return element;
|
1112
|
-
}
|
1120
|
+
};
|
1113
1121
|
}
|
1114
1122
|
);
|
1115
1123
|
|
1116
|
-
$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
|
1124
|
+
$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
|
1117
1125
|
function(f) { Effect.Methods[f] = Element[f]; }
|
1118
1126
|
);
|
1119
1127
|
|
1120
|
-
Element.addMethods(Effect.Methods);
|
1128
|
+
Element.addMethods(Effect.Methods);
|