gallerize-cli 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d0c212866a4f3493309e66fd954ac93d6d245ac7
4
+ data.tar.gz: 5b1ec2040ddb00416fbdcb09e071bf18e857f826
5
+ SHA512:
6
+ metadata.gz: eb41a7114252c066f1d36bbe0749e9d3046e9b4638c7da2376dbe36a83e2940562c68d673bfe01a51d6811442c69b1a3cf4d01e6133e9d4b63e9ab51ac11ee2d
7
+ data.tar.gz: e571a7300f173ec5826340df70c86d119cd96c7824923b9545aca8a90bbaff4203d5d1ab17241a1a04c0c6431f4ed1330d4261c29e1f6f7f16b6aca4b8d24544
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ .DS_Store
2
+ *.gem
3
+ .htpasswd
4
+ tmp/*
5
+ config/global.yml
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'mini_magick'
4
+ gem 'activesupport'
5
+ gem 'pry'
6
+ gem 'parallel'
7
+ gem 'exifr'
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ activesupport (4.1.1)
5
+ i18n (~> 0.6, >= 0.6.9)
6
+ json (~> 1.7, >= 1.7.7)
7
+ minitest (~> 5.1)
8
+ thread_safe (~> 0.1)
9
+ tzinfo (~> 1.1)
10
+ coderay (1.1.0)
11
+ exifr (1.1.3)
12
+ i18n (0.6.9)
13
+ json (1.8.1)
14
+ method_source (0.8.2)
15
+ mini_magick (3.7.0)
16
+ subexec (~> 0.2.1)
17
+ minitest (5.3.5)
18
+ parallel (1.0.0)
19
+ pry (0.10.0)
20
+ coderay (~> 1.1.0)
21
+ method_source (~> 0.8.1)
22
+ slop (~> 3.4)
23
+ slop (3.5.0)
24
+ subexec (0.2.3)
25
+ thread_safe (0.3.4)
26
+ tzinfo (1.2.1)
27
+ thread_safe (~> 0.1)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ activesupport
34
+ exifr
35
+ mini_magick
36
+ parallel
37
+ pry
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ ### Overview
2
+
3
+ Generate a static gallery from a folder of images.
4
+
5
+ **Highlights**
6
+
7
+ * responsive layout
8
+ * thumbnails and fullsize are generated automatically
9
+ * does not alter existing directory
10
+
11
+
12
+ ### Example
13
+
14
+ http://examples.hilscher.ca/static-gallery-generator/
15
+
16
+
17
+ ### Usage
18
+
19
+ ```
20
+ $ cd folder-with-pictures
21
+ $ gallerize
22
+ ```
23
+
24
+
25
+ ### Installation
26
+
27
+ * Clone or download the repo
28
+
29
+ ```
30
+ git clone https://github.com/blakehilscher/static-gallery-generator.git
31
+ ```
32
+
33
+ * Install depedencies
34
+
35
+ ```
36
+ cd static-gallery-generator
37
+ bundle install
38
+ ```
39
+
40
+ * Link bin/gallerize into your PATH
41
+
42
+ ```
43
+ ln -sf "$(pwd)/bin/gallerize" $HOME/bin/gallerize
44
+ ```
45
+
46
+
47
+ ### Configuration
48
+
49
+ * configure in config/global.yml
50
+
51
+ | Name | Required? | Example Value | Description |
52
+ | ------------- |:-------------:| -----------------:| -------------------------------------------------------------:|
53
+ | per_page | required | 100 | How many photos per page? |
54
+ | image_types | required | jpg,JPG,png,PNG | The image formats to process |
55
+ | workers | required | 4 | The number of processes to use when doing CPU intensive work |
56
+ | image_width | required | 1200 | The fullsize image width |
57
+ | image_height | required | 800 | The fullsize image height |
58
+ | thumb_width | required | 1200 | The thumbnail image width |
59
+ | thumb_height | required | 800 | The thumbnail image height |
60
+ | output_name | optional | gallery | Directory name where the gallery will be created |
61
+ | tracking | optional | UA-0000000-2 | Enable google analytics by entering a tracking code |
62
+
63
+
64
+ ### Future
65
+
66
+ * extract the html from generate.rb and put it into source/template.haml
67
+ * add scss precompile: source/styles.scss
data/bin/gallerize ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require_relative '../lib/gallerize.rb'
@@ -0,0 +1,9 @@
1
+ tracking: UA-000000000-0
2
+ per_page: 100
3
+ image_types: 'jpg,JPG,png,PNG'
4
+ workers: 7
5
+ image_width: 1200
6
+ image_height: 800
7
+ thumb_width: 400
8
+ thumb_height: 300
9
+ output_name: static-gallery
data/css/blank.gif ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,274 @@
1
+ /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
2
+ .fancybox-wrap,
3
+ .fancybox-skin,
4
+ .fancybox-outer,
5
+ .fancybox-inner,
6
+ .fancybox-image,
7
+ .fancybox-wrap iframe,
8
+ .fancybox-wrap object,
9
+ .fancybox-nav,
10
+ .fancybox-nav span,
11
+ .fancybox-tmp
12
+ {
13
+ padding: 0;
14
+ margin: 0;
15
+ border: 0;
16
+ outline: none;
17
+ vertical-align: top;
18
+ }
19
+
20
+ .fancybox-wrap {
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ z-index: 8020;
25
+ }
26
+
27
+ .fancybox-skin {
28
+ position: relative;
29
+ background: #f9f9f9;
30
+ color: #444;
31
+ text-shadow: none;
32
+ -webkit-border-radius: 4px;
33
+ -moz-border-radius: 4px;
34
+ border-radius: 4px;
35
+ }
36
+
37
+ .fancybox-opened {
38
+ z-index: 8030;
39
+ }
40
+
41
+ .fancybox-opened .fancybox-skin {
42
+ -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
43
+ -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
44
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
45
+ }
46
+
47
+ .fancybox-outer, .fancybox-inner {
48
+ position: relative;
49
+ }
50
+
51
+ .fancybox-inner {
52
+ overflow: hidden;
53
+ }
54
+
55
+ .fancybox-type-iframe .fancybox-inner {
56
+ -webkit-overflow-scrolling: touch;
57
+ }
58
+
59
+ .fancybox-error {
60
+ color: #444;
61
+ font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
62
+ margin: 0;
63
+ padding: 15px;
64
+ white-space: nowrap;
65
+ }
66
+
67
+ .fancybox-image, .fancybox-iframe {
68
+ display: block;
69
+ width: 100%;
70
+ height: 100%;
71
+ }
72
+
73
+ .fancybox-image {
74
+ max-width: 100%;
75
+ max-height: 100%;
76
+ }
77
+
78
+ #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
79
+ background-image: url('fancybox_sprite.png');
80
+ }
81
+
82
+ #fancybox-loading {
83
+ position: fixed;
84
+ top: 50%;
85
+ left: 50%;
86
+ margin-top: -22px;
87
+ margin-left: -22px;
88
+ background-position: 0 -108px;
89
+ opacity: 0.8;
90
+ cursor: pointer;
91
+ z-index: 8060;
92
+ }
93
+
94
+ #fancybox-loading div {
95
+ width: 44px;
96
+ height: 44px;
97
+ background: url('fancybox_loading.gif') center center no-repeat;
98
+ }
99
+
100
+ .fancybox-close {
101
+ position: absolute;
102
+ top: -18px;
103
+ right: -18px;
104
+ width: 36px;
105
+ height: 36px;
106
+ cursor: pointer;
107
+ z-index: 8040;
108
+ }
109
+
110
+ .fancybox-nav {
111
+ position: absolute;
112
+ top: 0;
113
+ width: 40%;
114
+ height: 100%;
115
+ cursor: pointer;
116
+ text-decoration: none;
117
+ background: transparent url('blank.gif'); /* helps IE */
118
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
119
+ z-index: 8040;
120
+ }
121
+
122
+ .fancybox-prev {
123
+ left: 0;
124
+ }
125
+
126
+ .fancybox-next {
127
+ right: 0;
128
+ }
129
+
130
+ .fancybox-nav span {
131
+ position: absolute;
132
+ top: 50%;
133
+ width: 36px;
134
+ height: 34px;
135
+ margin-top: -18px;
136
+ cursor: pointer;
137
+ z-index: 8040;
138
+ visibility: hidden;
139
+ }
140
+
141
+ .fancybox-prev span {
142
+ left: 10px;
143
+ background-position: 0 -36px;
144
+ }
145
+
146
+ .fancybox-next span {
147
+ right: 10px;
148
+ background-position: 0 -72px;
149
+ }
150
+
151
+ .fancybox-nav:hover span {
152
+ visibility: visible;
153
+ }
154
+
155
+ .fancybox-tmp {
156
+ position: absolute;
157
+ top: -99999px;
158
+ left: -99999px;
159
+ visibility: hidden;
160
+ max-width: 99999px;
161
+ max-height: 99999px;
162
+ overflow: visible !important;
163
+ }
164
+
165
+ /* Overlay helper */
166
+
167
+ .fancybox-lock {
168
+ overflow: hidden !important;
169
+ width: auto;
170
+ }
171
+
172
+ .fancybox-lock body {
173
+ overflow: hidden !important;
174
+ }
175
+
176
+ .fancybox-lock-test {
177
+ overflow-y: hidden !important;
178
+ }
179
+
180
+ .fancybox-overlay {
181
+ position: absolute;
182
+ top: 0;
183
+ left: 0;
184
+ overflow: hidden;
185
+ display: none;
186
+ z-index: 8010;
187
+ background: url('fancybox_overlay.png');
188
+ }
189
+
190
+ .fancybox-overlay-fixed {
191
+ position: fixed;
192
+ bottom: 0;
193
+ right: 0;
194
+ }
195
+
196
+ .fancybox-lock .fancybox-overlay {
197
+ overflow: auto;
198
+ overflow-y: scroll;
199
+ }
200
+
201
+ /* Title helper */
202
+
203
+ .fancybox-title {
204
+ visibility: hidden;
205
+ font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
206
+ position: relative;
207
+ text-shadow: none;
208
+ z-index: 8050;
209
+ }
210
+
211
+ .fancybox-opened .fancybox-title {
212
+ visibility: visible;
213
+ }
214
+
215
+ .fancybox-title-float-wrap {
216
+ position: absolute;
217
+ bottom: 0;
218
+ right: 50%;
219
+ margin-bottom: -35px;
220
+ z-index: 8050;
221
+ text-align: center;
222
+ }
223
+
224
+ .fancybox-title-float-wrap .child {
225
+ display: inline-block;
226
+ margin-right: -100%;
227
+ padding: 2px 20px;
228
+ background: transparent; /* Fallback for web browsers that doesn't support RGBa */
229
+ background: rgba(0, 0, 0, 0.8);
230
+ -webkit-border-radius: 15px;
231
+ -moz-border-radius: 15px;
232
+ border-radius: 15px;
233
+ text-shadow: 0 1px 2px #222;
234
+ color: #FFF;
235
+ font-weight: bold;
236
+ line-height: 24px;
237
+ white-space: nowrap;
238
+ }
239
+
240
+ .fancybox-title-outside-wrap {
241
+ position: relative;
242
+ margin-top: 10px;
243
+ color: #fff;
244
+ }
245
+
246
+ .fancybox-title-inside-wrap {
247
+ padding-top: 10px;
248
+ }
249
+
250
+ .fancybox-title-over-wrap {
251
+ position: absolute;
252
+ bottom: 0;
253
+ left: 0;
254
+ color: #fff;
255
+ padding: 10px;
256
+ background: #000;
257
+ background: rgba(0, 0, 0, .8);
258
+ }
259
+
260
+ /*Retina graphics!*/
261
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5),
262
+ only screen and (min--moz-device-pixel-ratio: 1.5),
263
+ only screen and (min-device-pixel-ratio: 1.5){
264
+
265
+ #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
266
+ background-image: url('fancybox_sprite@2x.png');
267
+ background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
268
+ }
269
+
270
+ #fancybox-loading div {
271
+ background-image: url('fancybox_loading@2x.gif');
272
+ background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
273
+ }
274
+ }
data/css/styles.css ADDED
@@ -0,0 +1,76 @@
1
+ body{
2
+ font-family: arial;
3
+ }
4
+ .images{
5
+ overflow: hidden;
6
+ display:none;
7
+ }
8
+ .inner-image{
9
+ margin: 5px;
10
+ overflow:hidden;
11
+ background-color: #f2f2f2;
12
+ }
13
+ .image img{
14
+ width: 100%;
15
+ }
16
+ .navigation{
17
+ overflow: auto;
18
+ margin-top: 5px;
19
+ margin-bottom: 10px;
20
+ margin-left: 5px;
21
+ }
22
+ .navigation .active,
23
+ .navigation a:hover{
24
+ background-color: #901414;
25
+ color: #fff;
26
+ }
27
+ .navigation a{
28
+ float: left;
29
+ display: inline-block;
30
+ text-decoration: none;
31
+ padding: 7px 10px 5px;
32
+
33
+ background: #ddd;
34
+ margin-right: 2px;
35
+ margin-bottom: 2px;
36
+
37
+ color: #901414;
38
+ font-weight: bold;
39
+ }
40
+ .page-title{
41
+ margin: 20px 5px 5px 5px;
42
+ color: #901414;
43
+ }
44
+
45
+ @media (min-width: 0px) and (max-width: 500px) {
46
+ .image{
47
+ width: 100%;
48
+ }
49
+ }
50
+ @media (min-width: 501px) and (max-width: 1000px) {
51
+ .image{
52
+ width: 50%;
53
+ }
54
+ }
55
+ @media (min-width: 1001px) and (max-width: 1600px) {
56
+ .image{
57
+ width: 25%;
58
+ }
59
+ }
60
+ @media (min-width: 1601px) and (max-width: 2000px) {
61
+ .image{
62
+ width: 20%;
63
+ }
64
+ }
65
+
66
+ @media (min-width: 2001px) and (max-width: 2800px) {
67
+ .image{
68
+ width: 15%;
69
+ }
70
+ }
71
+
72
+ @media (min-width: 2801px) {
73
+ .image{
74
+ width: 10%;
75
+ }
76
+ }