From 95085af122cebabf4082e597899714d256d93d8a Mon Sep 17 00:00:00 2001 From: Simon Conseil Date: Sun, 2 Oct 2016 00:04:33 +0200 Subject: [PATCH 1/4] Add test for ignore_directories with special characters (ref #222) --- tests/test_gallery.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_gallery.py b/tests/test_gallery.py index bc2c171..013499d 100644 --- a/tests/test_gallery.py +++ b/tests/test_gallery.py @@ -263,12 +263,13 @@ def test_empty_dirs(settings): def test_ignores(settings, tmpdir): tmp = str(tmpdir) settings['destination'] = tmp - settings['ignore_directories'] = ['*test2'] + settings['ignore_directories'] = ['*test2', u'accentuĂ©'] settings['ignore_files'] = ['dir2/Hubble*', '*.png'] gal = Gallery(settings, ncpu=1) gal.build() assert 'test2' not in os.listdir(join(tmp, 'dir1')) + assert 'accentuĂ©' not in os.listdir(tmp) assert 'archlinux-kiss-1024x640.png' not in os.listdir( join(tmp, 'dir1', 'test1')) assert 'Hubble Interacting Galaxy NGC 5257.jpg' not in os.listdir( From 8f12e0f62f028e013ef73e5707d291ddb042c456 Mon Sep 17 00:00:00 2001 From: Simon Conseil Date: Mon, 24 Oct 2016 00:19:06 +0200 Subject: [PATCH 2/4] Use leaflet-providers.js to allow chosing the tile provider (ref #218) --- docs/themes.rst | 6 +- sigal/settings.py | 3 +- sigal/templates/sigal.conf.py | 8 +- .../static/leaflet/leaflet-providers.js | 639 ++++++++++++++++++ sigal/themes/galleria/templates/index.html | 7 +- tests/sample/sigal.conf.py | 2 +- 6 files changed, 654 insertions(+), 11 deletions(-) create mode 100644 sigal/themes/galleria/static/leaflet/leaflet-providers.js diff --git a/docs/themes.rst b/docs/themes.rst index 6f8daeb..1a206c2 100644 --- a/docs/themes.rst +++ b/docs/themes.rst @@ -22,11 +22,13 @@ Sigal comes with three themes, located in the ``sigal/themes`` folder: `_. This theme is based on the classic theme, pictures can be browsed with left/right keys, fullscreen support is available with the `f` key, and a map can be shown with the `m` - key if the ``show_map`` setting is True. + key if the ``show_map`` setting is True. The ``leaflet_provider`` setting + can be used to customize the tile provider (using `Leaflet-providers + `_). **photoswipe**: `source `_, `demo - `_. + `_. For developers, a Makefile is available to concatenate and minify the css files, using `cssmin `_ (``pip install diff --git a/sigal/settings.py b/sigal/settings.py index 416fb91..91c3fb3 100644 --- a/sigal/settings.py +++ b/sigal/settings.py @@ -39,7 +39,7 @@ _DEFAULT_CONFIG = { 'destination': '_build', 'files_to_copy': (), 'google_analytics': '', - 'google_tag_manager': '', + 'google_tag_manager': '', 'ignore_directories': [], 'ignore_files': [], 'img_processor': 'ResizeToFit', @@ -47,6 +47,7 @@ _DEFAULT_CONFIG = { 'index_in_url': False, 'jpg_options': {'quality': 85, 'optimize': True, 'progressive': True}, 'keep_orig': False, + 'leaflet_provider': 'OpenStreetMap.Mapnik', 'links': '', 'locale': '', 'make_thumbs': True, diff --git a/sigal/templates/sigal.conf.py b/sigal/templates/sigal.conf.py index de39bd0..2f7f76a 100644 --- a/sigal/templates/sigal.conf.py +++ b/sigal/templates/sigal.conf.py @@ -22,7 +22,8 @@ source = 'pictures' # destination = '_build' # Theme : -# - colorbox (default), galleria, photoswipe, or the path to a custom theme directory +# - colorbox (default), galleria, photoswipe, or the path to a custom theme +# directory theme = 'galleria' # Author. Used in the footer of the pages and in the author meta tag. @@ -41,9 +42,12 @@ theme = 'galleria' # Size of resized image (default: (640, 480)) img_size = (800, 600) -# Should we use openlayers to show a map of the images where possible? +# Show a map of the images where possible? # This option only has an effect on the galleria theme for the while. +# The leaflet_provider setting allow to customize the tile provider (see +# https://github.com/leaflet-extras/leaflet-providers#providers) # show_map = False +# leaflet_provider = 'OpenStreetMap.Mapnik' # Pilkit processor used to resize the image # (see http://pilkit.readthedocs.org/en/latest/#processors) diff --git a/sigal/themes/galleria/static/leaflet/leaflet-providers.js b/sigal/themes/galleria/static/leaflet/leaflet-providers.js new file mode 100644 index 0000000..22e2cbd --- /dev/null +++ b/sigal/themes/galleria/static/leaflet/leaflet-providers.js @@ -0,0 +1,639 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['leaflet'], factory); + } else if (typeof modules === 'object' && module.exports) { + // define a Common JS module that relies on 'leaflet' + module.exports = factory(require('leaflet')); + } else { + // Assume Leaflet is loaded into global object L already + factory(L); + } +}(this, function (L) { + 'use strict'; + + L.TileLayer.Provider = L.TileLayer.extend({ + initialize: function (arg, options) { + var providers = L.TileLayer.Provider.providers; + + var parts = arg.split('.'); + + var providerName = parts[0]; + var variantName = parts[1]; + + if (!providers[providerName]) { + throw 'No such provider (' + providerName + ')'; + } + + var provider = { + url: providers[providerName].url, + options: providers[providerName].options + }; + + // overwrite values in provider from variant. + if (variantName && 'variants' in providers[providerName]) { + if (!(variantName in providers[providerName].variants)) { + throw 'No such variant of ' + providerName + ' (' + variantName + ')'; + } + var variant = providers[providerName].variants[variantName]; + var variantOptions; + if (typeof variant === 'string') { + variantOptions = { + variant: variant + }; + } else { + variantOptions = variant.options; + } + provider = { + url: variant.url || provider.url, + options: L.Util.extend({}, provider.options, variantOptions) + }; + } + + var forceHTTP = window.location.protocol === 'file:' || provider.options.forceHTTP; + if (provider.url.indexOf('//') === 0 && forceHTTP) { + provider.url = 'http:' + provider.url; + } + + // If retina option is set + if (provider.options.retina) { + // Check retina screen + if (options.detectRetina && L.Browser.retina) { + // The retina option will be active now + // But we need to prevent Leaflet retina mode + options.detectRetina = false; + } else { + // No retina, remove option + provider.options.retina = ''; + } + } + + // replace attribution placeholders with their values from toplevel provider attribution, + // recursively + var attributionReplacer = function (attr) { + if (attr.indexOf('{attribution.') === -1) { + return attr; + } + return attr.replace(/\{attribution.(\w*)\}/, + function (match, attributionName) { + return attributionReplacer(providers[attributionName].options.attribution); + } + ); + }; + provider.options.attribution = attributionReplacer(provider.options.attribution); + + // Compute final options combining provider options with any user overrides + var layerOpts = L.Util.extend({}, provider.options, options); + L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); + } + }); + + /** + * Definition of providers. + * see http://leafletjs.com/reference.html#tilelayer for options in the options map. + */ + + L.TileLayer.Provider.providers = { + OpenStreetMap: { + url: '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: + '© OpenStreetMap' + }, + variants: { + Mapnik: {}, + BlackAndWhite: { + url: 'http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png', + options: { + maxZoom: 18 + } + }, + DE: { + url: 'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', + options: { + maxZoom: 18 + } + }, + France: { + url: '//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' + } + }, + HOT: { + url: '//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', + options: { + attribution: '{attribution.OpenStreetMap}, Tiles courtesy of Humanitarian OpenStreetMap Team' + } + } + } + }, + OpenSeaMap: { + url: 'http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', + options: { + attribution: 'Map data: © OpenSeaMap contributors' + } + }, + OpenTopoMap: { + url: '//{s}.tile.opentopomap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: {attribution.OpenStreetMap}, SRTM | Map style: © OpenTopoMap (CC-BY-SA)' + } + }, + Thunderforest: { + url: '//{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png', + options: { + attribution: + '© Thunderforest, {attribution.OpenStreetMap}', + variant: 'cycle' + }, + variants: { + OpenCycleMap: 'cycle', + Transport: { + options: { + variant: 'transport', + maxZoom: 19 + } + }, + TransportDark: { + options: { + variant: 'transport-dark', + maxZoom: 19 + } + }, + SpinalMap: { + options: { + variant: 'spinal-map', + maxZoom: 11 + } + }, + Landscape: 'landscape', + Outdoors: 'outdoors', + Pioneer: 'pioneer' + } + }, + OpenMapSurfer: { + url: 'http://korona.geog.uni-heidelberg.de/tiles/{variant}/x={x}&y={y}&z={z}', + options: { + maxZoom: 20, + variant: 'roads', + attribution: 'Imagery from GIScience Research Group @ University of Heidelberg — Map data {attribution.OpenStreetMap}' + }, + variants: { + Roads: 'roads', + AdminBounds: { + options: { + variant: 'adminb', + maxZoom: 19 + } + }, + Grayscale: { + options: { + variant: 'roadsg', + maxZoom: 19 + } + } + } + }, + Hydda: { + url: '//{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', + options: { + variant: 'full', + attribution: 'Tiles courtesy of OpenStreetMap Sweden — Map data {attribution.OpenStreetMap}' + }, + variants: { + Full: 'full', + Base: 'base', + RoadsAndLabels: 'roads_and_labels' + } + }, + MapBox: { + url: '//api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', + options: { + attribution: + 'Imagery from MapBox — ' + + 'Map data {attribution.OpenStreetMap}', + subdomains: 'abcd' + } + }, + Stamen: { + url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + attribution: + 'Map tiles by Stamen Design, ' + + 'CC BY 3.0 — ' + + 'Map data {attribution.OpenStreetMap}', + subdomains: 'abcd', + minZoom: 0, + maxZoom: 20, + variant: 'toner', + ext: 'png' + }, + variants: { + Toner: 'toner', + TonerBackground: 'toner-background', + TonerHybrid: 'toner-hybrid', + TonerLines: 'toner-lines', + TonerLabels: 'toner-labels', + TonerLite: 'toner-lite', + Watercolor: { + options: { + variant: 'watercolor', + minZoom: 1, + maxZoom: 16 + } + }, + Terrain: { + options: { + variant: 'terrain', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainBackground: { + options: { + variant: 'terrain-background', + minZoom: 0, + maxZoom: 18 + } + }, + TopOSMRelief: { + options: { + variant: 'toposm-color-relief', + ext: 'jpg', + bounds: [[22, -132], [51, -56]] + } + }, + TopOSMFeatures: { + options: { + variant: 'toposm-features', + bounds: [[22, -132], [51, -56]], + opacity: 0.9 + } + } + } + }, + Esri: { + url: '//server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', + options: { + variant: 'World_Street_Map', + attribution: 'Tiles © Esri' + }, + variants: { + WorldStreetMap: { + options: { + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' + } + }, + DeLorme: { + options: { + variant: 'Specialty/DeLorme_World_Base_Map', + minZoom: 1, + maxZoom: 11, + attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' + } + }, + WorldTopoMap: { + options: { + variant: 'World_Topo_Map', + attribution: + '{attribution.Esri} — ' + + 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' + } + }, + WorldImagery: { + options: { + variant: 'World_Imagery', + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' + } + }, + WorldTerrain: { + options: { + variant: 'World_Terrain_Base', + maxZoom: 13, + attribution: + '{attribution.Esri} — ' + + 'Source: USGS, Esri, TANA, DeLorme, and NPS' + } + }, + WorldShadedRelief: { + options: { + variant: 'World_Shaded_Relief', + maxZoom: 13, + attribution: '{attribution.Esri} — Source: Esri' + } + }, + WorldPhysical: { + options: { + variant: 'World_Physical_Map', + maxZoom: 8, + attribution: '{attribution.Esri} — Source: US National Park Service' + } + }, + OceanBasemap: { + options: { + variant: 'Ocean_Basemap', + maxZoom: 13, + attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' + } + }, + NatGeoWorldMap: { + options: { + variant: 'NatGeo_World_Map', + maxZoom: 16, + attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' + } + }, + WorldGrayCanvas: { + options: { + variant: 'Canvas/World_Light_Gray_Base', + maxZoom: 16, + attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' + } + } + } + }, + OpenWeatherMap: { + url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data © OpenWeatherMap', + opacity: 0.5 + }, + variants: { + Clouds: 'clouds', + CloudsClassic: 'clouds_cls', + Precipitation: 'precipitation', + PrecipitationClassic: 'precipitation_cls', + Rain: 'rain', + RainClassic: 'rain_cls', + Pressure: 'pressure', + PressureContour: 'pressure_cntr', + Wind: 'wind', + Temperature: 'temp', + Snow: 'snow' + } + }, + HERE: { + /* + * HERE maps, formerly Nokia maps. + * These basemaps are free, but you need an API key. Please sign up at + * http://developer.here.com/getting-started + * + * Note that the base urls contain '.cit' whichs is HERE's + * 'Customer Integration Testing' environment. Please remove for production + * envirionments. + */ + url: + '//{s}.{base}.maps.cit.api.here.com/maptile/2.1/' + + '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + + 'app_id={app_id}&app_code={app_code}&lg={language}', + options: { + attribution: + 'Map © 1987-2014 HERE', + subdomains: '1234', + mapID: 'newest', + 'app_id': '', + 'app_code': '', + base: 'base', + variant: 'normal.day', + maxZoom: 20, + type: 'maptile', + language: 'eng', + format: 'png8', + size: '256' + }, + variants: { + normalDay: 'normal.day', + normalDayCustom: 'normal.day.custom', + normalDayGrey: 'normal.day.grey', + normalDayMobile: 'normal.day.mobile', + normalDayGreyMobile: 'normal.day.grey.mobile', + normalDayTransit: 'normal.day.transit', + normalDayTransitMobile: 'normal.day.transit.mobile', + normalNight: 'normal.night', + normalNightMobile: 'normal.night.mobile', + normalNightGrey: 'normal.night.grey', + normalNightGreyMobile: 'normal.night.grey.mobile', + + basicMap: { + options: { + type: 'basetile' + } + }, + mapLabels: { + options: { + type: 'labeltile', + format: 'png' + } + }, + trafficFlow: { + options: { + base: 'traffic', + type: 'flowtile' + } + }, + carnavDayGrey: 'carnav.day.grey', + hybridDay: { + options: { + base: 'aerial', + variant: 'hybrid.day' + } + }, + hybridDayMobile: { + options: { + base: 'aerial', + variant: 'hybrid.day.mobile' + } + }, + pedestrianDay: 'pedestrian.day', + pedestrianNight: 'pedestrian.night', + satelliteDay: { + options: { + base: 'aerial', + variant: 'satellite.day' + } + }, + terrainDay: { + options: { + base: 'aerial', + variant: 'terrain.day' + } + }, + terrainDayMobile: { + options: { + base: 'aerial', + variant: 'terrain.day.mobile' + } + } + } + }, + FreeMapSK: { + url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', + options: { + minZoom: 8, + maxZoom: 16, + subdomains: '1234', + bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], + attribution: + '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 Freemap.sk' + } + }, + MtbMap: { + url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap} & USGS' + } + }, + CartoDB: { + url: 'http://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}.png', + options: { + attribution: '{attribution.OpenStreetMap} © CartoDB', + subdomains: 'abcd', + maxZoom: 19, + variant: 'light_all' + }, + variants: { + Positron: 'light_all', + PositronNoLabels: 'light_nolabels', + PositronOnlyLabels: 'light_only_labels', + DarkMatter: 'dark_all', + DarkMatterNoLabels: 'dark_nolabels', + DarkMatterOnlyLabels: 'dark_only_labels' + } + }, + HikeBike: { + url: 'http://{s}.tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: '{attribution.OpenStreetMap}', + variant: 'hikebike' + }, + variants: { + HikeBike: {}, + HillShading: { + options: { + maxZoom: 15, + variant: 'hillshading' + } + } + } + }, + BasemapAT: { + url: '//maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', + options: { + maxZoom: 19, + attribution: 'Datenquelle: basemap.at', + subdomains: ['', '1', '2', '3', '4'], + format: 'png', + bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], + variant: 'geolandbasemap' + }, + variants: { + basemap: 'geolandbasemap', + grau: 'bmapgrau', + overlay: 'bmapoverlay', + highdpi: { + options: { + variant: 'bmaphidpi', + format: 'jpeg' + } + }, + orthofoto: { + options: { + variant: 'bmaporthofoto30cm', + format: 'jpeg' + } + } + } + }, + NASAGIBS: { + url: '//map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', + options: { + attribution: + 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + + '(ESDIS) with funding provided by NASA/HQ.', + bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], + minZoom: 1, + maxZoom: 9, + format: 'jpg', + time: '', + tilematrixset: 'GoogleMapsCompatible_Level' + }, + variants: { + ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_TrueColor', + ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', + ViirsEarthAtNight2012: { + options: { + variant: 'VIIRS_CityLights_2012', + maxZoom: 8 + } + }, + ModisTerraLSTDay: { + options: { + variant: 'MODIS_Terra_Land_Surface_Temp_Day', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + }, + ModisTerraSnowCover: { + options: { + variant: 'MODIS_Terra_Snow_Cover', + format: 'png', + maxZoom: 8, + opacity: 0.75 + } + }, + ModisTerraAOD: { + options: { + variant: 'MODIS_Terra_Aerosol', + format: 'png', + maxZoom: 6, + opacity: 0.75 + } + }, + ModisTerraChlorophyll: { + options: { + variant: 'MODIS_Terra_Chlorophyll_A', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + } + } + }, + NLS: { + // NLS maps are copyright National library of Scotland. + // http://maps.nls.uk/projects/api/index.html + // Please contact NLS for anything other than non-commercial low volume usage + // + // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s + // z0-9 - 1:1m + // z10-11 - quarter inch (1:253440) + // z12-18 - one inch (1:63360) + url: '//nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', + options: { + attribution: 'National Library of Scotland Historic Maps', + bounds: [[49.6, -12], [61.7, 3]], + minZoom: 1, + maxZoom: 18, + subdomains: '0123', + } + } + }; + + L.tileLayer.provider = function (provider, options) { + return new L.TileLayer.Provider(provider, options); + }; + + return L; +})); diff --git a/sigal/themes/galleria/templates/index.html b/sigal/themes/galleria/templates/index.html index ad23537..317bb66 100644 --- a/sigal/themes/galleria/templates/index.html +++ b/sigal/themes/galleria/templates/index.html @@ -24,6 +24,7 @@ {% if settings.show_map and album.show_map %} + {% endif %} @@ -204,11 +205,7 @@ if ($("#galleria-map").length == 0) { $(".galleria-stage").after("
"); map = L.map('galleria-map'); - var attrib = '© OpenStreetMap contributors | Tiles Courtesy of MapQuest '; - L.tileLayer('https://{s}-s.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', { - attribution: attrib, - subdomains: ['otile1','otile2','otile3','otile4'] - }).addTo( map ); + L.tileLayer.provider('{{ settings.leaflet_provider }}').addTo(map); map.setView([51.505, -0.09], 12); {% for media in album.medias %} diff --git a/tests/sample/sigal.conf.py b/tests/sample/sigal.conf.py index 13ac9db..8a6a1bd 100644 --- a/tests/sample/sigal.conf.py +++ b/tests/sample/sigal.conf.py @@ -24,7 +24,7 @@ thumb_size = (200, 150) rss_feed = {'feed_url': 'http://example.org/feed.rss', 'nb_items': 10} atom_feed = {'feed_url': 'http://example.org/feed.atom', 'nb_items': 10} -# theme = 'galleria' # theme = 'photoswipe' +# theme = 'galleria' # thumb_size = (280, 210) # show_map = True From ddff9f92ec48f54f9f4b453535c1cda0c7507d25 Mon Sep 17 00:00:00 2001 From: Simon Conseil Date: Mon, 24 Oct 2016 00:36:02 +0200 Subject: [PATCH 3/4] Update Changelog [skip-ci] --- docs/changelog.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 897ab43..9fbc0d4 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -2,6 +2,19 @@ Changelog =========== +Version 1.3.0-dev +~~~~~~~~~~~~~~~~~ + +Released on 2016-xx-xx. + +- Support videos with rotation [#210]. +- Generate missing thumbnails from the resized image if possible [#211]. +- Fix background-image url in the PhotoSwipe theme [#213]. +- Implement a first version of video support for the PhotoSwipe theme [#216]. +- Update Google Analytics UA Code [#221]. +- Use leaflet-providers.js to allow chosing the tile provider for the map in + the Galleria theme [#218]. + Version 1.2.0 ~~~~~~~~~~~~~ From ae5f8cb16dc04360495f38071d965abd18822b34 Mon Sep 17 00:00:00 2001 From: Simon Conseil Date: Mon, 24 Oct 2016 00:52:43 +0200 Subject: [PATCH 4/4] Remove discussion on PIL/Pillow from the installation page (ref #206). --- docs/conf.py | 1 - docs/installation.rst | 32 +++++++------------------------- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index dc505cd..2147853 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -101,7 +101,6 @@ html_theme_options = { 'github_user': 'saimn', 'github_repo': 'sigal', 'description': "Yet another simple static gallery generator.", - 'gratipay_user': 'saimn', # 'analytics_id': 'UA-18486793-2', # 'travis_button': True, } diff --git a/docs/installation.rst b/docs/installation.rst index b9c272c..cf938a6 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -10,37 +10,19 @@ or alternatively if you have pip installed:: $ pip install sigal +To install the development version, see the :doc:`contribute`. + Dependencies ~~~~~~~~~~~~ +- Blinker - Click - Jinja2 - Pilkit -- Python Imaging Library (PIL / Pillow, see below) +- Pillow - Python Markdown -PIL or Pillow ? -~~~~~~~~~~~~~~~ +Packages +~~~~~~~~ -PIL_ is almost dead, the last release was in 2009. If possible you should -prefer to use Pillow_, a fork of PIL which is actively developped, with -packaging improvements, Python 3 compatibility, etc. - -You can install Pillow with ``pip install Pillow``, preferably in a -virtualenv_. To have JPG and PNG support, you must first install the -developpement packages of libjpeg, freetype2 and zlib. - -- For Debian/Ubuntu, this is possible with:: - - apt-get build-dep python-dev python-imaging - - Debian/Sid users can use the experimental ``python-imaging`` package that is - built from Pillow source. - -- For Archlinux, there is a package_ for sigal in the AUR which already uses - Pillow. - -.. _PIL: http://www.pythonware.com/products/pil/ -.. _Pillow: https://github.com/python-imaging/Pillow -.. _package: https://aur.archlinux.org/packages/sigal/ -.. _virtualenv: http://www.virtualenv.org/ +- Archlinux: `AUR package `_