integratedscaffold 1.0.4
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/Gemfile +6 -0
- data/Manifest +85 -0
- data/README +1 -0
- data/README.rdoc +1 -0
- data/Rakefile +14 -0
- data/integratedscaffold.gemspec +38 -0
- data/lib/integratedscaffold.rb +289 -0
- data/lib/templates/actions/create.rb +8 -0
- data/lib/templates/actions/destroy.rb +5 -0
- data/lib/templates/actions/edit.rb +4 -0
- data/lib/templates/actions/index.rb +5 -0
- data/lib/templates/actions/new.rb +4 -0
- data/lib/templates/actions/parse_save_from_excel.rb +45 -0
- data/lib/templates/actions/show.rb +5 -0
- data/lib/templates/actions/update.rb +8 -0
- data/lib/templates/assets/images/background.jpg +0 -0
- data/lib/templates/assets/images/download.png +0 -0
- data/lib/templates/assets/images/inner_texture.jpeg +0 -0
- data/lib/templates/assets/images/logo.png +0 -0
- data/lib/templates/assets/images/new.png +0 -0
- data/lib/templates/assets/images/upload.png +0 -0
- data/lib/templates/assets/images/welcome_icon_1.png +0 -0
- data/lib/templates/assets/images/welcome_icon_2.png +0 -0
- data/lib/templates/assets/images/welcome_icon_3.png +0 -0
- data/lib/templates/assets/images/welcome_icon_4.png +0 -0
- data/lib/templates/assets/images/welcome_image.png +0 -0
- data/lib/templates/assets/javascripts/exclusions/fiddletabs.js +233 -0
- data/lib/templates/assets/javascripts/exclusions/jquery.mousewheel.min.js +12 -0
- data/lib/templates/assets/javascripts/exclusions/jquery.pageslide.js +202 -0
- data/lib/templates/assets/javascripts/jquery.dataTables.min.js +2475 -0
- data/lib/templates/assets/stylesheets/base_classes.css.scss +107 -0
- data/lib/templates/assets/stylesheets/exclusions/fiddletabs.css +77 -0
- data/lib/templates/assets/stylesheets/exclusions/images/Sorting icons.psd +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/back_disabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/back_enabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/favicon.ico +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/forward_disabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/forward_enabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/sort_asc.png +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/sort_asc_disabled.png +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/sort_both.png +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/sort_desc.png +0 -0
- data/lib/templates/assets/stylesheets/exclusions/images/sort_desc_disabled.png +0 -0
- data/lib/templates/assets/stylesheets/exclusions/jquery_data_table.css +513 -0
- data/lib/templates/assets/stylesheets/images/Sorting icons.psd +0 -0
- data/lib/templates/assets/stylesheets/images/back_disabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/images/back_enabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/images/favicon.ico +0 -0
- data/lib/templates/assets/stylesheets/images/forward_disabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/images/forward_enabled.jpg +0 -0
- data/lib/templates/assets/stylesheets/images/sort_asc.png +0 -0
- data/lib/templates/assets/stylesheets/images/sort_asc_disabled.png +0 -0
- data/lib/templates/assets/stylesheets/images/sort_both.png +0 -0
- data/lib/templates/assets/stylesheets/images/sort_desc.png +0 -0
- data/lib/templates/assets/stylesheets/images/sort_desc_disabled.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-icons_222222_256x240.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-icons_454545_256x240.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-icons_888888_256x240.png +0 -0
- data/lib/templates/assets/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/lib/templates/assets/stylesheets/information_page.css.scss +3 -0
- data/lib/templates/assets/stylesheets/jquery_data_table.css +513 -0
- data/lib/templates/controller.rb +4 -0
- data/lib/templates/file_uploader.rb +48 -0
- data/lib/templates/helper.rb +2 -0
- data/lib/templates/layouts/application.html.erb +69 -0
- data/lib/templates/layouts/dummy_data.html.erb +80 -0
- data/lib/templates/layouts/information_page.html.erb +81 -0
- data/lib/templates/layouts/pageslide_form_at.html.erb +2 -0
- data/lib/templates/layouts/welcome.html.erb +71 -0
- data/lib/templates/migration.rb +18 -0
- data/lib/templates/model.rb +7 -0
- data/lib/templates/views/erb/_form.html.erb +32 -0
- data/lib/templates/views/erb/edit.html.erb +11 -0
- data/lib/templates/views/erb/index.html.erb +216 -0
- data/lib/templates/views/erb/new.html.erb +11 -0
- data/lib/templates/views/erb/show.html.erb +0 -0
- metadata +271 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
def parse_save_from_excel
|
|
2
|
+
test_file = params[:excel_file]
|
|
3
|
+
file = FileUploader.new
|
|
4
|
+
if file.store!(test_file)
|
|
5
|
+
book = Spreadsheet.open "#{file.store_path}"
|
|
6
|
+
sheet1 = book.worksheet 0
|
|
7
|
+
|
|
8
|
+
@<%= instance_name %> = []
|
|
9
|
+
@errors = Hash.new
|
|
10
|
+
@counter = 0
|
|
11
|
+
|
|
12
|
+
sheet1.each 1 do |row|
|
|
13
|
+
@counter+=1
|
|
14
|
+
<%- final_query="find_by_" -%>
|
|
15
|
+
<%- final_arguments="" -%>
|
|
16
|
+
<%- a="_and_" -%>
|
|
17
|
+
p = <%= class_name %>.new
|
|
18
|
+
<%- model_attributes.each_with_index do |attribute,index| -%>
|
|
19
|
+
<%- final_query=final_query+ attribute.name %>
|
|
20
|
+
<%- final_arguments=final_arguments+"p."+attribute.name -%>
|
|
21
|
+
<%-if index < model_attributes.length-1 -%>
|
|
22
|
+
<%- final_query=final_query+ a %>
|
|
23
|
+
<%- final_arguments=final_arguments+ "," %>
|
|
24
|
+
<%- end -%>
|
|
25
|
+
p.<%=attribute.name %> = row[<%=index%>]
|
|
26
|
+
<%- end -%>
|
|
27
|
+
unless <%= class_name %>.<%=final_query%>(<%= final_arguments %>)
|
|
28
|
+
if p.valid?
|
|
29
|
+
p.save
|
|
30
|
+
else
|
|
31
|
+
@errors["#{@counter+1}"] = p.errors
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
file.remove!
|
|
36
|
+
if @errors.empty?
|
|
37
|
+
redirect_to <%= item_path %>, notice: 'All Dummy data were successfully uploaded.'
|
|
38
|
+
else
|
|
39
|
+
redirect_to <%= item_path %>, notice: 'There were some errors in your upload'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
else
|
|
43
|
+
redirect_to <%= item_path %>, notice: 'Dummy datum could not be successfully uploaded.'
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
def update
|
|
2
|
+
@<%= instance_name %> = <%= class_name %>.find(params[:id])
|
|
3
|
+
if @<%= instance_name %>.update_attributes(params[:<%= instance_name %>])
|
|
4
|
+
redirect_to <%= items_url %>, :notice => "Successfully updated <%= class_name.underscore.humanize.downcase %>."
|
|
5
|
+
else
|
|
6
|
+
render :edit
|
|
7
|
+
end
|
|
8
|
+
end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Created by JetBrains RubyMine.
|
|
3
|
+
* User: arijit
|
|
4
|
+
* Date: 18/1/12
|
|
5
|
+
* Time: 1:09 PM
|
|
6
|
+
* To change this template use File | Settings | File Templates.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
$(function() {
|
|
10
|
+
(function($) {
|
|
11
|
+
$.fn.extend({
|
|
12
|
+
oldAnimate: $.fn.animate,
|
|
13
|
+
animate: function(props, speed, easing, callback) {
|
|
14
|
+
var camelToHyphen = function(camel) {
|
|
15
|
+
return camel.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
16
|
+
}, prefixes = [
|
|
17
|
+
"Moz", "Webkit",
|
|
18
|
+
"O", "Ms", "Khtml"
|
|
19
|
+
], transitionProp = false,
|
|
20
|
+
$this = $(this);
|
|
21
|
+
callback = (typeof easing === "function") ? easing : (callback) ? callback : function() {
|
|
22
|
+
};
|
|
23
|
+
easing = (easing && typeof easing === "string") ? easing : "ease-in-out";
|
|
24
|
+
for (var i = 0; i < prefixes.length; i++) {
|
|
25
|
+
if (prefixes[i] + "Transition" in $this.get(0).style) {
|
|
26
|
+
transitionProp = "-" + prefixes[i].toLowerCase() + "-transition";
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return $this.each(function() {
|
|
31
|
+
var $$this = $(this);
|
|
32
|
+
var transitionString;
|
|
33
|
+
if (transitionProp) {
|
|
34
|
+
var oldTransition = $$this.css(transitionProp);
|
|
35
|
+
transitionString = (oldTransition) ? oldTransition + ", " : "";
|
|
36
|
+
for (prop in props) {
|
|
37
|
+
transitionString += camelToHyphen(prop) + " " + speed + "ms " + easing + ", ";
|
|
38
|
+
}
|
|
39
|
+
transitionString = transitionString.replace(/\, $/, "");
|
|
40
|
+
$$this.css(transitionProp, transitionString).css(props);
|
|
41
|
+
setTimeout(function() {
|
|
42
|
+
$$this.css(transitionProp, oldTransition);
|
|
43
|
+
callback();
|
|
44
|
+
}, speed);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
$$this.oldAnimate(props, speed, callback);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
})(jQuery);
|
|
53
|
+
|
|
54
|
+
(function($) {
|
|
55
|
+
$.fn.extend({
|
|
56
|
+
danceSwitcher: function(options) {
|
|
57
|
+
var defaults = {
|
|
58
|
+
speed: 1,
|
|
59
|
+
collapsedWidth: 230,
|
|
60
|
+
collapsedHeight: 80,
|
|
61
|
+
collapsedMPB: [10, 10, 10, 10],
|
|
62
|
+
collapsedLineHeight: '80px',
|
|
63
|
+
activeLineHeight: '48px',
|
|
64
|
+
animationSequence: 'prev/next'
|
|
65
|
+
};
|
|
66
|
+
options = $.extend(defaults, options);
|
|
67
|
+
return $(this).each(function() {
|
|
68
|
+
var $this = $(this),
|
|
69
|
+
speed = options.speed,
|
|
70
|
+
first = $(this).children('div').eq(0), // the first child of the switcher, so that it is open by default
|
|
71
|
+
i;
|
|
72
|
+
$this.css('height', ($this.children('div').length - 1) * (options.collapsedHeight + options.collapsedMPB[0] + options.collapsedMPB[2]) + 'px'); // set the height of the switcher to the appropriate value
|
|
73
|
+
first.addClass('active'); // make the first box active
|
|
74
|
+
for (i = 1; i < $this.children('div').length; i++) { // position all of the boxes appropriately
|
|
75
|
+
$this.children('div').eq(i).css('top', (i - 1) * (options.collapsedHeight + options.collapsedMPB[0] + options.collapsedMPB[2]) + 'px');
|
|
76
|
+
}
|
|
77
|
+
if (options.animationSequence === 'prev/next') { // using the default animation
|
|
78
|
+
$this.children('div').click(function() { // bind aclick event to all the boxes
|
|
79
|
+
var $$this = $(this);
|
|
80
|
+
if (!$$this.hasClass('active') && !$this.hasClass('inprogress')) { // if the box clicked isn't already active and there isn't already animation going on
|
|
81
|
+
var next, prev;
|
|
82
|
+
$this.addClass('inprogress'); // make sure 2 animations don't happen at once
|
|
83
|
+
$this.children('.active').children('.content').animate({ // fade out the content of the active box
|
|
84
|
+
opacity: 0
|
|
85
|
+
}, 750 / speed);
|
|
86
|
+
$this.children('.active').children('h3').animate({ // animate the active header line height
|
|
87
|
+
lineHeight: options.collapsedLineHeight
|
|
88
|
+
}, 750 / speed);
|
|
89
|
+
if ($$this.next(':not(.active)').get(0)) { // if the clicked box isn't last
|
|
90
|
+
next = $(this).next();
|
|
91
|
+
prev = false;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
next = $$this.prev();
|
|
95
|
+
prev = true;
|
|
96
|
+
}
|
|
97
|
+
$$this.css({ // convert the height property of the clicked box to the bottom property
|
|
98
|
+
bottom: $this.height() - $$this.position().top - (options.collapsedHeight + options.collapsedMPB[0] + options.collapsedMPB[2]),
|
|
99
|
+
height: 'auto'
|
|
100
|
+
});
|
|
101
|
+
$this.children('.active').css('height', $this.children('.active').height()).animate({
|
|
102
|
+
top: next.css('top'), // move the active box to the vertical position of its final destination
|
|
103
|
+
height: options.collapsedHeight // make its height the height of a collapsed box
|
|
104
|
+
}, 750 / speed, function() {
|
|
105
|
+
$$this.animate({ // move the clicked box out untill it's the same dimensions as the previously active box
|
|
106
|
+
left: 0,
|
|
107
|
+
right: (options.collapsedWidth + options.collapsedMPB[1] + options.collapsedMPB[3])
|
|
108
|
+
}, 500 / speed, function() {
|
|
109
|
+
next.animate({ // move the box next to the previously active box (to the right) to the place where the clicked box used to be
|
|
110
|
+
top: $$this.css('top')
|
|
111
|
+
}, 750 / speed, function() {
|
|
112
|
+
$this.children('.active').animate({ // move the previously active box to where the last animated box just was
|
|
113
|
+
left: next.position().left,
|
|
114
|
+
right: 0
|
|
115
|
+
}, 750 / speed, function() {
|
|
116
|
+
$$this.children('h3').animate({ // animate the line height of the clicked box to the height of an active box
|
|
117
|
+
lineHeight: options.activeLineHeight
|
|
118
|
+
}, 750 / speed);
|
|
119
|
+
$$this.children('.content').animate({ // and make its content opaque
|
|
120
|
+
opacity: 1
|
|
121
|
+
}, 750 / speed);
|
|
122
|
+
$$this.animate({ // and give it the dimensions of an active box
|
|
123
|
+
top: 0,
|
|
124
|
+
bottom: 0
|
|
125
|
+
}, 750 / speed, function() {
|
|
126
|
+
if (!prev) {
|
|
127
|
+
$this.children('.active').insertAfter(next); // if the "next" box was the box underneath the now active box, mave its position in the DOM to where it now is visually on the page
|
|
128
|
+
}
|
|
129
|
+
else if (prev) {
|
|
130
|
+
$this.children('.active').insertBefore(next); // same thing but if it was above the now active box
|
|
131
|
+
}
|
|
132
|
+
$this.children('.active').removeClass('active'); // remove the active class from the box that is no longer active
|
|
133
|
+
$$this.addClass('active'); // and add it to the now active box
|
|
134
|
+
|
|
135
|
+
$$this.prependTo($$this.parent()); // move the now active box to the top of the switcher DOM tree
|
|
136
|
+
$this.removeClass('inprogress'); // and set the switcher to not animating
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else if (options.animationSequence === 'first/last') {
|
|
146
|
+
$this.children('div').click(function() {
|
|
147
|
+
var $$this = $(this), active = $this.children('.active'), last = !$$this.next().get(0), alreadyCalled = false,
|
|
148
|
+
callback = function() {
|
|
149
|
+
console.log($this.width() - (options.collapsedWidth + options.collapsedMPB[1] + options.collapsedMPB[3]));
|
|
150
|
+
active.css('bottom', 'auto').animate({
|
|
151
|
+
right: 0,
|
|
152
|
+
left: $this.width() - (options.collapsedWidth + options.collapsedMPB[1] + options.collapsedMPB[3])
|
|
153
|
+
}, 750 / speed, function() {
|
|
154
|
+
$$this.animate({
|
|
155
|
+
top: 0,
|
|
156
|
+
bottom: 0
|
|
157
|
+
}, 750 / speed).children('h3').animate({
|
|
158
|
+
lineHeight: options.activeLineHeight
|
|
159
|
+
}, 750 / speed);
|
|
160
|
+
$$this.children('.content').animate({
|
|
161
|
+
opacity: 1
|
|
162
|
+
}, 750 / speed, function() {
|
|
163
|
+
if (!last) {
|
|
164
|
+
active.appendTo($this).removeClass('active');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
active.prependTo($this).removeClass('active');
|
|
168
|
+
}
|
|
169
|
+
$$this.prependTo($this).addClass('active');
|
|
170
|
+
$this.removeClass('inprogress');
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
if (!$$this.hasClass('active') && !$this.hasClass('inprogress')) {
|
|
175
|
+
$this.addClass('inprogress');
|
|
176
|
+
active.children('h3').animate({
|
|
177
|
+
lineHeight: options.collapsedLineHeight
|
|
178
|
+
}, 750 / speed);
|
|
179
|
+
active.children('.content').animate({
|
|
180
|
+
opacity: 0
|
|
181
|
+
}, 750 / speed);
|
|
182
|
+
active.animate({
|
|
183
|
+
top: (!last) ? $this.height() - options.collapsedHeight - options.collapsedMPB[0] - options.collapsedMPB[2] : 0,
|
|
184
|
+
bottom: (!last) ? 0 : $this.height() - options.collapsedHeight - options.collapsedMPB[0] - options.collapsedMPB[2]
|
|
185
|
+
}, 750 / speed, function() {
|
|
186
|
+
active.css({
|
|
187
|
+
top: (!last) ? $this.height() - active.height() - options.collapsedMPB[0] - options.collapsedMPB[2] : 0,
|
|
188
|
+
height: active.height()
|
|
189
|
+
});
|
|
190
|
+
$$this.css({
|
|
191
|
+
bottom: $this.height() - $$this.position().top - (options.collapsedHeight + options.collapsedMPB[0] + options.collapsedMPB[2]),
|
|
192
|
+
height: 'auto'
|
|
193
|
+
});
|
|
194
|
+
$$this.animate({
|
|
195
|
+
left: 0,
|
|
196
|
+
right: (options.collapsedWidth + options.collapsedMPB[1] + options.collapsedMPB[3])
|
|
197
|
+
}, 500 / speed, function() {
|
|
198
|
+
if (!last) {
|
|
199
|
+
$$this.nextAll('div').each(function() {
|
|
200
|
+
var $$$this = $(this);
|
|
201
|
+
$$$this.animate({
|
|
202
|
+
top: $$$this.position().top - (options.collapsedHeight + options.collapsedMPB[0] + options.collapsedMPB[2])
|
|
203
|
+
}, 750 / speed, function() {
|
|
204
|
+
if (!alreadyCalled) {
|
|
205
|
+
callback();
|
|
206
|
+
}
|
|
207
|
+
alreadyCalled = true;
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
$$this.prevAll('div:not(.active)').each(function() {
|
|
213
|
+
var $$$this = $(this);
|
|
214
|
+
$$$this.animate({
|
|
215
|
+
top: $$$this.position().top + (options.collapsedHeight + options.collapsedMPB[0] + options.collapsedMPB[2])
|
|
216
|
+
}, 750 / speed, function() {
|
|
217
|
+
if (!alreadyCalled) {
|
|
218
|
+
callback();
|
|
219
|
+
}
|
|
220
|
+
alreadyCalled = true;
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}(jQuery));
|
|
233
|
+
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
|
|
2
|
+
* Licensed under the MIT License (LICENSE.txt).
|
|
3
|
+
*
|
|
4
|
+
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
|
|
5
|
+
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
|
|
6
|
+
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
|
7
|
+
*
|
|
8
|
+
* Version: 3.0.6
|
|
9
|
+
*
|
|
10
|
+
* Requires: 1.2.2+
|
|
11
|
+
*/
|
|
12
|
+
(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery)
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* jQuery pageSlide
|
|
3
|
+
* Version 2.0
|
|
4
|
+
* http://srobbin.com/jquery-pageslide/
|
|
5
|
+
*
|
|
6
|
+
* jQuery Javascript plugin which slides a webpage over to reveal an additional interaction pane.
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2011 Scott Robbin (srobbin.com)
|
|
9
|
+
* Dual licensed under the MIT and GPL licenses.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
;(function($){
|
|
13
|
+
// Convenience vars for accessing elements
|
|
14
|
+
var $body_ps = $('body'),
|
|
15
|
+
$page_slide = $('#pageslide');
|
|
16
|
+
|
|
17
|
+
var _sliding_ps = false, // Mutex to assist closing only once
|
|
18
|
+
_lastCaller_ps; // Used to keep track of last element to trigger pageslide
|
|
19
|
+
|
|
20
|
+
// If the pageslide element doesn't exist, create it
|
|
21
|
+
if( $page_slide.length == 0 ) {
|
|
22
|
+
$page_slide = $('<div />').attr( 'id', 'pageslide' )
|
|
23
|
+
.css( 'display', 'none' )
|
|
24
|
+
.appendTo( $('body') );
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* Private methods
|
|
29
|
+
*/
|
|
30
|
+
function _load( url, useIframe ) {
|
|
31
|
+
// Are we loading an element from the page or a URL?
|
|
32
|
+
if ( url.indexOf("#") === 0 ) {
|
|
33
|
+
// Load a page element
|
|
34
|
+
$(url).clone(true).appendTo( $page_slide.empty() ).show();
|
|
35
|
+
} else {
|
|
36
|
+
// Load a URL. Into an iframe?
|
|
37
|
+
if( useIframe ) {
|
|
38
|
+
var iframe = $("<iframe />").attr({
|
|
39
|
+
src: url,
|
|
40
|
+
frameborder: 0,
|
|
41
|
+
hspace: 0
|
|
42
|
+
})
|
|
43
|
+
.css({
|
|
44
|
+
width: "100%",
|
|
45
|
+
height: "100%"
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
$page_slide.html( iframe );
|
|
49
|
+
} else {
|
|
50
|
+
$page_slide.load( url );
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
$page_slide.data( 'localEl', false );
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Function that controls opening of the pageslide
|
|
59
|
+
function _start( direction, speed ) {
|
|
60
|
+
var slideWidth = $page_slide.outerWidth( true ),
|
|
61
|
+
bodyAnimateIn = {},
|
|
62
|
+
slideAnimateIn = {};
|
|
63
|
+
|
|
64
|
+
// If the slide is open or opening, just ignore the call
|
|
65
|
+
if( $page_slide.is(':visible') || _sliding_ps ) return;
|
|
66
|
+
_sliding_ps = true;
|
|
67
|
+
|
|
68
|
+
switch( direction ) {
|
|
69
|
+
case 'left':
|
|
70
|
+
$page_slide.css({ left: 'auto', right: '-' + slideWidth + 'px' });
|
|
71
|
+
bodyAnimateIn['margin-left'] = '-=' + slideWidth;
|
|
72
|
+
slideAnimateIn['right'] = '+=' + slideWidth;
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
$page_slide.css({ left: '-' + slideWidth + 'px', right: 'auto' });
|
|
76
|
+
bodyAnimateIn['margin-left'] = '+=' + slideWidth;
|
|
77
|
+
slideAnimateIn['left'] = '+=' + slideWidth;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Animate the slide, and attach this slide's settings to the element
|
|
82
|
+
$body_ps.animate(bodyAnimateIn, speed);
|
|
83
|
+
$page_slide.show()
|
|
84
|
+
.animate(slideAnimateIn, speed, function() {
|
|
85
|
+
_sliding_ps = false;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Declaration
|
|
91
|
+
*/
|
|
92
|
+
$.fn.pageslide = function(options) {
|
|
93
|
+
var $elements = this;
|
|
94
|
+
|
|
95
|
+
// On click
|
|
96
|
+
$elements.click( function(e) {
|
|
97
|
+
var $self = $(this),
|
|
98
|
+
settings = $.extend({ href: $self.attr('href') }, options);
|
|
99
|
+
|
|
100
|
+
// Prevent the default behavior and stop propagation
|
|
101
|
+
e.preventDefault();
|
|
102
|
+
e.stopPropagation();
|
|
103
|
+
|
|
104
|
+
if ( $page_slide.is(':visible') && $self[0] == _lastCaller_ps ) {
|
|
105
|
+
// If we clicked the same element twice, toggle closed
|
|
106
|
+
$.pageslide.close();
|
|
107
|
+
} else {
|
|
108
|
+
// Open
|
|
109
|
+
$.pageslide( settings );
|
|
110
|
+
|
|
111
|
+
// Record the last element to trigger pageslide
|
|
112
|
+
_lastCaller_ps = $self[0];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* Default settings
|
|
119
|
+
*/
|
|
120
|
+
$.fn.pageslide.defaults = {
|
|
121
|
+
speed: 200, // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds)
|
|
122
|
+
direction: 'right', // Accepts 'left' or 'right'
|
|
123
|
+
modal: false, // If set to true, you must explicitly close pageslide using $.pageslide.close();
|
|
124
|
+
iframe: true, // By default, linked pages are loaded into an iframe. Set this to false if you don't want an iframe.
|
|
125
|
+
href: null // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/*
|
|
129
|
+
* Public methods
|
|
130
|
+
*/
|
|
131
|
+
|
|
132
|
+
// Open the pageslide
|
|
133
|
+
$.pageslide = function(options) {
|
|
134
|
+
// Extend the settings with those the user has provided
|
|
135
|
+
var settings = $.extend({}, $.fn.pageslide.defaults, options);
|
|
136
|
+
|
|
137
|
+
// Are we trying to open in different direction?
|
|
138
|
+
if ($page_slide.is(':visible') && $page_slide.data('direction') != settings.direction) {
|
|
139
|
+
$.pageslide.close(function() {
|
|
140
|
+
_load(settings.href, settings.iframe);
|
|
141
|
+
_start(settings.direction, settings.speed);
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
_load(settings.href, settings.iframe);
|
|
145
|
+
if ($page_slide.is(':hidden')) {
|
|
146
|
+
_start(settings.direction, settings.speed);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
$page_slide.data(settings);
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Close the pageslide
|
|
154
|
+
$.pageslide.close = function(callback) {
|
|
155
|
+
var $page_slide = $('#pageslide'),
|
|
156
|
+
slideWidth = $page_slide.outerWidth(true),
|
|
157
|
+
speed = $page_slide.data('speed'),
|
|
158
|
+
bodyAnimateIn = {},
|
|
159
|
+
slideAnimateIn = {};
|
|
160
|
+
|
|
161
|
+
// If the slide isn't open, just ignore the call
|
|
162
|
+
if ($page_slide.is(':hidden') || _sliding_ps) return;
|
|
163
|
+
_sliding_ps = true;
|
|
164
|
+
|
|
165
|
+
switch ($page_slide.data('direction')) {
|
|
166
|
+
case 'left':
|
|
167
|
+
bodyAnimateIn['margin-left'] = '+=' + slideWidth;
|
|
168
|
+
slideAnimateIn['right'] = '-=' + slideWidth;
|
|
169
|
+
break;
|
|
170
|
+
default:
|
|
171
|
+
bodyAnimateIn['margin-left'] = '-=' + slideWidth;
|
|
172
|
+
slideAnimateIn['left'] = '-=' + slideWidth;
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
$page_slide.animate(slideAnimateIn, speed);
|
|
177
|
+
$body_ps.animate(bodyAnimateIn, speed, function() {
|
|
178
|
+
$page_slide.hide();
|
|
179
|
+
_sliding_ps = false;
|
|
180
|
+
if (typeof callback != 'undefined') callback();
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
/* Events */
|
|
185
|
+
|
|
186
|
+
// Don't let clicks to the pageslide close the window
|
|
187
|
+
$page_slide.click(function(e) {
|
|
188
|
+
e.stopPropagation();
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
|
|
192
|
+
$(document).bind('click keyup', function(e) {
|
|
193
|
+
// If this is a keyup event, let's see if it's an ESC key
|
|
194
|
+
if( e.type == "keyup" && e.keyCode != 27) return;
|
|
195
|
+
|
|
196
|
+
// Make sure it's visible, and we're not modal
|
|
197
|
+
if( $page_slide.is( ':visible' ) && !$page_slide.data( 'modal' ) ) {
|
|
198
|
+
$.pageslide.close();
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
})(jQuery);
|