Description
Eight Day Week provides a set of tools to manage your print workflow directly in your WordPress dashboard–right where your posts are!
Primarily, it offers an interface to group, label, and manage the workflow status of posts in a printed “Issue”.
Features:
Create “Print Issues”
- Add and order sections, and articles within sections
- Assign article statuses specific to your print workflow
Limit access to Print Roles
Two custom roles are added by this plugin to best model a real-world print team.
- The Print Editor role offers full access to the creation interfaces, such as Print Issue, Article Status, Print Publication, etc.
- The Print Production role offers read-only access to a Print Issues. The XML export tool is also available to Production users.
View a Print Issue in “Read Only” mode
- Circumvents the post locking feature by offering a read-only view of a print issue
XML Export to InDesign
- Export XML files specifically formatted for import into InDesign
Filters & Hooks
Eight Day Week provides a number of filters and hooks for customizing and extending the plugin.
Modules
Eight Day Week follows a module-style approach to many of its features. These can be turned on or off via filters, and all work independently.
These are:
Article Byline
Article Count
Article Export
Article Status
Issue Publication
Issue Status
Any of these can be disabled by returning a false value from the following filter format:
add_filter( 'Eight_Day_Week\Plugins\load_$plugin', '__return_false' );
The $plugin
value is a slug version of the plugin name, i.e. article-byline.
Article Table
The information displayed in the list of articles within a Print Issue is filterable. Custom columns can be added via the following filters: Eight_Day_Week\Articles\article_columns
and Eight_Day_Week\Articles\article_meta_$column_name
.
Sample usage:
add_filter( 'Eight_Day_Week\Articles\article_columns', function( $columns ) {
$columns['byline'] = _x( 'Byline', 'Label for multiple, comma separated authors', 'your-text-domain' );
return $columns;
} );
add_filter( 'Eight_Day_Week\Articles\article_meta_byline', function( $incoming_value, $post ) {
return implode( ', ', wp_list_pluck( my_get_post_authors_function( $post ), 'display_name' ) );
}
Print Issue Table
The information displayed in the list of Print Issues is filterable. Custom columns can be added via the following filter:
Eight_Day_Week\Print_Issue_Columns\pi_columns. Note that this is a convenience filter, the base filter is manage_edit-print-issue_columns
. See includes/functions/print-issue-columns.php
for sample usage.
Article Export
The export of posts in a Print Issue is highly customizable, from the file name of the zip, to the file name of the individual files, to the contents of the files themselves. The best reference would be to read through includes/functions/plugins/article-export.php
. Here’s a few examples used on the Observer.
Sample Eight Day Week filters for the Observer
Examples from Observer’s eight-day-week-filters.php:
<?php
add_filter( 'Eight_Day_Week\Plugins\Article_Export\xml_outer_elements', function( $elements, $article ) {
$elements['subHeadline'] = get_post_meta( $article->ID, 'nyo_dek', true );
return $elements;
}, 10, 2 );
add_filter( 'Eight_Day_Week\Plugins\Article_Export\xml_outer_elements', function( $elements, $article ) {
if( function_exists( '\Eight_Day_Week\Plugins\Article_Byline\get_article_byline' ) ) {
$elements['byline'] = \Eight_Day_Week\Plugins\Article_Byline\get_article_byline( $article );
}
return $elements;
}, 10, 2 );
add_filter( 'Eight_Day_Week\Plugins\Article_Export\xpath_extract', function( $extract ) {
$extract[] = [
'tag_name' => 'pullQuote',
'container' => 'pullQuotes',
'query' => '//p[contains(@class, "pullquote")]'
];
return $extract;
} );
add_filter( 'Eight_Day_Week\Plugins\Article_Export\dom', function ( $dom ) {
$swap_tag_name = 'emphasized';
$extract_map = [
'strong' => [
'solo' => 'bold',
'inner' => 'em'
],
'em' => [
'solo' => 'italics',
'inner' => 'strong'
],
];
foreach ( $extract_map as $tag_name => $map ) {
$nodes = $dom->getElementsByTagName( $tag_name );
$length = $nodes->length;
for ( $i = $length; -- $i >= 0; ) {
$el = $nodes->item( $i );
$emphasized = $el->getElementsByTagName( $map['inner'] );
if ( $emphasized->length ) {
$em = $dom->createElement( $swap_tag_name );
$em->nodeValue = $el->nodeValue;
try {
$el->parentNode->replaceChild( $em, $el );
} catch ( \Exception $e ) {
}
continue;
}
$new = $dom->createElement( $map['solo'] );
$new->nodeValue = $el->nodeValue;
try {
$el->parentNode->replaceChild( $new, $el );
} catch ( \Exception $e ) {
}
}
}
return $dom;
} );
Known Caveats/Issues
Gutenberg exports
Gutenberg-based exports include some additional metadata/details that a Classic Editor-based export does not. Gutenberg stores block data in HTML comments, so you’ll notice those comments (in the form of <!-- "Gutenberg block data" -->
) appearing in the Eight Day Week XML export. Note that the XML is still valid–you can test and confirm that yourself using an XML validator–though depending on your version of InDesign you may get different results upon importing a Gutenberg export compared to a Classic Editor export. Our testing showed that those HTML comments in a Gutenberg export did not affect the import into InDesign however. You can test how this works in your version of InDesign with these sample XML files: Gutenberg XML, Classic Editor XML. You can also test how this works with full ZIP exports of Print Issues containing a Block Editor sample or a Classic Editor sample.
Screenshots
Installation
Eight Day Week has no settings or configurations to set up. It just works!
Reviews
Contributors & Developers
“Eight Day Week Print Workflow” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Eight Day Week Print Workflow” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.4 – 2024-02-29
- Added: Support for the WordPress.org plugin preview (props @dkotter, @jeffpaul via #137).
- Changed: Bump WordPress “tested up to” version to 6.4 (props @dhanendran, @peterwilsoncc via #136).
- Fixed: Undefined array key PHP warning (props @dhanendran, @peterwilsoncc via #136).
1.2.3 – 2023-09-20
- Added: Error handling for environments that don’t match our minimum PHP version (props @bmarshall511, @iamdharmesh, @dkotter, @vikrampm1 via #132).
- Fixed: Ensure multiple articles can be saved within each Print Issue section (props @dkotter, @xLesy, @iamdharmesh via #131).
- Fixed: Ensure the article status shows correctly and can be bulk edited (props @dkotter, @iamdharmesh via #131).
- Fixed: Ensure our E2E tests run properly on Cypress 13 (props @dkotter, @iamdharmesh via #131).
- Security: Bump
@cypress/request
from 2.88.12 to 3.0.1 andcypress
from 10.3.0 to 13.1.0 (props @dependabot via #129).
1.2.2 – 2023-09-06
- Added: Add proper labels to the Issue Status taxonomy (props @jayedul, @peterwilsoncc via #112).
- Added: Ensure images and their captions are included in the export file (props @bmarshall511, @peterwilsoncc, @sksaju, @dkotter via #117).
- Added: Github Action to check for PHP coding and compatibility standards (props @Sidsector9, @jeffpaul, @cadic, @faisal-alvi via #109).
- Added: GitHub Action summary added to our Cypress E2E test reports (props @jayedul, @ravinderk via #119)
- Changed: Run our E2E tests on the zip that is generated by our
Build release zip
action (props @jayedul, @dkotter via #113). - Changed: Bump WordPress “tested up to” version to 6.3 (props @jayedul, @dkotter, @zamanq, @faisal-alvi via #102, #115, #127, #128).
- Changed: Update the Dependency Review GitHub Action (props @jeffpaul via #116).
- Fixed: Various code updates to ensure we better conform to the WordPress coding standards (props @bmarshall511, @Sidsector9 via #120).
- Fixed: Ensure proper message is shown when changing a user’s print role (props @zamanq, @faisal-alvi via #128).
- Security: Bump
simple-git
from 3.15.1 to 3.16.0 (props @dependabot via #110). - Security: Bump
http-cache-semantics
from 4.1.0 to 4.1.1 (props @dependabot via #111). - Security: Bump
tough-cookie
from 2.5.0 to 4.1.3 and@cypress/request
from 2.88.10 to 2.88.12 (props @dependabot via #122).
1.2.1 – 2023-01-09
-
Note that this release bumps the WordPress minimum version from 4.6 to 5.7 and the PHP minimum version from 5.6 to 7.4.
-
Added: Setup E2E tests using Cypress (props @dhanendran, @iamdharmesh via #92).
- Added: Filter example usages from the Observer (props @jeffpaul, @peterwilsoncc via #97).
- Changed: Bump WordPress minimum version from 4.6 to 5.7 and PHP minimum version from 5.6 to 7.4 (props @zamanq, @cadic, @jeffpaul via #96).
- Changed: Update Support Level from
Active
toStable
(props @jeffpaul, @dkotter via #94). - Changed: Bump WordPress “tested up to” version to 6.1 props @jayedul, @dkotter via #102).
- Security: Remove
shelljs
and bumpgrunt-contrib-jshint
from 2.1.0 to 3.2.0 (props @dependabot via #99). - Security: Bump
got
from 10.7.0 to 11.8.5 and@wordpress/env
from 4.9.0 to 5.7.0 (props @dependabot via #100). - Security: Bump
simple-git
from 3.10.0 to 3.15.1 (props @dependabot via #103).
1.2.0 – 2022-06-23
- Added: Dependency security scanning (props @jeffpaul, @peterwilsoncc via #81).
- Changed: Bump WordPress version “tested up to” 6.0 (props @jeffpaul, @mohitwp, @peterwilsoncc, @cadic, @dinhtungdu, @vikrampm1 via #78, #86, #87).
- Security: Bump
simple-get
from 3.1.0 to 3.1.1 (props @dependabot via #82). - Security: Bump
grunt
from 1.3.0 to 1.5.3 (props @dependabot via #84, #88).
1.1.3 – 2021-12-15
- Changed: Bump WordPress version “tested up to” 5.8 (props @barneyjeffries, @jeffpaul).
- Fixed: Windows compatibility: Use
DIRECTORY_SEPARATOR
instead of slash in filepaths (props @mnelson4, @dinhtungdu, @Intelligent2013, @samthinkbox). - Security: Bump
bl
from 1.2.2 to 1.2.3 (props @dependabot). - Security: Bump
ini
from 1.3.5 to 1.3.7 (props @dependabot). - Security: Bump
grunt
from 1.0.4 to 1.3.0 (props @dependabot). - Security: Bump
lodash
from 4.17.19 to 4.17.21 (props @dependabot). - Security: Bump
ws
from 6.2.1 to 6.2.2 (props @dependabot). - Security: Bump
path-parse
from 1.0.6 to 1.0.7 (props @dependabot).
1.1.2 – 2020-10-08
- Changed: Plugin documentation and screenshots (props @jeffpaul).
- Removed: Translation files as this is now handled on translate.wordpress.org (props @jeffpaul, @helen).
- Fixed: Unable to change role using upper Print Role dropdown (props @dinhtungdu).
- Fixed: Display correct title when creating a new Section in Print Issues (props @dinhtungdu).
- Security: Bump
websocket-extensions
from 0.1.3 to 0.1.4 (props @dependabot). - Security: Bump
lodash
from 4.17.15 to 4.17.19 (props @dependabot).
1.1.1 – 2019-11-22
- Changed: Bump WordPress version “tested up to” 5.3 (props @adamsilverstein).
- Changed: Documentation and deploy automation updates (props @jeffpaul).
- Fixed: WordPress.org translation readiness (props @jeffpaul, @adamsilverstein, @helen).
1.1.0 – 2019-07-26
- Added: German translation files (props @adamsilverstein, Matthias Wehrlein).
- Added: Plugin banner and icon images (props @chriswallace).
- Updated: Update dependencies in
package.json
andcomposer.json
to current versions (props @adamsilverstein). - Fixed: DateTimeZone setup: fall back to
gmt_offset
(props @adamsilverstein, Jared Williams). - Fixed: PHP notices w/PHP 5.6 and fatals with PHP 7.2/3 (props @adamsilverstein).
1.0.0 – 2015-11-16
- Initial Release.