timeliner_rails 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +17 -0
- data/.gitmodules +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +33 -0
- data/Rakefile +48 -0
- data/app/assets/images/timeliner/timeline_century_tick.gif +0 -0
- data/app/assets/images/timeliner/timeline_decade_tick.gif +0 -0
- data/app/assets/javascripts/timeliner/timeliner.js +118 -0
- data/app/assets/stylesheets/timeliner/responsive.css.erb +71 -0
- data/app/assets/stylesheets/timeliner/screen.css.erb +237 -0
- data/lib/timeliner_rails.rb +6 -0
- data/lib/timeliner_rails/version.rb +3 -0
- data/timeliner_rails.gemspec +25 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjljMzYwOGZlMWNkNmFiMTliMGRmMzI2OGE3MjkzMDQ1YmY0OWFiNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGM0YTNmMTc2ODQ2MWI2MzNlMTQ1ZWU3NjRiODg0NDljMjdhMWM3Yg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YmUyNTg1NWUzNWRlODZjNWYxOTljOGIzMjNmMjdjNzMyMmZlMjBlZGYzM2Nk
|
10
|
+
ZmJmMTdhMTVlMmMxNzVjNWQ4ZDA5Yjc1ZmRmNGUxMzVmOTQ5Mzg4MTI1ZjY4
|
11
|
+
YmFlNzMwNjAyNjM2ZDY3YjlhMDVlNWNmZGJkZWViZWIyMDFlOTA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
M2VmOTk0M2Q3YTMyMzVkZjI4NjlmZTk0NDViOWIwNDg1MzkwY2RhNmM3NzI0
|
14
|
+
YmI5ZjdhM2FjYWQyMWVmNTQzZDhhMmM1ZTU0NDliM2IxZTkzOTM0OTgxOGIw
|
15
|
+
MzAyYWQ2OGU4ZmI3M2ZhMWMyNmUzNTk3OGQ5MzE4NjkwZDdkZjQ=
|
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Luisa Lima
|
2
|
+
|
3
|
+
MIT License
|
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.
|
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# TimelinerRails
|
2
|
+
|
3
|
+
timeliner_rails packages the []() jquery plugin (javascripts, stylesheets and images) for use with the rails 3.1+ asset pipeline.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'timeliner_rails'
|
10
|
+
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
Add this line to your `application.js`:
|
15
|
+
|
16
|
+
```javascript
|
17
|
+
//= require timeliner.timeliner
|
18
|
+
```
|
19
|
+
|
20
|
+
Add these lines to your `application.scss` || `application.css`:
|
21
|
+
|
22
|
+
```css
|
23
|
+
*= require timeliner/screen
|
24
|
+
*= require timeliner/responsive
|
25
|
+
```
|
26
|
+
|
27
|
+
## Contributing
|
28
|
+
|
29
|
+
1. Fork it
|
30
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
31
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
32
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
33
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
Encoding.default_external = "UTF-8" if defined?(Encoding)
|
2
|
+
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
|
5
|
+
def build_image_dependencies(source_code)
|
6
|
+
image_dependencies = Set.new source_code.scan(/url\(.*"?images\/([-_.a-zA-Z0-9]+)"?\)/).map(&:first)
|
7
|
+
code = image_dependencies.inject("") do |acc, img|
|
8
|
+
acc += "//= depend_on_asset \"timeliner/#{img}\"\n"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Clean assets"
|
13
|
+
task :clean do
|
14
|
+
rm_rf 'app'
|
15
|
+
end
|
16
|
+
|
17
|
+
namespace :generate do
|
18
|
+
desc "Generate assets"
|
19
|
+
task :assets do
|
20
|
+
|
21
|
+
Rake.rake_output_message "Copying javascripts"
|
22
|
+
target_dir = "app/assets/javascripts/timeliner"
|
23
|
+
mkdir_p target_dir
|
24
|
+
puts FileUtils.cp(Dir.glob("timeliner/js/timeliner.js"), target_dir)
|
25
|
+
|
26
|
+
Rake.rake_output_message "Copying images"
|
27
|
+
target_dir = "app/assets/images/timeliner"
|
28
|
+
mkdir_p target_dir
|
29
|
+
puts FileUtils.cp(Dir.glob("timeliner/images/*"), target_dir)
|
30
|
+
|
31
|
+
Rake.rake_output_message "Generating css files"
|
32
|
+
target_dir = "app/assets/stylesheets/timeliner"
|
33
|
+
mkdir_p target_dir
|
34
|
+
|
35
|
+
Dir.glob("timeliner/css/*").each do |path|
|
36
|
+
basename = File.basename(path)
|
37
|
+
source_code = File.read(path)
|
38
|
+
|
39
|
+
source_code = build_image_dependencies(source_code) + "\n" + source_code unless build_image_dependencies(source_code).empty?
|
40
|
+
source_code.gsub!(/url\(.*"?images\/([-_.a-zA-Z0-9]+)"?\)/, "url(<%= image_path(\"timeliner/\\1\") %>)")
|
41
|
+
|
42
|
+
puts "#{target_dir}/#{basename}.erb"
|
43
|
+
File.open("#{target_dir}/#{basename}.erb", "w") do |out|
|
44
|
+
out.write(source_code)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,118 @@
|
|
1
|
+
/*
|
2
|
+
* Timeliner.js
|
3
|
+
* @version 1.5.1
|
4
|
+
* @copyright Tarek Anandan (http://www.technotarek.com)
|
5
|
+
*/
|
6
|
+
;(function($) {
|
7
|
+
|
8
|
+
var settings;
|
9
|
+
$.timeliner = function(options){
|
10
|
+
// default plugin settings
|
11
|
+
settings = jQuery.extend({
|
12
|
+
timelineContainer: '#timelineContainer', // value: selector of the main element holding the timeline's content, default to #timelineContainer
|
13
|
+
startState: 'closed', // value: closed | open, default to closed; sets whether the timeline is initially collapsed or fully expanded
|
14
|
+
startOpen: [], // value: array of IDs of single timelineEvents, default to empty; sets the minor events that you want to display open by default on page load
|
15
|
+
baseSpeed: 200, // value: numeric, default to 200; sets the base speed for animation of the event marker
|
16
|
+
speed: 4, // value: numeric, defalut to 4; a multiplier applied to the base speed that sets the speed at which an event's conents are displayed and hidden
|
17
|
+
fontOpen: '1.2em', // value: any valid CSS font-size value, defaults to 1em; sets the font size of an event after it is opened
|
18
|
+
fontClosed: '1em', // value: any valid CSS font-size value, defaults to 1em; sets the font size of an event after it is closed
|
19
|
+
expandAllText: '+ expand all', // value: string, sets the text of the expandAll selector after the timeline is fully collapsed
|
20
|
+
collapseAllText: '- collapse all' // // value: string, sets the text of the expandAll selector after the timeline is fully expanded
|
21
|
+
}, options);
|
22
|
+
|
23
|
+
$(document).ready(function() {
|
24
|
+
|
25
|
+
function openEvent(eventHeading,eventBody) {
|
26
|
+
$(eventHeading)
|
27
|
+
.removeClass('closed')
|
28
|
+
.addClass('open')
|
29
|
+
.animate({ fontSize: settings.fontOpen }, settings.baseSpeed);
|
30
|
+
$(eventBody).show(settings.speed*settings.baseSpeed);
|
31
|
+
}
|
32
|
+
|
33
|
+
function closeEvent(eventHeading,eventBody) {
|
34
|
+
$(eventHeading)
|
35
|
+
.animate({ fontSize: settings.fontClosed }, 0)
|
36
|
+
.removeClass('open')
|
37
|
+
.addClass('closed');
|
38
|
+
$(eventBody).hide(settings.speed*settings.baseSpeed);
|
39
|
+
}
|
40
|
+
|
41
|
+
// If startState option is set to closed, hide all the events; else, show fully expanded upon load
|
42
|
+
if(settings.startState==='closed')
|
43
|
+
{
|
44
|
+
// Close all items
|
45
|
+
$(".timelineEvent").hide();
|
46
|
+
|
47
|
+
// show startOpen events
|
48
|
+
$.each($(settings.startOpen), function(index, value) {
|
49
|
+
openEvent($(value).parent(".timelineMinor").find("dt a"),$(value));
|
50
|
+
});
|
51
|
+
|
52
|
+
}else{
|
53
|
+
|
54
|
+
// Open all items
|
55
|
+
openEvent($(".timelineMinor dt a"),$(".timelineEvent"));
|
56
|
+
|
57
|
+
}
|
58
|
+
|
59
|
+
// Minor Event Click
|
60
|
+
$(settings.timelineContainer).on("click",".timelineMinor dt",function(){
|
61
|
+
|
62
|
+
var currentId = $(this).attr('id');
|
63
|
+
|
64
|
+
// if the event is currently open
|
65
|
+
if($(this).find('a').is('.open'))
|
66
|
+
{
|
67
|
+
|
68
|
+
closeEvent($("a",this),$("#"+currentId+"EX"))
|
69
|
+
|
70
|
+
} else{ // if the event is currently closed
|
71
|
+
|
72
|
+
openEvent($("a", this),$("#"+currentId+"EX"));
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
});
|
77
|
+
|
78
|
+
// Major Marker Click
|
79
|
+
$(settings.timelineContainer).on("click",".timelineMajorMarker",function()
|
80
|
+
{
|
81
|
+
|
82
|
+
// number of minor events under this major event
|
83
|
+
var numEvents = $(this).parents(".timelineMajor").find(".timelineMinor").length;
|
84
|
+
|
85
|
+
// number of minor events already open
|
86
|
+
var numOpen = $(this).parents(".timelineMajor").find('.open').length;
|
87
|
+
|
88
|
+
if(numEvents > numOpen )
|
89
|
+
{
|
90
|
+
|
91
|
+
openEvent($(this).parents(".timelineMajor").find("dt a","dl.timelineMinor"),$(this).parents(".timelineMajor").find(".timelineEvent"));
|
92
|
+
|
93
|
+
} else{
|
94
|
+
|
95
|
+
closeEvent($(this).parents(".timelineMajor").find("dl.timelineMinor a"),$(this).parents(".timelineMajor").find(".timelineEvent"));
|
96
|
+
|
97
|
+
}
|
98
|
+
});
|
99
|
+
|
100
|
+
// All Markers/Events
|
101
|
+
$(".expandAll").click(function()
|
102
|
+
{
|
103
|
+
if($(this).hasClass('expanded'))
|
104
|
+
{
|
105
|
+
|
106
|
+
closeEvent($(this).parents(settings.timelineContainer).find("dt a","dl.timelineMinor"),$(this).parents(settings.timelineContainer).find(".timelineEvent"));
|
107
|
+
$(this).removeClass('expanded').html(settings.expandAllText);
|
108
|
+
|
109
|
+
} else{
|
110
|
+
|
111
|
+
openEvent($(this).parents(settings.timelineContainer).find("dt a","dl.timelineMinor"),$(this).parents(settings.timelineContainer).find(".timelineEvent"));
|
112
|
+
$(this).addClass('expanded').html(settings.collapseAllText);
|
113
|
+
|
114
|
+
}
|
115
|
+
});
|
116
|
+
});
|
117
|
+
};
|
118
|
+
})(jQuery);
|
@@ -0,0 +1,71 @@
|
|
1
|
+
/* Smartphones (landscape and portrait) ----------- */
|
2
|
+
@media screen and (max-width: 768px) {
|
3
|
+
|
4
|
+
* {
|
5
|
+
max-width: 460px;
|
6
|
+
}
|
7
|
+
|
8
|
+
body {
|
9
|
+
font-size: large;
|
10
|
+
}
|
11
|
+
|
12
|
+
.container {
|
13
|
+
padding:10px;
|
14
|
+
}
|
15
|
+
|
16
|
+
div.timelineToggle {
|
17
|
+
float:none;
|
18
|
+
}
|
19
|
+
|
20
|
+
.timelineEvent div.media {
|
21
|
+
display:none;
|
22
|
+
float:none;
|
23
|
+
}
|
24
|
+
|
25
|
+
.timelineMinor dt {
|
26
|
+
font-size:1.2em;
|
27
|
+
white-space: normal;
|
28
|
+
}
|
29
|
+
|
30
|
+
.timelineMinor dd h3 {
|
31
|
+
font-size:1em;
|
32
|
+
white-space: normal;
|
33
|
+
}
|
34
|
+
|
35
|
+
div#timelineContainer {
|
36
|
+
}
|
37
|
+
|
38
|
+
.timelineMinor dd {
|
39
|
+
margin-left:20px;
|
40
|
+
padding-left:0;
|
41
|
+
width:100%;
|
42
|
+
}
|
43
|
+
|
44
|
+
.timelineEvent .media p {
|
45
|
+
font-size:1em;
|
46
|
+
}
|
47
|
+
|
48
|
+
dl.timelineMinor {
|
49
|
+
float:none;
|
50
|
+
max-width:80%;
|
51
|
+
}
|
52
|
+
|
53
|
+
.timelineEvent p {
|
54
|
+
float:none;
|
55
|
+
width:100%;
|
56
|
+
}
|
57
|
+
|
58
|
+
.timelineEvent blockquote {
|
59
|
+
float:none;
|
60
|
+
width:200px;
|
61
|
+
font-size:1em;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
/* Smartphones (portrait) ----------- */
|
65
|
+
@media only screen and (max-width : 320px) {
|
66
|
+
|
67
|
+
* {
|
68
|
+
max-width: 300px;
|
69
|
+
}
|
70
|
+
|
71
|
+
}
|
@@ -0,0 +1,237 @@
|
|
1
|
+
//= depend_on_asset "timeliner/timeline_century_tick.gif"
|
2
|
+
//= depend_on_asset "timeliner/timeline_decade_tick.gif"
|
3
|
+
|
4
|
+
/* ======= DEMO LAYOUT ======= */
|
5
|
+
|
6
|
+
body {
|
7
|
+
background-color:#2f2f2f;
|
8
|
+
color:#eeefef;
|
9
|
+
font-size:62.5%;
|
10
|
+
font-family:Arial, Helvetica, sans-serif;
|
11
|
+
margin:0;
|
12
|
+
padding:0;
|
13
|
+
}
|
14
|
+
|
15
|
+
.container {
|
16
|
+
width:940px;
|
17
|
+
margin-left:auto;
|
18
|
+
margin-right:auto;
|
19
|
+
padding:10px;
|
20
|
+
*zoom:1;
|
21
|
+
}
|
22
|
+
|
23
|
+
h1, h2 { }
|
24
|
+
|
25
|
+
h1 {
|
26
|
+
color:#7DBADF;
|
27
|
+
font-size:36px;
|
28
|
+
font-weight:400;
|
29
|
+
margin:0;
|
30
|
+
}
|
31
|
+
|
32
|
+
h2 {
|
33
|
+
font-size:22px;
|
34
|
+
font-weight:400;
|
35
|
+
margin:5px 0;
|
36
|
+
letter-spacing:.1em;
|
37
|
+
}
|
38
|
+
|
39
|
+
h3 {
|
40
|
+
font-size:1.6em;
|
41
|
+
margin:10px 0 10px 10px;
|
42
|
+
}
|
43
|
+
|
44
|
+
a:link,a:visited {
|
45
|
+
color:#7097af;
|
46
|
+
text-decoration:none;
|
47
|
+
}
|
48
|
+
|
49
|
+
a:hover {
|
50
|
+
color:#7DBADF;
|
51
|
+
}
|
52
|
+
|
53
|
+
a img {
|
54
|
+
border:none;
|
55
|
+
}
|
56
|
+
|
57
|
+
p {
|
58
|
+
margin:0 0 10px 8px;
|
59
|
+
font-size:1.3em;
|
60
|
+
font-weight:400;
|
61
|
+
line-height:1.6em;
|
62
|
+
}
|
63
|
+
|
64
|
+
.clear {
|
65
|
+
clear:both;
|
66
|
+
line-height:0;
|
67
|
+
font-size:0;
|
68
|
+
}
|
69
|
+
|
70
|
+
/* ============ TIMELINE ============= */
|
71
|
+
|
72
|
+
div#timelineContainer {
|
73
|
+
border-left:2px solid #ccc;
|
74
|
+
margin:20px auto;
|
75
|
+
width:900px;
|
76
|
+
}
|
77
|
+
|
78
|
+
div.timelineToggle {
|
79
|
+
float:right;
|
80
|
+
margin-right:0;
|
81
|
+
white-space:nowrap;
|
82
|
+
}
|
83
|
+
|
84
|
+
a.expandAll {
|
85
|
+
color:#ccc;
|
86
|
+
cursor:pointer;
|
87
|
+
background:#000;
|
88
|
+
-webkit-border-radius:4px;
|
89
|
+
-moz-border-radius:4px;
|
90
|
+
border-radius:4px;
|
91
|
+
font-size:12px;
|
92
|
+
padding:3px 5px;
|
93
|
+
}
|
94
|
+
|
95
|
+
a.expandAll:hover {
|
96
|
+
color:#7DBADF;
|
97
|
+
cursor:pointer;
|
98
|
+
}
|
99
|
+
|
100
|
+
div.timelineMajor {
|
101
|
+
clear:left;
|
102
|
+
float:left;
|
103
|
+
margin:0 0 12px;
|
104
|
+
width:900px;
|
105
|
+
}
|
106
|
+
|
107
|
+
.timelineMajor h2 {
|
108
|
+
background:url(<%= image_path("timeliner/timeline_century_tick.gif") %>) left center no-repeat;
|
109
|
+
font-family:Palatino,"Times New Roman", Times, serif;
|
110
|
+
cursor: pointer;
|
111
|
+
font-size:3em;
|
112
|
+
font-weight:400;
|
113
|
+
margin:0 0 10px;
|
114
|
+
padding:4px 4px 4px 20px;
|
115
|
+
}
|
116
|
+
|
117
|
+
.timelineMajor h2 span {
|
118
|
+
background:#ccc;
|
119
|
+
-webkit-border-radius:4px;
|
120
|
+
-moz-border-radius:4px;
|
121
|
+
border-radius:4px;
|
122
|
+
color:#131313;
|
123
|
+
letter-spacing:.1em;
|
124
|
+
line-height:1.7em;
|
125
|
+
padding:3px 5px 1px;
|
126
|
+
}
|
127
|
+
|
128
|
+
dl.timelineMinor {
|
129
|
+
clear:left;
|
130
|
+
float:left;
|
131
|
+
margin:0 12px 0 0;
|
132
|
+
padding:4px 4px 4px 0;
|
133
|
+
position:relative;
|
134
|
+
width:880px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.timelineMinor dt {
|
138
|
+
background:url(<%= image_path("timeliner/timeline_decade_tick.gif") %>) left center no-repeat;
|
139
|
+
clear:left;
|
140
|
+
font-size:1.6em;
|
141
|
+
list-style-type:none;
|
142
|
+
line-height:1.2em;
|
143
|
+
margin:0 0 12px;
|
144
|
+
padding:0 0 0 24px;
|
145
|
+
white-space:nowrap;
|
146
|
+
}
|
147
|
+
|
148
|
+
.timelineMinor dt a {
|
149
|
+
color:#999;
|
150
|
+
cursor:pointer;
|
151
|
+
}
|
152
|
+
|
153
|
+
.timelineMinor dt a.closed {
|
154
|
+
color:#999;
|
155
|
+
font-size:1em;
|
156
|
+
margin-left:0;
|
157
|
+
}
|
158
|
+
|
159
|
+
.timelineMinor dt a.open {
|
160
|
+
color:#7DBADF;
|
161
|
+
}
|
162
|
+
|
163
|
+
.timelineMinor dt a:hover {
|
164
|
+
color:#7DBADF;
|
165
|
+
}
|
166
|
+
|
167
|
+
.timelineMinor dd {
|
168
|
+
padding-left:24px;
|
169
|
+
width:100%;
|
170
|
+
}
|
171
|
+
|
172
|
+
.timelineMinor dd h3 {
|
173
|
+
color:#FFF;
|
174
|
+
clear:both;
|
175
|
+
float:left;
|
176
|
+
font-size:1.5em;
|
177
|
+
margin:0;
|
178
|
+
white-space:nowrap;
|
179
|
+
}
|
180
|
+
|
181
|
+
.timelineEvent p {
|
182
|
+
clear:left;
|
183
|
+
float:left;
|
184
|
+
line-height:1.5em;
|
185
|
+
margin:6px 0 10px;
|
186
|
+
width:500px;
|
187
|
+
}
|
188
|
+
|
189
|
+
.timelineEvent h4 {
|
190
|
+
clear:left;
|
191
|
+
float:left;
|
192
|
+
font-size:1.4em;
|
193
|
+
font-weight:400;
|
194
|
+
margin:10px 0 0;
|
195
|
+
padding:0 0 0 20px;
|
196
|
+
}
|
197
|
+
|
198
|
+
.timelineEvent blockquote {
|
199
|
+
border-left:2px solid #ccc;
|
200
|
+
clear:left;
|
201
|
+
float:left;
|
202
|
+
font-size:1.8em;
|
203
|
+
margin-left:0;
|
204
|
+
padding:0 30px;
|
205
|
+
width:400px;
|
206
|
+
}
|
207
|
+
|
208
|
+
.timelineEvent blockquote .attribution{
|
209
|
+
font-size:0.7em;
|
210
|
+
text-align: right;
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
.timelineEvent div.media {
|
215
|
+
float:right;
|
216
|
+
padding:0 0 12px;
|
217
|
+
width:300px;
|
218
|
+
}
|
219
|
+
|
220
|
+
.timelineEvent .media img {
|
221
|
+
border:2px solid #000;
|
222
|
+
margin:0;
|
223
|
+
}
|
224
|
+
|
225
|
+
.timelineEvent .media p {
|
226
|
+
font-size:1.2em;
|
227
|
+
margin:0;
|
228
|
+
padding:0;
|
229
|
+
}
|
230
|
+
|
231
|
+
.timelineEvent .media a:link,.timelineEvent .media a:visited {
|
232
|
+
color:#ab221b;
|
233
|
+
}
|
234
|
+
|
235
|
+
.timelineEvent .media a:hover {
|
236
|
+
color:#7DBADF;
|
237
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'timeliner_rails/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "timeliner_rails"
|
8
|
+
spec.version = TimelinerRails::VERSION
|
9
|
+
spec.authors = ["Luisa Lima"]
|
10
|
+
spec.email = ["luisalima@dcc.fc.up.pt"]
|
11
|
+
spec.description = %q{This gem packages the Timeliner.js assets (javascripts, stylesheets, and images) for the Rails 3.1+ asset pipeline.}
|
12
|
+
spec.summary = %q{This gem packages the Timeliner.js assets (javascripts, stylesheets, and images) for the Rails 3.1+ asset pipeline.}
|
13
|
+
spec.homepage = "http://github.com/luisalima/timeliner_rails"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "railties", "~> 3.1"
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: timeliner_rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Luisa Lima
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: This gem packages the Timeliner.js assets (javascripts, stylesheets,
|
56
|
+
and images) for the Rails 3.1+ asset pipeline.
|
57
|
+
email:
|
58
|
+
- luisalima@dcc.fc.up.pt
|
59
|
+
executables: []
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- .gitignore
|
64
|
+
- .gitmodules
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- app/assets/images/timeliner/timeline_century_tick.gif
|
70
|
+
- app/assets/images/timeliner/timeline_decade_tick.gif
|
71
|
+
- app/assets/javascripts/timeliner/timeliner.js
|
72
|
+
- app/assets/stylesheets/timeliner/responsive.css.erb
|
73
|
+
- app/assets/stylesheets/timeliner/screen.css.erb
|
74
|
+
- lib/timeliner_rails.rb
|
75
|
+
- lib/timeliner_rails/version.rb
|
76
|
+
- timeliner_rails.gemspec
|
77
|
+
homepage: http://github.com/luisalima/timeliner_rails
|
78
|
+
licenses:
|
79
|
+
- MIT
|
80
|
+
metadata: {}
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 2.2.0
|
98
|
+
signing_key:
|
99
|
+
specification_version: 4
|
100
|
+
summary: This gem packages the Timeliner.js assets (javascripts, stylesheets, and
|
101
|
+
images) for the Rails 3.1+ asset pipeline.
|
102
|
+
test_files: []
|
103
|
+
has_rdoc:
|