parlement 0.14 → 0.17
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +41 -1
- data/MEMORY +66 -5
- data/README +10 -5
- data/Rakefile +15 -23
- data/app/controllers/account_controller.rb +48 -43
- data/app/controllers/{application.rb → application_controller.rb} +15 -12
- data/app/controllers/elt_controller.rb +77 -32
- data/app/controllers/subscriber_controller.rb +11 -10
- data/app/helpers/application_helper.rb +14 -1
- data/app/helpers/elt_helper.rb +9 -7
- data/app/models/elt.rb +25 -24
- data/app/models/mail.rb +44 -47
- data/app/models/person_notify.rb +2 -2
- data/app/models/user.rb +128 -2
- data/app/models/user_notify.rb +15 -15
- data/app/views/account/_login.rhtml +39 -39
- data/app/views/account/_show.rhtml +22 -30
- data/app/views/account/signup.rhtml +2 -2
- data/app/views/elt/_choice.rhtml +6 -6
- data/app/views/elt/_elt.rhtml +27 -32
- data/app/views/elt/choices.rhtml +16 -18
- data/app/views/elt/list/_byDate.rhtml +14 -14
- data/app/views/elt/list/_byVote.rhtml +15 -15
- data/app/views/elt/list/_children.rhtml +48 -40
- data/app/views/elt/list/_subscribers.rhtml +1 -1
- data/app/views/elt/new.rhtml +22 -21
- data/app/views/elt/rss.rxml +4 -11
- data/app/views/elt/show.rhtml +65 -61
- data/app/views/elt/vote_rss.rxml +4 -11
- data/app/views/layouts/top.rhtml +39 -50
- data/app/views/person/_listElts.rhtml +1 -1
- data/app/views/person/show.rhtml +1 -1
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/change_password.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/delete.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/forgot_password.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/pending_delete.rhtml +0 -0
- data/{vendor/plugins/login_engine/app → app}/views/user_notify/signup.rhtml +0 -0
- data/config/boot.rb +97 -32
- data/config/environment.rb +37 -35
- data/config/environments/development.rb +2 -3
- data/config/environments/production.rb +3 -0
- data/config/initializers/string_ruby_1.8.rb +10 -0
- data/config/routes.rb +17 -22
- data/db/schema.rb +102 -74
- data/lib/tasks/rspec.rake +167 -0
- data/public/404.html +25 -7
- data/public/500.html +26 -7
- data/public/dispatch.cgi +0 -0
- data/public/dispatch.fcgi +0 -0
- data/public/dispatch.rb +0 -0
- data/public/images/live_tree_branch_collapsed_icon.gif +0 -0
- data/public/images/live_tree_branch_expanded_icon.gif +0 -0
- data/public/images/live_tree_leaf_icon.gif +0 -0
- data/public/javascripts/application.js +258 -0
- data/public/javascripts/controls.js +544 -414
- data/public/javascripts/dragdrop.js +229 -198
- data/public/javascripts/effects.js +499 -459
- data/public/javascripts/prototype.js +2926 -1121
- data/public/javascripts/shadedborder.js +68 -50
- data/public/stylesheets/default.css +34 -34
- data/public/stylesheets/live_tree.css +0 -0
- data/public/stylesheets/scaffold.css +6 -6
- data/script/about +0 -0
- data/script/autospec +6 -0
- data/script/benchmarker +0 -0
- data/script/breakpointer +0 -0
- data/script/console +0 -0
- data/script/dbconsole +3 -0
- data/script/destroy +0 -0
- data/script/generate +0 -0
- data/script/plugin +0 -0
- data/script/profiler +0 -0
- data/script/runner +0 -0
- data/script/server +0 -0
- data/script/spec +10 -0
- data/script/spec_server +9 -0
- data/test/unit/attachment_test.rb +4 -4
- data/test/unit/choice_test.rb +1 -1
- data/test/unit/elt_test.rb +9 -9
- data/test/unit/mail_notify_test.rb +2 -2
- data/test/unit/mail_test.rb +18 -11
- data/test/unit/person_notify_test.rb +1 -1
- data/test/unit/person_test.rb +1 -1
- data/test/unit/subscriber_test.rb +1 -1
- data/test/unit/user_test.rb +81 -0
- data/test/unit/visit_test.rb +6 -6
- data/vendor/plugins/activerecord_foreign_key_extensions/init.rb +2 -0
- data/vendor/plugins/activerecord_foreign_key_extensions/lib/active_record_extensions.rb +182 -0
- data/vendor/plugins/activerecord_text_id_extensions/init.rb +2 -0
- data/vendor/plugins/activerecord_text_id_extensions/lib/active_record_extensions.rb +24 -0
- data/vendor/plugins/acts_as_nested_set/README +15 -0
- data/vendor/plugins/acts_as_nested_set/init.rb +1 -0
- data/vendor/plugins/acts_as_nested_set/lib/active_record/acts/nested_set.rb +210 -0
- data/vendor/plugins/acts_as_nested_set/test/nested_set_test.rb +269 -0
- data/vendor/plugins/acts_as_tree/README +26 -0
- data/vendor/plugins/acts_as_tree/Rakefile +22 -0
- data/vendor/plugins/acts_as_tree/init.rb +1 -0
- data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
- data/vendor/plugins/{output_compression/CHANGELOG → acts_as_tree/test/abstract_unit.rb} +0 -0
- data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
- data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
- data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
- data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
- data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
- data/vendor/plugins/classic_pagination/CHANGELOG +152 -0
- data/vendor/plugins/classic_pagination/README +18 -0
- data/vendor/plugins/{output_compression/rakefile → classic_pagination/Rakefile} +22 -22
- data/vendor/plugins/classic_pagination/init.rb +33 -0
- data/vendor/plugins/classic_pagination/install.rb +1 -0
- data/vendor/plugins/classic_pagination/lib/pagination.rb +405 -0
- data/vendor/plugins/classic_pagination/lib/pagination_helper.rb +135 -0
- data/vendor/plugins/classic_pagination/test/fixtures/companies.yml +24 -0
- data/vendor/plugins/classic_pagination/test/fixtures/company.rb +9 -0
- data/vendor/plugins/classic_pagination/test/fixtures/developer.rb +7 -0
- data/vendor/plugins/classic_pagination/test/fixtures/developers.yml +21 -0
- data/vendor/plugins/classic_pagination/test/fixtures/developers_projects.yml +13 -0
- data/vendor/plugins/classic_pagination/test/fixtures/project.rb +3 -0
- data/vendor/plugins/classic_pagination/test/fixtures/projects.yml +7 -0
- data/vendor/plugins/classic_pagination/test/fixtures/replies.yml +13 -0
- data/vendor/plugins/classic_pagination/test/fixtures/reply.rb +5 -0
- data/vendor/plugins/classic_pagination/test/fixtures/schema.sql +42 -0
- data/vendor/plugins/classic_pagination/test/fixtures/topic.rb +3 -0
- data/vendor/plugins/classic_pagination/test/fixtures/topics.yml +22 -0
- data/vendor/plugins/classic_pagination/test/helper.rb +117 -0
- data/vendor/plugins/classic_pagination/test/pagination_helper_test.rb +38 -0
- data/vendor/plugins/classic_pagination/test/pagination_test.rb +177 -0
- data/vendor/plugins/file_column/lib/file_column.rb +1 -1
- data/vendor/plugins/file_column/test/file_column_test.rb +0 -0
- metadata +151 -197
- data/app/helpers/live_tree.rb +0 -238
- data/app/views/elt/_form.rhtml +0 -31
- data/app/views/elt/show_tree.rhtml +0 -8
- data/config/environments/user_environment.rb +0 -1
- data/db/ROOT/Titemagli.txt +0 -3
- data/db/ROOT/titemagli.txt +0 -9
- data/public/javascripts/behaviour.js +0 -254
- data/public/javascripts/ie7-load.htc +0 -1
- data/public/javascripts/ie7.js +0 -6
- data/public/javascripts/live_tree.js +0 -749
- data/public/javascripts/mybehaviour.js +0 -225
- data/public/javascripts/scriptaculous.js +0 -47
- data/public/javascripts/slider.js +0 -283
- data/public/stylesheets/blue.css +0 -471
- data/vendor/plugins/engines/CHANGELOG +0 -241
- data/vendor/plugins/engines/MIT-LICENSE +0 -21
- data/vendor/plugins/engines/README +0 -64
- data/vendor/plugins/engines/Rakefile +0 -32
- data/vendor/plugins/engines/UPGRADING +0 -93
- data/vendor/plugins/engines/about.yml +0 -7
- data/vendor/plugins/engines/generators/plugin_migration/USAGE +0 -45
- data/vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb +0 -79
- data/vendor/plugins/engines/generators/plugin_migration/templates/plugin_migration.erb +0 -13
- data/vendor/plugins/engines/init.rb +0 -40
- data/vendor/plugins/engines/install.rb +0 -32
- data/vendor/plugins/engines/lib/engines.rb +0 -323
- data/vendor/plugins/engines/lib/engines/deprecated_config_support.rb +0 -135
- data/vendor/plugins/engines/lib/engines/plugin.rb +0 -214
- data/vendor/plugins/engines/lib/engines/plugin_list.rb +0 -31
- data/vendor/plugins/engines/lib/engines/plugin_migrator.rb +0 -60
- data/vendor/plugins/engines/lib/engines/rails_extensions.rb +0 -6
- data/vendor/plugins/engines/lib/engines/rails_extensions/active_record.rb +0 -19
- data/vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb +0 -143
- data/vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb +0 -155
- data/vendor/plugins/engines/lib/engines/rails_extensions/public_asset_helpers.rb +0 -116
- data/vendor/plugins/engines/lib/engines/rails_extensions/rails.rb +0 -20
- data/vendor/plugins/engines/lib/engines/rails_extensions/rails_initializer.rb +0 -86
- data/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb +0 -77
- data/vendor/plugins/engines/lib/engines/rails_extensions/templates.rb +0 -140
- data/vendor/plugins/engines/lib/engines/testing.rb +0 -87
- data/vendor/plugins/engines/tasks/engines.rake +0 -149
- data/vendor/plugins/login_engine/CHANGELOG +0 -22
- data/vendor/plugins/login_engine/README +0 -344
- data/vendor/plugins/login_engine/app/controllers/user_controller.rb +0 -262
- data/vendor/plugins/login_engine/app/helpers/user_helper.rb +0 -88
- data/vendor/plugins/login_engine/app/models/user.rb +0 -7
- data/vendor/plugins/login_engine/app/models/user_notify.rb +0 -75
- data/vendor/plugins/login_engine/app/views/user/_edit.rhtml +0 -11
- data/vendor/plugins/login_engine/app/views/user/_password.rhtml +0 -9
- data/vendor/plugins/login_engine/app/views/user/change_password.rhtml +0 -17
- data/vendor/plugins/login_engine/app/views/user/edit.rhtml +0 -23
- data/vendor/plugins/login_engine/app/views/user/forgot_password.rhtml +0 -18
- data/vendor/plugins/login_engine/app/views/user/home.rhtml +0 -7
- data/vendor/plugins/login_engine/app/views/user/login.rhtml +0 -17
- data/vendor/plugins/login_engine/app/views/user/logout.rhtml +0 -8
- data/vendor/plugins/login_engine/app/views/user/signup.rhtml +0 -17
- data/vendor/plugins/login_engine/db/migrate/001_initial_schema.rb +0 -25
- data/vendor/plugins/login_engine/init_engine.rb +0 -11
- data/vendor/plugins/login_engine/install.rb +0 -4
- data/vendor/plugins/login_engine/lib/login_engine.rb +0 -62
- data/vendor/plugins/login_engine/lib/login_engine/authenticated_system.rb +0 -113
- data/vendor/plugins/login_engine/lib/login_engine/authenticated_user.rb +0 -155
- data/vendor/plugins/login_engine/public/stylesheets/login_engine.css +0 -81
- data/vendor/plugins/login_engine/test/fixtures/users.yml +0 -41
- data/vendor/plugins/login_engine/test/functional/user_controller_test.rb +0 -536
- data/vendor/plugins/login_engine/test/mocks/mail.rb +0 -14
- data/vendor/plugins/login_engine/test/mocks/time.rb +0 -19
- data/vendor/plugins/login_engine/test/test_helper.rb +0 -11
- data/vendor/plugins/login_engine/test/unit/user_test.rb +0 -114
- data/vendor/plugins/output_compression/MIT-LICENSE +0 -20
- data/vendor/plugins/output_compression/README +0 -4
- data/vendor/plugins/output_compression/init.rb +0 -1
- data/vendor/plugins/output_compression/lib/output_compression.rb +0 -84
- data/vendor/plugins/output_compression/test/output_test.rb +0 -11
- data/vendor/plugins/output_compression/test/test_controller.rb +0 -3
- data/vendor/plugins/output_compression/test/test_helper.rb +0 -14
@@ -1,225 +0,0 @@
|
|
1
|
-
//var border = RUZEE.ShadedBorder.create({ corner:8, shadow:16, border:2 });
|
2
|
-
var myrules = {
|
3
|
-
'#sidebar' : function(elt) {
|
4
|
-
border.render(elt);
|
5
|
-
}
|
6
|
-
};
|
7
|
-
|
8
|
-
//Behaviour.register(myrules);
|
9
|
-
|
10
|
-
/* Called for each element to set its knobs */
|
11
|
-
function setKnobs(elt) {
|
12
|
-
// To not filter out the top element
|
13
|
-
if (Element.hasClassName(elt.parentNode, 'top')) return;
|
14
|
-
|
15
|
-
var knobOpened = document.createElement("a");
|
16
|
-
Element.addClassName(knobOpened, "knobOpened");
|
17
|
-
knobOpened.href = "#";
|
18
|
-
knobOpened.appendChild(document.createTextNode("V"));
|
19
|
-
|
20
|
-
var knobClosed = document.createElement("a");
|
21
|
-
Element.addClassName(knobClosed, "knobClosed");
|
22
|
-
knobClosed.href = "#";
|
23
|
-
knobClosed.appendChild(document.createTextNode(">"));
|
24
|
-
|
25
|
-
elt.insertBefore(knobOpened, elt.firstChild);
|
26
|
-
elt.insertBefore(knobClosed, elt.firstChild);
|
27
|
-
|
28
|
-
knobOpened.onclick = function() { return closeElt(elt); }
|
29
|
-
knobClosed.onclick = function() { return openElt(elt); }
|
30
|
-
}
|
31
|
-
|
32
|
-
/*
|
33
|
-
* Called for each element as it is displayed, to set its status according to
|
34
|
-
* the filter
|
35
|
-
*/
|
36
|
-
function setKnob(elt, result) {
|
37
|
-
// To not filter out the top element
|
38
|
-
if (Element.hasClassName(elt.parentNode, 'top')) return;
|
39
|
-
|
40
|
-
var f = $("filterForm").filter;
|
41
|
-
var filter = parseInt(f.options[f.selectedIndex].value);
|
42
|
-
|
43
|
-
if (filter == 'null' || result >= filter) {
|
44
|
-
Element.removeClassName(elt, 'closed');
|
45
|
-
} else if (result < filter) {
|
46
|
-
Element.addClassName(elt, 'closed');
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
function closeElt(elt) {
|
51
|
-
Element.addClassName(elt, "closed");
|
52
|
-
Element.removeClassName(elt, "opened");
|
53
|
-
|
54
|
-
$A(document.getElementsByClassName("opened", elt)).each( function(e) {
|
55
|
-
Element.removeClassName(e, "opened");
|
56
|
-
});
|
57
|
-
$A(document.getElementsByClassName("closed", elt)).each( function(e) {
|
58
|
-
Element.removeClassName(e, "closed");
|
59
|
-
});
|
60
|
-
|
61
|
-
var openedParent = false;
|
62
|
-
var current = elt;
|
63
|
-
while (!openedParent && document != (current = current.parentNode)) {
|
64
|
-
openedParent = Element.hasClassName(current, 'opened');
|
65
|
-
}
|
66
|
-
if (openedParent) {
|
67
|
-
Element.removeClassName(current, "opened");
|
68
|
-
Element.removeClassName(elt, "closed");
|
69
|
-
}
|
70
|
-
return false;
|
71
|
-
}
|
72
|
-
|
73
|
-
function openElt(elt) {
|
74
|
-
var closedParent = false;
|
75
|
-
var current = elt;
|
76
|
-
while (!closedParent && document != (current = current.parentNode)) {
|
77
|
-
closedParent = Element.hasClassName(current, 'closed');
|
78
|
-
}
|
79
|
-
if (closedParent) {
|
80
|
-
Element.addClassName(elt, "opened");
|
81
|
-
}
|
82
|
-
|
83
|
-
Element.removeClassName(elt, "closed");
|
84
|
-
$A(document.getElementsByClassName("opened", elt)).each( function(e) {
|
85
|
-
Element.removeClassName(e, "opened");
|
86
|
-
});
|
87
|
-
$A(document.getElementsByClassName("closed", elt)).each( function(e) {
|
88
|
-
Element.removeClassName(e, "closed");
|
89
|
-
});
|
90
|
-
return false;
|
91
|
-
}
|
92
|
-
|
93
|
-
|
94
|
-
function getCookie(name) {
|
95
|
-
var start = document.cookie.indexOf(name+"=");
|
96
|
-
var len = start+name.length+1;
|
97
|
-
if ((!start) && (name != document.cookie.substring(0, name.length))) return null;
|
98
|
-
if (start == -1) return null;
|
99
|
-
var end = document.cookie.indexOf(";",len);
|
100
|
-
if (end == -1) end = document.cookie.length;
|
101
|
-
return unescape(document.cookie.substring(len, end));
|
102
|
-
}
|
103
|
-
|
104
|
-
function setCookie(name, value) {
|
105
|
-
var expires_date = new Date( new Date().getTime() + (3000 * 1000 * 60 * 60 * 24) );
|
106
|
-
document.cookie = name + "=" +escape( value ) +
|
107
|
-
(";expires=" + expires_date.toGMTString());
|
108
|
-
/*+
|
109
|
-
( ( path ) ? ";path=" + path : "" ) +
|
110
|
-
( ( domain ) ? ";domain=" + domain : "" ) +
|
111
|
-
( ( secure ) ? ";secure" : "" );*/
|
112
|
-
}
|
113
|
-
|
114
|
-
|
115
|
-
/*
|
116
|
-
* The parameter 'filter' is not the value itself, but an index!
|
117
|
-
*/
|
118
|
-
function setFilter(filter, elt) {
|
119
|
-
setCookie('filter', $("filterForm").filter.selectedIndex);
|
120
|
-
|
121
|
-
new Ajax.Updater('listByVote', '/elt/listByVote/'+elt, { asynchronous:true, evalScripts:true });
|
122
|
-
new Ajax.Updater('listByDate', '/elt/listByDate/'+elt, { asynchronous:true, evalScripts:true });
|
123
|
-
|
124
|
-
document.getElementsByClassName('result').each( function(result) {
|
125
|
-
//alert(parseInt(result.innerHTML)+', '+filter);
|
126
|
-
Element.removeClassName(result.parentNode.parentNode, 'opened');
|
127
|
-
if (filter == 'null' || parseInt(result.innerHTML) >= parseInt(filter)) {
|
128
|
-
Element.removeClassName(result.parentNode.parentNode, 'closed');
|
129
|
-
} else if (parseInt(result.innerHTML) < parseInt(filter)) {
|
130
|
-
Element.addClassName(result.parentNode.parentNode, 'closed');
|
131
|
-
}
|
132
|
-
});
|
133
|
-
}
|
134
|
-
|
135
|
-
function setFilterFromCookie() {
|
136
|
-
if (getCookie('filter') != null) {
|
137
|
-
$("filterForm").filter.selectedIndex = getCookie('filter');
|
138
|
-
}
|
139
|
-
}
|
140
|
-
|
141
|
-
function decrementFilter() {
|
142
|
-
$("filterForm").filter.selectedIndex--;
|
143
|
-
$("filterForm").filter.onchange();
|
144
|
-
return false;
|
145
|
-
}
|
146
|
-
|
147
|
-
function incrementFilter() {
|
148
|
-
$("filterForm").filter.selectedIndex++;
|
149
|
-
$("filterForm").filter.onchange();
|
150
|
-
return false;
|
151
|
-
}
|
152
|
-
|
153
|
-
/*
|
154
|
-
* Set all choices to nothing.
|
155
|
-
* Mostly used for login/logout
|
156
|
-
*/
|
157
|
-
function resetChoices() {
|
158
|
-
$A(document.getElementsByClassName('selected', document.body)).each( function(choice) {
|
159
|
-
Element.removeClassName(choice, 'selected');
|
160
|
-
});
|
161
|
-
}
|
162
|
-
|
163
|
-
/*
|
164
|
-
* Set all choices to user's values
|
165
|
-
* Mostly used for login/logout
|
166
|
-
*/
|
167
|
-
function updateChoices(choices) {
|
168
|
-
$A(document.getElementsByClassName('con', document.body)).each( function(choice) {
|
169
|
-
if (choices[choice.parentNode.parentNode.parentNode.id] == "-1") {
|
170
|
-
Element.addClassName(choice, 'selected');
|
171
|
-
}
|
172
|
-
});
|
173
|
-
$A(document.getElementsByClassName('result', document.body)).each( function(choice) {
|
174
|
-
if (choices[choice.parentNode.parentNode.id] == "-1"
|
175
|
-
|| choices[choice.parentNode.parentNode.id] == "1") {
|
176
|
-
Element.addClassName(choice, 'selected');
|
177
|
-
}
|
178
|
-
});
|
179
|
-
$A(document.getElementsByClassName('pro', document.body)).each( function(choice) {
|
180
|
-
if (choices[choice.parentNode.parentNode.parentNode.id] == "1") {
|
181
|
-
Element.addClassName(choice, 'selected');
|
182
|
-
}
|
183
|
-
});
|
184
|
-
}
|
185
|
-
|
186
|
-
function setSize(img) {
|
187
|
-
var divHeight = findPosY(document.getElementsByClassName('choice', img.parentNode)[0]) - findPosY(img);
|
188
|
-
|
189
|
-
if (false && img.offsetWidth > 1) {
|
190
|
-
var debug = document.createElement("span");
|
191
|
-
debug.appendChild(document.createTextNode(
|
192
|
-
"divHeight: "+divHeight
|
193
|
-
+"; img.offsetHeight:"+img.offsetHeight
|
194
|
-
+"; img.offsetParent.offsetWidth: "+img.offsetParent.offsetWidth
|
195
|
-
+"; img.offsetWidth:"+img.offsetWidth
|
196
|
-
+"; findPosY(img):"+findPosY(img)
|
197
|
-
+"; findPosY(document.getElementsByClassName('choice', img.parentNode)[0]):"
|
198
|
-
+findPosY(document.getElementsByClassName('choice', img.parentNode)[0])));
|
199
|
-
if (img.parentNode.parentNode) img.parentNode.parentNode.insertBefore(debug, img.parentNode);
|
200
|
-
}
|
201
|
-
|
202
|
-
if (divHeight > 0 && img.offsetHeight > divHeight) img.style.height = divHeight+"px";
|
203
|
-
|
204
|
-
// For IE
|
205
|
-
// Only touch the width, in order to keep the width/height ratio
|
206
|
-
while (img.offsetHeight > 0 && img.offsetWidth > img.offsetParent.offsetWidth / 3) {
|
207
|
-
img.style.height = (img.offsetHeight - 30) + "px";
|
208
|
-
}
|
209
|
-
}
|
210
|
-
|
211
|
-
function findPosY(obj) {
|
212
|
-
if (!obj) return 0;
|
213
|
-
var curtop = 0;
|
214
|
-
if (obj.offsetParent)
|
215
|
-
while (1) {
|
216
|
-
curtop += obj.offsetTop;
|
217
|
-
if (!obj.offsetParent)
|
218
|
-
break;
|
219
|
-
obj = obj.offsetParent;
|
220
|
-
}
|
221
|
-
else if (obj.y)
|
222
|
-
curtop += obj.y;
|
223
|
-
return curtop;
|
224
|
-
}
|
225
|
-
|
@@ -1,47 +0,0 @@
|
|
1
|
-
// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
|
2
|
-
//
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
// a copy of this software and associated documentation files (the
|
5
|
-
// "Software"), to deal in the Software without restriction, including
|
6
|
-
// without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
// distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
// permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
// the following conditions:
|
10
|
-
//
|
11
|
-
// The above copyright notice and this permission notice shall be
|
12
|
-
// included in all copies or substantial portions of the Software.
|
13
|
-
//
|
14
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
-
|
22
|
-
var Scriptaculous = {
|
23
|
-
Version: '1.5_rc3',
|
24
|
-
require: function(libraryName) {
|
25
|
-
// inserting via DOM fails in Safari 2.0, so brute force approach
|
26
|
-
document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
|
27
|
-
},
|
28
|
-
load: function() {
|
29
|
-
if((typeof Prototype=='undefined') ||
|
30
|
-
parseFloat(Prototype.Version.split(".")[0] + "." +
|
31
|
-
Prototype.Version.split(".")[1]) < 1.4)
|
32
|
-
throw("script.aculo.us requires the Prototype JavaScript framework >= 1.4.0");
|
33
|
-
var scriptTags = document.getElementsByTagName("script");
|
34
|
-
for(var i=0;i<scriptTags.length;i++) {
|
35
|
-
if(scriptTags[i].src && scriptTags[i].src.match(/scriptaculous\.js(\?.*)?$/)) {
|
36
|
-
var path = scriptTags[i].src.replace(/scriptaculous\.js(\?.*)?$/,'');
|
37
|
-
this.require(path + 'effects.js');
|
38
|
-
this.require(path + 'dragdrop.js');
|
39
|
-
this.require(path + 'controls.js');
|
40
|
-
this.require(path + 'slider.js');
|
41
|
-
break;
|
42
|
-
}
|
43
|
-
}
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
Scriptaculous.load();
|
@@ -1,283 +0,0 @@
|
|
1
|
-
// Copyright (c) 2005 Marty Haught, Thomas Fuchs
|
2
|
-
//
|
3
|
-
// See http://script.aculo.us for more info
|
4
|
-
//
|
5
|
-
// Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
// a copy of this software and associated documentation files (the
|
7
|
-
// "Software"), to deal in the Software without restriction, including
|
8
|
-
// without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
// distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
// permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
// the following conditions:
|
12
|
-
//
|
13
|
-
// The above copyright notice and this permission notice shall be
|
14
|
-
// included in all copies or substantial portions of the Software.
|
15
|
-
//
|
16
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
-
|
24
|
-
if(!Control) var Control = {};
|
25
|
-
Control.Slider = Class.create();
|
26
|
-
|
27
|
-
// options:
|
28
|
-
// axis: 'vertical', or 'horizontal' (default)
|
29
|
-
//
|
30
|
-
// callbacks:
|
31
|
-
// onChange(value)
|
32
|
-
// onSlide(value)
|
33
|
-
Control.Slider.prototype = {
|
34
|
-
initialize: function(handle, track, options) {
|
35
|
-
var slider = this;
|
36
|
-
|
37
|
-
if(handle instanceof Array) {
|
38
|
-
this.handles = handle.collect( function(e) { return $(e) });
|
39
|
-
} else {
|
40
|
-
this.handles = [$(handle)];
|
41
|
-
}
|
42
|
-
|
43
|
-
this.track = $(track);
|
44
|
-
this.options = options || {};
|
45
|
-
|
46
|
-
this.axis = this.options.axis || 'horizontal';
|
47
|
-
this.increment = this.options.increment || 1;
|
48
|
-
this.step = parseInt(this.options.step || '1');
|
49
|
-
this.range = this.options.range || $R(0,1);
|
50
|
-
|
51
|
-
this.value = 0; // assure backwards compat
|
52
|
-
this.values = this.handles.map( function() { return 0 });
|
53
|
-
this.spans = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
|
54
|
-
this.options.startSpan = $(this.options.startSpan || null);
|
55
|
-
this.options.endSpan = $(this.options.endSpan || null);
|
56
|
-
|
57
|
-
this.restricted = this.options.restricted || false;
|
58
|
-
|
59
|
-
this.maximum = this.options.maximum || this.range.end;
|
60
|
-
this.minimum = this.options.minimum || this.range.start;
|
61
|
-
|
62
|
-
// Will be used to align the handle onto the track, if necessary
|
63
|
-
this.alignX = parseInt(this.options.alignX || '0');
|
64
|
-
this.alignY = parseInt(this.options.alignY || '0');
|
65
|
-
|
66
|
-
this.trackLength = this.maximumOffset() - this.minimumOffset();
|
67
|
-
this.handleLength = this.isVertical() ? this.handles[0].offsetHeight : this.handles[0].offsetWidth;
|
68
|
-
|
69
|
-
this.active = false;
|
70
|
-
this.dragging = false;
|
71
|
-
this.disabled = false;
|
72
|
-
|
73
|
-
if(this.options.disabled) this.setDisabled();
|
74
|
-
|
75
|
-
// Allowed values array
|
76
|
-
this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
|
77
|
-
if(this.allowedValues) {
|
78
|
-
this.minimum = this.allowedValues.min();
|
79
|
-
this.maximum = this.allowedValues.max();
|
80
|
-
}
|
81
|
-
|
82
|
-
this.eventMouseDown = this.startDrag.bindAsEventListener(this);
|
83
|
-
this.eventMouseUp = this.endDrag.bindAsEventListener(this);
|
84
|
-
this.eventMouseMove = this.update.bindAsEventListener(this);
|
85
|
-
|
86
|
-
// Initialize handles in reverse (make sure first handle is active)
|
87
|
-
this.handles.each( function(h,i) {
|
88
|
-
i = slider.handles.length-1-i;
|
89
|
-
slider.setValue(parseFloat(
|
90
|
-
(slider.options.sliderValue instanceof Array ?
|
91
|
-
slider.options.sliderValue[i] : slider.options.sliderValue) ||
|
92
|
-
slider.range.start), i);
|
93
|
-
Element.makePositioned(h); // fix IE
|
94
|
-
Event.observe(h, "mousedown", slider.eventMouseDown);
|
95
|
-
});
|
96
|
-
|
97
|
-
Event.observe(this.track, "mousedown", this.eventMouseDown);
|
98
|
-
Event.observe(document, "mouseup", this.eventMouseUp);
|
99
|
-
Event.observe(document, "mousemove", this.eventMouseMove);
|
100
|
-
|
101
|
-
this.initialized = true;
|
102
|
-
},
|
103
|
-
dispose: function() {
|
104
|
-
var slider = this;
|
105
|
-
Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
|
106
|
-
Event.stopObserving(document, "mouseup", this.eventMouseUp);
|
107
|
-
Event.stopObserving(document, "mousemove", this.eventMouseMove);
|
108
|
-
this.handles.each( function(h) {
|
109
|
-
Event.stopObserving(h, "mousedown", slider.eventMouseDown);
|
110
|
-
});
|
111
|
-
},
|
112
|
-
setDisabled: function(){
|
113
|
-
this.disabled = true;
|
114
|
-
},
|
115
|
-
setEnabled: function(){
|
116
|
-
this.disabled = false;
|
117
|
-
},
|
118
|
-
getNearestValue: function(value){
|
119
|
-
if(this.allowedValues){
|
120
|
-
if(value >= this.allowedValues.max()) return(this.allowedValues.max());
|
121
|
-
if(value <= this.allowedValues.min()) return(this.allowedValues.min());
|
122
|
-
|
123
|
-
var offset = Math.abs(this.allowedValues[0] - value);
|
124
|
-
var newValue = this.allowedValues[0];
|
125
|
-
this.allowedValues.each( function(v) {
|
126
|
-
var currentOffset = Math.abs(v - value);
|
127
|
-
if(currentOffset <= offset){
|
128
|
-
newValue = v;
|
129
|
-
offset = currentOffset;
|
130
|
-
}
|
131
|
-
});
|
132
|
-
return newValue;
|
133
|
-
}
|
134
|
-
if(value > this.range.end) return this.range.end;
|
135
|
-
if(value < this.range.start) return this.range.start;
|
136
|
-
return value;
|
137
|
-
},
|
138
|
-
setValue: function(sliderValue, handleIdx){
|
139
|
-
if(!this.active) {
|
140
|
-
this.activeHandle = this.handles[handleIdx];
|
141
|
-
this.activeHandleIdx = handleIdx;
|
142
|
-
this.updateStyles();
|
143
|
-
}
|
144
|
-
handleIdx = handleIdx || this.activeHandleIdx || 0;
|
145
|
-
if(this.initialized && this.restricted) {
|
146
|
-
if((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
|
147
|
-
sliderValue = this.values[handleIdx-1];
|
148
|
-
if((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
|
149
|
-
sliderValue = this.values[handleIdx+1];
|
150
|
-
}
|
151
|
-
sliderValue = this.getNearestValue(sliderValue);
|
152
|
-
this.values[handleIdx] = sliderValue;
|
153
|
-
this.value = this.values[0]; // assure backwards compat
|
154
|
-
|
155
|
-
this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =
|
156
|
-
this.translateToPx(sliderValue);
|
157
|
-
|
158
|
-
this.drawSpans();
|
159
|
-
if(!this.dragging || !this.event) this.updateFinished();
|
160
|
-
},
|
161
|
-
setValueBy: function(delta, handleIdx) {
|
162
|
-
this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,
|
163
|
-
handleIdx || this.activeHandleIdx || 0);
|
164
|
-
},
|
165
|
-
translateToPx: function(value) {
|
166
|
-
return Math.round(
|
167
|
-
((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *
|
168
|
-
(value - this.range.start)) + "px";
|
169
|
-
},
|
170
|
-
translateToValue: function(offset) {
|
171
|
-
return ((offset/(this.trackLength-this.handleLength) *
|
172
|
-
(this.range.end-this.range.start)) + this.range.start);
|
173
|
-
},
|
174
|
-
getRange: function(range) {
|
175
|
-
var v = this.values.sortBy(Prototype.K);
|
176
|
-
range = range || 0;
|
177
|
-
return $R(v[range],v[range+1]);
|
178
|
-
},
|
179
|
-
minimumOffset: function(){
|
180
|
-
return(this.isVertical() ? this.alignY : this.alignX);
|
181
|
-
},
|
182
|
-
maximumOffset: function(){
|
183
|
-
return(this.isVertical() ?
|
184
|
-
this.track.offsetHeight - this.alignY : this.track.offsetWidth - this.alignX);
|
185
|
-
},
|
186
|
-
isVertical: function(){
|
187
|
-
return (this.axis == 'vertical');
|
188
|
-
},
|
189
|
-
drawSpans: function() {
|
190
|
-
var slider = this;
|
191
|
-
if(this.spans)
|
192
|
-
$R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
|
193
|
-
if(this.options.startSpan)
|
194
|
-
this.setSpan(this.options.startSpan,
|
195
|
-
$R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
|
196
|
-
if(this.options.endSpan)
|
197
|
-
this.setSpan(this.options.endSpan,
|
198
|
-
$R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
|
199
|
-
},
|
200
|
-
setSpan: function(span, range) {
|
201
|
-
if(this.isVertical()) {
|
202
|
-
span.style.top = this.translateToPx(range.start);
|
203
|
-
span.style.height = this.translateToPx(range.end - range.start);
|
204
|
-
} else {
|
205
|
-
span.style.left = this.translateToPx(range.start);
|
206
|
-
span.style.width = this.translateToPx(range.end - range.start);
|
207
|
-
}
|
208
|
-
},
|
209
|
-
updateStyles: function() {
|
210
|
-
this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
|
211
|
-
Element.addClassName(this.activeHandle, 'selected');
|
212
|
-
},
|
213
|
-
startDrag: function(event) {
|
214
|
-
if(Event.isLeftClick(event)) {
|
215
|
-
if(!this.disabled){
|
216
|
-
this.active = true;
|
217
|
-
|
218
|
-
var handle = Event.element(event);
|
219
|
-
var pointer = [Event.pointerX(event), Event.pointerY(event)];
|
220
|
-
if(handle==this.track) {
|
221
|
-
var offsets = Position.cumulativeOffset(this.track);
|
222
|
-
this.event = event;
|
223
|
-
this.setValue(this.translateToValue(
|
224
|
-
(this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
|
225
|
-
));
|
226
|
-
var offsets = Position.cumulativeOffset(this.activeHandle);
|
227
|
-
this.offsetX = (pointer[0] - offsets[0]);
|
228
|
-
this.offsetY = (pointer[1] - offsets[1]);
|
229
|
-
} else {
|
230
|
-
// find the handle (prevents issues with Safari)
|
231
|
-
while((this.handles.indexOf(handle) == -1) && handle.parentNode)
|
232
|
-
handle = handle.parentNode;
|
233
|
-
|
234
|
-
this.activeHandle = handle;
|
235
|
-
this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
|
236
|
-
this.updateStyles();
|
237
|
-
|
238
|
-
var offsets = Position.cumulativeOffset(this.activeHandle);
|
239
|
-
this.offsetX = (pointer[0] - offsets[0]);
|
240
|
-
this.offsetY = (pointer[1] - offsets[1]);
|
241
|
-
}
|
242
|
-
}
|
243
|
-
Event.stop(event);
|
244
|
-
}
|
245
|
-
},
|
246
|
-
update: function(event) {
|
247
|
-
if(this.active) {
|
248
|
-
if(!this.dragging) this.dragging = true;
|
249
|
-
this.draw(event);
|
250
|
-
// fix AppleWebKit rendering
|
251
|
-
if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
|
252
|
-
Event.stop(event);
|
253
|
-
}
|
254
|
-
},
|
255
|
-
draw: function(event) {
|
256
|
-
var pointer = [Event.pointerX(event), Event.pointerY(event)];
|
257
|
-
var offsets = Position.cumulativeOffset(this.track);
|
258
|
-
pointer[0] -= this.offsetX + offsets[0];
|
259
|
-
pointer[1] -= this.offsetY + offsets[1];
|
260
|
-
this.event = event;
|
261
|
-
this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
|
262
|
-
if(this.initialized && this.options.onSlide)
|
263
|
-
this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
|
264
|
-
},
|
265
|
-
endDrag: function(event) {
|
266
|
-
if(this.active && this.dragging) {
|
267
|
-
this.finishDrag(event, true);
|
268
|
-
Event.stop(event);
|
269
|
-
}
|
270
|
-
this.active = false;
|
271
|
-
this.dragging = false;
|
272
|
-
},
|
273
|
-
finishDrag: function(event, success) {
|
274
|
-
this.active = false;
|
275
|
-
this.dragging = false;
|
276
|
-
this.updateFinished();
|
277
|
-
},
|
278
|
-
updateFinished: function() {
|
279
|
-
if(this.initialized && this.options.onChange)
|
280
|
-
this.options.onChange(this.values.length>1 ? this.values : this.value, this);
|
281
|
-
this.event = null;
|
282
|
-
}
|
283
|
-
}
|