piccle 0.1.0.rc1 → 0.1.1.pre

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.
@@ -10,7 +10,8 @@ class Piccle::Streams::KeywordStream < Piccle::Streams::BaseStream
10
10
  def data_for(photo)
11
11
  result = { namespace => {
12
12
  :friendly_name => "By Topic",
13
- :interesting => true
13
+ :interesting => true,
14
+ :min_for_nav => 2
14
15
  }}
15
16
  photo.keywords.each do |kw|
16
17
  result[namespace][slugify(kw.name)] = { friendly_name: kw.name, interesting: true, photos: [photo.md5] }
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Browse photos by person.
4
+ class Piccle::Streams::PersonStream < Piccle::Streams::BaseStream
5
+ def namespace
6
+ "by-person"
7
+ end
8
+
9
+ def data_for(photo)
10
+ result = { namespace => { :friendly_name => "By Person", :interesting => true, :min_for_nav => 2 } }
11
+ photo.people.each do |person|
12
+ result[namespace][slugify(person.name)] = { friendly_name: person.name, interesting: true, photos: [photo.md5] }
13
+ end
14
+ result
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Piccle
2
- VERSION = "0.1.0.rc1"
2
+ VERSION = "0.1.1.pre"
3
3
  end
@@ -2,6 +2,7 @@ head
2
2
  meta charset="utf-8"
3
3
  meta name="viewport" content="width=device-width, initial-scale=1"
4
4
  title Photography by {{site_metadata.author_name}}
5
+ meta name="description" content="{{page_description}}"
5
6
  link rel="stylesheet" href="{{include_prefix}}css/normalize.css"
6
7
  link rel="stylesheet" href="{{include_prefix}}css/default.css"
7
8
  link rel="icon" href="{{include_prefix}}icons/favicon.ico"
@@ -14,14 +15,17 @@ head
14
15
  {{#if canonical}}
15
16
  <link rel="canonical" href="{{include_prefix}}{{canonical}}" />
16
17
  {{/if}}
17
- {{#if prev_link}}
18
- <link rel="prev" href="{{include_prefix}}{{prev_link}}" />
18
+ {{#if prev_link}} {{! Previous and next links don't need the include prefix; they're always in the current directory. }}
19
+ <link rel="prev" href="{{prev_link}}" />
19
20
  {{/if}}
20
21
  {{#if next_link}}
21
- <link rel="next" href="{{include_prefix}}{{next_link}}" />
22
+ <link rel="next" href="{{next_link}}" />
22
23
  {{/if}}
23
24
  {{#if site_url}}
24
- <link rel="alternate" type="application/atom+xml" href="{{include_prefix}}/feed.atom" title="All photos">
25
+ <link rel="alternate" type="application/atom+xml" href="{{include_prefix}}feed.atom" title="All photos" />
26
+ {{#if selector}}
27
+ <link rel="alternate" type="application/atom+xml" href="{{include_prefix}}{{join selector '/'}}/feed.atom" title="{{open_graph.title}}" />
28
+ {{/if}}
25
29
  {{/if}}
26
30
  {{#if open_graph}}
27
31
  <meta property="og:type" content="website" />
@@ -1,36 +1,78 @@
1
1
  doctype html
2
- html
2
+ html lang="en"
3
3
  == Piccle::TemplateHelpers.render_partial "header"
4
4
 
5
5
  body.photos_index
6
6
  header
7
- |
8
- {{#if selector}}
9
- <h1><a href="{{include_prefix}}index.html">Photography by {{site_metadata.author_name}}</a></h1>
10
- {{else}}
11
- <h1>Photography by {{site_metadata.author_name}}</a></h1>
12
- {{/if}}
7
+ | <h1><a href="{{include_prefix}}index.html">Photography by {{site_metadata.author_name}}</a></h1>
13
8
  == Piccle::TemplateHelpers.render_partial "breadcrumbs"
14
9
  main
15
10
  == Piccle::TemplateHelpers.render_partial "navigation"
16
11
 
17
- .photos
12
+ #photos
18
13
  |
19
14
  {{#each photos as |photo|}}
20
15
  {{#if (lookup ../event_ends photo.hash)}}
21
16
  {{#with (lookup ../event_ends hash)}}
22
- <p class="event_block event_end"><a href="{{../include_prefix}}{{join selector '/'}}/index.html">{{name}}</a></p>
17
+ {{#if collapsed}} {{! Collapsed events don't show photos, only an initial end tile. }}
18
+ <p class="event_block collapsed" style="background-image: url('{{../include_prefix}}{{join selector '/'}}/quilt.jpg');">
19
+ <a href="{{../include_prefix}}{{join selector '/'}}/index.html">{{name}}</a>
20
+ </p>
21
+ {{else}} {{! Not collapsed, show the photo here }}
22
+ <p class="event_block event_end">
23
+ <a href="{{../include_prefix}}{{join selector '/'}}/index.html">{{name}}</a>
24
+ </p>
25
+ <a href="{{../include_prefix}}{{../selector_path}}{{photo.hash}}.html#photo">
26
+ <img class="thumbnail" src="{{../include_prefix}}images/thumbnails/{{photo.hash}}.{{photo.file_name}}" alt="{{photo.title}}" width="#{Piccle::THUMBNAIL_SIZE}" height="#{Piccle::THUMBNAIL_SIZE}" />
27
+ </a>
28
+ {{/if}}
23
29
  {{/with}}
30
+ {{else}} {{! Not an event end tile, always show the photo }}
31
+ <a href="{{../include_prefix}}{{../selector_path}}{{photo.hash}}.html#photo">
32
+ <img class="thumbnail" src="{{../include_prefix}}images/thumbnails/{{photo.hash}}.{{photo.file_name}}" alt="{{photo.title}}" width="#{Piccle::THUMBNAIL_SIZE}" height="#{Piccle::THUMBNAIL_SIZE}" />
33
+ </a>
24
34
  {{/if}}
25
- <a href="{{../include_prefix}}{{../selector_path}}{{photo.hash}}.html#photo">
26
- <img class="thumbnail" src="{{../include_prefix}}images/thumbnails/{{photo.hash}}.{{photo.file_name}}" alt="{{photo.title}}" />
27
- </a>
28
35
  {{#if (lookup ../event_starts photo.hash)}}
29
36
  {{#with (lookup ../event_starts hash)}}
30
- <p class="event_block event_start"><a href="{{../include_prefix}}{{join selector '/'}}/index.html">{{name}}</a></p>
37
+ {{#unless collapsed}}
38
+ <p class="event_block event_start"><a href="{{../include_prefix}}{{join selector '/'}}/index.html">{{name}}</a></p>
39
+ {{/unless}}
31
40
  {{/with}}
32
41
  {{/if}}
33
42
  {{/each}}
34
43
 
44
+ |
45
+ {{#if pagination}}
46
+ <div class="pagination">
47
+ {{#unless pagination.is_first_page}}
48
+ {{#if selector}}
49
+ <a href="{{include_prefix}}{{join selector '/'}}/{{pagination.previous_page_name}}.html#photos">&laquo;&nbsp;Previous</a>
50
+ {{else}}
51
+ <a href="{{include_prefix}}{{pagination.previous_page_name}}.html#photos">&laquo;&nbsp;Previous</a>
52
+ {{/if}}
53
+ {{/unless}}
54
+ <ol>
55
+ {{#each pagination.pages}}
56
+ {{#if this.is_current}}
57
+ <li class="current">{{this.label}}</li>
58
+ {{else}}
59
+ {{#if selector}}
60
+ <li><a href="{{include_prefix}}{{join selector '/'}}/{{this.page_name}}.html#photos">{{this.label}}</a></li>
61
+ {{else}}
62
+ <li><a href="{{include_prefix}}{{this.page_name}}.html#photos">{{this.label}}</a></li>
63
+ {{/if}}
64
+ {{/if}}
65
+ {{/each}}
66
+ </ol>
67
+ {{#unless pagination.is_last_page}}
68
+ {{#if selector}}
69
+ <a href="{{include_prefix}}{{join selector '/'}}/{{pagination.next_page_name}}.html#photos">Next&nbsp;&raquo;</a>
70
+ {{else}}
71
+ <a href="{{include_prefix}}{{pagination.next_page_name}}.html#photos">Next&nbsp;&raquo;</a>
72
+ {{/if}}
73
+ {{/unless}}
74
+ </div>
75
+ {{/if}}
76
+
35
77
  == Piccle::TemplateHelpers.render_partial "footer"
36
78
 
@@ -1,64 +1,66 @@
1
- == Piccle::TemplateHelpers.render_partial "header"
1
+ doctype html
2
+ html lang="en"
3
+ == Piccle::TemplateHelpers.render_partial "header"
2
4
 
3
- body.photo_show
4
- header
5
- h1
6
- a href="{{include_prefix}}index.html" Photography by {{site_metadata.author_name}}
7
- == Piccle::TemplateHelpers.render_partial "breadcrumbs"
8
- main#photo
9
- h2
10
- | {{photo.title}}
11
- .photo_with_pagination
12
- | {{#if prev_link}}
13
- <a class="navigation_arrow" href="{{include_prefix}}{{prev_link}}#photo">&laquo;</a>
14
- {{else}}
15
- <span class="navigation_arrow">&nbsp;</span>
5
+ body.photo_show
6
+ header
7
+ h1
8
+ a href="{{include_prefix}}index.html" Photography by {{site_metadata.author_name}}
9
+ == Piccle::TemplateHelpers.render_partial "breadcrumbs"
10
+ main#photo
11
+ h2
12
+ | {{photo.title}}
13
+ .photo_with_pagination
14
+ | {{#if prev_link}}
15
+ <a class="navigation_arrow" href="{{include_prefix}}{{prev_link}}#photo">&laquo;</a>
16
+ {{else}}
17
+ <span class="navigation_arrow">&nbsp;</span>
18
+ {{/if}}
19
+ img src="{{include_prefix}}images/photos/{{photo.hash}}.{{photo.file_name}}"
20
+ | {{#if next_link}}
21
+ <a class="navigation_arrow" href="{{include_prefix}}{{next_link}}#photo">&raquo;</a>
22
+ {{else}}
23
+ <span class="navigation_arrow">&nbsp;</span>
24
+ {{/if}}
25
+
26
+ p.description
27
+ | {{photo.description}}
28
+ p.settings
29
+ | {{#if camera_link}}
30
+ <a href="{{include_prefix}}{{camera_link.link}}">{{camera_link.friendly_name}}</a>{{/if}}{{#if photo.focal_length}}, {{photo.focal_length}}{{/if}}{{#if photo.aperture}}, f/{{photo.aperture}}{{/if}}{{#if photo.shutter_speed}}, {{photo.shutter_speed}}{{/if}}{{#if photo.iso}}, ISO {{photo.iso}}{{/if}}.
31
+ | {{#if photo.taken_at}}
32
+ <p class="date">
33
+ {{#if day_link}}<a href="{{include_prefix}}{{day_link.link}}">{{day_link.friendly_name}}</a>{{/if}}
34
+ {{#if month_link}}<a href="{{include_prefix}}{{month_link.link}}">{{month_link.friendly_name}}</a>, {{/if}}
35
+ {{#if year_link}}<a href="{{include_prefix}}{{year_link.link}}">{{year_link.friendly_name}}</a>.{{/if}}
36
+ </p>
16
37
  {{/if}}
17
- img src="{{include_prefix}}images/photos/{{photo.hash}}.{{photo.file_name}}"
18
- | {{#if next_link}}
19
- <a class="navigation_arrow" href="{{include_prefix}}{{next_link}}#photo">&raquo;</a>
20
- {{else}}
21
- <span class="navigation_arrow">&nbsp;</span>
38
+ {{#if photo.has_location}}
39
+ <ul class="location">
40
+ {{#if city_link}}<li><a href="{{include_prefix}}{{city_link.link}}">{{city_link.friendly_name}}</a></li>{{/if}}
41
+ {{#if state_link}}<li><a href="{{include_prefix}}{{state_link.link}}">{{state_link.friendly_name}}</a></li>{{/if}}
42
+ {{#if country_link}}<li><a href="{{include_prefix}}{{country_link.link}}">{{country_link.friendly_name}}</a></li>{{/if}}
43
+ </ul>
22
44
  {{/if}}
23
45
 
24
- p.description
25
- | {{photo.description}}
26
- p.settings
27
- | {{#if camera_link}}
28
- <a href="{{include_prefix}}{{camera_link.link}}">{{camera_link.friendly_name}}</a>{{/if}}{{#if photo.focal_length}}, {{photo.focal_length}}{{/if}}{{#if photo.aperture}}, f/{{photo.aperture}}{{/if}}{{#if photo.shutter_speed}}, {{photo.shutter_speed}}{{/if}}{{#if photo.iso}}, ISO {{photo.iso}}{{/if}}.
29
- | {{#if photo.taken_at}}
30
- <p class="date">
31
- {{#if day_link}}<a href="{{include_prefix}}{{day_link.link}}">{{day_link.friendly_name}}</a>{{/if}}
32
- {{#if month_link}}<a href="{{include_prefix}}{{month_link.link}}">{{month_link.friendly_name}}</a>, {{/if}}
33
- {{#if year_link}}<a href="{{include_prefix}}{{year_link.link}}">{{year_link.friendly_name}}</a>.{{/if}}
34
- </p>
35
- {{/if}}
36
- {{#if photo.has_location}}
37
- <ul class="location">
38
- {{#if city_link}}<li><a href="{{include_prefix}}{{city_link.link}}">{{city_link.friendly_name}}</a></li>{{/if}}
39
- {{#if state_link}}<li><a href="{{include_prefix}}{{state_link.link}}">{{state_link.friendly_name}}</a></li>{{/if}}
40
- {{#if country_link}}<li><a href="{{include_prefix}}{{country_link.link}}">{{country_link.friendly_name}}</a></li>{{/if}}
41
- </ul>
42
- {{/if}}
46
+ | {{#if keywords}}
47
+ <div class="keywords">
48
+ {{#each keywords as |keyword|}}
49
+ <a href="{{../include_prefix}}{{keyword.link}}">{{keyword.friendly_name}}</a>
50
+ {{/each}}
51
+ </div>
52
+ {{/if}}
43
53
 
44
- | {{#if keywords}}
45
- <div class="keywords">
46
- {{#each keywords as |keyword|}}
47
- <a href="{{../include_prefix}}{{keyword.link}}">{{keyword.friendly_name}}</a>
54
+ .streams
55
+ |
56
+ {{#each substreams as |stream|}}
57
+ <section>
58
+ <h2>{{stream.title}}</h2>
59
+ <div class="stream">
60
+ == Piccle::TemplateHelpers.render_partial "substream"
61
+ |
62
+ </div>
63
+ </section>
48
64
  {{/each}}
49
- </div>
50
- {{/if}}
51
-
52
- .streams
53
- |
54
- {{#each substreams as |stream|}}
55
- <section>
56
- <h2>{{stream.title}}</h2>
57
- <div class="stream">
58
- == Piccle::TemplateHelpers.render_partial "substream"
59
- |
60
- </div>
61
- </section>
62
- {{/each}}
63
65
 
64
- == Piccle::TemplateHelpers.render_partial "footer"
66
+ == Piccle::TemplateHelpers.render_partial "footer"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: piccle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.rc1
4
+ version: 0.1.1.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Pounds
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-28 00:00:00.000000000 Z
11
+ date: 2021-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -260,12 +260,11 @@ extra_rdoc_files: []
260
260
  files:
261
261
  - ".gitignore"
262
262
  - ".rspec"
263
- - ".travis.yml"
264
263
  - Gemfile
264
+ - LICENSE.md
265
265
  - NOTES.md
266
266
  - README.md
267
267
  - Rakefile
268
- - agpl-3.0.md
269
268
  - assets/css/default.css
270
269
  - assets/css/normalize.css
271
270
  - assets/icons/android-chrome-192x192.png
@@ -282,6 +281,8 @@ files:
282
281
  - db/migrations/003_create_keywords_and_join_table.rb
283
282
  - db/migrations/004_add_focal_length.rb
284
283
  - db/migrations/005_create_locations.rb
284
+ - db/migrations/006_create_people_and_join_table.rb
285
+ - db/migrations/007_add_indexes.rb
285
286
  - js-renderer/handlebars.min-v4.7.6.js
286
287
  - js-renderer/renderer.js
287
288
  - lib/piccle.rb
@@ -292,6 +293,7 @@ files:
292
293
  - lib/piccle/js_renderer.rb
293
294
  - lib/piccle/models/keyword.rb
294
295
  - lib/piccle/models/location.rb
296
+ - lib/piccle/models/person.rb
295
297
  - lib/piccle/models/photo.rb
296
298
  - lib/piccle/parser.rb
297
299
  - lib/piccle/quilt_generator.rb
@@ -303,6 +305,7 @@ files:
303
305
  - lib/piccle/streams/event_stream.rb
304
306
  - lib/piccle/streams/keyword_stream.rb
305
307
  - lib/piccle/streams/location_stream.rb
308
+ - lib/piccle/streams/person_stream.rb
306
309
  - lib/piccle/template_helpers.rb
307
310
  - lib/piccle/version.rb
308
311
  - lib/tasks/development.rake
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.0
5
- before_install: gem install bundler -v 1.13.2