lines-engine 0.1.23 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44eee1e47e463bda3f916ec470c24c7bf74c966f
4
- data.tar.gz: 5826129bde5172984d1672183a3310208b70a951
3
+ metadata.gz: 2428d25f191797bb3f077cc2d0ab50a6793228a4
4
+ data.tar.gz: 32f65721da2c71c8036852bc2c522905897c42e5
5
5
  SHA512:
6
- metadata.gz: db9451ef1eb6d1a63b352cc98d961ca19e202db721884b08285a31b0c15f54086f316f966fe519ea3c11b95ec303e6c8bea67f89bb932a2c094cc8053e3b97f3
7
- data.tar.gz: 3bee7873ee5d77f4f6c766449aba31a27bf46464dceca4799339747f35ebc71e53b3fbb1577221b58cf1b1ef648bd296480dd99de4690123b8eb40c39be6502c
6
+ metadata.gz: 37dbc0435fe9a9bf4d0af95d309beffc202b095ab12402f944a2a17bb32e26a195f70432e0d5e3ac5ea22b969caf1cc4ebe52b4367ec4b713b7fcee4d101bf6c
7
+ data.tar.gz: d5d29bfafb4168a3e49271180c8b51abda9a402e225b95903b372d409e9c25ebf8fc302dd6a49243db3e72c725d3f14da1c4f2dd8ef8aa4213c2aba07bbca3c8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lines-engine (0.1.23)
4
+ lines-engine (0.1.24)
5
5
  acts-as-taggable-on (~> 3.2.6, >= 3.2.6)
6
6
  bcrypt (~> 3.1.0, >= 3.1.0)
7
7
  carrierwave (~> 0.10.0, >= 0.10.0)
@@ -9,6 +9,7 @@
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
10
  *
11
11
  *= require_self
12
+ *= require lines/fonts
12
13
  *= require lines/navbar
13
14
  *= require lines/style
14
15
  *= require lines/pygments
@@ -0,0 +1,99 @@
1
+ /*------------------------ 1. FONTS -----------------------*/
2
+ @font-face {
3
+ font-family: 'BPmono';
4
+ src: url('/assets/BPmono-webfont.eot');
5
+ src: url('/assets/BPmono-webfont.eot?#iefix') format('embedded-opentype'),
6
+ url('/assets/BPmono-webfont.woff') format('woff'),
7
+ url('/assets/BPmono-webfont.ttf') format('truetype'),
8
+ url('/assets/BPmono-webfont.svg#BPmono-webfont') format('svg');
9
+ font-weight: normal;
10
+ font-style: normal;
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'BPmonoItalic';
15
+ src: url('/assets/BPmonoItalics-webfont.eot');
16
+ src: url('/assets/BPmonoItalics-webfont.eot?#iefix') format('embedded-opentype'),
17
+ url('/assets/BPmonoItalics-webfont.woff') format('woff'),
18
+ url('/assets/BPmonoItalics-webfont.ttf') format('truetype'),
19
+ url('/assets/BPmonoItalics-webfont.svg#BPmonoItalics-webfont') format('svg');
20
+ font-weight: normal;
21
+ font-style: normal;
22
+ }
23
+
24
+ @font-face {
25
+ font-family: 'BPmonoBold';
26
+ src: url('/assets/BPmonoBold-webfont.eot');
27
+ src: url('/assets/BPmonoBold-webfont.eot?#iefix') format('embedded-opentype'),
28
+ url('/assets/BPmonoBold-webfont.woff') format('woff'),
29
+ url('/assets/BPmonoBold-webfont.ttf') format('truetype'),
30
+ url('/assets/BPmonoBold-webfont.svg#BPmonoBold-webfont') format('svg');
31
+ font-weight: normal;
32
+ font-style: normal;
33
+ }
34
+
35
+ @font-face {
36
+ font-family: 'Museo';
37
+ src: url('/assets/Museo500-Regular-webfont.eot');
38
+ src: url('/assets/Museo500-Regular-webfont.eot?#iefix') format('embedded-opentype'),
39
+ url('/assets/Museo500-Regular-webfont.woff') format('woff'),
40
+ url('/assets/Museo500-Regular-webfont.ttf') format('truetype'),
41
+ url('/assets/Museo500-Regular-webfont.svg#Museo500-Regular-webfont') format('svg');
42
+ font-weight: normal;
43
+ font-style: normal;
44
+ }
45
+
46
+ @font-face {
47
+ font-family: 'MuseoLight';
48
+ src: url('/assets/Museo300-Regular-webfont.eot');
49
+ src: url('/assets/Museo300-Regular-webfont.eot?#iefix') format('embedded-opentype'),
50
+ url('/assets/Museo300-Regular-webfont.woff') format('woff'),
51
+ url('/assets/Museo300-Regular-webfont.ttf') format('truetype'),
52
+ url('/assets/Museo300-Regular-webfont.svg#Museo300-Regular-webfont') format('svg');
53
+ font-weight: normal;
54
+ font-style: normal;
55
+ }
56
+
57
+ @font-face {
58
+ font-family: 'Ubuntu';
59
+ src: url('/assets/Ubuntu-R-webfont.eot');
60
+ src: url('/assets/Ubuntu-R-webfont.eot?#iefix') format('embedded-opentype'),
61
+ url('/assets/Ubuntu-R-webfont.woff') format('woff'),
62
+ url('/assets/Ubuntu-R-webfont.ttf') format('truetype'),
63
+ url('/assets/Ubuntu-R-webfont.svg#Ubuntu-R-webfont') format('svg');
64
+ font-weight: normal;
65
+ font-style: normal;
66
+ }
67
+
68
+ @font-face {
69
+ font-family: 'UbuntuBold';
70
+ src: url('/assets/Ubuntu-B-webfont.eot');
71
+ src: url('/assets/Ubuntu-B-webfont.eot?#iefix') format('embedded-opentype'),
72
+ url('/assets/Ubuntu-B-webfont.woff') format('woff'),
73
+ url('/assets/Ubuntu-B-webfont.ttf') format('truetype'),
74
+ url('/assets/Ubuntu-B-webfont.svg#Ubuntu-B-webfont') format('svg');
75
+ font-weight: normal;
76
+ font-style: normal;
77
+ }
78
+
79
+ @font-face {
80
+ font-family: 'UbuntuItalic';
81
+ src: url('/assets/Ubuntu-RI-webfont.eot');
82
+ src: url('/assets/Ubuntu-RI-webfont.eot?#iefix') format('embedded-opentype'),
83
+ url('/assets/Ubuntu-RI-webfont.woff') format('woff'),
84
+ url('/assets/Ubuntu-RI-webfont.ttf') format('truetype'),
85
+ url('/assets/Ubuntu-RI-webfont.svg#Ubuntu-R-webfont') format('svg');
86
+ font-weight: normal;
87
+ font-style: normal;
88
+ }
89
+
90
+ @font-face {
91
+ font-family: 'UbuntuLight';
92
+ src: url('/assets/Ubuntu-L-webfont.eot');
93
+ src: url('/assets/Ubuntu-L-webfont.eot?#iefix') format('embedded-opentype'),
94
+ url('/assets/Ubuntu-L-webfont.woff') format('woff'),
95
+ url('/assets/Ubuntu-L-webfont.ttf') format('truetype'),
96
+ url('/assets/Ubuntu-L-webfont.svg#Ubuntu-L-webfont') format('svg');
97
+ font-weight: normal;
98
+ font-style: normal;
99
+ }
@@ -2,20 +2,31 @@
2
2
  smaller than 975px
3
3
  *************************************************************************************/
4
4
  @media screen and (max-width: 975px) {
5
- #pagewrap {width:100%;padding:0px;}
5
+ #pagewrap { width: 100%; padding: 0; }
6
+ #content img { width:100%;}
7
+ div.article, div.article.first {
8
+ max-width: 100%; float: none; display: block;
9
+ div.hero_image {
10
+ text-align: center;
11
+ a, img { width: 100%; height: auto; }
12
+ }
6
13
 
7
- #content img {width:100%;}
8
- div.hero_image {text-align:center;}
9
- div.article { max-width:100%; float:none;display:block; }
10
- div.rss {display: none;}
11
- #footer {padding:30px 20px;}
12
- #topbar {padding:0 1%;max-width:98%;}
13
- div.article_content {padding:0px 15px;}
14
- div.article_content h1 {line-height:1.5em;}
15
- div.article_header h1 {width:100%;}
16
- div.article_header h1 a {width:100%;display:block;}
17
- #footer-content img {max-width:100%;}
18
- #footer .two-cols {max-width:100%;display:block;float:none;}
14
+ }
15
+ div.rss { display: none; }
16
+ #footer { padding: 30px 20px; }
17
+ #topbar { padding: 0 1%; max-width:98%; }
18
+ div.article_content, div.article_teaser {
19
+ padding: 0 15px;
20
+ h1 { line-height: 1.5em; }
21
+ }
22
+ div.article_header {
23
+ h1 {
24
+ width: 100%;
25
+ a { width: 100%; display: block;}
26
+ }
27
+ }
28
+ #footer-content img { max-width: 100%; }
29
+ #footer .two-cols { max-width: 100%; display: block; float: none; }
19
30
  }
20
31
 
21
32
 
@@ -25,30 +36,29 @@ smaller than 975px
25
36
  smaller than 800px
26
37
  *************************************************************************************/
27
38
  @media screen and (max-width: 800px) {
28
- div.article_header h1.title {font-size:1.6em;margin:30px 0 10px 0;}
29
- div.sub_title {font-size:1.1em; }
30
- /*div.article_content {font-size:1.6em;line-height:1.4em;} */
31
- #topbar {text-align:center;}
32
- #topbar .right {float:none;}
33
- div.article_content {padding:0px 10px;}
34
- .two-cols {float:none;width:100%;}
35
- h4.mobile-margin {margin:40px 0 0 0;}
36
- #logo, #lines {text-align:center;width:100%;}
37
- #lines {margin:20px 0 0 0;}
38
- h5.margin-top a {margin-top:40px;display:block;}
39
-
40
-
39
+ div.article_header h1.title { font-size: 1.6em; margin: 30px 0 10px 0; }
40
+ div.sub_title { font-size: 1.1em; }
41
+ #topbar {
42
+ text-align:center;
43
+ .right {float:none;}
44
+ }
45
+ div.article_content, div.article_teaser { padding: 0 10px; }
46
+ .two-cols { float:none; width:100%; }
47
+ h4.mobile-margin { margin: 40px 0 0 0;}
48
+ #logo, #lines { text-align: center; width: 100%; }
49
+ #lines { margin: 20px 0 0 0; }
50
+ h5.margin-top a { margin-top: 40px; display: block; }
41
51
  #footer {
42
- .two-cols {padding:0px;width:100%;line-height:24px;float:none;display:block;}
52
+ .two-cols { padding: 0; width: 100%; line-height: 24px; float: none; display: block; }
43
53
  .row.about {
44
54
  text-align: center;
45
- .two-cols { padding:0px; width:100%; line-height:24px; }
55
+ .two-cols { padding: 0; width: 100%; line-height: 24px; }
46
56
  }
47
- .about-title {margin:20px 0 5px 0px;}
48
- hr {margin:20px 0px;}
49
- div.project-img { float:none;width:100%; text-align: center;display:block;margin:20px 0 0 0; }
50
- div.project-text { float:none;width:100%; }
51
- .footer-headline {margin:0px;}
57
+ .about-title { margin: 20px 0 5px 0; }
58
+ hr { margin: 20px 0; }
59
+ div.project-img { float: none; width: 100%; text-align: center; display: block; margin: 20px 0 0 0; }
60
+ div.project-text { float: none; width: 100%; }
61
+ .footer-headline { margin: 0; }
52
62
  }
53
63
 
54
64
 
@@ -59,6 +69,6 @@ smaller than 480px
59
69
  *************************************************************************************/
60
70
  @media screen and (max-width: 480px) {
61
71
  #footer {
62
- .footer-headline {font-size:22px;}
72
+ .footer-headline { font-size: 22px; }
63
73
  }
64
74
  }
@@ -10,135 +10,27 @@ $orange: #e8581e;
10
10
  -webkit-transition: all $x+s ease;
11
11
  }
12
12
 
13
- /*------------------------ 1. FONTS -----------------------*/
14
- @font-face {
15
- font-family: 'BPmono';
16
- src: url('/assets/BPmono-webfont.eot');
17
- src: url('/assets/BPmono-webfont.eot?#iefix') format('embedded-opentype'),
18
- url('/assets/BPmono-webfont.woff') format('woff'),
19
- url('/assets/BPmono-webfont.ttf') format('truetype'),
20
- url('/assets/BPmono-webfont.svg#BPmono-webfont') format('svg');
21
- font-weight: normal;
22
- font-style: normal;
23
- }
24
-
25
- @font-face {
26
- font-family: 'BPmonoItalic';
27
- src: url('/assets/BPmonoItalics-webfont.eot');
28
- src: url('/assets/BPmonoItalics-webfont.eot?#iefix') format('embedded-opentype'),
29
- url('/assets/BPmonoItalics-webfont.woff') format('woff'),
30
- url('/assets/BPmonoItalics-webfont.ttf') format('truetype'),
31
- url('/assets/BPmonoItalics-webfont.svg#BPmonoItalics-webfont') format('svg');
32
- font-weight: normal;
33
- font-style: normal;
34
- }
35
-
36
- @font-face {
37
- font-family: 'BPmonoBold';
38
- src: url('/assets/BPmonoBold-webfont.eot');
39
- src: url('/assets/BPmonoBold-webfont.eot?#iefix') format('embedded-opentype'),
40
- url('/assets/BPmonoBold-webfont.woff') format('woff'),
41
- url('/assets/BPmonoBold-webfont.ttf') format('truetype'),
42
- url('/assets/BPmonoBold-webfont.svg#BPmonoBold-webfont') format('svg');
43
- font-weight: normal;
44
- font-style: normal;
45
- }
46
-
47
- @font-face {
48
- font-family: 'Museo';
49
- src: url('/assets/Museo500-Regular-webfont.eot');
50
- src: url('/assets/Museo500-Regular-webfont.eot?#iefix') format('embedded-opentype'),
51
- url('/assets/Museo500-Regular-webfont.woff') format('woff'),
52
- url('/assets/Museo500-Regular-webfont.ttf') format('truetype'),
53
- url('/assets/Museo500-Regular-webfont.svg#Museo500-Regular-webfont') format('svg');
54
- font-weight: normal;
55
- font-style: normal;
56
- }
57
-
58
- @font-face {
59
- font-family: 'MuseoLight';
60
- src: url('/assets/Museo300-Regular-webfont.eot');
61
- src: url('/assets/Museo300-Regular-webfont.eot?#iefix') format('embedded-opentype'),
62
- url('/assets/Museo300-Regular-webfont.woff') format('woff'),
63
- url('/assets/Museo300-Regular-webfont.ttf') format('truetype'),
64
- url('/assets/Museo300-Regular-webfont.svg#Museo300-Regular-webfont') format('svg');
65
- font-weight: normal;
66
- font-style: normal;
67
- }
68
-
69
- @font-face {
70
- font-family: 'Ubuntu';
71
- src: url('/assets/Ubuntu-R-webfont.eot');
72
- src: url('/assets/Ubuntu-R-webfont.eot?#iefix') format('embedded-opentype'),
73
- url('/assets/Ubuntu-R-webfont.woff') format('woff'),
74
- url('/assets/Ubuntu-R-webfont.ttf') format('truetype'),
75
- url('/assets/Ubuntu-R-webfont.svg#Ubuntu-R-webfont') format('svg');
76
- font-weight: normal;
77
- font-style: normal;
78
- }
79
-
80
- @font-face {
81
- font-family: 'UbuntuBold';
82
- src: url('/assets/Ubuntu-B-webfont.eot');
83
- src: url('/assets/Ubuntu-B-webfont.eot?#iefix') format('embedded-opentype'),
84
- url('/assets/Ubuntu-B-webfont.woff') format('woff'),
85
- url('/assets/Ubuntu-B-webfont.ttf') format('truetype'),
86
- url('/assets/Ubuntu-B-webfont.svg#Ubuntu-B-webfont') format('svg');
87
- font-weight: normal;
88
- font-style: normal;
89
- }
90
-
91
- @font-face {
92
- font-family: 'UbuntuItalic';
93
- src: url('/assets/Ubuntu-RI-webfont.eot');
94
- src: url('/assets/Ubuntu-RI-webfont.eot?#iefix') format('embedded-opentype'),
95
- url('/assets/Ubuntu-RI-webfont.woff') format('woff'),
96
- url('/assets/Ubuntu-RI-webfont.ttf') format('truetype'),
97
- url('/assets/Ubuntu-RI-webfont.svg#Ubuntu-R-webfont') format('svg');
98
- font-weight: normal;
99
- font-style: normal;
100
- }
101
-
102
- @font-face {
103
- font-family: 'UbuntuLight';
104
- src: url('/assets/Ubuntu-L-webfont.eot');
105
- src: url('/assets/Ubuntu-L-webfont.eot?#iefix') format('embedded-opentype'),
106
- url('/assets/Ubuntu-L-webfont.woff') format('woff'),
107
- url('/assets/Ubuntu-L-webfont.ttf') format('truetype'),
108
- url('/assets/Ubuntu-L-webfont.svg#Ubuntu-L-webfont') format('svg');
109
- font-weight: normal;
110
- font-style: normal;
111
- }
112
13
 
113
14
  /*-----------------------------------------------------------*/
114
15
  /*-----------------------------------------------------------*/
115
- /*----------------------- 2. GENERAL ----------------------*/
16
+ /*----------------------- 1. GENERAL ----------------------*/
116
17
  /*-----------------------------------------------------------*/
117
18
  /*-----------------------------------------------------------*/
118
19
 
119
- * {
120
- margin:0px;
121
- padding:0px;
122
- }
20
+ * { margin: 0; padding: 0; }
123
21
 
124
22
  body {
125
23
  font-family: 'Ubuntu';
126
- line-height:1.5em;
127
- font-size:1.125em;
24
+ line-height: 1.5em;
25
+ font-size: 1.125em;
128
26
  color: #555;
129
- height:100%;
130
- background-color:#fff;
27
+ height: 100%;
28
+ background-color: #fff;
131
29
  }
132
30
 
133
- img, div {
134
- border: 0px;
135
- margin: 0px;
136
- padding: 0px;
137
- }
31
+ img, div { border: 0; }
138
32
 
139
- div {
140
- overflow:hidden;
141
- }
33
+ div { overflow: hidden; }
142
34
 
143
35
  p, h1 {
144
36
  width: 100%;
@@ -146,56 +38,12 @@ p, h1 {
146
38
  min-width: 100%;
147
39
  }
148
40
 
149
- div.article_header {
150
- h1 a {
151
- display:block;
152
- min-width:100%;
153
- }
154
- }
155
-
156
- a {
41
+ a, input[type=submit] {
157
42
  text-decoration: none;
158
- }
159
-
160
-
161
- #pagewrap {
162
- width:auto;
163
- #content {
164
- #article_actions {
165
- div, form {
166
- display: inline-block;
167
- }
168
- }
169
- }
170
- }
171
-
172
- img {
173
- max-width: 100%;
174
- height: auto;
175
- width: auto\9; /* ie8 */
176
- }
177
-
178
- ul {
179
- li {
180
- list-style-position:inside;
181
- }
182
- }
43
+ color:$darkgrey;
44
+ @include addTransition(0.3);
183
45
 
184
- div.article_header h1.title {
185
- font-family: 'Museo';
186
- font-weight:normal;
187
- color: $orange;
188
- font-size:1.8em;
189
- line-height:1.01em;
190
- margin:30px 0 10px 0;
191
- width:100%;
192
- letter-spacing: -0.03em;
193
- a {
194
- color: $orange;
195
- }
196
- a:hover {
197
- color:$darkgrey;
198
- }
46
+ &:hover { color: $orange; }
199
47
  }
200
48
 
201
49
  i, em {
@@ -204,42 +52,44 @@ i, em {
204
52
  font-style:normal;
205
53
  }
206
54
 
207
- strong, bold {
55
+ strong, b {
208
56
  font-family: 'UbuntuBold';
209
57
  font-weight:normal;
210
58
  font-style:normal;
211
59
  }
212
60
 
213
- a, input[type=submit] {
214
- text-decoration: none;
215
- color:$darkgrey;
216
- @include addTransition(0.3);
217
- }
218
61
 
219
- a:hover {
220
- color:$orange;
62
+ img {
63
+ max-width: 100%;
64
+ height: auto;
65
+ width: auto\9; /* ie8 */
221
66
  }
222
67
 
223
- .float-right {
224
- float:right;
225
- margin:15px 0px 5px 10px;
68
+ ul {
69
+ li { list-style-position:inside; }
226
70
  }
227
71
 
228
- .clearfix:before, .clearfix:after {
229
- content:"";
230
- display:table;
231
- }
232
- .clearfix:after {
233
- clear:both;
72
+ hr {
73
+ background-color:#3d3d3d;
74
+ height:1px;
75
+ width: 100%;
76
+ border:none;
77
+ display: block;
78
+ margin:30px 0px;
234
79
  }
80
+
81
+ .float-right { float:right; margin:15px 0px 5px 10px; }
82
+
235
83
  .clearfix {
236
84
  zoom:1; /* For IE 6/7 (trigger hasLayout) */
85
+ &:before, &:after { content: ""; display: table; }
86
+ &:after { clear: both; }
237
87
  }
238
88
 
239
89
 
240
90
  /*-----------------------------------------------------------*/
241
91
  /*-----------------------------------------------------------*/
242
- /*------------------------ 3. HEADER ----------------------*/
92
+ /*------------------------ 2. HEADER ----------------------*/
243
93
  /*-----------------------------------------------------------*/
244
94
  /*-----------------------------------------------------------*/
245
95
 
@@ -249,16 +99,9 @@ a:hover {
249
99
  font-size: 12px;
250
100
  padding: 2px 0px 2px 0px;
251
101
  background-color: #000;
252
- div {
253
- max-width: 960px;
254
- margin: 0px auto 0px auto;
255
- }
256
- .right {
257
- float: right;
258
- }
259
- a {
260
- color: #aaa
261
- }
102
+ div { max-width: 960px; margin: 0 auto; }
103
+ .right { float: right; }
104
+ a { color: #aaa; }
262
105
  }
263
106
 
264
107
  #meta_content {
@@ -270,13 +113,9 @@ a:hover {
270
113
  border-bottom: 1px solid #e3e3e3;
271
114
  a {
272
115
  color: #000;
116
+ &:hover { color: $orange; }
273
117
  }
274
- a:hover {
275
- color: $orange;
276
- }
277
- #logo {
278
- float: left;
279
- }
118
+ #logo { float: left; }
280
119
  #lines {
281
120
  float: right;
282
121
  font-size: 0.737em;
@@ -288,10 +127,19 @@ a:hover {
288
127
 
289
128
  /*-----------------------------------------------------------*/
290
129
  /*-----------------------------------------------------------*/
291
- /*----------------------- 4. CONTENT ----------------------*/
130
+ /*----------------------- 3. CONTENT ----------------------*/
292
131
  /*-----------------------------------------------------------*/
293
132
  /*-----------------------------------------------------------*/
294
133
 
134
+ #pagewrap {
135
+ width:auto;
136
+ #content {
137
+ #article_actions {
138
+ div, form { display: inline-block; }
139
+ }
140
+ }
141
+ }
142
+
295
143
  #content {
296
144
  max-width: 960px;
297
145
  margin: 0px auto;
@@ -301,13 +149,44 @@ a:hover {
301
149
  }
302
150
  }
303
151
 
152
+ div.article_wrapper {
153
+ border-top: 1px solid #ccc;
154
+ border-bottom: none;
155
+ padding: 30px 10px 0 10px;
156
+ margin: 30px 10px 0 10px;
157
+ }
158
+
159
+ div.article_header {
160
+ text-align: center;
161
+ padding: 0 15px;
162
+
163
+ h1 {
164
+ a {
165
+ display:block;
166
+ min-width:100%;
167
+ }
168
+
169
+ &.title {
170
+ font-family: 'Museo';
171
+ font-weight:normal;
172
+ color: $orange;
173
+ font-size:1.8em;
174
+ line-height:1.01em;
175
+ margin:30px 0 10px 0;
176
+ width:100%;
177
+ letter-spacing: -0.03em;
178
+
179
+ a { color: $orange; }
180
+ a:hover { color:$darkgrey; }
181
+ }
182
+ }
183
+ }
184
+
304
185
  div.article {
305
186
  margin: 0 0 70px 0;
306
187
  max-width: 480px;
307
188
  float: left;
308
- .article_googleplus, div.article_footer, div.sub_title, .article_content {
309
- display:none;
310
- }
189
+ .article_googleplus, div.article_footer, div.sub_title, .article_content { display:none; }
311
190
  .hero_image {
312
191
  margin: 20px 0 0 0;
313
192
  a {
@@ -317,63 +196,70 @@ div.article {
317
196
  overflow: hidden;
318
197
  background-size: cover;
319
198
  background-position: center;
320
- img {
321
- width: 480px;
322
- opacity: 0;
323
- }
199
+ img { width: 480px; opacity: 0; }
324
200
  }
325
201
  }
326
- }
327
202
 
328
- div.article.first {
329
- max-width: 960px;
330
- border-bottom: 1px solid #ccc;
331
- padding: 10px 0 25px 0;
332
- .article_googleplus, .article_footer, .article_content, div.sub_title {
333
- display: block;
334
- }
335
- .more-link { display: none; }
336
- div.article_wrapper {
337
- border-bottom: 1px solid #ccc;
338
- padding: 30px 20px 30px 20px;
339
- margin: 30px 0px 25px 0px;
340
- }
341
- h1 {
342
- font-size: 2.4em;
343
- line-height: 1em;
344
- }
345
- div.article_content h1 {
346
- font-size: 1.3em;
347
- text-transform: uppercase;
348
- margin-bottom: 20px;
349
- color: $darkgrey;
350
- letter-spacing: 0.05em;
351
- font-family: 'Museo';
352
- }
353
- div.hero_image {
354
- a {
355
- width: 960px;
356
- height: auto;
357
- img {
358
- width: 960px;
203
+ .article_teaser {
204
+ .more-link {
205
+ margin:40px 20px 0px 20px;
206
+ text-transform: uppercase;
207
+ letter-spacing: 0.06em;
208
+ font-size:0.8em;
209
+ a {
210
+ background-color: #f4f4f4;
211
+ padding:5px 10px;
212
+ color: #4d4d4d;
213
+ display:block;
214
+ width:100%;
215
+ text-align:center;
216
+ &:hover { background-color: #e7e7e7; }
359
217
  }
360
218
  }
361
219
  }
362
- }
363
220
 
221
+
222
+ // FIRST AND SINGLE ARTICLE
223
+
224
+ &.first {
225
+ max-width: 960px;
226
+ border-bottom: 1px solid #ccc;
227
+ padding: 10px 0 25px 0;
364
228
 
365
- div.article_wrapper {
366
- border-top: 1px solid #ccc;
367
- border-bottom: none;
368
- padding: 30px 10px 0px 10px;
369
- margin: 30px 10px 0 10px;
370
- }
229
+ .article_googleplus, .article_footer, .article_content, div.article_teaser div.sub_title {
230
+ display: block;
231
+ }
371
232
 
372
- div.article_header {
373
- text-align: center;
374
- padding: 0 15px;
375
- }
233
+ .more-link { display: none; }
234
+
235
+ div.article_wrapper {
236
+ border-bottom: 1px solid #ccc;
237
+ padding: 30px 20px 30px 20px;
238
+ margin: 30px 0px 25px 0px;
239
+ }
240
+
241
+ h1 { font-size: 2.4em; line-height: 1em; }
242
+
243
+ div.article_teaser p { font-family: 'UbuntuBold';}
244
+
245
+ div.article_content h1 {
246
+ font-size: 1.3em;
247
+ text-transform: uppercase;
248
+ margin-bottom: 20px;
249
+ color: $darkgrey;
250
+ letter-spacing: 0.05em;
251
+ font-family: 'Museo';
252
+ }
376
253
 
254
+ div.hero_image {
255
+ a {
256
+ width: 960px; height: auto;
257
+ img { width: 960px; }
258
+ }
259
+ }
260
+ }
261
+
262
+ }
377
263
 
378
264
  div.sub_title {
379
265
  font-size: 1.333em;
@@ -388,11 +274,13 @@ div.author_name {
388
274
  text-transform: uppercase;
389
275
  }
390
276
 
391
- div.article_content {
277
+ div.article_content, div.article_teaser {
392
278
  line-height: 1.8em;
393
279
  padding: 0px 80px 0px 80px;
394
- h1 {
280
+ h1, h2, h3, h4, h5 {
395
281
  font-weight: normal;
282
+ }
283
+ h1 {
396
284
  font-size: 1.556em;
397
285
  line-height: 1em;
398
286
  margin: 50px 0 10px 0;
@@ -400,27 +288,23 @@ div.article_content {
400
288
  }
401
289
  h2 {
402
290
  font-size: 1.333em;
403
- font-weight: normal;
404
291
  margin: 40px 0 5px 0;
405
292
  letter-spacing: 0.13em;
406
293
  color: #b4b4b4;
407
294
  text-transform: uppercase;
408
295
  }
409
296
  h3 {
410
- font-weight: normal;
411
297
  font-size: 1.111em;
412
298
  font-family: 'UbuntuBold';
413
299
  margin: 30px 0 0 0;
414
300
  }
415
301
  h4 {
416
- font-weight: normal;
417
302
  font-size: 1em;
418
303
  letter-spacing: 0.04em;
419
304
  margin: 30px 0 5px 0;
420
305
  text-transform: uppercase;
421
306
  }
422
307
  h5 {
423
- font-weight: normal;
424
308
  font-size: 1em;
425
309
  font-family: 'UbuntuBold';
426
310
  margin: 20px 0 0 0;
@@ -433,53 +317,36 @@ div.article_content {
433
317
  }
434
318
  ul {
435
319
  margin-left: 10px;
436
- li {
437
- margin: 0 0 5px 0;
438
- }
320
+ li { margin: 0 0 5px 0; }
439
321
  }
440
322
 
441
- ol {
442
- margin-left: 30px;
443
- }
323
+ ol { margin-left: 30px; }
444
324
 
445
- ul, ol {
446
- margin-bottom: 20px;
447
- }
325
+ ul, ol { margin-bottom: 20px; }
448
326
 
449
327
  pre {
450
328
  font-size: 1.0em;
451
329
  line-height: 1.5em;
452
330
  margin-bottom: 15px;
453
331
  }
454
- .highlight pre {
455
- margin: 0px 0 30px 20px;
456
- padding: 10px;
457
- }
458
- a {
459
- border-bottom: 1px solid #ccc;
460
- padding: 0 0 1px 0;
461
- }
462
- img {
463
- display: block;
464
- margin: 0 auto;
465
- }
466
- .more-link {
467
- margin:40px 20px 0px 20px;
468
- text-transform: uppercase;
469
- letter-spacing: 0.06em;
470
- font-size:0.8em;
471
- a {
472
- background-color: #f4f4f4;
473
- padding:5px 10px;
474
- color: #4d4d4d;
475
- display:block;
476
- width:100%;
477
- text-align:center;
478
- }
479
- a:hover {
480
- background-color: #e7e7e7;
481
- }
332
+
333
+ .highlight pre { margin: 0 0 30px 20px; padding: 10px; }
334
+
335
+ blockquote {
336
+ font-family: 'BPmono';
337
+ font-size:18px;
338
+ color:#999;
339
+ padding-left:30px;
340
+ line-height: 28px;
341
+ letter-spacing: -0.02em;
342
+ em { font-family: 'BPmonoItalic'; letter-spacing: -0.02em; }
343
+ strong { font-family: 'BPmonoBold'; }
482
344
  }
345
+
346
+ a { border-bottom: 1px solid #ccc; padding: 0 0 1px 0; }
347
+
348
+ img { display: block; margin: 0 auto; }
349
+
483
350
  }
484
351
 
485
352
  div.article_footer {
@@ -487,12 +354,8 @@ div.article_footer {
487
354
  color: #808080;
488
355
  font-size: 0.8em;
489
356
  padding: 0px 80px;
490
- a {
491
- color: $orange;
492
- }
493
- a:hover {
494
- color: $darkgrey;
495
- }
357
+ a { color: $orange; }
358
+ a:hover { color: $darkgrey; }
496
359
  }
497
360
 
498
361
  div.article_googleplus {
@@ -506,9 +369,7 @@ div.article_googleplus {
506
369
  color: $lightgrey;
507
370
  margin: 0px auto 0px auto;
508
371
  display: inline-block;
509
- }
510
- a:hover {
511
- color: $darkgrey;
372
+ &:hover { color: $darkgrey; }
512
373
  }
513
374
  span {
514
375
  background: url('/assets/ic_googleplus.png') 0px 0px no-repeat;
@@ -534,20 +395,11 @@ div.article_googleplus {
534
395
  position: relative;
535
396
  a {
536
397
  color: $lightgrey;
398
+ &:hover { color: $darkgrey; }
537
399
  }
538
- a:hover {
539
- color: $darkgrey;
540
- }
541
- .newer, .older {
542
- position: absolute;
543
- display: inline-block;
544
- }
545
- .newer {
546
- left: 0px;
547
- }
548
- .older {
549
- right: 0px;
550
- }
400
+ .newer, .older { position: absolute; display: inline-block; }
401
+ .newer { left: 0px; }
402
+ .older { right: 0px; }
551
403
  .prev, .first {
552
404
  float: left;
553
405
  background: url('/assets/arrow_left.png') top left no-repeat;
@@ -564,17 +416,19 @@ div.article_googleplus {
564
416
  color: lighten($lightgrey,30%);
565
417
  a {
566
418
  color: lighten($lightgrey,30%);
567
- &:hover {
568
- color: $lightgrey;
569
- }
570
- }
571
- .current {
572
- color: $lightgrey;
573
- font-size: 1.50em;
419
+ &:hover { color: $lightgrey; }
574
420
  }
421
+ .current { color: $lightgrey; font-size: 1.50em; }
575
422
  }
576
423
  }
577
424
 
425
+
426
+ /*-----------------------------------------------------------*/
427
+ /*-----------------------------------------------------------*/
428
+ /*----------------------- 5. FOOTER - ----------------------*/
429
+ /*-----------------------------------------------------------*/
430
+ /*-----------------------------------------------------------*/
431
+
578
432
  #footer {
579
433
  background-color: #f4f4f4;
580
434
  margin:50px 0 0 0;
@@ -596,20 +450,14 @@ div.article_googleplus {
596
450
  letter-spacing: 0.03em;
597
451
  margin:0 0 40px 0;
598
452
  }
453
+
599
454
  a {
600
455
  font-family: 'UbuntuItalic';
456
+ &:hover { color: $darkgrey; }
601
457
  }
602
- a:hover {
603
- color: $darkgrey;
604
- }
605
- hr {
606
- background-color:#ccc;
607
- height:1px;
608
- width: 100%;
609
- border:none;
610
- display: block;
611
- margin:40px 0px;
612
- }
458
+
459
+ hr { background-color:#ccc; margin:40px 0px; }
460
+
613
461
  .row.about {
614
462
  text-align: left;
615
463
  .two-cols {
@@ -617,9 +465,8 @@ div.article_googleplus {
617
465
  width:380px;
618
466
  line-height:24px;
619
467
  }
620
-
621
-
622
468
  }
469
+
623
470
  h2, h2 a {
624
471
  display:block;
625
472
  text-transform: uppercase;
@@ -629,14 +476,21 @@ div.article_googleplus {
629
476
  letter-spacing: 0.03em;
630
477
  font-weight: normal;
631
478
  }
479
+
480
+ h5 {
481
+ font-size:30px;
482
+ color: $darkgrey;
483
+ font-weight: normal;
484
+ margin:0 0 10px 0;
485
+ a { color: $darkgrey; }
486
+ }
487
+
632
488
  span.label {
633
489
  text-transform: uppercase;
634
490
  font-size:13px;
635
491
  color:#c0bfbf;
636
492
  }
637
- .projects {
638
- color:#747474;
639
- }
493
+ .projects { color:#747474; }
640
494
  .project-title {
641
495
  font-family: 'Museo';
642
496
  color: $darkgrey;
@@ -651,101 +505,36 @@ div.article_googleplus {
651
505
  }
652
506
  a {
653
507
  color:#999;
508
+ &:hover { color: $orange; }
509
+ &.twitter:hover { color: #0dc0ed; }
510
+ &.gplus:hover { color: #dd3b30; }
654
511
  }
655
- a:hover {
656
- color:$orange;
657
- }
658
- a.twitter:hover {
659
- color:#0dc0ed;
660
- }
661
- a.gplus:hover {
662
- color:#dd3b30;
663
- }
664
- .float-left {
665
- float:left;
666
- display: table-cell;
667
- }
512
+ .float-left { float:left; display: table-cell; }
668
513
  div.project-img {
669
514
  float:left;
670
515
  width:140px;
671
516
  text-align: center;
672
517
  padding:25px 0 0 0;
673
518
  }
674
- div.project-text {
675
- float:left;
676
- width:290px;
677
- }
519
+ div.project-text { float:left; width:290px; }
678
520
 
679
- .two-cols {
680
- max-width:430px;
681
- float:left;
682
- }
683
- .four-cols {
684
- max-width:230px;
685
- float:left;
686
- }
687
- .margin-2cols {
688
- margin-right:100px;
689
- }
690
- .margin-4cols {
691
- margin-right:30px;
692
- }
693
- }
694
- #footer h5 {
695
- font-size:30px;
696
- color: $darkgrey;
697
- font-weight: normal;
698
- margin:0 0 10px 0;
699
- a {
700
- color: $darkgrey;
701
- }
702
- }
703
-
704
- #copyright {
705
- text-align:center;
706
- padding:50px 0 10px 0;
707
- font-size:13px;
708
- text-transform:uppercase;
709
- letter-spacing: 0.05em;
710
- line-height:24px;
711
- a {
712
- color:#999;
713
- font-family: 'Ubuntu';
714
- }
715
- a:hover {
716
- color:$orange;
521
+ .two-cols { max-width:430px; float:left; }
522
+ .four-cols { max-width:230px; float:left; }
523
+ .margin-2cols { margin-right: 8%; }
524
+ .margin-4cols { margin-right:30px; }
525
+
526
+ #copyright {
527
+ text-align:center;
528
+ padding:50px 0 10px 0;
529
+ font-size:13px;
530
+ text-transform:uppercase;
531
+ letter-spacing: 0.05em;
532
+ line-height:24px;
533
+ a {
534
+ color:#999; font-family: 'Ubuntu';
535
+ &:hover { color: $orange; }
536
+ }
717
537
  }
718
538
  }
719
539
 
720
- .margin-2cols {
721
- margin-right:8%;
722
- }
723
-
724
- hr {
725
- background-color:#3d3d3d;
726
- height:1px;
727
- width: 100%;
728
- border:none;
729
- display: block;
730
- margin:30px 0px;
731
- }
732
-
733
- div.rss {
734
- display:none;
735
- }
736
-
737
- blockquote {
738
- font-family: 'BPmono';
739
- font-size:18px;
740
- color:#999;
741
- padding-left:30px;
742
- line-height: 28px;
743
- letter-spacing: -0.02em;
744
- em {
745
- font-family: 'BPmonoItalic';
746
- letter-spacing: -0.02em;
747
- }
748
- strong {
749
- font-family: 'BPmonoBold';
750
- }
751
- }
540
+ div.rss { display:none; }
@@ -22,7 +22,12 @@ module Lines
22
22
  else
23
23
  @articles = Article.published.page(params[:page].to_i).padding(1)
24
24
  end
25
- @first_article = Article.published.first if @articles.first_page?
25
+
26
+ if @articles.first_page?
27
+ @first_article = Article.published.first
28
+ @first_article.teaser = nil unless @first_article.teaser.present?
29
+ end
30
+
26
31
  set_meta_tags title: SITE_TITLE,
27
32
  description: CONFIG[:meta_description],
28
33
  keywords: KEYWORDS,
@@ -44,6 +49,7 @@ module Lines
44
49
  def show
45
50
  @first_page = true
46
51
  @article = Article.published.find(params[:id])
52
+ article.teaser = nil unless @article.teaser.present?
47
53
  meta_tags = { title: SITE_TITLE,
48
54
  type: 'article',
49
55
  url: 'meta_og_url',
@@ -17,11 +17,12 @@
17
17
  <div class="article_wrapper">
18
18
 
19
19
  <div class="article_teaser">
20
- <% if article.teaser.present? %>
21
- <%= markdown article.teaser %>
20
+ <% if article_counter == -1 %>
21
+ <% teaser = article.teaser.present? ? markdown(article.teaser) : nil %>
22
22
  <% else %>
23
- <%= format_code(article.content) %>
24
- <% end -%>
23
+ <% teaser = article.teaser.present? ? format_code(article.teaser) : format_code(article.content) %>
24
+ <% end %>
25
+ <%= teaser %>
25
26
  <div class="more-link">
26
27
  <%= link_to "Read full article", article_path(article) %>
27
28
  </div>
data/lib/lines/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lines
2
- VERSION = "0.1.23"
2
+ VERSION = "0.1.24"
3
3
  end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ img = Lines::Picture.create!({ image: (File.open(File.join(Rails.root, 'vendor/screenshots/octorel.png'))) })
4
+
5
+ Lines::Article.create({ :title => "Congratulations! You Have a Lines Blog.", :sub_title => "Here's what you get", :content => "This blog is designed to put the reading experience first. The viewer scales perfectly to all screen sizes and devices. So no frustration for the reader caused by small illegible text, but full focus on content instead. \r\n\r\nThe editing system is designed to work simply and beautifully, from action bar to usability issues, so you can use your time thinking about your writing.\r\n\r\n#Technology\r\n\r\nThis blog is based on Ruby on Rails 3.2, which is all you need besides a database that supports it. We're using a MySQL database. We're providing as clean a code as possible, and of course we'll maintain it and keep it up-to-date on GitHub.\r\n\r\n#For Developers\r\nNearly everything about this blog template can be customized to your personal needs and preferences.\r\n\r\n#Default features\r\n+ 960x540 px hero graphics for posts\r\n+ upload default hero images that you want to use more frequently\r\n+ customizable generic titles & subtitles\r\n+ automatic teaser for the article overview\r\n+ six headline styles according to priority\r\n+ *italics* & **bold text**\r\n+ > block quotes\r\n\r\n+ images, lists, links\r\n+ code examples in markdown\r\n\r\n```\r\nfunction fancyAlert(arg) {\r\n if(arg) {\r\n $.facebox({div:'#foo'})\r\n }\r\n}\r\n```\r\n+ tags for articles\r\n+ G+ link to social network discussion\r\n+ multiple authors and author information\r\n+ add documents for download\r\n+ formatting help\r\n+ direct RSS reader access\r\n+ customizable footer\r\n\r\nBy default, the featured post (usually the latest one) is fully displayed, but you may choose your featured post. Below that, the user finds an overview of all the articles published with a small hero graphic and a teaser. If you have more than ten articles in your overview, pagination kicks in. \r\n\r\n#Non-Features\r\n+ management hassle\r\n+ rights and legal bullshit\r\n+ complicated settings\r\n+ disco lights\r\n\r\n\r\n#Design\r\n###Fonts: \r\nHeadlines for posts and H1.s are set in \"Museo\", the rest is \"Ubuntu\" — clean, future-oriented, democratic, appealing.\r\n# So, an H1 headline would look like this\r\n## Whereas, an H2 looks like this\r\n###And so on\r\n####And so forth\r\n#####Until, finally\r\n######You come to an H6. \r\n######Sometimes, it's nice to use those headline tags for highlighting continuing text, too, or for footnotes, additional comments, whatever you can imagine.\r\n\r\n###Colors: \r\nOpoloo orange and shades of grey\r\n\r\n###Flat: \r\nOur Android background clearly shows in the completely flat design approach. No drop shadows, no gloss, no distractions.\r\n\r\n\r\n#And finally ...\r\nWe hope you'll be as happy with this framework as we are. And if not, you can always change it. For any concerns, do by all means [contact us](http://www.opoloo.com/#kontakt).\r\n\r\n\r\n![Octoloo](#{img.image.url})\r\n", :published => true, :published_at => Time.now, :hero_image => "", :created_at => Time.now, :updated_at => Time.now, :slug => "congratulations-you-have-a-lines-blog", :gplus_url => "", :featured => true, :document => nil, :short_hero_image => "/heroes/001_dark.jpg" , :authors => [Lines::Author.first]})
6
+
7
+ Lines::Article.create({ :title => "Customization & License", :sub_title => "", :content => "Find below all the important details you need to know about customizing your new blog system: modifying the stylesheets, adapting header & footer, and on.\r\n\r\nWe also made sure you get a friendly user license that gives you the freedom to do almost everything you want with this blog.\r\n\r\n#Customization\r\n\r\n##Modify CSS/SCSS\r\nAdmin viewer SCSS: \r\n```app/assets/stylesheets/admin.css.scss\r\n```\r\nDefault viewer SCSS: \r\n```app/assets/stylesheets/style.css.scss\r\n```\r\n##Header (Meta) & Footer\r\nTo change the header/meta/footer elements you need to modify\r\n```app/views/layouts/application.html.erb\r\n```\r\n\r\n#License\r\nYou may use the Lines blog template as you please. You must, however, keep the footer section, so attribution to Lines and Opoloo is granted.\r\n\r\nWe heartily invite you to extend the features of the template, but when you do, you should fork it on GitHub, so everyone can profit from your work.\r\n\r\nYou can see the full license [here](choosealicense.com/licenses/lgpl-v3/).", :published => true, :published_at => Time.now, :hero_image => "", :created_at => Time.now, :updated_at => Time.now, :slug => "customization-license", :gplus_url => "", :featured => false, :document => nil, :short_hero_image => "/heroes/001_dark.jpg" , :authors => [Lines::Author.first]})
8
+
9
+ Lines::Article.create({ :title => "Lines Needs You", :sub_title => "", :content => "We believe in the power of open source. It's one of the best ways to push the boundaries of the web. Because Lines is still a young platform, it needs your help so it can mature and grow to its aspired size and strength. We can't wait to see all the great things your brilliant brain and fingers will do with this project.", :published => true, :published_at => Time.now, :hero_image => "", :created_at => Time.now, :updated_at => Time.now, :slug => "lines-needs-you", :gplus_url => "", :featured => false, :document => nil, :short_hero_image => "/heroes/003.jpg", :authors => [Lines::Author.first] })
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lines-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Opoloo GbR
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-27 00:00:00.000000000 Z
11
+ date: 2014-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: orm_adapter
@@ -655,6 +655,7 @@ files:
655
655
  - app/assets/javascripts/lines/pictures.js.coffee
656
656
  - app/assets/stylesheets/lines/admin.css.scss
657
657
  - app/assets/stylesheets/lines/application.css
658
+ - app/assets/stylesheets/lines/fonts.css.scss
658
659
  - app/assets/stylesheets/lines/media_queries.css.scss
659
660
  - app/assets/stylesheets/lines/navbar.css.scss
660
661
  - app/assets/stylesheets/lines/pygments.css.erb
@@ -774,11 +775,13 @@ files:
774
775
  - spec/dummy/config/routes.rb
775
776
  - spec/dummy/config/secrets.yml
776
777
  - spec/dummy/db/schema.rb
778
+ - spec/dummy/db/seeds.rb
777
779
  - spec/dummy/lib/assets/.keep
778
780
  - spec/dummy/public/404.html
779
781
  - spec/dummy/public/422.html
780
782
  - spec/dummy/public/500.html
781
783
  - spec/dummy/public/favicon.ico
784
+ - spec/dummy/vendor/screenshots/octorel.png
782
785
  - spec/factories/articles.rb
783
786
  - spec/factories/authors.rb
784
787
  - spec/factories/pictures.rb
@@ -852,11 +855,13 @@ test_files:
852
855
  - spec/dummy/config/routes.rb
853
856
  - spec/dummy/config/secrets.yml
854
857
  - spec/dummy/db/schema.rb
858
+ - spec/dummy/db/seeds.rb
855
859
  - spec/dummy/lib/assets/.keep
856
860
  - spec/dummy/public/404.html
857
861
  - spec/dummy/public/422.html
858
862
  - spec/dummy/public/500.html
859
863
  - spec/dummy/public/favicon.ico
864
+ - spec/dummy/vendor/screenshots/octorel.png
860
865
  - spec/factories/articles.rb
861
866
  - spec/factories/authors.rb
862
867
  - spec/factories/pictures.rb