Releases: podlove/podlove-publisher
1.10.13-alpha
We decided to remove the "Force Download" feature. Its purpose was to guarantee that a click on a download button results in a download dialogue, rather than playing the media file in the browser. The way we implemented it worked, but came with many downsides. Just to name two of them:
- We doubled the traffic and significantly increased load since we had to pull all the bytes through the webserver in addition to the download server (even if both are the same).
- It was impossible to support HTTP range requests. That means no client was able to resume a broken or paused download. It also seemed to lead to strange behaviour in the web player.
But there is another, superior way to force downloads: configure your download server. The important setting here is Content-Disposition.
In Apache, you need the headers
module (a2enmod headers
on Debian-ish distributions). Then you can add this to your configuration:
<FilesMatch "\.(mp3|m4a|ogg|oga|ogv|opus|mpg|m4v|webm|flac|pdf|epub|zip)$">
Header set Content-Disposition attachment
</FilesMatch>
lighttpd:
$HTTP["url"] =~ "\.(mp3|m4a|ogg|oga|ogv|opus|mpg|m4v|webm|flac|pdf|epub|zip)$" {
setenv.add-response-header = ("Content-Disposition" => "attachment")
}
Nginx:
if ($request_filename ~ "\.(mp3|m4a|ogg|oga|ogv|opus|mpg|m4v|webm|flac|pdf|epub)$"){
add_header Content-Disposition 'attachment';
}
Other Changes
- Trim whitespace around some URLs that appear in the podcast feed.
- Update certificate for auth.podlove.org
- Fix an issue with saving contributors in
Podlove > Podcast Settings > Contributors
1.10.12-alpha
- Never redirect media file URLs to trailing-slash-URLs (WordPress has a habit of adding a trailing slash to every URL via redirect. That is undesirable here, since it creates two download intents).
- Handle empty user agent strings
- Do not write anything to tracking-database unless tracking is in analytics mode.
Other
- Compress export files via gzip.
- Add tracking data to export files.
1.10.11-alpha
Tracking
- For increased compatibility (we are looking at you, iTunes), new file URLs without parameters are used when analytics are active.
- Add
&ptm_file=<episode-slug>.<file-extension>
parameter to the end of Parameter-URLs, so tools like wget generate a filename with a correct extension by default. - Feed URLs now support a
&tracking=no
parameter, which dynamically disables tracking parameters in feed enclosures. This is introduced for debugging purposes and is only mentioned here for the sake of completeness. - Fix PHP glitch that caused tracking to go into "Tracking URL Parameters" mode even when it was disabled
ADN Module
- Fix issue that could lead to repostings
- Fix tags description
- Messages longer than 256 characters will be shortened now and "…" will be appended
Other
- Fix: reenable "force download" option
1.10.10-alpha
We discovered incompatibilities between our tracking implementation and some clients. To avoid further trouble, we are deactivating tracking until we solve the issue. The option is still available, we just switch it off automatically with this release and it isn't on by default any more.
If you're of the curious type, feel free to activate it and tell us any issues you run into. Thanks!
1.10.8-alpha
- Feature: Services in templates can be filtered by their type. That way, you can, for example, iterate over all Twitter accounts via
podcast.services({type: "twitter"})
. The previous "type" parameter (for choosing between "social", "donation" and "all") has been renamed to "category". All default templates have been adjusted accordingly but if you were using this API in a custom template, you need to change it. - Feature:
podcast.contributors
in templates are sorted by name now. You can change the order by writingpodcast.contributors({order: "DESC"})
. When using grouping, each group will be sorted separately. - Feature:
podcast.contributors({scope: "global-active"})
is limited to contributors with at least one contribution in a published episode. To list contributors ignoring this limitation, usepodcast.contributors({scope: "global"})
. "global-active" is the new default. - Feature: Allow manual posting of ADN announcements
- Feature: Add contributor support to ADN announcements
- Feature: We are beginning to implement download intent tracking and statistics. As a first step, we are now tracking download intents. A following release will contain an analytics section where you can examine the statistics.
- Feature: The feed
<link>
can be configured inExpert Settings > Website
now. It still defaults to the home page. Other options include the episode archive and any WordPress page. - Enhancement: remove encryption for "protected feed" password to prevent autofill browser features to destroy contents
- Enhancement: default WordPress search now covers episode subtitle, summary and chapters
- Enhancement: add Vimeo, Gittip and about.me to services
- Enhancement: The expert setting "Display episodes on front page together with blog posts" changed to "Include episode posts on the front page and in the blog feed". So if you set it, episodes will additionally appear in
/feed
. However, only in the form of a post. You will not find enclosures, iTunes metadata etc. in/feed
items. - Enhancement: sort chapters imported from Auphonic by time
- Enhancement: Changes to feed list: redirect URL is shown and added screen options to hide columns
- Enhancement: Added Publisher version as an attribute to the export file. If a file is imported with a version different from the current Publisher, a warning is displayed.
- Fix: enable group and role selection in contributor shortcodes
- Fix: failing delayed ADN broadcast
- Fix: stop sending ADN announcements for old episodes
- Fix: refresh of Auphonic presets keeps current preset
- Fix:
contributor.episodes
does not return duplicate episodes any more - Fix: Jabber URL scheme is now prefixed with
jabber:
- Fix: Display podcast subtitle in feed description (it was the blog description before)
- Fix: Hide contributors missing a URI from feeds
- Fix: Escaping issue when saving podcast description settings
1.10.7-alpha
- Feature: Direct episode access in templates via
{{ podcast.episodes({slug: 'pod001'}).title }}
- Feature: Episodes in templates can be filtered and ordered, for example
{{ podcast.episodes({orderby: 'title', 'order': 'ASC'}) }}
. For details, seepodcast.episodes
documentation - Feature: Direct contributor access in templates via
{{ podcast.contributors({id: 'john'}).name }}
- Feature: Add shortcode
[podlove-podcast-social-media-list]
, which lists all social media accounts for the podcast - Feature: Add shortcode
[podlove-podcast-donations-list]
, which lists all donation accounts for the podcast - Feature: Add tag support for Auphonic
- Enhancement: Add "Save and Continue Editing" buttons to all table based management screens
- Enhancement: Use translations for month and day names in formatted template dates (if a language other than english is used)
- Enhancement: Add refresh buttons for Auphonic preset selector
- Enhancement: Pass more data to web player (as preparation for the next release)
- Enhancement: Improved export format: It has its own namespace and a version now. Publisher version and export date are included as XML comments. XML elements are indented for better readability.
- Remove default content for new templates
- Fix: "Network Activate" works now
- Fix: group and role filters for
[podlove-podcast-contributor-list]
shortcode work as expected now - Fix: Add services and donations to export format
- Fix:
episode.player
in episode loops, outside the WordPress loop works now - Fix: Auphonic chapter integration issue
- Fix: Instagram URL scheme
1.10.5-alpha
Changes to the Templating System
episode.recordingDate
and episode.publicationDate
are DateTime objects now. Available accessors are: year, month, day, hours, minutes, seconds. For custom formatting, use episode.recordingDate.format("Y-m-d H:i:s")
for example. Calling episode.recordingDate
directly is still supported and defaults to the format configured in WordPress.
Other Changes
- Enhancement: Add refresh buttons for ADN patter and broadcast channel selectors
- Fix: Avoid "Grey Goo" scenario of self-replicating contributors
1.10.3-alpha
Changes to the Templating System
- New filter:
padLeft(padCharacter, padLength)
can be used to append a character to the left of the given string until a certain length is reached. Example:{{ "4"|padLeft("0",2) }}
returns "04"; - For consistency
{{ contributor.avatar }}
is now an object. To render an HTML image tag, use{% include '@contributors/avatar.twig' with {'avatar': contributor.avatar} only %}
. {{ episode.duration }}
has been turned into an object to enable custom time renderings. The duration object has the following accessors: hours, minutes, seconds, milliseconds and totalMilliseconds.
DEPRECATIONS/WARNINGS
{{ episode.duration }}
should not be used any more. The default templates are updated but if you have used it in a custom template, you must replace it. Example:{{ episode.duration.hours }}:{{ episode.duration.minutes|padLeft("0",2) }}:{{ episode.duration.seconds|padLeft("0",2) }}
{{ episode.license.html }}
and{{ podcast.license.html }}
are deprecated. Use{% include '@core/license.twig' %}
for the previous behaviour of choosing the correct license based on context. If you want to be more specific, use{% include '@core/license.twig' with {'license': episode.license} %}
or{% include '@core/license.twig' with {'license': podcast.license} %}
.
Other Changes
- Feature: ADN Module supports broadcasts
- Enhancement: Contributor shortcode defaults to
donations="yes"
to avoid confusion - Enhancement:
[podlove-episode-downloads]
now uses templates internally - Enhancement: Added 500px, Last.fm, OpenStreetMap and Soup to Services
- Enhancement: Use custom contributor social/donation titles as icon titles
- Enhancement: Template form has a "Save Changes and Continue Editing" button now
- Enhancement: feed validation is asynchronous now and has improved performance
- Enhancement: Licenses have a new interface and are compatible with Auphonic now: they can be imported from a finished production and are included when creating a production.
- Enhancement: Default MySQL character set is utf8 now when creating tables
- Enhancement: Add datepicker for episode recording date
- Fix: all default contributors appear in new episodes again
- Fix: change Tumblr URLs from https to http since Tumblr does not support them
- Fix:
[podlove-podcast-contributor-list]
shows the correct contributors now - Fix: internal template warning when accessing empty contributor roles or groups
- Fix: episode rendering when no files are available
- Fix: flattr script in rss feeds
- Fix: importer issue where sometimes modules would not activate properly
1.10.2-alpha
- Feature: add template filter
formatBytes
to format an integer as kilobytes, megabytes etc. Example:{{ file.size|formatBytes }}
- Feature: New accessor
{{ file.id }}
. This is required to generate download forms. - Fix:
[podlove-episode-contributor-list]
shortcode: Firstly, the "title" attribute works again. Secondly, output by group is optional now and defaults to "not grouped" (as it was before 1.10). If you are using contributor groups and would like grouped output, use[podlove-episode-contributor-list groupby="group"]
- Fix: division by zero bug in statistics dashboard
- Fix: parse time in statistics dashboard correctly as normalplaytime
- Fix: add missing template accessor
{{ episode.recordingDate }}
- Remove separate "publication date" field in episodes. Instead, use the episode post publication date maintained by WordPress. It can be accessed via
{{ episode.publicationDate }}
- Fix: missing contributor-edit-icon on last entries
1.10.1-alpha
- Fix: podlove-episode-contributor-list shortcode: add support for "group" and "role" attributes
- Fix: podlove-episode-contributor-list shortcode: fix broken flattr button
- Fix: feed widget: only compress if zlib extension is loaded