gallerize-cli 0.1.0

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.
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
+ }