From 6e0a0653f329e8e87805a1b678824bf1792a481f Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 28 May 2018 13:31:31 -0400 Subject: [PATCH 01/67] Constructor fix for saved_links_widget --- inc/saved-links/class-saved-links-widget.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/saved-links/class-saved-links-widget.php b/inc/saved-links/class-saved-links-widget.php index dbee447..66dfe61 100644 --- a/inc/saved-links/class-saved-links-widget.php +++ b/inc/saved-links/class-saved-links-widget.php @@ -6,7 +6,7 @@ */ class saved_links_widget extends WP_Widget { - function saved_links_widget() { + function __construct() { $widget_ops = array( 'classname' => 'saved-links', 'description' => __( 'Show your most recently saved links in a sidebar widget', 'link-roundups' ) From 3bab79b410b759d53ec9ea5422949ae507e5fb8d Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 11:48:31 -0800 Subject: [PATCH 02/67] Reduce redundancies between WordPress and Github readmes, start version 0.5 changelog --- README.md | 33 +++++++-------------------------- README.txt | 14 ++++++++++++++ wordpress-mailchimp-tools | 2 +- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index d068709..2d72930 100644 --- a/README.md +++ b/README.md @@ -2,21 +2,13 @@ A WordPress plugin to make it easy to collect links from around the web, turn them into roundup posts and streamline the production of daily/weekly roundup newsletters using MailChimp. Built and maintained by [INN Nerds](http://nerds.inn.org). -**Contributors:** The INN Nerds (David Ryan, Ryan Nagle, Ben Keith, Will Haynes, Adam Schweigert) and Project Argo (Corey Daley, Chris Amico, Wesley Lindamood) - -**Tags:** link, newsletter, widget, mailchimp - -**Requires at least:** 4.1 - -**Tested up to:** 4.2.3 - -**Stable tag:** 0.4.1 - -**License:** GPLv2 or later - +**Contributors:** The INN Nerds (David Ryan, Ryan Nagle, Ben Keith, Will Haynes, Adam Schweigert) and Project Argo (Corey Daley, Chris Amico, Wesley Lindamood) +**Requires at least:** 4.1 +**Tested up to:** 4.2.3 +**Stable tag:** 0.4.1 +**License:** GPLv2 or later **License URI:** http://www.gnu.org/licenses/gpl-2.0.html - ## Overview The Link Roundup plugin allows you to: @@ -34,24 +26,14 @@ The plugin includes a browser bookmark that you can drag to your browser's bookm In its previous life, Link Roundups was called Argo Links. - ## Installation -Link Roundups can be installed like any other WordPress plugin. - -1. Download the contents of this repository. -2. Unzip the package and rename the folder to "link-roundups" (the folder will be called "link-roundups-master" but this may cause problems if you don't rename it before uploading to your site) -3. Upload the folder to your WordPress installation in the wp-content/plugins directory -4. Login to WordPress, click on Plugins in the left hand menu -5. Select the Link Roundups plugin and click "activate" -6. Review the plugin settings under the Settings > Link Roundups menu - -Installation directly from the WordPress.org plugin directory coming soon! +See the [installation instructions on WordPress.org](https://wordpress.org/plugins/link-roundups/#installation) ## Features #### Saved Links -![New Saved Link](https://raw.githubusercontent.com/INN/link-roundups/master/docs/img/new-saved-link.png) +![New Saved Link](./docs/img/new-saved-link.png) Curate links from around the web and save them in WordPress using a handy browser bookmark. You can also add your own descriptions and organize saved links using tags. @@ -89,7 +71,6 @@ Link Roundup posts have some default styling for your saved links to make sure y 4. [Using Saved Link and Link Roundup widgets](docs/widgets.md) 5. [__More →__](docs/readme.md) - ## Development For information on the development status of this plugin, check the [development milestones on github](https://github.com/INN/link-roundups/milestones). diff --git a/README.txt b/README.txt index 95da186..12c21ed 100644 --- a/README.txt +++ b/README.txt @@ -24,15 +24,29 @@ Collect links from around the web, turn them into roundup posts and streamline t == Installation == +Via WordPress.org: + 1. Install the Link Roundups plugin via the Wordpress.org plugin directory 2. Activate the plugin 3. Navigate to the Admin -> Link Roundups -> Options page to configure the plugin 4. Done! +Via manual upload: + +1. Download this plugin via the "Download" button on [WordPress.org](https://wordpress.org/plugins/link-roundups/#installation) or download a tagged release [from the GitHub releases page](https://github.com/INN/link-roundups/releases). +2. Unzip the package and rename the folder to "link-roundups" (The folder may be named "link-roundups-master" or something else. Uploading the plugin with this name may cause problems if you don't rename it before uploading to your site.) +3. Upload the folder to your WordPress installation in the `wp-content/plugins` directory +4. Log in to your site's WordPress Dashboard, then click on Plugins in the left hand menu +5. Select the Link Roundups plugin and click "activate" +6. Review the plugin settings under the Settings > Link Roundups menu + + [Read more about installing plugins here](https://codex.wordpress.org/Managing_Plugins#Installing_Plugins). == Changelog == += 0.5 (in development) + = 0.4.1 = - The default query for Saved Links in the roundup editor is now for the last 30 days diff --git a/wordpress-mailchimp-tools b/wordpress-mailchimp-tools index 12225e5..2e592c2 160000 --- a/wordpress-mailchimp-tools +++ b/wordpress-mailchimp-tools @@ -1 +1 @@ -Subproject commit 12225e55f2bbe7fff3baf2d93d4c1b5b83c0f316 +Subproject commit 2e592c294399c98088c5649d1b12cb488ba2fe36 From e8895407eedd047c94b67c48c3b2870af64394d8 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 11:54:41 -0800 Subject: [PATCH 03/67] Update changelog for #137 --- README.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.txt b/README.txt index 12c21ed..eb23eb9 100644 --- a/README.txt +++ b/README.txt @@ -47,6 +47,8 @@ Via manual upload: = 0.5 (in development) +- Fixes the saved_links_widget constructor for error-free PHP7 compatibility. Pull request [#137](https://github.com/INN/link-roundups/pull/137) for issue [#132](https://github.com/INN/link-roundups/issues/132). + = 0.4.1 = - The default query for Saved Links in the roundup editor is now for the last 30 days From 278f36058cd97384d75274771607a631d893c4b9 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 12:33:01 -0800 Subject: [PATCH 04/67] Update Travis config to test against PHP 5.6, 7.1, 7.2, 7.3. Raise min PHP version to 5.6. Leaves minimum WordPress version unchanged;; but we're only running automated tests against current WordPress versinos. --- .travis.yml | 48 ++++++++++++++++++++++++++++++++++++++++++------ README.txt | 8 ++++++-- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index a1b234b..9472080 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,53 @@ # Travis CI Configuration File +# Use Travis CI container-based infrastructure +# See: http://docs.travis-ci.com/user/workers/container-based-infrastructure/ +sudo: false + # Tell Travis CI we're using PHP language: php # PHP version used in first build configuration. -php: - - "5.3" - -sudo: false +# https://secure.php.net/supported-versions.php +# php: +# # PHP pre-5.6 is EOL +# - "5.6" +# # PHP 7.0 is EOL +# - "7.1" +# - "7.2" +# - "7.3" # WordPress version used in first build configuration. -env: - - WP_VERSION=4.2.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress +# env: +# - WP_VERSION=4.2.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + +# for a breakdown of why these versions were chosen, see https://github.com/INN/WP-DS-NPR-API/issues/12#issuecomment-374730094 +matrix: + include: + # PHPUnit 5 + - php: 5.6 + env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + # PHPUnit 6 + - php: 7.1 + env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + - php: 7.1 + env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + - php: 7.1 + env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + # PHPUnit 7 not supported by WordPress + - php: 7.2 + env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + - php: 7.2 + env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + - php: 7.2 + env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + # PHPUnit 8? + - php: 7.3 + env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + - php: 7.3 + env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + - php: 7.3 + env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress # Only test the develop and master branches for now branches: diff --git a/README.txt b/README.txt index 12c21ed..31c0069 100644 --- a/README.txt +++ b/README.txt @@ -2,11 +2,13 @@ Contributors: inn_nerds Donate link: https://inn.org/donate Tags: newsletters, mailchimp, links, curation, aggregation -Requires at least: 4.1 -Tested up to: 4.2.3 +Requires at least: 4.2 +Tested up to: 5.1 Stable tag: 0.5 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html +Minimum PHP: 5.6 + Collect links from around the web, turn them into roundup posts and streamline the production of daily/weekly roundup newsletters using MailChimp. @@ -47,6 +49,8 @@ Via manual upload: = 0.5 (in development) +- Updates Travis automated testing to support PHP 5.6, 7.1, 7.2 + = 0.4.1 = - The default query for Saved Links in the roundup editor is now for the last 30 days From 4adb6f7b741746f3bd2ed533b306e57be148798e Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 12:41:55 -0800 Subject: [PATCH 05/67] Undo updating WordPress mailchimp tools submodule --- wordpress-mailchimp-tools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wordpress-mailchimp-tools b/wordpress-mailchimp-tools index 2e592c2..04f246d 160000 --- a/wordpress-mailchimp-tools +++ b/wordpress-mailchimp-tools @@ -1 +1 @@ -Subproject commit 2e592c294399c98088c5649d1b12cb488ba2fe36 +Subproject commit 04f246d463053693bcbd355fb23ec3533a7d27bb From 7768aea3b239af20275d895b9f180d6d11ce27ac Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 17:55:54 -0800 Subject: [PATCH 06/67] Further slimming of GitHUB Readme to development-specific info --- README.md | 52 ++++------------------------------------------------ 1 file changed, 4 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 2d72930..da447a8 100644 --- a/README.md +++ b/README.md @@ -11,57 +11,11 @@ A WordPress plugin to make it easy to collect links from around the web, turn th ## Overview -The Link Roundup plugin allows you to: - -- Curate links -- Create link roundup posts -- Optionally send the roundup posts to MailChimp to be distributed to your subscribers - -It also includes two widgets: - -- A widget to display your recently saved links -- A widget to display your recent link roundup posts (with the ability to limit by category) - -The plugin includes a browser bookmark that you can drag to your browser's bookmark bar, allowing you to save links directly to your WordPress site. This bookmark attempts to pre-fill fields like link title, source, URL and featured image and also allows you to add a description to each link viewable when published on your site. - -In its previous life, Link Roundups was called Argo Links. +See the [overview on WordPress.org](https://wordpress.org/plugins/link-roundups/). ## Installation -See the [installation instructions on WordPress.org](https://wordpress.org/plugins/link-roundups/#installation) - -## Features - -#### Saved Links -![New Saved Link](./docs/img/new-saved-link.png) - -Curate links from around the web and save them in WordPress using a handy browser bookmark. You can also add your own descriptions and organize saved links using tags. - -#### Saved Links Widget - -Display a feed of your recent Saved Links, optionally filtered by tags. - -#### Link Roundups -![Recent Saved Links Panel in Link Roundups Editor](https://raw.githubusercontent.com/INN/link-roundups/master/docs/img/link-roundups-passthru.png) - -Build Link Roundup posts using a panel that displays and filters your recent Saved Links. Select the links you want to include and send them to the editor to compose your roundup posts. - -#### Link Roundups Widget - -Display most recent Link Roundup posts by date. Optionally, limit the roundup posts displayed by category. - -#### MailChimp API Integration - -Simplify your workflow by sending Link Roundup posts directly to MailChimp. Create a template for your roundups using a number of special template tags and then create a new MailChimp campaign directly from WordPress. You can even include sponsored links. - -#### Rename Link Roundups - -If you would prefer to call your roundup posts something else (daily digest, for example) you can rename the singular (default: Link Roundup) and plural form (default: Link Roundups) as well as the slug for posts in the Link Roundups custom post type. - -#### Custom HTML for Displaying Links - -Link Roundup posts have some default styling for your saved links to make sure your posts look great out of the box. If you'd prefer to modify the HTML output for Save Links or styling for sponsored links, you can do that from the plugin settings. - +See the [installation instructions on WordPress.org](https://wordpress.org/plugins/link-roundups/#installation). ## [Documentation](docs/readme.md) @@ -76,3 +30,5 @@ Link Roundup posts have some default styling for your saved links to make sure y For information on the development status of this plugin, check the [development milestones on github](https://github.com/INN/link-roundups/milestones). If you'd like to contribute to the project, please see our [contributing guidelines](contributing.md). + +This plugin depends on [INN/wordpress-mailchimp-tools](https://github.com/INN/wordpress-mailchimp-tools), as well as some components imported via composer. From e828fff8089199e71799a0eb514507c3fa6dfff7 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 17:57:13 -0800 Subject: [PATCH 07/67] Improved guess documentation within .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9472080..cdb9d45 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,14 +34,14 @@ matrix: env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.1 env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - # PHPUnit 7 not supported by WordPress + # PHPUnit 7, probably - php: 7.2 env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.2 env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.2 env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - # PHPUnit 8? + # PHPUnit 8, probably - php: 7.3 env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.3 From 9430b71ed1c722a5f552a0f1d6635c89e009ab80 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 18:23:48 -0800 Subject: [PATCH 08/67] Remove PHP/WordPress combinations currently unsupported by WordPress, due to a lack of backports: https://github.com/INN/link-roundups/issues/135#issuecomment-470357566 --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index cdb9d45..a4abb1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,17 +35,9 @@ matrix: - php: 7.1 env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress # PHPUnit 7, probably - - php: 7.2 - env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - - php: 7.2 - env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.2 env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress # PHPUnit 8, probably - - php: 7.3 - env: WP_VERSION=4.9 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - - php: 7.3 - env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.3 env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress From 5214bde1a5b6ac18d926d62e4586c866094dfcc5 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 18:24:06 -0800 Subject: [PATCH 09/67] get PHPUnit version in log output --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a4abb1c..642383f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,6 +62,7 @@ before_script: - sed -i "s/yourpasswordhere//" wp-tests-config.php - mv wp-tests-config.php "$WP_TESTS_DIR/wp-tests-config.php" - cd "$WP_CORE_DIR/src/wp-content/plugins/$SLUG" + - phpunit --version script: phpunit From 07289156d2587c00363c6484175a6f8c18a11153 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 18:24:16 -0800 Subject: [PATCH 10/67] Remove Hipchat notification script --- .travis.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 642383f..6fc6223 100644 --- a/.travis.yml +++ b/.travis.yml @@ -65,8 +65,3 @@ before_script: - phpunit --version script: phpunit - -notifications: - hipchat: - rooms: - secure: mrJDwl2LYmWGY6gKUEsSnbGp3mQ8UhVQkb9oBmRSDx9T/hCSDx4Q2KDLo0OqCFIwDB5BevP16vDDWVmsg8Ldwk+Hh0YAmdUqBAXe21+17ojqSIAdQg6LgLrEFEBNVBlPu89xonRMnsai34RDCoRt5c9OLuWgGVMAcTojpQvPiII= From 85c29a0fa2ec25cd52f534c15a7e5b527e1118b7 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 18:25:57 -0800 Subject: [PATCH 11/67] Comment out PHP 7.2 and 7.3 tests for WordPress 5.1, because those tests are not supported by WordPress at this time. See research described in https://github.com/INN/link-roundups/issues/135#issuecomment-470357566 A review of tests initially introduced in https://github.com/INN/link-roundups/pull/138: https://travis-ci.org/INN/link-roundups/builds/502881348?utm_source=github_status&utm_medium=notification - Travis is running PHP 7.2 with PHPunit 8. https://travis-ci.org/INN/link-roundups/jobs/502881355 - Travis is running PHP 7.3 with PHPunit 8. https://travis-ci.org/INN/link-roundups/jobs/502881358 - WP 4.9/5.0 don't have PHPUnit 8 forwards-compatibility shims in place; 5.1 does provide a warning about 8 not being supported. --- .travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6fc6223..777b1c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,12 +34,12 @@ matrix: env: WP_VERSION=5.0 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - php: 7.1 env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - # PHPUnit 7, probably - - php: 7.2 - env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress - # PHPUnit 8, probably - - php: 7.3 - env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + # PHPUnit 8, based on https://github.com/INN/link-roundups/issues/135#issuecomment-470357566 + #- php: 7.2 + # env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress + # PHPUnit 8, based on https://github.com/INN/link-roundups/issues/135#issuecomment-470357566 + #- php: 7.3 + # env: WP_VERSION=5.1 WP_TESTS_DIR=/tmp/wordpress/tests/phpunit WP_CORE_DIR=/tmp/wordpress # Only test the develop and master branches for now branches: From c886e927871b4ec0d7cb18b0c77451fec0fc8dba Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 19:08:18 -0800 Subject: [PATCH 12/67] Update INN/wordpress-mailchimp-tools to https://github.com/INN/wordpress-mailchimp-tools/pull/4 --- README.txt | 1 + wordpress-mailchimp-tools | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 9f300f6..aac74a7 100644 --- a/README.txt +++ b/README.txt @@ -49,6 +49,7 @@ Via manual upload: = 0.5 (in development) +- Updates the [WordPress Mailchimp Tools](https://github.com/INN/wordpress-mailchimp-tools) submodule to use version 3 of the Mailchimp API, and gain various compatibility updates for modern PHP versions. - Updates Travis automated testing to support PHP 5.6, 7.1, 7.2. Pull request [#138](https://github.com/INN/link-roundups/pull/138) for issue [#135](https://github.com/INN/link-roundups/issues/135). - Fixes the saved_links_widget constructor for error-free PHP7 compatibility. Pull request [#137](https://github.com/INN/link-roundups/pull/137) for issue [#132](https://github.com/INN/link-roundups/issues/132). diff --git a/wordpress-mailchimp-tools b/wordpress-mailchimp-tools index 04f246d..f3152de 160000 --- a/wordpress-mailchimp-tools +++ b/wordpress-mailchimp-tools @@ -1 +1 @@ -Subproject commit 04f246d463053693bcbd355fb23ec3533a7d27bb +Subproject commit f3152de62b86bcaf76214653e760ff781dc9151d From f3ee4cf75214812f7c6f24cdccda3e5b1122c0d1 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 6 Mar 2019 19:17:57 -0800 Subject: [PATCH 13/67] Update drewm/mailchimp-api dependency to 2.5 --- wordpress-mailchimp-tools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wordpress-mailchimp-tools b/wordpress-mailchimp-tools index f3152de..adf3909 160000 --- a/wordpress-mailchimp-tools +++ b/wordpress-mailchimp-tools @@ -1 +1 @@ -Subproject commit f3152de62b86bcaf76214653e760ff781dc9151d +Subproject commit adf39095716e1ef14833acae858d42f056c51d95 From 6a0407fed74015054b1853a13bf20e55b897d6bd Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 16:04:15 -0400 Subject: [PATCH 14/67] Update directions to the MailChimp API settings, and remove some references to Argo --- docs/mailchimp.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/mailchimp.md b/docs/mailchimp.md index c445ec2..b7fe0ca 100644 --- a/docs/mailchimp.md +++ b/docs/mailchimp.md @@ -14,11 +14,12 @@ In order to use the MailChimp features of Link Roundups, you'll need to sign up 2. Click on your account in the upper-right corner. In the drop-down menu, click "Account". 3. Click on "Extras", then "API keys". 4. Click "Create A Key". A new key will appear in the list. -5. Click the "Label" field of your new API key. Name it after the site you're using Argo Links on. For example: "example.com argo links" +5. Click the "Label" field of your new API key. Name it after the site you're using Link Roundupss on. For example: "example.com link roundups" 6. Copy the API key. This will be a long string of characters from 0-9 and a-f. -7. On your website, go to **Dashboard > Link Roundups > Options**. +7. On your website, go to **Dashboard > Settings > MailChimp Options**. 8. Paste the MailChimp API Key into the appropriate field, then check "Enable MailChimp API Integration". 9. Press "Save Changes". +10. Go to **Link Roundups > MailChimp Campaign Settings** to configure your MailChimp campaigns. ![Link Roundups MailChimp API settings](./img/link-roundups-mailchimp-integration.png) @@ -47,9 +48,9 @@ Then, edit the template to insert the following tags where you want them to appe #### Required Tags: -If these template tags are not present in your MailChimp template, you will be unable to create a new Argo Links Roundup Email Campaign. +If these template tags are not present in your MailChimp template, you will be unable to create a new Links Roundup Email Campaign. -- `*|ROUNDUPLINKS|*` - The actual list of links from the Argo Links Roundup post +- `*|ROUNDUPLINKS|*` - The actual list of links from the Links Roundup post #### Optional Tags: @@ -74,4 +75,4 @@ In the Link Roundups editor, above the standard WordPress "Publish" button you'l ![Create MailChimp Campaign button in the post editor](./img/link-roundup-mailchimp-button.png) -When you click "Create a MailChimp Campaign" you will be asked to confirm the action. The Link Roundups plugin will contact MailChimp to create the campaign and, upon success, present you with a link to finish editing the campaign in the MailChimp dashboard. \ No newline at end of file +When you click "Create a MailChimp Campaign" you will be asked to confirm the action. The Link Roundups plugin will contact MailChimp to create the campaign and, upon success, present you with a link to finish editing the campaign in the MailChimp dashboard. From a6b8b978a805d51d8cee235ad80f51d2512ff3e8 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 17:58:08 -0400 Subject: [PATCH 15/67] Switch to composer install of WordPress MailChimp Tools from INN --- .gitmodules | 3 -- composer.json | 5 ++ composer.lock | 111 ++++++++++++++++++++++++++++++++++++++ link-roundups.php | 8 ++- vendor/.gitkeep | 0 wordpress-mailchimp-tools | 1 - 6 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 vendor/.gitkeep delete mode 160000 wordpress-mailchimp-tools diff --git a/.gitmodules b/.gitmodules index 52c6a5f..403abfe 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "vendor/mailchimp-api-php"] path = vendor/mailchimp-api-php url = https://bitbucket.org/mailchimp/mailchimp-api-php.git -[submodule "wordpress-mailchimp-tools"] - path = wordpress-mailchimp-tools - url = https://github.com/INN/wordpress-mailchimp-tools.git diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..0ea3c04 --- /dev/null +++ b/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "inn/wordpress-mailchimp-tools": "dev-master" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..b449c06 --- /dev/null +++ b/composer.lock @@ -0,0 +1,111 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "47140de8b990115d2553d445998ba8d3", + "packages": [ + { + "name": "drewm/mailchimp-api", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/drewm/mailchimp-api.git", + "reference": "a6519cafba509e754e748d93f3532ad7f3aa515a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drewm/mailchimp-api/zipball/a6519cafba509e754e748d93f3532ad7f3aa515a", + "reference": "a6519cafba509e754e748d93f3532ad7f3aa515a", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "7.0.*", + "vlucas/phpdotenv": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "DrewM\\MailChimp\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Drew McLellan", + "email": "drew.mclellan@gmail.com", + "homepage": "http://allinthehead.com/" + } + ], + "description": "Super-simple, minimum abstraction MailChimp API v3 wrapper", + "homepage": "https://github.com/drewm/mailchimp-api", + "time": "2019-03-28T15:20:43+00:00" + }, + { + "name": "inn/wordpress-mailchimp-tools", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/INN/wordpress-mailchimp-tools.git", + "reference": "adf39095716e1ef14833acae858d42f056c51d95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/adf39095716e1ef14833acae858d42f056c51d95", + "reference": "adf39095716e1ef14833acae858d42f056c51d95", + "shasum": "" + }, + "require": { + "drewm/mailchimp-api": "^2.5", + "php": ">=5.2.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "inc/" + ], + "files": [ + "mailchimp-tools.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "INN Nerds", + "email": "nerds@inn.org", + "homepage": "http://nerds.inn.org", + "role": "Developer" + } + ], + "description": "Collection of tools for authoring MailChimp newsletters via the WordPress dashboard", + "homepage": "https://nerds.inn.org/", + "keywords": [ + "api", + "email" + ], + "time": "2019-03-07T03:17:40+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "inn/wordpress-mailchimp-tools": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/link-roundups.php b/link-roundups.php index bbf4387..f03419b 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -23,8 +23,12 @@ function activate_link_roundups() { /** * Mailchimp API and Modal Functions */ -if ( ! class_exists( 'MailChimp' ) && file_exists( __DIR__ . '/wordpress-mailchimp-tools/vendor/autoload.php' ) ) { - require_once __DIR__ . '/wordpress-mailchimp-tools/vendor/autoload.php'; +if ( ! class_exists( 'MailChimp' ) && file_exists( __DIR__ . '/vendor/autoload.php' ) ) { + require_once __DIR__ . '/vendor/autoload.php'; +} else { + error_log( + sprintf( + __('Your installation of the Link Roundups Plugin is missing its vendor dependencies. Please visit %1$s for more information.', 'link-roundups' } /** diff --git a/vendor/.gitkeep b/vendor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wordpress-mailchimp-tools b/wordpress-mailchimp-tools deleted file mode 160000 index adf3909..0000000 --- a/wordpress-mailchimp-tools +++ /dev/null @@ -1 +0,0 @@ -Subproject commit adf39095716e1ef14833acae858d42f056c51d95 From 987965d72edb33604f9d2fd171c001f7ba7b71a2 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 17:58:24 -0400 Subject: [PATCH 16/67] Add Text Domain to plugin readme.txt --- README.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/README.txt b/README.txt index aac74a7..19c94bd 100644 --- a/README.txt +++ b/README.txt @@ -8,6 +8,7 @@ Stable tag: 0.5 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html Minimum PHP: 5.6 +Text Domain: link-roundups Collect links from around the web, turn them into roundup posts and streamline the production of daily/weekly roundup newsletters using MailChimp. From 5d0f2a6c96194067bbe69938ee838d1743319c41 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 17:58:42 -0400 Subject: [PATCH 17/67] Add Text Domain to plugin php file --- link-roundups.php | 1 + 1 file changed, 1 insertion(+) diff --git a/link-roundups.php b/link-roundups.php index f03419b..16c4baa 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -7,6 +7,7 @@ Version: 0.5 Author URI: http://nerds.inn.org/ License: GPLv2 +Text Domain: link-roundups Seeking Link Roundups Post Type functions? They use lroundups instead of link-roundups. */ From 2edff3948f12f5d7d2dcd2cf19bab56cb1050743 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 17:59:57 -0400 Subject: [PATCH 18/67] Finish providing error log for composer install docs --- link-roundups.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/link-roundups.php b/link-roundups.php index 16c4baa..6af8c17 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -29,7 +29,11 @@ function activate_link_roundups() { } else { error_log( sprintf( - __('Your installation of the Link Roundups Plugin is missing its vendor dependencies. Please visit %1$s for more information.', 'link-roundups' + // translators: %1$s is a URL. + __('Your installation of the Link Roundups Plugin is missing its vendor dependencies. Please visit %1$s for more information.', 'link-roundups'), + 'https://github.com/INN/link-roundups/blob/136-update-wordpress-mailchimp-tools/docs/installation.md' + ) + ); } /** From 39d71ec53caae0b3a34a477e237e1169ce62108a Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 20:26:17 -0400 Subject: [PATCH 19/67] Pick up https://github.com/INN/wordpress-mailchimp-tools/commit/080e306b0e98284d3f1217a0019497549cae71c2 as a fix for https://github.com/INN/link-roundups/pull/139#issuecomment-488446996 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0ea3c04..ed78889 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master" + "inn/wordpress-mailchimp-tools": "dev-master#080e306b0e98284d3f1217a0019497549cae71c2" } } From 69251c1d42105bd5562788f03168865d6522949d Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 21:12:39 -0400 Subject: [PATCH 20/67] Fix for https://github.com/INN/link-roundups/pull/139#issuecomment-488522680 --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index ed78889..9f7fb90 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#080e306b0e98284d3f1217a0019497549cae71c2" + "inn/wordpress-mailchimp-tools": "dev-master#0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed" } } diff --git a/composer.lock b/composer.lock index b449c06..7a02f63 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "47140de8b990115d2553d445998ba8d3", + "content-hash": "240ac3bd27db66157f36af89637081ef", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "adf39095716e1ef14833acae858d42f056c51d95" + "reference": "0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/adf39095716e1ef14833acae858d42f056c51d95", - "reference": "adf39095716e1ef14833acae858d42f056c51d95", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed", + "reference": "0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-03-07T03:17:40+00:00" + "time": "2019-05-02T00:54:59+00:00" } ], "packages-dev": [], From e96f4126bdd119c59d6d3726b8f226b040b22878 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 21:51:18 -0400 Subject: [PATCH 21/67] fix a docs typo --- docs/mailchimp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mailchimp.md b/docs/mailchimp.md index b7fe0ca..a5d73d9 100644 --- a/docs/mailchimp.md +++ b/docs/mailchimp.md @@ -58,7 +58,7 @@ These template tags are not required, but you may wish to use them in your templ - `*|ROUNDUPTITLE|*` - The Link Roundup post title - `*|ROUNDUPAUTHOR|*` - The author of the Link Roundup post -- `*|ROUNDUPDATE|*` - The date the Links Roundu post was published +- `*|ROUNDUPDATE|*` - The date the Links Roundup post was published - `*|ROUNDUPPERMALINK|*` - A link back to the original Link Roundup post ## Choosing the MailChimp Template and List to use From c701cc51daa9182176e8fba1a8704c0428fae8dc Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 21:51:42 -0400 Subject: [PATCH 22/67] Capture error messages in the wordpress mailchimp tools --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 9f7fb90..ee56090 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed" + "inn/wordpress-mailchimp-tools": "dev-master#0ff5674b85b8604895a1022c9d0c7f83cf3a0c10" } } diff --git a/composer.lock b/composer.lock index 7a02f63..11202d1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "240ac3bd27db66157f36af89637081ef", + "content-hash": "cc4a407df2abacb65441aaf8849c1522", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed" + "reference": "0ff5674b85b8604895a1022c9d0c7f83cf3a0c10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed", - "reference": "0cfdf1d23a42cb3c5f4b4d85c0f6d7e5aaec87ed", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/0ff5674b85b8604895a1022c9d0c7f83cf3a0c10", + "reference": "0ff5674b85b8604895a1022c9d0c7f83cf3a0c10", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-02T00:54:59+00:00" + "time": "2019-05-02T01:34:38+00:00" } ], "packages-dev": [], From cd870b8a58941b6494720b7b62a43a5ad72ccdb6 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 1 May 2019 22:09:42 -0400 Subject: [PATCH 23/67] Update install docs! --- docs/installation.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index f3ea7f2..d0017b0 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -4,12 +4,13 @@ If you're an INN member making use of INN's [Largo Project](https://largoproject ## Manual Install -1. Download the [.zip archive](https://github.com/INN/link-roundups/archive/master.zip) from GitHub. +1. Download the latest master [.zip archive](https://github.com/INN/link-roundups/archive/master.zip) from GitHub, or `git clone https://github.com/INN/link-roundups.git`. 2. Extract the .zip archive. 3. Rename the plugin directory to `link-roundups`. If the directory the plugin files reside in is named anything else, the plugin will not work. +4. Run `composer install` — this requires [composer](https://getcomposer.org/), the PHP dependency manager. 4. Upload the plugin directory to you server's `wp-content/plugins` directory. 5. Activate the plugin through the [`Plugins` menu](https://codex.wordpress.org/Plugins_Screen) in WordPress. ## WordPress Plugin Directory or Your WordPress Dashboard -Coming Soon. Yes, exciting. +Install from https://wordpress.org/plugins/link-roundups/ ! From f6b3295c4e8c8e5c73d852789d62819e2e6ede53 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 2 May 2019 19:09:43 -0400 Subject: [PATCH 24/67] Update inn/wordpress-mailchimp-tools to include filter for https://github.com/INN/link-roundups/pull/139#issuecomment-488852947 --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index ee56090..992bbec 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#0ff5674b85b8604895a1022c9d0c7f83cf3a0c10" + "inn/wordpress-mailchimp-tools": "dev-master#4e768f7661a2fe8fc2785140e8313280eb230c3f" } } diff --git a/composer.lock b/composer.lock index 11202d1..6fa4071 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cc4a407df2abacb65441aaf8849c1522", + "content-hash": "91fe4a3da7e9e2f489f61ba4705aeeb9", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "0ff5674b85b8604895a1022c9d0c7f83cf3a0c10" + "reference": "4e768f7661a2fe8fc2785140e8313280eb230c3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/0ff5674b85b8604895a1022c9d0c7f83cf3a0c10", - "reference": "0ff5674b85b8604895a1022c9d0c7f83cf3a0c10", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/4e768f7661a2fe8fc2785140e8313280eb230c3f", + "reference": "4e768f7661a2fe8fc2785140e8313280eb230c3f", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-02T01:34:38+00:00" + "time": "2019-05-02T22:26:18+00:00" } ], "packages-dev": [], From 0e8736b6d6373eff6c948438e1dd8104069ed628 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 2 May 2019 19:10:26 -0400 Subject: [PATCH 25/67] Minor style cleanup in class-link-roundups.php --- inc/link-roundups/class-link-roundups.php | 30 ++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/inc/link-roundups/class-link-roundups.php b/inc/link-roundups/class-link-roundups.php index b557193..39caa3e 100644 --- a/inc/link-roundups/class-link-roundups.php +++ b/inc/link-roundups/class-link-roundups.php @@ -169,27 +169,29 @@ public static function add_custom_post_fields() { * @since 0.1 */ public static function display_custom_fields() { - ?> -
- - + Date: Thu, 2 May 2019 19:21:28 -0400 Subject: [PATCH 26/67] updated saved links list table class for compatibility Resolves https://github.com/INN/link-roundups/issues/128 --- inc/saved-links/README.md | 12 +- .../class-saved-links-list-table.php | 2 +- inc/saved-links/class-wp-list-table-clone.php | 586 ++++++++++-------- 3 files changed, 346 insertions(+), 254 deletions(-) diff --git a/inc/saved-links/README.md b/inc/saved-links/README.md index fe22255..e7d3c7f 100644 --- a/inc/saved-links/README.md +++ b/inc/saved-links/README.md @@ -1,12 +1,12 @@ # Updating WP_List_Table -class-wp-list-table-clone.php contains the file WordPress/wp-admin/includes/class-wp-list-table.php as seen at [Wordpress/Wordpress commit 4d34e373113ade2e6358289d02bbd8a7ce7ffbf9](https://github.com/WordPress/WordPress/blob/4d34e373113ade2e6358289d02bbd8a7ce7ffbf9/wp-admin/includes/class-wp-list-table.php#L11). +class-wp-list-table-clone.php contains the file WordPress/wp-admin/includes/class-wp-list-table.php as seen at [Wordpress/Wordpress tag 5.1.1](https://github.com/WordPress/WordPress/blob/5.1.1/wp-admin/includes/class-wp-list-table.php). If you would like to update this file: -1. wget https://github.com/WordPress/WordPress/blob/4d34e373113ade2e6358289d02bbd8a7ce7ffbf9/wp-admin/includes/class-wp-list-table.php -2. mv class-wp-list-table.php class-wp-list-table-clone.php -3. Edit class-wp-list-table-clone.php, replacing "class WP_List_Table" with "class clone_WP_List_table" to prevent naming conflicts +1. Download that file, at the latest stable version of WordPress +2. `mv class-wp-list-table.php class-wp-list-table-clone.php` +3. Edit `class-wp-list-table-clone.php`, replacing "class WP_List_Table" with "class clone_WP_List_Table" to prevent naming conflicts 4. please check that this plugin continues to work. ## Why aren't we using WP_List_Table directly? @@ -20,3 +20,7 @@ And as @aschweigert said on 2015-08-11: > if they say you should make a copy of it you should probably make a copy of it So now there's a copy of it. + +It needs to be updated on occasion, because of messages like this: + +> Declaration of Saved_Links_List_Table::bulk_actions($which) should be compatible with clone_WP_List_Table::bulk_actions($which = '') diff --git a/inc/saved-links/class-saved-links-list-table.php b/inc/saved-links/class-saved-links-list-table.php index 2462f58..c26ebfd 100644 --- a/inc/saved-links/class-saved-links-list-table.php +++ b/inc/saved-links/class-saved-links-list-table.php @@ -45,7 +45,7 @@ function __construct() { * @param string $which is either "top" or "bottom", and tells you which nav you're outputting. * @since 0.3.2 */ - function bulk_actions( $which ) { + function bulk_actions( $which = '' ) { // this will display at top and bottom ?> diff --git a/inc/saved-links/class-wp-list-table-clone.php b/inc/saved-links/class-wp-list-table-clone.php index 47a0379..fde2808 100644 --- a/inc/saved-links/class-wp-list-table-clone.php +++ b/inc/saved-links/class-wp-list-table-clone.php @@ -1,36 +1,41 @@ get_column_info() + * Stores the value returned by ->get_column_info(). * + * @since 4.1.0 * @var array */ protected $_column_headers; + /** + * {@internal Missing Summary} + * + * @var array + */ protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' ); - protected $compat_methods = array( 'set_pagination_args', 'get_views', 'get_bulk_actions', 'bulk_actions', - 'row_actions', 'months_dropdown', 'view_switcher', 'comments_bubble', 'get_items_per_page', 'pagination', - 'get_sortable_columns', 'get_column_info', 'get_table_classes', 'display_tablenav', 'extra_tablenav', - 'single_row_columns' ); + /** + * {@internal Missing Summary} + * + * @var array + */ + protected $compat_methods = array( + 'set_pagination_args', + 'get_views', + 'get_bulk_actions', + 'bulk_actions', + 'row_actions', + 'months_dropdown', + 'view_switcher', + 'comments_bubble', + 'get_items_per_page', + 'pagination', + 'get_sortable_columns', + 'get_column_info', + 'get_table_classes', + 'display_tablenav', + 'extra_tablenav', + 'single_row_columns', + ); /** * Constructor. @@ -94,7 +120,6 @@ class clone_WP_List_Table { * the default $args. * * @since 3.1.0 - * @access public * * @param array|string $args { * Array or string of arguments. @@ -104,31 +129,35 @@ class clone_WP_List_Table { * in the list table, e.g. 'posts'. Default empty. * @type string $singular Singular label for an object being listed, e.g. 'post'. * Default empty - * @type bool $ajax Whether the list table supports AJAX. This includes loading + * @type bool $ajax Whether the list table supports Ajax. This includes loading * and sorting data, for example. If true, the class will call - * the {@see _js_vars()} method in the footer to provide variables - * to any scripts handling AJAX events. Default false. + * the _js_vars() method in the footer to provide variables + * to any scripts handling Ajax events. Default false. * @type string $screen String containing the hook name used to determine the current * screen. If left null, the current screen will be automatically set. * Default null. * } */ public function __construct( $args = array() ) { - $args = wp_parse_args( $args, array( - 'plural' => '', - 'singular' => '', - 'ajax' => false, - 'screen' => null, - ) ); + $args = wp_parse_args( + $args, + array( + 'plural' => '', + 'singular' => '', + 'ajax' => false, + 'screen' => null, + ) + ); $this->screen = convert_to_screen( $args['screen'] ); add_filter( "manage_{$this->screen->id}_columns", array( $this, 'get_columns' ), 0 ); - if ( !$args['plural'] ) + if ( ! $args['plural'] ) { $args['plural'] = $this->screen->base; + } - $args['plural'] = sanitize_key( $args['plural'] ); + $args['plural'] = sanitize_key( $args['plural'] ); $args['singular'] = sanitize_key( $args['singular'] ); $this->_args = $args; @@ -141,16 +170,15 @@ public function __construct( $args = array() ) { if ( empty( $this->modes ) ) { $this->modes = array( 'list' => __( 'List View' ), - 'excerpt' => __( 'Excerpt View' ) + 'excerpt' => __( 'Excerpt View' ), ); } } /** - * Make private properties readable for backwards compatibility. + * Make private properties readable for backward compatibility. * * @since 4.0.0 - * @access public * * @param string $name Property to get. * @return mixed Property. @@ -162,10 +190,9 @@ public function __get( $name ) { } /** - * Make private properties settable for backwards compatibility. + * Make private properties settable for backward compatibility. * * @since 4.0.0 - * @access public * * @param string $name Property to check if set. * @param mixed $value Property value. @@ -178,10 +205,9 @@ public function __set( $name, $value ) { } /** - * Make private properties checkable for backwards compatibility. + * Make private properties checkable for backward compatibility. * * @since 4.0.0 - * @access public * * @param string $name Property to check if set. * @return bool Whether the property is set. @@ -193,10 +219,9 @@ public function __isset( $name ) { } /** - * Make private properties un-settable for backwards compatibility. + * Make private properties un-settable for backward compatibility. * * @since 4.0.0 - * @access public * * @param string $name Property to unset. */ @@ -207,12 +232,11 @@ public function __unset( $name ) { } /** - * Make private/protected methods readable for backwards compatibility. + * Make private/protected methods readable for backward compatibility. * * @since 4.0.0 - * @access public * - * @param callable $name Method to call. + * @param string $name Method to call. * @param array $arguments Arguments to pass when calling. * @return mixed|bool Return value of the callback, false otherwise. */ @@ -227,45 +251,47 @@ public function __call( $name, $arguments ) { * Checks the current user's permissions * * @since 3.1.0 - * @access public * @abstract */ public function ajax_user_can() { - die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); + die( 'function clone_WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); } /** * Prepares the list of items for displaying. - * @uses WP_List_Table::set_pagination_args() + * + * @uses clone_WP_List_Table::set_pagination_args() * * @since 3.1.0 - * @access public * @abstract */ public function prepare_items() { - die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' ); + die( 'function clone_WP_List_Table::prepare_items() must be over-ridden in a sub-class.' ); } /** * An internal method that sets all the necessary pagination arguments * - * @param array $args An associative array with information about the pagination - * @access protected + * @since 3.1.0 * - * @param array|string $args + * @param array|string $args Array or string of arguments with information about the pagination. */ protected function set_pagination_args( $args ) { - $args = wp_parse_args( $args, array( - 'total_items' => 0, - 'total_pages' => 0, - 'per_page' => 0, - ) ); + $args = wp_parse_args( + $args, + array( + 'total_items' => 0, + 'total_pages' => 0, + 'per_page' => 0, + ) + ); - if ( !$args['total_pages'] && $args['per_page'] > 0 ) + if ( ! $args['total_pages'] && $args['per_page'] > 0 ) { $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); + } // Redirect if page number is invalid and headers are not already sent. - if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { + if ( ! headers_sent() && ! wp_doing_ajax() && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); exit; } @@ -277,72 +303,75 @@ protected function set_pagination_args( $args ) { * Access the pagination args. * * @since 3.1.0 - * @access public * * @param string $key Pagination argument to retrieve. Common values include 'total_items', * 'total_pages', 'per_page', or 'infinite_scroll'. * @return int Number of items that correspond to the given pagination argument. */ public function get_pagination_arg( $key ) { - if ( 'page' == $key ) + if ( 'page' === $key ) { return $this->get_pagenum(); + } - if ( isset( $this->_pagination_args[$key] ) ) - return $this->_pagination_args[$key]; + if ( isset( $this->_pagination_args[ $key ] ) ) { + return $this->_pagination_args[ $key ]; + } } /** * Whether the table has items to display or not * * @since 3.1.0 - * @access public * * @return bool */ public function has_items() { - return !empty( $this->items ); + return ! empty( $this->items ); } /** * Message to be displayed when there are no items * * @since 3.1.0 - * @access public */ public function no_items() { _e( 'No items found.' ); } /** - * Display the search box. + * Displays the search box. * * @since 3.1.0 - * @access public * - * @param string $text The search button text - * @param string $input_id The search input id + * @param string $text The 'submit' button label. + * @param string $input_id ID attribute value for the search input field. */ public function search_box( $text, $input_id ) { - if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) + if ( empty( $_REQUEST['s'] ) && ! $this->has_items() ) { return; + } $input_id = $input_id . '-search-input'; - if ( ! empty( $_REQUEST['orderby'] ) ) + if ( ! empty( $_REQUEST['orderby'] ) ) { echo ''; - if ( ! empty( $_REQUEST['order'] ) ) + } + if ( ! empty( $_REQUEST['order'] ) ) { echo ''; - if ( ! empty( $_REQUEST['post_mime_type'] ) ) + } + if ( ! empty( $_REQUEST['post_mime_type'] ) ) { echo ''; - if ( ! empty( $_REQUEST['detached'] ) ) + } + if ( ! empty( $_REQUEST['detached'] ) ) { echo ''; -?> + } + ?> -get_views(); /** - * Filter the list of available list table views. + * Filters the list of available list table views. * * The dynamic portion of the hook name, `$this->screen->id`, refers * to the ID of the current screen, usually a string. * * @since 3.5.0 * - * @param array $views An array of available list table views. + * @param string[] $views An array of available list table views. */ $views = apply_filters( "views_{$this->screen->id}", $views ); - if ( empty( $views ) ) + if ( empty( $views ) ) { return; + } + + $this->screen->render_screen_reader_content( 'heading_views' ); echo "
    \n"; foreach ( $views as $class => $view ) { $views[ $class ] = "\t
  • $view"; } echo implode( " |
  • \n", $views ) . "\n"; - echo "
"; + echo ''; } /** @@ -394,7 +424,6 @@ public function views() { * of bulk actions available on this table. * * @since 3.1.0 - * @access protected * * @return array */ @@ -406,16 +435,15 @@ protected function get_bulk_actions() { * Display the bulk actions dropdown. * * @since 3.1.0 - * @access protected * * @param string $which The location of the bulk actions: 'top' or 'bottom'. - * This is designated as optional for backwards-compatibility. + * This is designated as optional for backward compatibility. */ protected function bulk_actions( $which = '' ) { if ( is_null( $this->_actions ) ) { - $no_new_actions = $this->_actions = $this->get_bulk_actions(); + $this->_actions = $this->get_bulk_actions(); /** - * Filter the list table Bulk Actions drop-down. + * Filters the list table Bulk Actions drop-down. * * The dynamic portion of the hook name, `$this->screen->id`, refers * to the ID of the current screen, usually a string. @@ -424,26 +452,26 @@ protected function bulk_actions( $which = '' ) { * * @since 3.5.0 * - * @param array $actions An array of the available bulk actions. + * @param string[] $actions An array of the available bulk actions. */ $this->_actions = apply_filters( "bulk_actions-{$this->screen->id}", $this->_actions ); - $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions ); - $two = ''; + $two = ''; } else { $two = '2'; } - if ( empty( $this->_actions ) ) + if ( empty( $this->_actions ) ) { return; + } - echo ""; - echo "\n"; + echo '\n"; foreach ( $this->_actions as $name => $title ) { - $class = 'edit' == $name ? ' class="hide-if-no-js"' : ''; + $class = 'edit' === $name ? ' class="hide-if-no-js"' : ''; - echo "\t\n"; + echo "\t" . '\n"; } echo "\n"; @@ -456,19 +484,21 @@ protected function bulk_actions( $which = '' ) { * Get the current action selected from the bulk actions dropdown. * * @since 3.1.0 - * @access public * * @return string|false The action name or False if no action was selected */ public function current_action() { - if ( isset( $_REQUEST['filter_action'] ) && ! empty( $_REQUEST['filter_action'] ) ) + if ( isset( $_REQUEST['filter_action'] ) && ! empty( $_REQUEST['filter_action'] ) ) { return false; + } - if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) + if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) { return $_REQUEST['action']; + } - if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) + if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) { return $_REQUEST['action2']; + } return false; } @@ -477,24 +507,24 @@ public function current_action() { * Generate row actions div * * @since 3.1.0 - * @access protected * - * @param array $actions The list of actions - * @param bool $always_visible Whether the actions should be always visible + * @param string[] $actions An array of action links. + * @param bool $always_visible Whether the actions should be always visible. * @return string */ protected function row_actions( $actions, $always_visible = false ) { $action_count = count( $actions ); - $i = 0; + $i = 0; - if ( !$action_count ) + if ( ! $action_count ) { return ''; + } $out = '
'; foreach ( $actions as $action => $link ) { ++$i; ( $i == $action_count ) ? $sep = '' : $sep = ' | '; - $out .= "$link$sep"; + $out .= "$link$sep"; } $out .= '
'; @@ -507,7 +537,6 @@ protected function row_actions( $actions, $always_visible = false ) { * Display a monthly dropdown for filtering items * * @since 3.1.0 - * @access protected * * @global wpdb $wpdb * @global WP_Locale $wp_locale @@ -518,7 +547,7 @@ protected function months_dropdown( $post_type ) { global $wpdb, $wp_locale; /** - * Filter whether to remove the 'Months' drop-down from the post list table. + * Filters whether to remove the 'Months' drop-down from the post list table. * * @since 4.2.0 * @@ -529,15 +558,28 @@ protected function months_dropdown( $post_type ) { return; } - $months = $wpdb->get_results( $wpdb->prepare( " + $extra_checks = "AND post_status != 'auto-draft'"; + if ( ! isset( $_GET['post_status'] ) || 'trash' !== $_GET['post_status'] ) { + $extra_checks .= " AND post_status != 'trash'"; + } elseif ( isset( $_GET['post_status'] ) ) { + $extra_checks = $wpdb->prepare( ' AND post_status = %s', $_GET['post_status'] ); + } + + $months = $wpdb->get_results( + $wpdb->prepare( + " SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = %s + $extra_checks ORDER BY post_date DESC - ", $post_type ) ); + ", + $post_type + ) + ); /** - * Filter the 'Months' drop-down results. + * Filters the 'Months' drop-down results. * * @since 3.7.0 * @@ -548,68 +590,70 @@ protected function months_dropdown( $post_type ) { $month_count = count( $months ); - if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + if ( ! $month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) { return; + } $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0; -?> + ?> - + ?>
-modes as $mode => $title ) { - $classes = array( 'view-' . $mode ); - if ( $current_mode == $mode ) - $classes[] = 'current'; - printf( - "%s\n", - esc_url( add_query_arg( 'mode', $mode ) ), - implode( ' ', $classes ), - $title - ); + modes as $mode => $title ) { + $classes = array( 'view-' . $mode ); + if ( $current_mode === $mode ) { + $classes[] = 'current'; } + printf( + "%s\n", + esc_url( add_query_arg( 'mode', $mode ) ), + implode( ' ', $classes ), + $title + ); + } ?>
-%s', + printf( + '%s', __( 'No comments' ) ); - // Approved comments have different display depending on some conditions. + // Approved comments have different display depending on some conditions. } elseif ( $approved_comments ) { - printf( '%s', - esc_url( add_query_arg( array( 'p' => $post_id, 'comment_status' => 'approved' ), admin_url( 'edit-comments.php' ) ) ), + printf( + '%s', + esc_url( + add_query_arg( + array( + 'p' => $post_id, + 'comment_status' => 'approved', + ), + admin_url( 'edit-comments.php' ) + ) + ), $approved_comments_number, $pending_comments ? $approved_phrase : $approved_only_phrase ); } else { - printf( '%s', + printf( + '%s', $approved_comments_number, $pending_comments ? __( 'No approved comments' ) : __( 'No comments' ) ); } if ( $pending_comments ) { - printf( '%s', - esc_url( add_query_arg( array( 'p' => $post_id, 'comment_status' => 'moderated' ), admin_url( 'edit-comments.php' ) ) ), + printf( + '%s', + esc_url( + add_query_arg( + array( + 'p' => $post_id, + 'comment_status' => 'moderated', + ), + admin_url( 'edit-comments.php' ) + ) + ), $pending_comments_number, $pending_phrase ); + } else { + printf( + '%s', + $pending_comments_number, + $approved_comments ? __( 'No pending comments' ) : __( 'No comments' ) + ); } } @@ -656,15 +726,15 @@ protected function comments_bubble( $post_id, $pending_comments ) { * Get the current page number * * @since 3.1.0 - * @access public * * @return int */ public function get_pagenum() { $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0; - if ( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) + if ( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) { $pagenum = $this->_pagination_args['total_pages']; + } return max( 1, $pagenum ); } @@ -673,7 +743,6 @@ public function get_pagenum() { * Get number of items to display on a single page * * @since 3.1.0 - * @access protected * * @param string $option * @param int $default @@ -681,11 +750,12 @@ public function get_pagenum() { */ protected function get_items_per_page( $option, $default = 20 ) { $per_page = (int) get_user_option( $option ); - if ( empty( $per_page ) || $per_page < 1 ) + if ( empty( $per_page ) || $per_page < 1 ) { $per_page = $default; + } /** - * Filter the number of items to be displayed on each page of the list table. + * Filters the number of items to be displayed on each page of the list table. * * The dynamic hook name, $option, refers to the `per_page` option depending * on the type of list table in use. Possible values include: 'edit_comments_per_page', @@ -697,14 +767,13 @@ protected function get_items_per_page( $option, $default = 20 ) { * * @param int $per_page Number of items to be displayed. Default 20. */ - return (int) apply_filters( $option, $per_page ); + return (int) apply_filters( "{$option}", $per_page ); } /** * Display the pagination. * * @since 3.1.0 - * @access protected * * @param string $which */ @@ -713,47 +782,53 @@ protected function pagination( $which ) { return; } - $total_items = $this->_pagination_args['total_items']; - $total_pages = $this->_pagination_args['total_pages']; + $total_items = $this->_pagination_args['total_items']; + $total_pages = $this->_pagination_args['total_pages']; $infinite_scroll = false; if ( isset( $this->_pagination_args['infinite_scroll'] ) ) { $infinite_scroll = $this->_pagination_args['infinite_scroll']; } + if ( 'top' === $which && $total_pages > 1 ) { + $this->screen->render_screen_reader_content( 'heading_pagination' ); + } + $output = '' . sprintf( _n( '%s item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . ''; - $current = $this->get_pagenum(); + $current = $this->get_pagenum(); + $removable_query_args = wp_removable_query_args(); $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); - $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); + $current_url = remove_query_arg( $removable_query_args, $current_url ); $page_links = array(); $total_pages_before = ''; - $total_pages_after = ''; + $total_pages_after = ''; $disable_first = $disable_last = $disable_prev = $disable_next = false; - if ( $current == 1 ) { + if ( $current == 1 ) { $disable_first = true; - $disable_prev = true; - } + $disable_prev = true; + } if ( $current == 2 ) { $disable_first = true; } - if ( $current == $total_pages ) { + if ( $current == $total_pages ) { $disable_last = true; $disable_next = true; - } + } if ( $current == $total_pages - 1 ) { $disable_last = true; } if ( $disable_first ) { - $page_links[] = ''; + $page_links[] = ''; } else { - $page_links[] = sprintf( "%s", + $page_links[] = sprintf( + "%s", esc_url( remove_query_arg( 'paged', $current_url ) ), __( 'First page' ), '«' @@ -761,42 +836,46 @@ protected function pagination( $which ) { } if ( $disable_prev ) { - $page_links[] = ''; + $page_links[] = ''; } else { - $page_links[] = sprintf( "%s", - esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ), + $page_links[] = sprintf( + "%s", + esc_url( add_query_arg( 'paged', max( 1, $current - 1 ), $current_url ) ), __( 'Previous page' ), '‹' ); } - if ( 'bottom' == $which ) { + if ( 'bottom' === $which ) { $html_current_page = $current; - $total_pages_before = '' . __( 'Current Page' ) . ''; + $total_pages_before = '' . __( 'Current Page' ) . ''; } else { - $html_current_page = sprintf( "%s", + $html_current_page = sprintf( + "%s", '', $current, strlen( $total_pages ) ); } $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); - $page_links[] = $total_pages_before . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . $total_pages_after; + $page_links[] = $total_pages_before . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . $total_pages_after; if ( $disable_next ) { - $page_links[] = ''; + $page_links[] = ''; } else { - $page_links[] = sprintf( "%s", - esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ), + $page_links[] = sprintf( + "%s", + esc_url( add_query_arg( 'paged', min( $total_pages, $current + 1 ), $current_url ) ), __( 'Next page' ), '›' ); } if ( $disable_last ) { - $page_links[] = ''; + $page_links[] = ''; } else { - $page_links[] = sprintf( "%s", + $page_links[] = sprintf( + "%s", esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ), __( 'Last page' ), '»' @@ -805,7 +884,7 @@ protected function pagination( $which ) { $pagination_links_class = 'pagination-links'; if ( ! empty( $infinite_scroll ) ) { - $pagination_links_class = ' hide-if-js'; + $pagination_links_class .= ' hide-if-js'; } $output .= "\n" . join( "\n", $page_links ) . ''; @@ -824,13 +903,12 @@ protected function pagination( $which ) { * 'internal-name' => 'Title' * * @since 3.1.0 - * @access public * @abstract * * @return array */ public function get_columns() { - die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' ); + die( 'function clone_WP_List_Table::get_columns() must be over-ridden in a sub-class.' ); } /** @@ -842,7 +920,6 @@ public function get_columns() { * The second format will make the initial sorting order be descending * * @since 3.1.0 - * @access protected * * @return array */ @@ -854,17 +931,20 @@ protected function get_sortable_columns() { * Gets the name of the default primary column. * * @since 4.3.0 - * @access protected * * @return string Name of the default primary column, in this case, an empty string. */ protected function get_default_primary_column_name() { $columns = $this->get_columns(); - $column = ''; + $column = ''; + + if ( empty( $columns ) ) { + return $column; + } // We need a primary defined so responsive views show something, // so let's fall back to the first non-checkbox column. - foreach( $columns as $col => $column_name ) { + foreach ( $columns as $col => $column_name ) { if ( 'cb' === $col ) { continue; } @@ -876,33 +956,43 @@ protected function get_default_primary_column_name() { return $column; } + /** + * Public wrapper for clone_WP_List_Table::get_default_primary_column_name(). + * + * @since 4.4.0 + * + * @return string Name of the default primary column. + */ + public function get_primary_column() { + return $this->get_primary_column_name(); + } + /** * Gets the name of the primary column. * * @since 4.3.0 - * @access protected * * @return string The name of the primary column. */ protected function get_primary_column_name() { - $columns = $this->get_columns(); + $columns = get_column_headers( $this->screen ); $default = $this->get_default_primary_column_name(); // If the primary column doesn't exist fall back to the // first non-checkbox column. if ( ! isset( $columns[ $default ] ) ) { - $default = WP_List_Table::get_default_primary_column_name(); + $default = clone_WP_List_Table::get_default_primary_column_name(); } /** - * Filter the name of the primary column for the current list table. + * Filters the name of the primary column for the current list table. * * @since 4.3.0 * * @param string $default Column name default for the specific list table, e.g. 'name'. * @param string $context Screen ID for specific list table, e.g. 'plugins'. */ - $column = apply_filters( 'list_table_primary_column', $default, $this->screen->id ); + $column = apply_filters( 'list_table_primary_column', $default, $this->screen->id ); if ( empty( $column ) || ! isset( $columns[ $column ] ) ) { $column = $default; @@ -915,7 +1005,6 @@ protected function get_primary_column_name() { * Get a list of all, hidden and sortable columns, with filter applied * * @since 3.1.0 - * @access protected * * @return array */ @@ -933,11 +1022,11 @@ protected function get_column_info() { } $columns = get_column_headers( $this->screen ); - $hidden = get_hidden_columns( $this->screen ); + $hidden = get_hidden_columns( $this->screen ); $sortable_columns = $this->get_sortable_columns(); /** - * Filter the list table sortable columns for a specific screen. + * Filters the list table sortable columns for a specific screen. * * The dynamic portion of the hook name, `$this->screen->id`, refers * to the ID of the current screen, usually a string. @@ -950,17 +1039,19 @@ protected function get_column_info() { $sortable = array(); foreach ( $_sortable as $id => $data ) { - if ( empty( $data ) ) + if ( empty( $data ) ) { continue; + } $data = (array) $data; - if ( !isset( $data[1] ) ) + if ( ! isset( $data[1] ) ) { $data[1] = false; + } - $sortable[$id] = $data; + $sortable[ $id ] = $data; } - $primary = $this->get_primary_column_name(); + $primary = $this->get_primary_column_name(); $this->_column_headers = array( $columns, $hidden, $sortable, $primary ); return $this->_column_headers; @@ -970,13 +1061,12 @@ protected function get_column_info() { * Return number of visible columns * * @since 3.1.0 - * @access public * * @return int */ public function get_column_count() { list ( $columns, $hidden ) = $this->get_column_info(); - $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); + $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); return count( $columns ) - count( $hidden ); } @@ -984,7 +1074,6 @@ public function get_column_count() { * Print column headers, accounting for hidden and sortable columns. * * @since 3.1.0 - * @access public * * @staticvar int $cb_counter * @@ -996,19 +1085,21 @@ public function print_column_headers( $with_id = true ) { $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); $current_url = remove_query_arg( 'paged', $current_url ); - if ( isset( $_GET['orderby'] ) ) + if ( isset( $_GET['orderby'] ) ) { $current_orderby = $_GET['orderby']; - else + } else { $current_orderby = ''; + } - if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] ) + if ( isset( $_GET['order'] ) && 'desc' === $_GET['order'] ) { $current_order = 'desc'; - else + } else { $current_order = 'asc'; + } if ( ! empty( $columns['cb'] ) ) { static $cb_counter = 1; - $columns['cb'] = '' + $columns['cb'] = '' . ''; $cb_counter++; } @@ -1020,24 +1111,25 @@ public function print_column_headers( $with_id = true ) { $class[] = 'hidden'; } - if ( 'cb' == $column_key ) + if ( 'cb' === $column_key ) { $class[] = 'check-column'; - elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) + } elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) { $class[] = 'num'; + } if ( $column_key === $primary ) { $class[] = 'column-primary'; } - if ( isset( $sortable[$column_key] ) ) { - list( $orderby, $desc_first ) = $sortable[$column_key]; + if ( isset( $sortable[ $column_key ] ) ) { + list( $orderby, $desc_first ) = $sortable[ $column_key ]; - if ( $current_orderby == $orderby ) { - $order = 'asc' == $current_order ? 'desc' : 'asc'; + if ( $current_orderby === $orderby ) { + $order = 'asc' === $current_order ? 'desc' : 'asc'; $class[] = 'sorted'; $class[] = $current_order; } else { - $order = $desc_first ? 'desc' : 'asc'; + $order = $desc_first ? 'desc' : 'asc'; $class[] = 'sortable'; $class[] = $desc_first ? 'asc' : 'desc'; } @@ -1045,12 +1137,13 @@ public function print_column_headers( $with_id = true ) { $column_display_name = '' . $column_display_name . ''; } - $tag = ( 'cb' === $column_key ) ? 'td' : 'th'; + $tag = ( 'cb' === $column_key ) ? 'td' : 'th'; $scope = ( 'th' === $tag ) ? 'scope="col"' : ''; - $id = $with_id ? "id='$column_key'" : ''; + $id = $with_id ? "id='$column_key'" : ''; - if ( !empty( $class ) ) + if ( ! empty( $class ) ) { $class = "class='" . join( ' ', $class ) . "'"; + } echo "<$tag $scope $id $class>$column_display_name"; } @@ -1060,13 +1153,14 @@ public function print_column_headers( $with_id = true ) { * Display the table * * @since 3.1.0 - * @access public */ public function display() { $singular = $this->_args['singular']; $this->display_tablenav( 'top' ); -?> + + $this->screen->render_screen_reader_content( 'heading_list' ); + ?> @@ -1074,10 +1168,13 @@ public function display() { - > + } + ?> + > display_rows_or_placeholder(); ?> @@ -1088,15 +1185,14 @@ public function display() {
-display_tablenav( 'bottom' ); } /** - * Get a list of CSS classes for the list table table tag. + * Get a list of CSS classes for the clone_WP_List_Table table tag. * * @since 3.1.0 - * @access protected * * @return array List of CSS classes for the table tag. */ @@ -1108,33 +1204,34 @@ protected function get_table_classes() { * Generate the table navigation above or below the table * * @since 3.1.0 - * @access protected * @param string $which */ protected function display_tablenav( $which ) { - if ( 'top' == $which ) + if ( 'top' === $which ) { wp_nonce_field( 'bulk-' . $this->_args['plural'] ); -?> + } + ?>
+ has_items() ) : ?>
bulk_actions( $which ); ?>
-extra_tablenav( $which ); $this->pagination( $which ); -?> + ?>
-has_items() ) { @@ -1160,18 +1256,17 @@ public function display_rows_or_placeholder() { * Generate the table rows * * @since 3.1.0 - * @access public */ public function display_rows() { - foreach ( $this->items as $item ) + foreach ( $this->items as $item ) { $this->single_row( $item ); + } } /** * Generates content for a single row of the table * * @since 3.1.0 - * @access public * * @param object $item The current item */ @@ -1182,14 +1277,12 @@ public function single_row( $item ) { } /** - * * @param object $item * @param string $column_name */ protected function column_default( $item, $column_name ) {} /** - * * @param object $item */ protected function column_cb( $item ) {} @@ -1198,7 +1291,6 @@ protected function column_cb( $item ) {} * Generates the columns for a single row of the table * * @since 3.1.0 - * @access protected * * @param object $item The current item */ @@ -1221,7 +1313,7 @@ protected function single_row_columns( $item ) { $attributes = "class='$classes' $data"; - if ( 'cb' == $column_name ) { + if ( 'cb' === $column_name ) { echo ''; echo $this->column_cb( $item ); echo ''; @@ -1237,12 +1329,12 @@ protected function single_row_columns( $item ) { echo ""; echo call_user_func( array( $this, 'column_' . $column_name ), $item ); echo $this->handle_row_actions( $item, $column_name, $primary ); - echo ""; + echo ''; } else { echo ""; echo $this->column_default( $item, $column_name ); echo $this->handle_row_actions( $item, $column_name, $primary ); - echo ""; + echo ''; } } } @@ -1251,22 +1343,20 @@ protected function single_row_columns( $item ) { * Generates and display row actions links for the list table. * * @since 4.3.0 - * @access protected * * @param object $item The item being acted upon. * @param string $column_name Current column name. * @param string $primary Primary column name. - * @return string The row actions output. In this case, an empty string. + * @return string The row actions HTML, or an empty string if the current column is the primary column. */ protected function handle_row_actions( $item, $column_name, $primary ) { - return ''; - } + return $column_name === $primary ? '' : ''; + } /** * Handle an incoming ajax request (called from admin-ajax.php) * * @since 3.1.0 - * @access public */ public function ajax_response() { $this->prepare_items(); @@ -1289,7 +1379,7 @@ public function ajax_response() { ); } if ( isset( $this->_pagination_args['total_pages'] ) ) { - $response['total_pages'] = $this->_pagination_args['total_pages']; + $response['total_pages'] = $this->_pagination_args['total_pages']; $response['total_pages_i18n'] = number_format_i18n( $this->_pagination_args['total_pages'] ); } @@ -1298,8 +1388,6 @@ public function ajax_response() { /** * Send required variables to JavaScript land - * - * @access public */ public function _js_vars() { $args = array( @@ -1307,7 +1395,7 @@ public function _js_vars() { 'screen' => array( 'id' => $this->screen->id, 'base' => $this->screen->base, - ) + ), ); printf( "\n", wp_json_encode( $args ) ); From 0c45e0d2c15a97b7b07775a1f433525ce9e41739 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 2 May 2019 19:24:50 -0400 Subject: [PATCH 27/67] wrap the 'Source:' text for the saved links widget's p.source in a span.source-label Resolves https://github.com/INN/link-roundups/issues/144 --- inc/saved-links/class-saved-links-widget.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/saved-links/class-saved-links-widget.php b/inc/saved-links/class-saved-links-widget.php index 66dfe61..b8e65c0 100644 --- a/inc/saved-links/class-saved-links-widget.php +++ b/inc/saved-links/class-saved-links-widget.php @@ -65,7 +65,7 @@ function widget( $args, $instance ) { echo '

'; } if ( isset($custom["lr_source"][0] ) ) { - $lr_source = '

' . __('Source: ', 'link-roundups') . ''; + $lr_source = '

' . __('Source: ', 'link-roundups') . ''; if ( !empty( $custom["lr_url"][0] ) ) { $lr_source .= ' Date: Thu, 2 May 2019 19:26:43 -0400 Subject: [PATCH 28/67] Latest version of release.sh Resolves https://github.com/INN/link-roundups/issues/140 --- release.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/release.sh b/release.sh index f1f618e..589934f 100755 --- a/release.sh +++ b/release.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash +# +# This file is a WordPress.org plugin release script. +# For more about how it works, see the documentation at +# https://github.com/INN/docs/blob/master/projects/wordpress-plugins/release.sh.md +# RELEASE_DIR=release; SVN_PATH=$RELEASE_DIR/svn; SVN_REPO="https://plugins.svn.wordpress.org/link-roundups/"; @@ -16,6 +21,7 @@ Gruntfile.js release/\* tests/\* node_modules/\* +./\*\*/.\* ); function ensure_release_dir() { @@ -278,6 +284,9 @@ function help_text() { echo ""; echo "--help: Display this help screen and exit."; echo ""; + echo "For more information about this script, see: + https://github.com/INN/docs/blob/master/projects/wordpress-plugins/release.sh.md"; + echo ""; exit 0; } From e17fab55da56bc907af00a5582ddde5c69956a49 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 2 May 2019 19:32:21 -0400 Subject: [PATCH 29/67] Add note about release process to new maintainers.md file, resolving https://github.com/INN/link-roundups/issues/140 --- docs/maintainers.md | 11 +++++++++++ docs/readme.md | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 docs/maintainers.md diff --git a/docs/maintainers.md b/docs/maintainers.md new file mode 100644 index 0000000..333b12c --- /dev/null +++ b/docs/maintainers.md @@ -0,0 +1,11 @@ +# Developer notes: + +## Class Saved_Links_List_Table + +See [the note in that class' directory](../inc/saved-links/README.md). + +## Releasing updates + +See https://github.com/INN/docs/blob/master/projects/wordpress-plugins/release.sh.md + +The best thing to do is to copy that checklist into [a new GitHub issue](https://github.com/INN/link-roundups/issues/new) for each release of the plugin. diff --git a/docs/readme.md b/docs/readme.md index ef7be07..7f722d4 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -18,4 +18,5 @@ Get the brief introduction to plugin features in [the main Readme.md file](https 3. [Link Roundup Posts](link-roundups.md) 4. [MailChimp Integration](mailchimp.md) 5. [WordPress Widgets](widgets.md) -6. [Troubleshooting](troubleshooting.md) \ No newline at end of file +6. [Troubleshooting](troubleshooting.md) +7. [Notes for this plugin's maintainers](maintainers.md) From e172107723edd3e66ea1c9d5dd944eaaaa02d120 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 2 May 2019 19:33:36 -0400 Subject: [PATCH 30/67] Bump 'Tested up to:' to 5.2. Resolves https://github.com/INN/link-roundups/issues/134 --- README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 19c94bd..bfba6ba 100644 --- a/README.txt +++ b/README.txt @@ -3,7 +3,7 @@ Contributors: inn_nerds Donate link: https://inn.org/donate Tags: newsletters, mailchimp, links, curation, aggregation Requires at least: 4.2 -Tested up to: 5.1 +Tested up to: 5.2 Stable tag: 0.5 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html From 0561526e5b098cf38ad0b884ff147c95717983f4 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 2 May 2019 20:16:04 -0400 Subject: [PATCH 31/67] Make sure numeric inputs in widget forms have type=number Resolves https://github.com/INN/link-roundups/issues/143 --- inc/link-roundups/class-link-roundups-widget.php | 6 +++--- inc/saved-links/class-saved-links-widget.php | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/inc/link-roundups/class-link-roundups-widget.php b/inc/link-roundups/class-link-roundups-widget.php index 54fa22e..48067c0 100644 --- a/inc/link-roundups/class-link-roundups-widget.php +++ b/inc/link-roundups/class-link-roundups-widget.php @@ -81,12 +81,12 @@ function form( $instance ) {

- +

- +

@@ -102,7 +102,7 @@ function form( $instance ) {

- +

- +

- +

@@ -136,7 +136,7 @@ function form( $instance ) {

- +

@@ -153,7 +153,7 @@ function form( $instance ) {

- +

Date: Thu, 2 May 2019 20:27:26 -0400 Subject: [PATCH 32/67] Clean up code formatting in Saved Links List Widget, resolve problem with empty sources displaying the source label. Resolves https://github.com/INN/link-roundups/issues/106 --- inc/saved-links/class-saved-links-widget.php | 105 ++++++++++--------- 1 file changed, 58 insertions(+), 47 deletions(-) diff --git a/inc/saved-links/class-saved-links-widget.php b/inc/saved-links/class-saved-links-widget.php index 27cf32f..0c05e0c 100644 --- a/inc/saved-links/class-saved-links-widget.php +++ b/inc/saved-links/class-saved-links-widget.php @@ -23,7 +23,9 @@ function widget( $args, $instance ) { echo $before_widget; - if ( $title ) echo $before_title . $title . $after_title; + if ( $title ) { + echo $before_title . $title . $after_title; + } $query_args = array ( 'post__not_in' => get_option( 'sticky_posts' ), @@ -34,55 +36,64 @@ function widget( $args, $instance ) { $my_query = new WP_Query( $query_args ); if ( $my_query->have_posts() ) { - while ( $my_query->have_posts() ) : $my_query->the_post(); - $custom = get_post_custom( $post->ID ); - - // skip roundups - if ( get_post_type( $post ) === 'roundup' ) continue; ?> - -
- ID) && $instance['show_featured_image'] == 'on') { - echo get_the_post_thumbnail($post->ID); - } ?> - -
have_posts() ) { + $my_query->the_post(); + $custom = get_post_custom( $post->ID ); + + // skip roundups + if ( get_post_type( $post ) === 'roundup' ) { + continue; + } + + ?> + +
+ ID) && $instance['show_featured_image'] == 'on') { + echo get_the_post_thumbnail($post->ID); } - $output .= '>' . get_the_title() . ''; - } else { - $output = get_the_title(); - } - echo $output; - ?>
- - '; - echo ( function_exists( 'largo_trim_sentences' ) ) ? largo_trim_sentences($custom["lr_desc"][0], $instance['num_sentences']) : $custom["lr_desc"][0]; - echo '

'; - } - if ( isset($custom["lr_source"][0] ) ) { - $lr_source = '

' . __('Source: ', 'link-roundups') . ''; - if ( !empty( $custom["lr_url"][0] ) ) { - $lr_source .= ' + +

+ ' . get_the_title() . ''; + } else { + $output = get_the_title(); } - $lr_source .= '>' . $custom["lr_source"][0] . ''; - } else { - $lr_source .= $custom["lr_source"][0]; + echo $output; + ?> +
+ + '; + echo ( function_exists( 'largo_trim_sentences' ) ) ? largo_trim_sentences($custom["lr_desc"][0], $instance['num_sentences']) : $custom["lr_desc"][0]; + echo '

'; } - $lr_source .= '

'; - echo $lr_source; - } - ?> -
- - ' . __('Source: ', 'link-roundups') . ''; + if ( !empty( $custom["lr_url"][0] ) ) { + $lr_source .= ''; + } else { + $lr_source .= $custom["lr_source"][0]; + } + $lr_source .= '

'; + echo $lr_source; + } + ?> + + You don\'t have any recent links or the link roundups plugin is not active.

', 'link-roundups' ); } // end recent links From 874aeb4d475b84bdfefaeb2aa4231513a71c7921 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Fri, 3 May 2019 19:52:53 -0400 Subject: [PATCH 33/67] A test filter for the WordPress MailChimp Tools --- inc/link-roundups/class-link-roundups.php | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/inc/link-roundups/class-link-roundups.php b/inc/link-roundups/class-link-roundups.php index 39caa3e..0888afe 100644 --- a/inc/link-roundups/class-link-roundups.php +++ b/inc/link-roundups/class-link-roundups.php @@ -34,6 +34,8 @@ public static function init() { // Make sure our custom post type gets pulled into the river add_filter( 'pre_get_posts', array( __CLASS__, 'lr_get_posts' ) ); + // Pass our custom data to the WordPress MailChimp Tools + add_filter( 'mailchimp_tools_campaign_content', array( __CLASS__, 'mailchimp_tools_campaign_content' ) ); } // Pull the linkroundups into the queries for is_home, is_tag, is_category, is_archive @@ -195,6 +197,9 @@ public static function display_custom_fields() { * @since 0.1 */ public static function save_custom_fields( $post_id ) { + if ( isset( $_POST ) ) { + // error_log(var_export( $_POST['mailchimp'], true)); + } if ( isset( $_POST['lr_url'] ) ){ update_post_meta( ( isset( $_POST['post_id'] ) ? $_POST['post_ID'] : $post_id ), 'lr_url', $_POST["lr_url"] ); } @@ -245,4 +250,31 @@ public static function build_lroundups_options_page() { // get settings fields for options page include_once dirname( LROUNDUPS_PLUGIN_FILE ) . '/templates/options.php'; } + + /** + * Pass our custom parameters to the campaign as template parameters + * + * @link https://github.com/INN/link-roundups/pull/139#issuecomment-488852947 + * @param Array $params the request body parameters, as described in the "put" section of https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/content/#%20 + * @param WP_Post $post The post that is being turned into a MailChimp Campaign + * @param int $id The campaign ID + * @uses mailchimp_tools_get_existing_campaign_data_for_post + */ + public static function mailchimp_tools_campaign_content( $params, $post = null, $id = null ) { + if ( empty ( $post ) || empty ( $id ) ) { + return $params; + } + if ( ! function_exists( 'mailchimp_tools_get_existing_campaign_data_for_post' ) ) { + return $params; + } + + $cache = mailchimp_tools_get_existing_campaign_data_for_post( $post, true ); + if ( empty ( $cache ) ) { + return $params; + } + error_log(var_export( $params, true)); + error_log(var_export( $cache, true)); + + return $params; + } } From 1f12c22838f21e3fe622b2e657a2a0122075a8ad Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Tue, 7 May 2019 22:37:02 -0400 Subject: [PATCH 34/67] update wordpress-mailchimp-tools and commit package-lock.json --- composer.json | 2 +- composer.lock | 10 +++++----- package-lock.json | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 package-lock.json diff --git a/composer.json b/composer.json index 992bbec..ba72cb5 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#4e768f7661a2fe8fc2785140e8313280eb230c3f" + "inn/wordpress-mailchimp-tools": "dev-master#4e07d4aab9cd43d8397d7d525addcc19699b3d8d" } } diff --git a/composer.lock b/composer.lock index 6fa4071..4caf4e7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "91fe4a3da7e9e2f489f61ba4705aeeb9", + "content-hash": "ba6cfea6e3786d295e278962e3f9cb61", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "4e768f7661a2fe8fc2785140e8313280eb230c3f" + "reference": "4e07d4aab9cd43d8397d7d525addcc19699b3d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/4e768f7661a2fe8fc2785140e8313280eb230c3f", - "reference": "4e768f7661a2fe8fc2785140e8313280eb230c3f", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/4e07d4aab9cd43d8397d7d525addcc19699b3d8d", + "reference": "4e07d4aab9cd43d8397d7d525addcc19699b3d8d", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-02T22:26:18+00:00" + "time": "2019-05-07T23:29:48+00:00" } ], "packages-dev": [], diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..634c8a1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "link-roundups", + "version": "0.5", + "lockfileVersion": 1 +} From 472b808a7d4fe7bcea26e1803dde58921fa1002d Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Tue, 7 May 2019 23:36:25 -0400 Subject: [PATCH 35/67] Create a filter on mailchimp_tools_campaign_content to provide our template sections --- .../class-link-roundups-editor.php | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/inc/link-roundups/class-link-roundups-editor.php b/inc/link-roundups/class-link-roundups-editor.php index 6605c23..c171332 100644 --- a/inc/link-roundups/class-link-roundups-editor.php +++ b/inc/link-roundups/class-link-roundups-editor.php @@ -10,6 +10,7 @@ public static function init() { add_action( 'wp_ajax_roundup_block_posts', array( __CLASS__, 'roundup_block_posts' ) ); add_action( 'wp_ajax_roundup_update_post', array( __CLASS__, 'roundup_update_post' ) ); add_shortcode( 'roundup_block', array( __CLASS__, 'roundup_block_shortcode' ) ); + add_filter( 'mailchimp_tools_campaign_content', array( __CLASS__, 'mailchimp_tools_campaign_content' ), 10 ); } /** @@ -368,7 +369,7 @@ public static function roundup_block_posts_query() { } /* - * Load posts for the roundupp block editor + * Load posts for the roundup block editor * * @since 0.3.2 */ @@ -378,4 +379,46 @@ public static function roundup_block_posts() { print json_encode($posts); wp_die(); } + + /** + * Apply information from a Link Roundup post to a WordPress MailChimp Tools email via the appropriate filter + * + * @param Array $params An array of request body parameters, as described in the "put" section of https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/content/#%20 + * @param WP_Post $post The post that is being turned into a MailChimp Campaign + * @param int $id The campaign ID + * @return Array $params + * + * @link the commit that implemented this filter: https://github.com/INN/wordpress-mailchimp-tools/commit/4e768f7661a2fe8fc2785140e8313280eb230c3f + * @link Why: https://github.com/INN/link-roundups/pull/139#issuecomment-488852947 + */ + public static function mailchimp_tools_campaign_content( $array, $post, $id ) { + error_log(var_export( $post, true)); + error_log(var_export( $id, true)); + // shortcut if post not set + if ( empty( $post ) ) { + return $array; + } + + if ( ! ( $post instanceof WP_Post ) ) { + $post = get_post( $post ); + } + + if ( ! isset( $array['template'] ) ) { + $array['template'] = array(); + } + if ( ! isset( $array['template']['sections'] ) ) { + $array['template']['sections'] = array(); + } + $array['template']['sections']['ROUNDUPLINKS'] = apply_filters( 'the_content', $post->post_content ); + $array['template']['sections']['ROUNDUPTITLE'] = $post->post_title; + $array['template']['sections']['ROUNDUPDATE'] = get_the_date( '', $post->ID ); + $array['template']['sections']['ROUNDUPPERMALINK'] = get_post_permalink( $post->ID ); + + $author = get_user_by( 'id', $post->post_author ); + $array['template']['sections']['ROUNDUPAUTHOR'] = $author->display_name; + + error_log(var_export( $array, true)); + + return $array; + } } From f6dd997ad08502fc565f7a558e3f057e0f75aa9f Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 8 May 2019 00:11:11 -0400 Subject: [PATCH 36/67] Correct number of parameters, and then make the mc:edit section names lowercase in accordance with MailChimp's practice. --- .../class-link-roundups-editor.php | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/inc/link-roundups/class-link-roundups-editor.php b/inc/link-roundups/class-link-roundups-editor.php index c171332..7f225fd 100644 --- a/inc/link-roundups/class-link-roundups-editor.php +++ b/inc/link-roundups/class-link-roundups-editor.php @@ -10,7 +10,7 @@ public static function init() { add_action( 'wp_ajax_roundup_block_posts', array( __CLASS__, 'roundup_block_posts' ) ); add_action( 'wp_ajax_roundup_update_post', array( __CLASS__, 'roundup_update_post' ) ); add_shortcode( 'roundup_block', array( __CLASS__, 'roundup_block_shortcode' ) ); - add_filter( 'mailchimp_tools_campaign_content', array( __CLASS__, 'mailchimp_tools_campaign_content' ), 10 ); + add_filter( 'mailchimp_tools_campaign_content', array( __CLASS__, 'mailchimp_tools_campaign_content' ), 10, 3 ); } /** @@ -383,7 +383,7 @@ public static function roundup_block_posts() { /** * Apply information from a Link Roundup post to a WordPress MailChimp Tools email via the appropriate filter * - * @param Array $params An array of request body parameters, as described in the "put" section of https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/content/#%20 + * @param Array $campaign_params An array of request body parameters, as described in the "put" section of https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/content/#%20 * @param WP_Post $post The post that is being turned into a MailChimp Campaign * @param int $id The campaign ID * @return Array $params @@ -391,34 +391,33 @@ public static function roundup_block_posts() { * @link the commit that implemented this filter: https://github.com/INN/wordpress-mailchimp-tools/commit/4e768f7661a2fe8fc2785140e8313280eb230c3f * @link Why: https://github.com/INN/link-roundups/pull/139#issuecomment-488852947 */ - public static function mailchimp_tools_campaign_content( $array, $post, $id ) { - error_log(var_export( $post, true)); + public static function mailchimp_tools_campaign_content( $campaign_params, $post, $id ) { error_log(var_export( $id, true)); // shortcut if post not set if ( empty( $post ) ) { - return $array; + return $campaign_params; } if ( ! ( $post instanceof WP_Post ) ) { $post = get_post( $post ); } - if ( ! isset( $array['template'] ) ) { - $array['template'] = array(); + if ( ! isset( $campaign_params['template'] ) ) { + $campaign_params['template'] = array(); } - if ( ! isset( $array['template']['sections'] ) ) { - $array['template']['sections'] = array(); + if ( ! isset( $campaign_params['template']['sections'] ) ) { + $campaign_params['template']['sections'] = array(); } - $array['template']['sections']['ROUNDUPLINKS'] = apply_filters( 'the_content', $post->post_content ); - $array['template']['sections']['ROUNDUPTITLE'] = $post->post_title; - $array['template']['sections']['ROUNDUPDATE'] = get_the_date( '', $post->ID ); - $array['template']['sections']['ROUNDUPPERMALINK'] = get_post_permalink( $post->ID ); + $campaign_params['template']['sections']['rounduplinks'] = apply_filters( 'the_content', $post->post_content ); + $campaign_params['template']['sections']['rounduptitle'] = $post->post_title; + $campaign_params['template']['sections']['roundupdate'] = get_the_date( '', $post->ID ); + $campaign_params['template']['sections']['rounduppermalink'] = get_post_permalink( $post->ID ); $author = get_user_by( 'id', $post->post_author ); - $array['template']['sections']['ROUNDUPAUTHOR'] = $author->display_name; + $campaign_params['template']['sections']['roundupauthor'] = $author->display_name; - error_log(var_export( $array, true)); + error_log(var_export( $campaign_params, true)); - return $array; + return $campaign_params; } } From 986b575f94a31491104c3ae09d526be64f385556 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 8 May 2019 00:15:47 -0400 Subject: [PATCH 37/67] Remove partially-created filter on 'mailchimp_tools_campaign_content' --- .../class-link-roundups-editor.php | 2 -- inc/link-roundups/class-link-roundups.php | 30 ------------------- 2 files changed, 32 deletions(-) diff --git a/inc/link-roundups/class-link-roundups-editor.php b/inc/link-roundups/class-link-roundups-editor.php index 7f225fd..5f7178b 100644 --- a/inc/link-roundups/class-link-roundups-editor.php +++ b/inc/link-roundups/class-link-roundups-editor.php @@ -416,8 +416,6 @@ public static function mailchimp_tools_campaign_content( $campaign_params, $post $author = get_user_by( 'id', $post->post_author ); $campaign_params['template']['sections']['roundupauthor'] = $author->display_name; - error_log(var_export( $campaign_params, true)); - return $campaign_params; } } diff --git a/inc/link-roundups/class-link-roundups.php b/inc/link-roundups/class-link-roundups.php index 0888afe..e6fc19e 100644 --- a/inc/link-roundups/class-link-roundups.php +++ b/inc/link-roundups/class-link-roundups.php @@ -33,9 +33,6 @@ public static function init() { // Make sure our custom post type gets pulled into the river add_filter( 'pre_get_posts', array( __CLASS__, 'lr_get_posts' ) ); - - // Pass our custom data to the WordPress MailChimp Tools - add_filter( 'mailchimp_tools_campaign_content', array( __CLASS__, 'mailchimp_tools_campaign_content' ) ); } // Pull the linkroundups into the queries for is_home, is_tag, is_category, is_archive @@ -250,31 +247,4 @@ public static function build_lroundups_options_page() { // get settings fields for options page include_once dirname( LROUNDUPS_PLUGIN_FILE ) . '/templates/options.php'; } - - /** - * Pass our custom parameters to the campaign as template parameters - * - * @link https://github.com/INN/link-roundups/pull/139#issuecomment-488852947 - * @param Array $params the request body parameters, as described in the "put" section of https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/content/#%20 - * @param WP_Post $post The post that is being turned into a MailChimp Campaign - * @param int $id The campaign ID - * @uses mailchimp_tools_get_existing_campaign_data_for_post - */ - public static function mailchimp_tools_campaign_content( $params, $post = null, $id = null ) { - if ( empty ( $post ) || empty ( $id ) ) { - return $params; - } - if ( ! function_exists( 'mailchimp_tools_get_existing_campaign_data_for_post' ) ) { - return $params; - } - - $cache = mailchimp_tools_get_existing_campaign_data_for_post( $post, true ); - if ( empty ( $cache ) ) { - return $params; - } - error_log(var_export( $params, true)); - error_log(var_export( $cache, true)); - - return $params; - } } From 676615366483b3da2a211bc815a97fdcdfa5c07f Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 8 May 2019 00:30:19 -0400 Subject: [PATCH 38/67] More WMT fixen --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index ba72cb5..d2cad55 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#4e07d4aab9cd43d8397d7d525addcc19699b3d8d" + "inn/wordpress-mailchimp-tools": "dev-master#c547faac5d960158b81b5d83e8d997b0dab3f592" } } diff --git a/composer.lock b/composer.lock index 4caf4e7..c400c4f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ba6cfea6e3786d295e278962e3f9cb61", + "content-hash": "20eaa4167d8b94862da43c5607e6d57d", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "4e07d4aab9cd43d8397d7d525addcc19699b3d8d" + "reference": "c547faac5d960158b81b5d83e8d997b0dab3f592" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/4e07d4aab9cd43d8397d7d525addcc19699b3d8d", - "reference": "4e07d4aab9cd43d8397d7d525addcc19699b3d8d", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/c547faac5d960158b81b5d83e8d997b0dab3f592", + "reference": "c547faac5d960158b81b5d83e8d997b0dab3f592", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-07T23:29:48+00:00" + "time": "2019-05-08T04:17:18+00:00" } ], "packages-dev": [], From 1303f44bb0f312245c98cc6f5b096798d361995a Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 8 May 2019 13:29:35 -0400 Subject: [PATCH 39/67] Update docs text: editable content areas, API keys, audiences --- docs/mailchimp.md | 60 ++++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/docs/mailchimp.md b/docs/mailchimp.md index a5d73d9..4222b80 100644 --- a/docs/mailchimp.md +++ b/docs/mailchimp.md @@ -2,32 +2,29 @@ Using the Mailchimp API, Link Roundups can send Roundups as newsletters via a MailChimp account. -## Prerequisites: Setup a Template and List in MailChimp +## Prerequisites -You'll need to create a template and a list if you don't already have them in MailChimp. +First, you'll need: + +- A MailChimp account +- An [audience](https://mailchimp.com/help/create-audience/) created in MailChimp ## Getting an API key from MailChimp In order to use the MailChimp features of Link Roundups, you'll need to sign up for an API key from MailChimp. To do that: 1. Log in to MailChimp. -2. Click on your account in the upper-right corner. In the drop-down menu, click "Account". -3. Click on "Extras", then "API keys". -4. Click "Create A Key". A new key will appear in the list. -5. Click the "Label" field of your new API key. Name it after the site you're using Link Roundupss on. For example: "example.com link roundups" -6. Copy the API key. This will be a long string of characters from 0-9 and a-f. -7. On your website, go to **Dashboard > Settings > MailChimp Options**. -8. Paste the MailChimp API Key into the appropriate field, then check "Enable MailChimp API Integration". -9. Press "Save Changes". -10. Go to **Link Roundups > MailChimp Campaign Settings** to configure your MailChimp campaigns. +2. Follow [MailChimp's instructions for generating a new API key](https://mailchimp.com/help/about-api-keys/), and copy the API key. +3. On your website, go to **Dashboard > Settings > MailChimp Options**. +4. Paste the MailChimp API Key into the appropriate field +5. Press "Save Changes". +6. Go to **Link Roundups > MailChimp Campaign Settings** to configure your MailChimp campaigns. ![Link Roundups MailChimp API settings](./img/link-roundups-mailchimp-integration.png) ## Creating a template in the MailChimp dashboard -You'll need a MailChimp template created and configured for use with Link Roundups. - -There are many options for creating MailChimp templates, but as a simple way of getting started: +You'll need a MailChimp template created and configured for use with Link Roundups. This requires the use of MailChimp's [Custom Templates](https://mailchimp.com/help/import-a-custom-html-template/) with [Editable Content Areas](https://mailchimp.com/help/create-editable-content-areas-with-mailchimps-template-language/). 1. Click on "Templates" in the MailChimp header. 2. Pick a single-column or column-and-sidebar template. @@ -35,7 +32,7 @@ There are many options for creating MailChimp templates, but as a simple way of 4. Click "Save and Exit". 5. Name your template, then save. -### Inserting template tags +### Inserting editable content areas This plugin's MailChimp features depend on the presence of specific tags in your MailChimp template. @@ -44,22 +41,41 @@ You'll have to edit your template to add them, so that they can be replaced with 1. Click on "Templates" in the MailChimp header. 2. Click "Edit" on the template you want to edit. -Then, edit the template to insert the following tags where you want them to appear: +Then, edit the template to insert the content tags where you'd like them to appear. Here's an example of a fragment of an email's content: + +```html + +

This should be the roundup title:

+

This should be replaced with the roundup title

+ +

This should be the roundup author:

+
This should be replaced with the roundup author
+ +

This should be the roundup date:

+
This should be replaced with the roundup date
+ +

This should be the roundup links:

+
This should be replaced with the roundup links
+ +

This should be the roundup permalink:

+
This should be replaced with the roundup permalink
+ +``` #### Required Tags: If these template tags are not present in your MailChimp template, you will be unable to create a new Links Roundup Email Campaign. -- `*|ROUNDUPLINKS|*` - The actual list of links from the Links Roundup post +- `mc:edit="rounduplink"` - The post content from a Link Roundup post #### Optional Tags: These template tags are not required, but you may wish to use them in your template. -- `*|ROUNDUPTITLE|*` - The Link Roundup post title -- `*|ROUNDUPAUTHOR|*` - The author of the Link Roundup post -- `*|ROUNDUPDATE|*` - The date the Links Roundup post was published -- `*|ROUNDUPPERMALINK|*` - A link back to the original Link Roundup post +- `mc:edit="rounduptitle"` - The Link Roundup post title +- `mc:edit="roundupauthor"` - The author of the Link Roundup post +- `mc:edit="roundupdate"` - The date the Links Roundup post was published +- `mc:edit="rounduppermalink"` - A link back to the original Link Roundup post ## Choosing the MailChimp Template and List to use @@ -71,7 +87,7 @@ So now you have at least one template saved in MailChimp, and we're assuming you Once you have [saved some links](saving-links.md) and [created a link roundup post](link-roundups.md), you can send the link roundup post to MailChimp as a draft campaign. -In the Link Roundups editor, above the standard WordPress "Publish" button you'll find a button to "Create a MailChimp Campaign." +In the Link Roundups editor, in a box near the bottom of the page you'll see an option to create a draft or send an email. If an email has already been sent, you'll see information about where to find the sent campaign in MailChimp's admin. ![Create MailChimp Campaign button in the post editor](./img/link-roundup-mailchimp-button.png) From 4f86262405197c25cb65312b4eed7dab1107b5c6 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 9 May 2019 14:11:44 -0400 Subject: [PATCH 40/67] Update a bunch of wp.org metadata --- README.md | 10 +++++----- README.txt | 2 +- bower.json | 3 ++- contributing.md | 9 +++------ docs/installation.md | 11 +++++++---- link-roundups.php | 4 ++-- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index da447a8..65944d7 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # Link Roundups -A WordPress plugin to make it easy to collect links from around the web, turn them into roundup posts and streamline the production of daily/weekly roundup newsletters using MailChimp. Built and maintained by [INN Nerds](http://nerds.inn.org). +A WordPress plugin to make it easy to collect links from around the web, turn them into roundup posts and streamline the production of daily/weekly roundup newsletters using MailChimp. Built and maintained by [INN Labs](https://labs.inn.org). -**Contributors:** The INN Nerds (David Ryan, Ryan Nagle, Ben Keith, Will Haynes, Adam Schweigert) and Project Argo (Corey Daley, Chris Amico, Wesley Lindamood) +**Contributors:** The INN Labs (David Ryan, Ryan Nagle, Ben Keith, Will Haynes, Adam Schweigert) and Project Argo (Corey Daley, Chris Amico, Wesley Lindamood) **Requires at least:** 4.1 -**Tested up to:** 4.2.3 -**Stable tag:** 0.4.1 +**Tested up to:** 5.2 +**Stable tag:** See https://github.com/INN/link-roundups/releases **License:** GPLv2 or later -**License URI:** http://www.gnu.org/licenses/gpl-2.0.html +**License URI:** https://www.gnu.org/licenses/gpl-2.0.html ## Overview diff --git a/README.txt b/README.txt index bfba6ba..806c128 100644 --- a/README.txt +++ b/README.txt @@ -1,5 +1,5 @@ === Link Roundups === -Contributors: inn_nerds +Contributors: innlabs Donate link: https://inn.org/donate Tags: newsletters, mailchimp, links, curation, aggregation Requires at least: 4.2 diff --git a/bower.json b/bower.json index c4c9c3e..99ccc61 100644 --- a/bower.json +++ b/bower.json @@ -3,7 +3,7 @@ "description": "A WordPress plugin that makes it easy to collect links, turn them into roundup posts and produce roundup newsletters using MailChimp.", "main": "link-roundups.php", "authors": [ - "INN Nerds " + "INN Labs " ], "license": "MIT", "homepage": "https://github.com/INN/link-roundups", @@ -14,6 +14,7 @@ "node_modules", "bower_components", "js/vendor", + "vendor", "test", "tests" ], diff --git a/contributing.md b/contributing.md index c297229..6971a2c 100644 --- a/contributing.md +++ b/contributing.md @@ -9,18 +9,15 @@ We welcome contributions and suggestions to help us improve this project. Please 3. Stage and commit your changes (git commit -am 'description of my changes') 4. Push the changes to your fork (git push origin my-branch) 5. [Submit a pull request to the parent repo](https://help.github.com/articles/creating-a-pull-request). Please read our [guide to submitting pull requests](https://github.com/inn/docs/blob/master/how-to-work-with-us/pull-requests.md) to see what we expect in a good pull request message. -6. Pull request should be assigned to: - - [@rnagle](http://github.com/rnagle) (primary) - - [@aschweigert](http://github.com/aschweigert)(secondary) We have [a helpful how-to](https://github.com/INN/docs/blob/master/how-to-work-with-us/via-github.md) that walks through this process in more detail if you're new to using Git. Additionally, you can [create issues](https://github.com/INN/link-roundups/issues) on this repo to suggest changes or improvements. -And of course you can always email us: [nerds@inn.org](mailto:nerds@inn.org). +And of course you can always email us: [support@inn.org](mailto:support@inn.org). ### Standards -- Follow all standards from the INN Nerds [coding style guide](https://github.com/INN/docs/tree/master/style-guides/code). -- Use [markdown syntax](http://daringfireball.net/projects/markdown/syntax) for all text documents. +- Follow all standards from the INN Labs [coding style guide](https://github.com/INN/docs/tree/master/style-guides/code). +- Use [Markdown syntax](https://guides.github.com/features/mastering-markdown/) for all text documents. - Pull requests for new functionality should be accompanied by tests wherever possible. diff --git a/docs/installation.md b/docs/installation.md index d0017b0..f2b7407 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,6 +1,12 @@ # Installation -If you're an INN member making use of INN's [Largo Project](https://largoproject.org) hosting, the Link Roundups plugin is already installed. Just [contact us](http://jira.inn.org/servicedesk/customer/portal/4) through the Largo help desk to have it activated on your site. +## WordPress Plugin Directory + +Install from https://wordpress.org/plugins/link-roundups/ ! + +## Your WordPress Dashboard + +From your site's dashboard, go to Plugins, then "Add New", and search for "Link Roundups" by INN Labs. ## Manual Install @@ -11,6 +17,3 @@ If you're an INN member making use of INN's [Largo Project](https://largoproject 4. Upload the plugin directory to you server's `wp-content/plugins` directory. 5. Activate the plugin through the [`Plugins` menu](https://codex.wordpress.org/Plugins_Screen) in WordPress. -## WordPress Plugin Directory or Your WordPress Dashboard - -Install from https://wordpress.org/plugins/link-roundups/ ! diff --git a/link-roundups.php b/link-roundups.php index 6af8c17..1c13aec 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -3,9 +3,9 @@ Plugin Name: Link Roundups Plugin URI: https://github.com/INN/link-roundups Description: Use Link Roundups to aggregate links and create roundup posts. Mailchimp API integration and browser bookmark tool. Formerly argo-links from NPR's Project Argo. -Author: INN, Project Argo, Mission Data +Author: INN Labs +Author URI: http://labs.inn.org/ Version: 0.5 -Author URI: http://nerds.inn.org/ License: GPLv2 Text Domain: link-roundups From 6739897a5aaf8f858ec2db9364898652378b8bff Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 9 May 2019 14:15:45 -0400 Subject: [PATCH 41/67] Replace MailChimp settings image. --- .../link-roundups-mailchimp-integration.png | Bin 21719 -> 23771 bytes docs/mailchimp.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/img/link-roundups-mailchimp-integration.png b/docs/img/link-roundups-mailchimp-integration.png index 72d157dd9c854e035f5fab1ab4371b0d6fb03345..0b6c9b16840ac34e63d776622a49b4b840e1148e 100644 GIT binary patch literal 23771 zcmeFZRa9I}v@Hw-m(X~EOK@r2U4lb!w*bN2-QC^Yf?IHRhXi*C?(TLwU*w!I{+Ivl zzFfv0jPBjNYE{*)U2Dy`=I)SBGNMTE*zjOrU`XO(!t!8X5F%h;;KZ=dpfk5dh3%j> z?j}M)pTvcP2tV0ceK9dN1Ouap(bv_b5~raU)YH?|9UP;kgtv8)4-O8O*X`)(9P8{M z?A7ff%uLqQTz>~x@9{=+Z|U!Z%>^F%j!IlUxl9$-xxZktR;Ji0lX5m*`+z%1nA$MD zc|!sdoslk|o{nI!3%0;H1SLYse}hP<(a@R?*2@cS5QYwp2WzkfUOh#0giPp&nmpDE zp^S#Qg=ioNwg4dxsD}>Dc&n%3JwNn5gp$7=W{@rzr_+0?N2F`HQ+_VSyG0zjiKBp? zi$A9?E)@$K(G~_ULhnr9NKZkZ%=C_4m2r=eJuzQ7-W#2B7fTV-u+S);f*nGLRjG@E zuOa)}hdMFQE+(LwtZ3I@=XbFDx9CQIJU$p7X(M#5D8Pu$V5e^JXlLiLA3!p-zq85% z`Hf#MrGN4;H#D@T8FZkc(56r+&d;o%Ao}kb0Nw4D?m2kFT$_*l*rEet-__ zKzn_CZQFZ&?FjR^d9!)M{}$|nlgWCx87ea9I%JqAs@khcOL6L3SZ70Mau885wCo z-=MW~v9#B7rnR&q`Q6Chc7zS>^leS7?Mzl|=~aWA!b#C;d@hWv97QlXuN3}+av ziT^v*3CN~k{NVfn9F_3DBX|;$A~g5vtoHH)Kg91N5KJV7sEY(H8tlJ=Kc0+V4!s~K zD}(&65k1HT5f1-ftGUeJp}7=1PeFmpMDVfP)K{{Qb-{4amoHQ(uMtm{vMS(_IE$P;Dk*e&_(22?-pGC8i5OW=MF}% z$NU?x1X?yl=w#2tc-&v3cOaWU$f$p#lS>5?k&DOobjq?+jE19xePI|5w7HeC>D;7)PG@I&94;5%@}=X{YYfIeoVIHSGky^}tsE_oOfp;u zO+e*xG%r>t4eWS4L0zsJ(`p}-T52+Dcye0Ttx5y1S!xz5<*8R)1~G3=70DV-#+x*& zCJbYc+T;oomHXcRxqO8D5F2!%k@#F>e6NiBY}uL%x7$So50LZk>^6rJs4om}Gane$ zYVvb1Mc#P63Vj(%DGHb$E%rKmn6+B|AQTu8Ut=ioh$bSN$sH5p6&a&P^1>{A?qt4P z)&9+5O5*20l+_BC$4>Z(zB}o5%Qwoz43@4X+RslB+wx z$$CN@0-5(0yCc+5_&l~H9;fYI+dA7Keqbf)1+i0YcjucNT9>|mmXfjpFW)+&Pors_fmxojQe4;TkC>hoFg&;8*h z7$!?QLhpHQfX9Z5jV57;c)aqQ^;Tvp$ot}Ai#=C*BVWvPab2XFdD}1 z{m5I2d&s19xraW)>ICK>@OSg^TaQ`NG2^ubhDi85&^

v*<&iSecqj?wVI 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 R^1Bzdo{o`rspjpFe*u^8-);Z^ literal 21719 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 Try;oq00000NkvXXu0mjfLmMIP diff --git a/docs/mailchimp.md b/docs/mailchimp.md index 4222b80..0129ed7 100644 --- a/docs/mailchimp.md +++ b/docs/mailchimp.md @@ -18,7 +18,7 @@ In order to use the MailChimp features of Link Roundups, you'll need to sign up 3. On your website, go to **Dashboard > Settings > MailChimp Options**. 4. Paste the MailChimp API Key into the appropriate field 5. Press "Save Changes". -6. Go to **Link Roundups > MailChimp Campaign Settings** to configure your MailChimp campaigns. +6. Go to **Settings > MailChimp Settings** to configure your MailChimp campaigns. ![Link Roundups MailChimp API settings](./img/link-roundups-mailchimp-integration.png) From 128589973a01e80df9dc4c2199cf0b468fd0a615 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 9 May 2019 17:21:51 -0400 Subject: [PATCH 42/67] Update more mailchimp docs --- docs/img/link-roundup-mailchimp-button.png | Bin 30009 -> 67041 bytes .../img/link-roundups-options-mailchimp-2.png | Bin 45852 -> 0 bytes docs/mailchimp.md | 17 ++++++++++++----- 3 files changed, 12 insertions(+), 5 deletions(-) delete mode 100644 docs/img/link-roundups-options-mailchimp-2.png diff --git a/docs/img/link-roundup-mailchimp-button.png b/docs/img/link-roundup-mailchimp-button.png index 752708d772d07aa122e370841983d93fbcf0757f..e50caa2a761f91781e0975b7e179c0d10d194b22 100644 GIT binary patch literal 67041 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 z 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 Yg4^tIQyqoPxEH`jK~`0!7-<^#Kd##@@c;k- literal 30009 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%0D<$dJ*90@H3bbS_V%K? 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 diff --git a/docs/mailchimp.md b/docs/mailchimp.md index 0129ed7..aed4219 100644 --- a/docs/mailchimp.md +++ b/docs/mailchimp.md @@ -34,7 +34,7 @@ You'll need a MailChimp template created and configured for use with Link Roundu ### Inserting editable content areas -This plugin's MailChimp features depend on the presence of specific tags in your MailChimp template. +This plugin's MailChimp features depend on the presence of specific markup in your custom MailChimp template. You'll have to edit your template to add them, so that they can be replaced with your content when you go to send a campaign. @@ -77,11 +77,13 @@ These template tags are not required, but you may wish to use them in your templ - `mc:edit="roundupdate"` - The date the Links Roundup post was published - `mc:edit="rounduppermalink"` - A link back to the original Link Roundup post -## Choosing the MailChimp Template and List to use +## Choosing the MailChimp Template and Audience to use -So now you have at least one template saved in MailChimp, and we're assuming you also have a list of subscribers for your newsletter. Go back to the Link Roundups Options page in **Link Roundups > Options**, and choose your template, and which MailChiimp List you want to use: +So now you have at least one template saved in MailChimp, and we're assuming you also have a list of subscribers for your newsletter. Go to **Link Roundups > MailChimp Campaign Settings**, and choose : -![Link Roundups MailChimp API settings](./img/link-roundups-options-mailchimp-2.png) +- Your defauult adience to send campaigns to +- Your default template for sending campaigns +- The defalt email address which test campaigns are sent to. # Creating a MailChimp Campaign @@ -91,4 +93,9 @@ In the Link Roundups editor, in a box near the bottom of the page you'll see an ![Create MailChimp Campaign button in the post editor](./img/link-roundup-mailchimp-button.png) -When you click "Create a MailChimp Campaign" you will be asked to confirm the action. The Link Roundups plugin will contact MailChimp to create the campaign and, upon success, present you with a link to finish editing the campaign in the MailChimp dashboard. +Buttons that may appear at the bottom of this box are as follows: + +- Send now: Sends the campaign. +- Create draft: Creates a draft camapign in MailChimp. You can update the draft using the Link Roundps editor or in MailChimp. +- Send Test: Lets you send a draft campaign. +- Update Draft: Refreshes the draft campaign in MailChimp with details from this editor. From a634bdf0b72af736cc9d97da62f52dc30023804c Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 9 May 2019 20:59:30 -0400 Subject: [PATCH 43/67] Fix for WMT audience box not showing targeted subgroup. --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index d2cad55..74f733c 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#c547faac5d960158b81b5d83e8d997b0dab3f592" + "inn/wordpress-mailchimp-tools": "dev-master#be2d5846529311db78f0b0153676fad3d8c95826" } } diff --git a/composer.lock b/composer.lock index c400c4f..724f005 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "20eaa4167d8b94862da43c5607e6d57d", + "content-hash": "e35d5d46b97733bcb2d3936933168cbd", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "c547faac5d960158b81b5d83e8d997b0dab3f592" + "reference": "be2d5846529311db78f0b0153676fad3d8c95826" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/c547faac5d960158b81b5d83e8d997b0dab3f592", - "reference": "c547faac5d960158b81b5d83e8d997b0dab3f592", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/be2d5846529311db78f0b0153676fad3d8c95826", + "reference": "be2d5846529311db78f0b0153676fad3d8c95826", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-08T04:17:18+00:00" + "time": "2019-05-10T00:05:36+00:00" } ], "packages-dev": [], From 1f95a0eb49dc672b9a56a182ea589ada28eab173 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 9 May 2019 22:36:06 -0400 Subject: [PATCH 44/67] Fix for WMT audience not being able to unset targeted subgroups. --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 74f733c..d7a49cf 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#be2d5846529311db78f0b0153676fad3d8c95826" + "inn/wordpress-mailchimp-tools": "dev-master#31200e4b7bada4ab7c74449f4495b6f61256b283" } } diff --git a/composer.lock b/composer.lock index 724f005..70e3bdb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e35d5d46b97733bcb2d3936933168cbd", + "content-hash": "c1dc5f81e182d0786caca19f7552aef2", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "be2d5846529311db78f0b0153676fad3d8c95826" + "reference": "31200e4b7bada4ab7c74449f4495b6f61256b283" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/be2d5846529311db78f0b0153676fad3d8c95826", - "reference": "be2d5846529311db78f0b0153676fad3d8c95826", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/31200e4b7bada4ab7c74449f4495b6f61256b283", + "reference": "31200e4b7bada4ab7c74449f4495b6f61256b283", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-10T00:05:36+00:00" + "time": "2019-05-10T02:35:02+00:00" } ], "packages-dev": [], From 3b34dca822af3860fa7d5c5eb84d415d10ac85a9 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Fri, 10 May 2019 16:37:41 -0400 Subject: [PATCH 45/67] Changelog update for https://github.com/INN/link-roundups/pull/152 --- README.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/README.txt b/README.txt index 806c128..ff4cc8d 100644 --- a/README.txt +++ b/README.txt @@ -53,6 +53,7 @@ Via manual upload: - Updates the [WordPress Mailchimp Tools](https://github.com/INN/wordpress-mailchimp-tools) submodule to use version 3 of the Mailchimp API, and gain various compatibility updates for modern PHP versions. - Updates Travis automated testing to support PHP 5.6, 7.1, 7.2. Pull request [#138](https://github.com/INN/link-roundups/pull/138) for issue [#135](https://github.com/INN/link-roundups/issues/135). - Fixes the saved_links_widget constructor for error-free PHP7 compatibility. Pull request [#137](https://github.com/INN/link-roundups/pull/137) for issue [#132](https://github.com/INN/link-roundups/issues/132). +- Applies the widget_title filter to the title of the Link Roundups widget. Pull request [#152](https://github.com/INN/link-roundups/pull/152) for issue [#104](https://github.com/INN/link-roundups/issues/104). = 0.4.1 = From 692610bd29ab1b0e37b36cffa7754d9a256ecf09 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Fri, 10 May 2019 17:30:29 -0400 Subject: [PATCH 46/67] Changelog, readme updates for the next version --- README.md | 19 ++++++++++++++++++- README.txt | 18 +++++++++++++----- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 65944d7..74d0704 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ A WordPress plugin to make it easy to collect links from around the web, turn them into roundup posts and streamline the production of daily/weekly roundup newsletters using MailChimp. Built and maintained by [INN Labs](https://labs.inn.org). -**Contributors:** The INN Labs (David Ryan, Ryan Nagle, Ben Keith, Will Haynes, Adam Schweigert) and Project Argo (Corey Daley, Chris Amico, Wesley Lindamood) **Requires at least:** 4.1 **Tested up to:** 5.2 **Stable tag:** See https://github.com/INN/link-roundups/releases @@ -32,3 +31,21 @@ For information on the development status of this plugin, check the [development If you'd like to contribute to the project, please see our [contributing guidelines](contributing.md). This plugin depends on [INN/wordpress-mailchimp-tools](https://github.com/INN/wordpress-mailchimp-tools), as well as some components imported via composer. + +## Contributors: + +**The Institute for Nonprofit News:** + +- David Ryan +- Ryan Nagle +- Ben Keith +- Will Haynes +- Adam Schweigert +- RC Lations +- Josh Darby + +**Project Argo:** + +- Corey Daley +- Chris Amico +- Wesley Lindamood diff --git a/README.txt b/README.txt index ff4cc8d..a29f3dd 100644 --- a/README.txt +++ b/README.txt @@ -48,12 +48,20 @@ Via manual upload: == Changelog == -= 0.5 (in development) - -- Updates the [WordPress Mailchimp Tools](https://github.com/INN/wordpress-mailchimp-tools) submodule to use version 3 of the Mailchimp API, and gain various compatibility updates for modern PHP versions. -- Updates Travis automated testing to support PHP 5.6, 7.1, 7.2. Pull request [#138](https://github.com/INN/link-roundups/pull/138) for issue [#135](https://github.com/INN/link-roundups/issues/135). += 0.5 + +- Tested up to WordPress 5.2 and PHP 7.3 +- Fixes many, many bugs. +- Updates the [WordPress MailChimp Tools](https://github.com/INN/wordpress-mailchimp-tools) submodule to use version 3 of the MailChimp API, and gain various compatibility updates for modern PHP versions. Upgrading to the new MailChimp API means that users of the MailChimp campaign functionality in the Link Roundups plugin can now use MailChimp editable content areas in their templates, as described [in our documentation](https://github.com/INN/link-roundups/blob/master/docs/mailchimp.md). +- Updates installation documentation. Pull request [#139](https://github.com/INN/link-roundups/pull/139) for issue [#145](https://github.com/INN/link-roundups/issues/145). +- Applies the `'widget_title'` filter to the title of the Link Roundups widget. Pull request [#152](https://github.com/INN/link-roundups/pull/152) for issue [#104](https://github.com/INN/link-roundups/issues/104). +- Wraps the `Source:` label in the Saved Links List widget in a `span.source-label`. Pull request [#139](https://github.com/INN/link-roundups/pull/139) for issue [#144](https://github.com/INN/link-roundups/issues/144). +- Sets HTML5 input types on widget forms. Pull request [#139](https://github.com/INN/link-roundups/pull/139) for issue [#143](https://github.com/INN/link-roundups/issues/143). - Fixes the saved_links_widget constructor for error-free PHP7 compatibility. Pull request [#137](https://github.com/INN/link-roundups/pull/137) for issue [#132](https://github.com/INN/link-roundups/issues/132). -- Applies the widget_title filter to the title of the Link Roundups widget. Pull request [#152](https://github.com/INN/link-roundups/pull/152) for issue [#104](https://github.com/INN/link-roundups/issues/104). +- Updates the local clone of WP_List_Table, fixing compatibility, and updating docs for that process. Pull request [#139](https://github.com/INN/link-roundups/pull/139) for issues [#128](https://github.com/INN/link-roundups/issues/128) and [#118](https://github.com/INN/link-roundups/issues/118). +- Updates Travis automated testing to support PHP 5.6, 7.1, 7.2. Pull request [#138](https://github.com/INN/link-roundups/pull/138) for issue [#135](https://github.com/INN/link-roundups/issues/135). +- Improves maintainer docs. Pull request [#139](https://github.com/INN/link-roundups/pull/139) for issue [#140](https://github.com/INN/link-roundups/issues/140). + = 0.4.1 = From e522c1e0f7a0f05aa5486a857f1083c83ff24e51 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Fri, 10 May 2019 18:07:05 -0400 Subject: [PATCH 47/67] Fix for table causing an undefined error Resolves https://github.com/INN/link-roundups/issues/132#issuecomment-488871066 --- inc/saved-links/class-saved-links-list-table.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inc/saved-links/class-saved-links-list-table.php b/inc/saved-links/class-saved-links-list-table.php index c26ebfd..dd68927 100644 --- a/inc/saved-links/class-saved-links-list-table.php +++ b/inc/saved-links/class-saved-links-list-table.php @@ -179,7 +179,9 @@ function prepare_items() { // Set the columns $columns = $this->get_columns(); - $_wp_column_headers[$screen->id] = $columns; + if ( isset( $screen ) ) { + $_wp_column_headers[$screen->id] = $columns; + } // Fetch the items $links_query = new WP_Query($args); From 7feed38c9639d7133a1ea718d7c6c43180d198a3 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Fri, 10 May 2019 18:48:00 -0400 Subject: [PATCH 48/67] Fix issue where saved link list table initially displays no links if no links were saved today, despite being supposed to show this month's links --- .../class-link-roundups-editor.php | 19 ++----- .../class-saved-links-list-table.php | 49 +++++++++++++------ 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/inc/link-roundups/class-link-roundups-editor.php b/inc/link-roundups/class-link-roundups-editor.php index 5f7178b..5b8a23d 100644 --- a/inc/link-roundups/class-link-roundups-editor.php +++ b/inc/link-roundups/class-link-roundups-editor.php @@ -294,27 +294,15 @@ public static function roundup_update_post() { } public static function roundup_block_posts_query() { - $month_ago = strtotime('-30 days'); - $now = strtotime('now'); - // Default arguments $args = apply_filters('link_roundups_roundup_block_post_query', array( 'post_type' => 'rounduplink', 'orderby' => 'date', 'order' => 'desc', - 'posts_per_page' => -1, + 'posts_per_page' => 10, 'date_query' => array( - 'after' => array( - 'year' => date( 'Y', $month_ago ), - 'month' => date( 'n', $month_ago ), - 'day' => date( 'j', $month_ago ) - ), - 'before' => array( - 'year' => date( 'Y', $now ), - 'month' => date( 'n', $now ), - 'day' => date( 'j', $now ) - ), - 'inclusive' => true + 'year' => date( 'Y' ), + 'monthnum' => date( 'm' ), ) )); $query = new WP_Query($args); @@ -392,7 +380,6 @@ public static function roundup_block_posts() { * @link Why: https://github.com/INN/link-roundups/pull/139#issuecomment-488852947 */ public static function mailchimp_tools_campaign_content( $campaign_params, $post, $id ) { - error_log(var_export( $id, true)); // shortcut if post not set if ( empty( $post ) ) { return $campaign_params; diff --git a/inc/saved-links/class-saved-links-list-table.php b/inc/saved-links/class-saved-links-list-table.php index dd68927..7b4a5e8 100644 --- a/inc/saved-links/class-saved-links-list-table.php +++ b/inc/saved-links/class-saved-links-list-table.php @@ -42,10 +42,17 @@ function __construct() { /** * Additional decorations for the table: "Send to editor" button and "Date range" filter * + * Default presentation: date filter is set to "This Month", and changing that should also change $this->prepare_items. + * * @param string $which is either "top" or "bottom", and tells you which nav you're outputting. * @since 0.3.2 + * @see prepare_items */ function bulk_actions( $which = '' ) { + $request = $_REQUEST; + if ( ! isset( $request['link_date'] ) ) { + $request['link_date'] = 'this_month'; + } // this will display at top and bottom ?> @@ -57,17 +64,17 @@ function bulk_actions( $which = '' ) {

- ' . get_the_date( 'F d Y' ) . ''; - // the headline - $output .= '

' . get_the_title() . '

'; - // the excerpt - $output .= '

' . get_the_excerpt() . '

'; - echo $output; - ?> - -
- You don\'t have any recent links or the Link Roundups plugin is not active.

', 'link-roundups' ); - } // end recent links - - if ( $instance['linkurl'] !='' ) { ?> - - get_option( 'sticky_posts' ), + 'posts_per_page' => $instance['num_posts'], + 'post_type' => 'post', + 'post_status' => 'publish' + ); + + if ( $instance['cat'] != '' ) $query_args['cat'] = $instance['cat']; + + $my_query = new WP_Query( $query_args ); + if ( $my_query->have_posts() ) { + while ( $my_query->have_posts() ) : $my_query->the_post(); + $custom = get_post_custom( $post->ID ); ?> +
+ ' . get_the_date( 'F d Y' ) . ''; + // the headline + $output .= '

' . get_the_title() . '

'; + // the excerpt + $output .= '

' . get_the_excerpt() . '

'; + echo $output; + ?> + +
+ You don\'t have any recent links or the Link Roundups plugin is not active.

', 'link-roundups' ); + } // end recent links + + if ( $instance['linkurl'] !='' ) { ?> + + Date: Fri, 10 May 2019 19:42:58 -0400 Subject: [PATCH 50/67] Bump version number to 1.0 --- README.txt | 4 ++-- link-roundups.php | 2 +- package-lock.json | 2 +- package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.txt b/README.txt index a29f3dd..67f53f8 100644 --- a/README.txt +++ b/README.txt @@ -4,7 +4,7 @@ Donate link: https://inn.org/donate Tags: newsletters, mailchimp, links, curation, aggregation Requires at least: 4.2 Tested up to: 5.2 -Stable tag: 0.5 +Stable tag: 1.0 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html Minimum PHP: 5.6 @@ -48,7 +48,7 @@ Via manual upload: == Changelog == -= 0.5 += 1.0 - Tested up to WordPress 5.2 and PHP 7.3 - Fixes many, many bugs. diff --git a/link-roundups.php b/link-roundups.php index 1c13aec..790d541 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -5,7 +5,7 @@ Description: Use Link Roundups to aggregate links and create roundup posts. Mailchimp API integration and browser bookmark tool. Formerly argo-links from NPR's Project Argo. Author: INN Labs Author URI: http://labs.inn.org/ -Version: 0.5 +Version: 1.0 License: GPLv2 Text Domain: link-roundups diff --git a/package-lock.json b/package-lock.json index 634c8a1..b9d51fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { "name": "link-roundups", - "version": "0.5", + "version": "1.0", "lockfileVersion": 1 } diff --git a/package.json b/package.json index d88dbc1..2f2817f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "link-roundups", - "version": "0.5", + "version": "1.0", "devDependencies": { "grunt": "~0.4.5", "grunt-contrib-less": "~0.12.0", From f5c3bdb1b6e0afd926e515894cf9b2c8d6515914 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 13 May 2019 17:34:55 -0400 Subject: [PATCH 51/67] Switch to alternate implementations of the shortcut link if available. Else, the shortcut link is the empty string. --- .../class-save-to-site-button.php | 18 ++++++++++++++++-- inc/saved-links/class-saved-links.php | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/inc/link-roundups/class-save-to-site-button.php b/inc/link-roundups/class-save-to-site-button.php index f8aea42..7752813 100644 --- a/inc/link-roundups/class-save-to-site-button.php +++ b/inc/link-roundups/class-save-to-site-button.php @@ -55,14 +55,29 @@ public static function init() { /** * Returns the link for the bookmarklet button. * + * If get_shortcut_link() returns an empty string (WP 4.9+) and + * if the https://wordpress.org/plugins/press-this/ plugin is installed, + * this plugin will use the plugin's bookmarklet code instead. + * * @since 0.3 * + * @uses get_shortcut_link + * @uses https://github.com/WordPress/press-this/blob/690c99c8cd8feba4fe4fbfff89a955a325e35505/press-this-plugin.php#L118-L173 * @return String. Javascript bookmarklet code. */ public static function shortcut_link() { // This is the default 'Press This!' button link. - $shortcut_link = htmlspecialchars( get_shortcut_link() ); + $shortcut_link = ''; + + if ( function_exists( 'get_shortcut_link' ) ) { + $shortcut_link = htmlspecialchars( get_shortcut_link() ); + } + + // since 4.9, get_shortcut_link has returned the empty string. + if ( empty( $shortcut_link ) && function_exists( 'press_this_get_shortcut_link' ) ) { + $shortcut_link = htmlspecialchars( press_this_get_shortcut_link() ); + } $post_type = 'rounduplink'; @@ -74,7 +89,6 @@ public static function shortcut_link() { $shortcut_link = str_replace( '?v=', '&v=', $shortcut_link ); return $shortcut_link; - } /** diff --git a/inc/saved-links/class-saved-links.php b/inc/saved-links/class-saved-links.php index 9b25d7d..eaed436 100644 --- a/inc/saved-links/class-saved-links.php +++ b/inc/saved-links/class-saved-links.php @@ -371,7 +371,7 @@ public static function build_lroundups_page() {

- +

From f77e15e498c64951dc236ea4ac169e38ebbac634 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 13 May 2019 20:06:37 -0400 Subject: [PATCH 52/67] Provide alternate version of browser bookmark page with admonition to enable a WP core plugin This page explains why the plugin is needed, and how to enable it. --- inc/saved-links/class-saved-links.php | 90 +++++++++++++++++++++++---- 1 file changed, 78 insertions(+), 12 deletions(-) diff --git a/inc/saved-links/class-saved-links.php b/inc/saved-links/class-saved-links.php index eaed436..a8985b2 100644 --- a/inc/saved-links/class-saved-links.php +++ b/inc/saved-links/class-saved-links.php @@ -320,16 +320,82 @@ public static function data_for_custom_columns($column){ * @since 0.1 */ public static function add_save_to_site_sub_menu() { - add_submenu_page( - 'edit.php?post_type=rounduplink', - __( 'Add Browser Bookmark', 'link-roundups' ), - __( 'Add Browser Bookmark', 'link-roundups' ), - apply_filters( 'link_roundups_minimum_capability', 'edit_posts' ), - 'install-browser-bookmark', - array( - __CLASS__, 'build_lroundups_page' - ) - ); + if ( + version_compare( get_bloginfo('version'), '4.9', '<' ) + || function_exists( 'press_this_get_shortcut_link' ) + ) { + add_submenu_page( + 'edit.php?post_type=rounduplink', + __( 'Add Browser Bookmark', 'link-roundups' ), + __( 'Add Browser Bookmark', 'link-roundups' ), + apply_filters( 'link_roundups_minimum_capability', 'edit_posts' ), + 'install-browser-bookmark', + array( + __CLASS__, 'build_lroundups_page' + ) + ); + } else { + add_submenu_page( + 'edit.php?post_type=rounduplink', + __( 'Add Browser Bookmark', 'link-roundups' ), + __( 'Add Browser Bookmark', 'link-roundups' ), + apply_filters( 'link_roundups_minimum_capability', 'edit_posts' ), + 'install-browser-bookmark', + array( + __CLASS__, 'build_lroundups_page_admonition' + ) + ); + } + } + + /** + * Replacement Browser Bookmark Tool page for when the get_shortcut() function or equivalents are not available + * + * @see + * @since 1.0 + */ + public static function build_lroundups_page_admonition() { + /** WordPress Administration Bootstrap */ + include_once( ABSPATH . 'wp-admin/admin.php' ); + ?> +

+ +
+
+

+

+

Press This, which reimplements functionality that was removed from WordPress in version 4.9.', + 'https://wordpress.org/plugins/press-this/' + ); + ?>

+ + %2$s', + add_query_arg( + array( + 's' => htmlspecialchars('"press this"'), + 'tab' => 'search', + 'type' => 'term', + ), + admin_url( 'plugin-install.php' ) + ), + 'Install now' + ); + } else { + printf( + '

%1$s

', + __( 'Please contact your site administrator to have this plugin installed.', 'link-roundups' ) + ); + } + ?> +
+
+ -

+

-
+

From d5a5d65964f52d8d29f38359ee1a774c7253430d Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 13 May 2019 20:24:44 -0400 Subject: [PATCH 53/67] Simplify test for whether to enqueue the alternate version of the save to site button link. --- inc/saved-links/class-saved-links.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inc/saved-links/class-saved-links.php b/inc/saved-links/class-saved-links.php index a8985b2..affc872 100644 --- a/inc/saved-links/class-saved-links.php +++ b/inc/saved-links/class-saved-links.php @@ -321,8 +321,7 @@ public static function data_for_custom_columns($column){ */ public static function add_save_to_site_sub_menu() { if ( - version_compare( get_bloginfo('version'), '4.9', '<' ) - || function_exists( 'press_this_get_shortcut_link' ) + ! empty( Save_to_Site_Button::shortcut_link() ) ) { add_submenu_page( 'edit.php?post_type=rounduplink', From 3163e3a8edb4d2f30379e1467050939901a76547 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 13 May 2019 21:29:51 -0400 Subject: [PATCH 54/67] Update changelog for https://github.com/INN/link-roundups/pull/159 --- README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 67f53f8..a9094fd 100644 --- a/README.txt +++ b/README.txt @@ -51,7 +51,7 @@ Via manual upload: = 1.0 - Tested up to WordPress 5.2 and PHP 7.3 -- Fixes many, many bugs. +- Reenables the "Save to Site" bookmarklet for saving links for Link Roundups, if the site admin is willing to use the [Press This](https://wordpress.org/plugins/press-this/) plugin to enable this feature. Pull request [#159](https://github.com/INN/link-roundups/pull/159) for issue [#130](https://github.com/INN/link-roundups/issues/130). - Updates the [WordPress MailChimp Tools](https://github.com/INN/wordpress-mailchimp-tools) submodule to use version 3 of the MailChimp API, and gain various compatibility updates for modern PHP versions. Upgrading to the new MailChimp API means that users of the MailChimp campaign functionality in the Link Roundups plugin can now use MailChimp editable content areas in their templates, as described [in our documentation](https://github.com/INN/link-roundups/blob/master/docs/mailchimp.md). - Updates installation documentation. Pull request [#139](https://github.com/INN/link-roundups/pull/139) for issue [#145](https://github.com/INN/link-roundups/issues/145). - Applies the `'widget_title'` filter to the title of the Link Roundups widget. Pull request [#152](https://github.com/INN/link-roundups/pull/152) for issue [#104](https://github.com/INN/link-roundups/issues/104). From 481395320e9548a7ea9fe1ef992619b769be484b Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Tue, 14 May 2019 14:31:58 -0400 Subject: [PATCH 55/67] Documentation updates for installing dependencies. --- docs/bookmarklet-dependencies.md | 14 ++++++++++++++ .../img/save-to-site-bookmarklet-dependency.png | Bin 0 -> 68208 bytes docs/installation.md | 2 ++ docs/saved-links.md | 8 +++++++- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 docs/bookmarklet-dependencies.md create mode 100644 docs/img/save-to-site-bookmarklet-dependency.png diff --git a/docs/bookmarklet-dependencies.md b/docs/bookmarklet-dependencies.md new file mode 100644 index 0000000..361a4a5 --- /dev/null +++ b/docs/bookmarklet-dependencies.md @@ -0,0 +1,14 @@ +# Bookmarklet Dependencies + +The "Save to Site" bookmarklet code depends on WordPress' "Press this!" bookmarklet code. That code was [removed from WordPress version 4.9](https://make.wordpress.org/core/2017/11/02/press-this-in-4-9/), and has not been reintroduced. The WordPress maintainers put the removed code into a self-contained plugin called [Press This](https://wordpress.org/plugins/press-this/). + +Your site can use the "Save to Site" bookmarklet if either of these conditions are true: + +- You are running WordPress 4.8 (not recommended) +- You have the [Press This](https://wordpress.org/plugins/press-this/) plugin installed and active. + +If your site meets neither of those conditions, you will see the following prompt: + +![A screenshot of a page titled "Enable Save to Site bookmarklet for your site" and the text explaining why and how to install a dependency.](img/save-to-site-bookmarklet-dependency.png) + +The "Install now" button will take you to your site's plugins page for a search of the WordPress.org plugins directory that should include the Press This plugin. diff --git a/docs/img/save-to-site-bookmarklet-dependency.png b/docs/img/save-to-site-bookmarklet-dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..3c93d303dd76ac2de0150ed50b558d6f51cb4702 GIT binary patch literal 68208 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 Date: Tue, 14 May 2019 14:33:31 -0400 Subject: [PATCH 56/67] Support the wordpress network plugins install page. network_admin_url should fall back to admin_url on non-multisites, according to https://developer.wordpress.org/reference/functions/network_admin_url/ --- inc/saved-links/class-saved-links.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/saved-links/class-saved-links.php b/inc/saved-links/class-saved-links.php index affc872..e9a6b46 100644 --- a/inc/saved-links/class-saved-links.php +++ b/inc/saved-links/class-saved-links.php @@ -357,7 +357,7 @@ public static function build_lroundups_page_admonition() { /** WordPress Administration Bootstrap */ include_once( ABSPATH . 'wp-admin/admin.php' ); ?> -

+

@@ -381,7 +381,7 @@ public static function build_lroundups_page_admonition() { 'tab' => 'search', 'type' => 'term', ), - admin_url( 'plugin-install.php' ) + network_admin_url( 'plugin-install.php' ) ), 'Install now' ); From e73a6284d14c72f53d40c3e1b8669832a03e8fc1 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 15 May 2019 15:35:51 -0400 Subject: [PATCH 57/67] Add some fields to package.json --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index 2f2817f..eeee60f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,10 @@ { "name": "link-roundups", + "description": "A WordPress plugin for managing saved links.", + "repository": { + "type": "git", + "url": "https://github.com/INN/link-roundups/" + }, "version": "1.0", "devDependencies": { "grunt": "~0.4.5", From 73e26bacdecb6b034725daf5f1ef3a82a31e7d37 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 15 May 2019 16:39:38 -0400 Subject: [PATCH 58/67] Add link to new rounduplink page from saved links list table. For https://github.com/INN/link-roundups/issues/151 --- .../class-saved-links-list-table.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/inc/saved-links/class-saved-links-list-table.php b/inc/saved-links/class-saved-links-list-table.php index 7b4a5e8..f79777b 100644 --- a/inc/saved-links/class-saved-links-list-table.php +++ b/inc/saved-links/class-saved-links-list-table.php @@ -53,11 +53,13 @@ function bulk_actions( $which = '' ) { if ( ! isset( $request['link_date'] ) ) { $request['link_date'] = 'this_month'; } + // this will display at top and bottom ?> - +
@@ -81,6 +83,17 @@ function bulk_actions( $which = '' ) {
+
+ + + +
+ Date: Wed, 15 May 2019 16:40:12 -0400 Subject: [PATCH 59/67] Move some CSS around and decrease extra whitespace to match WordPress' UI. --- css/lroundups-admin.css | 15 ++++++++------- css/lroundups-admin.min.css | 2 +- css/lroundups.css | 8 +------- css/lroundups.min.css | 2 +- less/lroundups-admin.less | 13 ++++++++----- less/lroundups.less | 6 ------ 6 files changed, 19 insertions(+), 27 deletions(-) diff --git a/css/lroundups-admin.css b/css/lroundups-admin.css index da8db91..823f08f 100644 --- a/css/lroundups-admin.css +++ b/css/lroundups-admin.css @@ -4,8 +4,6 @@ Create MailChimp Campaign Button #link-roundups-publish-actions { text-align: center; border-bottom: 1px solid #ccc; - margin-bottom: 10px; - padding-bottom: 10px; } #link-roundups-publish-actions input[type="submit"] { display: inline-block; @@ -20,9 +18,6 @@ New Saved Links dialog /* ========================================================================== Recent Roundups Editor Styles ========================================================================== */ -#link_roundups_roundup .inside { - min-height: 250px; -} #link_roundups_roundup .pagination { margin: 10px 0; } @@ -30,7 +25,13 @@ Recent Roundups Editor Styles padding-bottom: 15px; } #link_roundups_roundup #filter_links { - margin: 10px 0; + margin: 0 10px 0; +} +button.button.append-saved-links { + margin: 0 10px 0 0; +} +.tablenav .actions select[name="link_date"] { + float: none; } div.display-saved-links div.pagination { height: 30px; @@ -49,4 +50,4 @@ div.display-saved-links .none-found { font-style: italic; font-weight: bold; } -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlc3MvbHJvdW5kdXBzLWFkbWluLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0E7RUFDRSxrQkFBQTtFQUNBLDZCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTs7QUFKRiw4QkFLRSxNQUFLO0VBQ0gscUJBQUE7RUFDQSxpQkFBQTs7Ozs7QUFNSixTQUFTLGFBQWEsc0JBQXVCO0VBQzNDLGFBQUE7Ozs7O0FBTUYsc0JBQ0U7RUFDRSxpQkFBQTs7QUFGSixzQkFJRTtFQUNFLGNBQUE7O0FBQ0Esc0JBRkYsWUFFRztFQUNGLG9CQUFBOztBQVBILHNCQVVFO0VBQ0UsY0FBQTs7QUFJSixHQUFHLG9CQUNELElBQUc7RUFDRCxZQUFBOztBQUZKLEdBQUcsb0JBQ0QsSUFBRyxXQUVEO0FBSEosR0FBRyxvQkFDRCxJQUFHLFdBR0Q7RUFDRSxXQUFBO0VBQ0EscUJBQUE7O0FBTk4sR0FBRyxvQkFDRCxJQUFHLFdBT0Q7RUFDSSxjQUFBOztBQVRSLEdBQUcsb0JBWUQ7RUFDQSx1QkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkNyZWF0ZSBNYWlsQ2hpbXAgQ2FtcGFpZ24gQnV0dG9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2xpbmstcm91bmR1cHMtcHVibGlzaC1hY3Rpb25zIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDEwcHggYXV0bztcbiAgfVxufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbk5ldyBTYXZlZCBMaW5rcyBkaWFsb2dcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ud3AtYWRtaW4ucG9zdC1uZXctcGhwLnBvc3QtdHlwZS1yb3VuZHVwbGluayAjbWlub3ItcHVibGlzaGluZy1hY3Rpb25ze1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmVjZW50IFJvdW5kdXBzIEVkaXRvciBTdHlsZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jbGlua19yb3VuZHVwc19yb3VuZHVwIHtcbiAgLmluc2lkZSB7XG4gICAgbWluLWhlaWdodDogMjUwcHg7XG4gIH1cbiAgLnBhZ2luYXRpb24ge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgICY6bGFzdC1jaGlsZCB7XG5cdCAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgfVxuICB9XG4gICNmaWx0ZXJfbGlua3Mge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICB9XG59XG5cbmRpdi5kaXNwbGF5LXNhdmVkLWxpbmtzIHtcbiAgZGl2LnBhZ2luYXRpb24ge1xuICAgIGhlaWdodDozMHB4O1xuICAgIHNwYW4sXG4gICAgYSB7XG4gICAgICBjb2xvcjogIzAwMDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gICAgLmN1cnJlbnQge1xuICAgICAgICBjb2xvcjogI0M3QzdDNztcbiAgICB9XG4gIH1cbiAgLm5vbmUtZm91bmQge1xuICBtYXJnaW46LjI1ZW0gMCAwLjVlbSAwO1xuICBkaXNwbGF5OmJsb2NrO1xuICBmb250LXN0eWxlOml0YWxpYztcbiAgZm9udC13ZWlnaHQ6Ym9sZDtcbiAgfVxufVxuIl19 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlc3MvbHJvdW5kdXBzLWFkbWluLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0E7RUFDRSxrQkFBQTtFQUNBLDZCQUFBOztBQUZGLDhCQUdFLE1BQUs7RUFDSCxxQkFBQTtFQUNBLGlCQUFBOzs7OztBQU1KLFNBQVMsYUFBYSxzQkFBdUI7RUFDM0MsYUFBQTs7Ozs7QUFNRixzQkFHRTtFQUNFLGNBQUE7O0FBQ0Esc0JBRkYsWUFFRztFQUNDLG9CQUFBOztBQU5OLHNCQVNFO0VBQ0UsZ0JBQUE7O0FBR0osTUFBTSxPQUFPO0VBQ1gsa0JBQUE7O0FBRUYsU0FBVSxTQUFTLE9BQU07RUFDdkIsV0FBQTs7QUFHRixHQUFHLG9CQUNELElBQUc7RUFDRCxZQUFBOztBQUZKLEdBQUcsb0JBQ0QsSUFBRyxXQUVEO0FBSEosR0FBRyxvQkFDRCxJQUFHLFdBR0Q7RUFDRSxXQUFBO0VBQ0EscUJBQUE7O0FBTk4sR0FBRyxvQkFDRCxJQUFHLFdBT0Q7RUFDSSxjQUFBOztBQVRSLEdBQUcsb0JBWUQ7RUFDQSx1QkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkNyZWF0ZSBNYWlsQ2hpbXAgQ2FtcGFpZ24gQnV0dG9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2xpbmstcm91bmR1cHMtcHVibGlzaC1hY3Rpb25zIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcbiAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbjogMTBweCBhdXRvO1xuICB9XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuTmV3IFNhdmVkIExpbmtzIGRpYWxvZ1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi53cC1hZG1pbi5wb3N0LW5ldy1waHAucG9zdC10eXBlLXJvdW5kdXBsaW5rICNtaW5vci1wdWJsaXNoaW5nLWFjdGlvbnN7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZWNlbnQgUm91bmR1cHMgRWRpdG9yIFN0eWxlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNsaW5rX3JvdW5kdXBzX3JvdW5kdXAge1xuICAuaW5zaWRlIHtcbiAgfVxuICAucGFnaW5hdGlvbiB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICAgIH1cbiAgfVxuICAjZmlsdGVyX2xpbmtzIHtcbiAgICBtYXJnaW46IDAgMTBweCAwO1xuICB9XG59XG5idXR0b24uYnV0dG9uLmFwcGVuZC1zYXZlZC1saW5rcyB7XG4gIG1hcmdpbjogMCAxMHB4IDAgMDtcbn1cbi50YWJsZW5hdiAuYWN0aW9ucyBzZWxlY3RbbmFtZT1cImxpbmtfZGF0ZVwiXSB7XG4gIGZsb2F0OiBub25lO1xufVxuXG5kaXYuZGlzcGxheS1zYXZlZC1saW5rcyB7XG4gIGRpdi5wYWdpbmF0aW9uIHtcbiAgICBoZWlnaHQ6MzBweDtcbiAgICBzcGFuLFxuICAgIGEge1xuICAgICAgY29sb3I6ICMwMDA7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICAgIC5jdXJyZW50IHtcbiAgICAgICAgY29sb3I6ICNDN0M3Qzc7XG4gICAgfVxuICB9XG4gIC5ub25lLWZvdW5kIHtcbiAgbWFyZ2luOi4yNWVtIDAgMC41ZW0gMDtcbiAgZGlzcGxheTpibG9jaztcbiAgZm9udC1zdHlsZTppdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OmJvbGQ7XG4gIH1cbn1cbiJdfQ== */ \ No newline at end of file diff --git a/css/lroundups-admin.min.css b/css/lroundups-admin.min.css index 21bdf65..9775566 100644 --- a/css/lroundups-admin.min.css +++ b/css/lroundups-admin.min.css @@ -1 +1 @@ -#link_roundups_roundup #filter_links,#link_roundups_roundup .pagination{margin:10px 0}#link-roundups-publish-actions{text-align:center;border-bottom:1px solid #ccc;margin-bottom:10px;padding-bottom:10px}#link-roundups-publish-actions input[type=submit]{display:inline-block;margin:10px auto}.wp-admin.post-new-php.post-type-rounduplink #minor-publishing-actions{display:none}#link_roundups_roundup .inside{min-height:250px}#link_roundups_roundup .pagination:last-child{padding-bottom:15px}div.display-saved-links div.pagination{height:30px}div.display-saved-links div.pagination a,div.display-saved-links div.pagination span{color:#000;text-decoration:none}div.display-saved-links div.pagination .current{color:#C7C7C7}div.display-saved-links .none-found{margin:.25em 0 .5em;display:block;font-style:italic;font-weight:700} \ No newline at end of file +#link-roundups-publish-actions{text-align:center;border-bottom:1px solid #ccc}#link-roundups-publish-actions input[type=submit]{display:inline-block;margin:10px auto}.wp-admin.post-new-php.post-type-rounduplink #minor-publishing-actions{display:none}#link_roundups_roundup .pagination{margin:10px 0}#link_roundups_roundup .pagination:last-child{padding-bottom:15px}#link_roundups_roundup #filter_links{margin:0 10px}button.button.append-saved-links{margin:0 10px 0 0}.tablenav .actions select[name=link_date]{float:none}div.display-saved-links div.pagination{height:30px}div.display-saved-links div.pagination a,div.display-saved-links div.pagination span{color:#000;text-decoration:none}div.display-saved-links div.pagination .current{color:#C7C7C7}div.display-saved-links .none-found{margin:.25em 0 .5em;display:block;font-style:italic;font-weight:700} \ No newline at end of file diff --git a/css/lroundups.css b/css/lroundups.css index 25ad888..77d278a 100644 --- a/css/lroundups.css +++ b/css/lroundups.css @@ -72,10 +72,4 @@ Saved Links Widget .wp-list-table.lroundups-links tfoot td { border-top: 1px solid #e1e1e1; } -button.button.append-saved-links { - margin: 10px 10px 10px 0; -} -.tablenav .actions select[name="link_date"] { - float: none; -} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlc3MvbHJvdW5kdXBzLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsQ0FBQztFQUNDLFdBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBOztBQUpGLENBQUMsY0FLQztFQUNFLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTs7QUFSSixDQUFDLGNBVUM7RUFDRSxjQUFBOztBQVhKLENBQUMsY0FhQztFQUNFLFdBQUE7RUFDQSxtQkFBQTs7QUFFRixDQWpCRCxjQWlCRTtFQUNDLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7O0FBSUosVUFBVyxFQUFDO0VBQ1YsNEJBQUE7Ozs7O0FBT0YsT0FBTyxZQUNMO0VBQ0Usa0JBQUE7RUFDRCxnQkFBQTs7QUFISCxPQUFPLFlBS0w7RUFDRSxtQkFBQTs7QUFOSixPQUFPLFlBS0wsRUFFRTtFQUNFLGtCQUFBOztBQVJOLE9BQU8sWUFLTCxFQUtFLFFBQVE7RUFDTixrQkFBQTs7QUFFRixPQWJHLFlBS0wsRUFRRztFQUNGLFdBQUE7O0FBZEgsT0FBTyxZQWlCTCxJQUFHO0VBQ0QsV0FBQTs7QUFsQkosT0FBTyxZQWlCTCxJQUFHLFVBRUQ7RUFDRSxXQUFBO0VBQ0EsbUJBQUE7O0FBTU4sY0FBYyxnQkFDWixNQUFNO0FBRFIsY0FBYyxnQkFFWixNQUFNO0VBQ0osZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBOztBQUxKLGNBQWMsZ0JBQ1osTUFBTSxHQUtKO0FBTkosY0FBYyxnQkFFWixNQUFNLEdBSUo7RUFDRSxnQkFBQTs7QUFQTixjQUFjLGdCQVVaLE1BQU07RUFDSixnQ0FBQTs7QUFYSixjQUFjLGdCQWFaLE1BQU07RUFDSiw2QkFBQTs7QUFHSixNQUFNLE9BQU87RUFDWCx3QkFBQTs7QUFFRixTQUFVLFNBQVMsT0FBTTtFQUN2QixXQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkxpbmsgUm91bmR1cHMgU2F2ZWQgTGluayBQYXJhZ3JhcGggV3JhcHBlciBTdHlsZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbnAubHItc2F2ZWQtbGluayB7XG4gIGZsb2F0OiBsZWZ0O1xuICBkaXNwbGF5OiBibG9jaztcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgd2lkdGg6IDEwMCU7XG4gIGEge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG4gIGVtIHtcbiAgICBjb2xvcjogIzgwODA4MDtcbiAgfVxuICBpbWcge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogMCAxZW0gMWVtIDA7XG4gIH1cbiAgJi5zcG9uc29yZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNFREYxRjQ7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiAjODA4MDgwO1xuICAgIHBhZGRpbmctdG9wOiA1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICBtYXJnaW46IDAuMmVtIDA7XG4gIH1cbn1cblxuLndwLWVkaXRvciBwLmxyLXNhdmVkLWxpbmsge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggMXB4O1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5TYXZlZCBMaW5rcyBXaWRnZXRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ud2lkZ2V0LnNhdmVkLWxpbmtzIHtcbiAgaDUge1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgXHRmb250LXdlaWdodDo3MDA7XG4gIH1cbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgIH1cbiAgICAuc291cmNlIHNwYW4ge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cbiAgICAmLm1vcmVsaW5rIHtcblx0ICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbiAgZGl2LnBvc3QtbGVhZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgaW1nIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luOiAwIDFlbSAxZW0gMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gZml4IGZvciBkaXNwbGF5IG9mIGNoZWNrYm94IGluIGhlYWRlciBvZiBzYXZlZCBsaW5rcyBhZG1pbiBib3hcbi53cC1saXN0LXRhYmxlLmxyb3VuZHVwcy1saW5rcyB7XG4gIHRmb290IHRkLFxuICB0aGVhZCB0ZCB7XG4gICAgcGFkZGluZy10b3A6IDhweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xuICAgIHBhZGRpbmctbGVmdDogM3B4O1xuICAgIGlucHV0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgfVxuICB9XG4gIHRoZWFkIHRkIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UxZTFlMVxuICB9XG4gIHRmb290IHRkIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UxZTFlMVxuICB9XG59XG5idXR0b24uYnV0dG9uLmFwcGVuZC1zYXZlZC1saW5rcyB7XG4gIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDtcbn1cbi50YWJsZW5hdiAuYWN0aW9ucyBzZWxlY3RbbmFtZT1cImxpbmtfZGF0ZVwiXSB7XG4gIGZsb2F0OiBub25lO1xufVxuIl19 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlc3MvbHJvdW5kdXBzLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsQ0FBQztFQUNDLFdBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBOztBQUpGLENBQUMsY0FLQztFQUNFLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTs7QUFSSixDQUFDLGNBVUM7RUFDRSxjQUFBOztBQVhKLENBQUMsY0FhQztFQUNFLFdBQUE7RUFDQSxtQkFBQTs7QUFFRixDQWpCRCxjQWlCRTtFQUNDLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7O0FBSUosVUFBVyxFQUFDO0VBQ1YsNEJBQUE7Ozs7O0FBT0YsT0FBTyxZQUNMO0VBQ0Usa0JBQUE7RUFDRCxnQkFBQTs7QUFISCxPQUFPLFlBS0w7RUFDRSxtQkFBQTs7QUFOSixPQUFPLFlBS0wsRUFFRTtFQUNFLGtCQUFBOztBQVJOLE9BQU8sWUFLTCxFQUtFLFFBQVE7RUFDTixrQkFBQTs7QUFFRixPQWJHLFlBS0wsRUFRRztFQUNGLFdBQUE7O0FBZEgsT0FBTyxZQWlCTCxJQUFHO0VBQ0QsV0FBQTs7QUFsQkosT0FBTyxZQWlCTCxJQUFHLFVBRUQ7RUFDRSxXQUFBO0VBQ0EsbUJBQUE7O0FBTU4sY0FBYyxnQkFDWixNQUFNO0FBRFIsY0FBYyxnQkFFWixNQUFNO0VBQ0osZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBOztBQUxKLGNBQWMsZ0JBQ1osTUFBTSxHQUtKO0FBTkosY0FBYyxnQkFFWixNQUFNLEdBSUo7RUFDRSxnQkFBQTs7QUFQTixjQUFjLGdCQVVaLE1BQU07RUFDSixnQ0FBQTs7QUFYSixjQUFjLGdCQWFaLE1BQU07RUFDSiw2QkFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5MaW5rIFJvdW5kdXBzIFNhdmVkIExpbmsgUGFyYWdyYXBoIFdyYXBwZXIgU3R5bGVcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5wLmxyLXNhdmVkLWxpbmsge1xuICBmbG9hdDogbGVmdDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHdpZHRoOiAxMDAlO1xuICBhIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuICBlbSB7XG4gICAgY29sb3I6ICM4MDgwODA7XG4gIH1cbiAgaW1nIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDAgMWVtIDFlbSAwO1xuICB9XG4gICYuc3BvbnNvcmVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRURGMUY0O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBjb2xvcjogIzgwODA4MDtcbiAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgbWFyZ2luOiAwLjJlbSAwO1xuICB9XG59XG5cbi53cC1lZGl0b3IgcC5sci1zYXZlZC1saW5rIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IDFweDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuU2F2ZWQgTGlua3MgV2lkZ2V0XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLndpZGdldC5zYXZlZC1saW5rcyB7XG4gIGg1IHtcbiAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gIFx0Zm9udC13ZWlnaHQ6NzAwO1xuICB9XG4gIHAge1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICB9XG4gICAgLnNvdXJjZSBzcGFuIHtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gICAgJi5tb3JlbGluayB7XG5cdCAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG4gIGRpdi5wb3N0LWxlYWQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGltZyB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIG1hcmdpbjogMCAxZW0gMWVtIDA7XG4gICAgfVxuICB9XG59XG5cbi8vIGZpeCBmb3IgZGlzcGxheSBvZiBjaGVja2JveCBpbiBoZWFkZXIgb2Ygc2F2ZWQgbGlua3MgYWRtaW4gYm94XG4ud3AtbGlzdC10YWJsZS5scm91bmR1cHMtbGlua3Mge1xuICB0Zm9vdCB0ZCxcbiAgdGhlYWQgdGQge1xuICAgIHBhZGRpbmctdG9wOiA4cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDNweDtcbiAgICBpbnB1dCB7XG4gICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgIH1cbiAgfVxuICB0aGVhZCB0ZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTFcbiAgfVxuICB0Zm9vdCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMWUxZTFcbiAgfVxufVxuIl19 */ \ No newline at end of file diff --git a/css/lroundups.min.css b/css/lroundups.min.css index 245720a..151a67f 100644 --- a/css/lroundups.min.css +++ b/css/lroundups.min.css @@ -1 +1 @@ -p.lr-saved-link{float:left;display:block;vertical-align:top;width:100%}p.lr-saved-link a{font-weight:700;text-decoration:none;vertical-align:top}p.lr-saved-link em{color:grey}p.lr-saved-link img{float:left;margin:0 1em 1em 0}p.lr-saved-link.sponsored{background-color:#EDF1F4;font-style:italic;color:grey;padding-top:5px;padding-bottom:5px;margin:.2em 0}.wp-editor p.lr-saved-link{background-position:0 1px}.widget.saved-links h5{margin-bottom:2px;font-weight:700}.widget.saved-links p{margin-bottom:12px}.widget.saved-links p .description{margin-bottom:2px}.widget.saved-links p .source span{font-style:italic}.widget.saved-links p.morelink{clear:both}.widget.saved-links div.post-lead{float:left}.widget.saved-links div.post-lead img{float:left;margin:0 1em 1em 0}.wp-list-table.lroundups-links tfoot td,.wp-list-table.lroundups-links thead td{padding-top:8px;padding-bottom:8px;padding-left:3px}.wp-list-table.lroundups-links tfoot td input,.wp-list-table.lroundups-links thead td input{margin-left:8px}.wp-list-table.lroundups-links thead td{border-bottom:1px solid #e1e1e1}.wp-list-table.lroundups-links tfoot td{border-top:1px solid #e1e1e1}button.button.append-saved-links{margin:10px 10px 10px 0}.tablenav .actions select[name=link_date]{float:none} \ No newline at end of file +p.lr-saved-link{float:left;display:block;vertical-align:top;width:100%}p.lr-saved-link a{font-weight:700;text-decoration:none;vertical-align:top}p.lr-saved-link em{color:grey}p.lr-saved-link img{float:left;margin:0 1em 1em 0}p.lr-saved-link.sponsored{background-color:#EDF1F4;font-style:italic;color:grey;padding-top:5px;padding-bottom:5px;margin:.2em 0}.wp-editor p.lr-saved-link{background-position:0 1px}.widget.saved-links h5{margin-bottom:2px;font-weight:700}.widget.saved-links p{margin-bottom:12px}.widget.saved-links p .description{margin-bottom:2px}.widget.saved-links p .source span{font-style:italic}.widget.saved-links p.morelink{clear:both}.widget.saved-links div.post-lead{float:left}.widget.saved-links div.post-lead img{float:left;margin:0 1em 1em 0}.wp-list-table.lroundups-links tfoot td,.wp-list-table.lroundups-links thead td{padding-top:8px;padding-bottom:8px;padding-left:3px}.wp-list-table.lroundups-links tfoot td input,.wp-list-table.lroundups-links thead td input{margin-left:8px}.wp-list-table.lroundups-links thead td{border-bottom:1px solid #e1e1e1}.wp-list-table.lroundups-links tfoot td{border-top:1px solid #e1e1e1} \ No newline at end of file diff --git a/less/lroundups-admin.less b/less/lroundups-admin.less index 7633c35..abb13d9 100644 --- a/less/lroundups-admin.less +++ b/less/lroundups-admin.less @@ -4,8 +4,6 @@ Create MailChimp Campaign Button #link-roundups-publish-actions { text-align: center; border-bottom: 1px solid #ccc; - margin-bottom: 10px; - padding-bottom: 10px; input[type="submit"] { display: inline-block; margin: 10px auto; @@ -23,18 +21,23 @@ Recent Roundups Editor Styles ========================================================================== */ #link_roundups_roundup { .inside { - min-height: 250px; } .pagination { margin: 10px 0; &:last-child { - padding-bottom: 15px; + padding-bottom: 15px; } } #filter_links { - margin: 10px 0; + margin: 0 10px 0; } } +button.button.append-saved-links { + margin: 0 10px 0 0; +} +.tablenav .actions select[name="link_date"] { + float: none; +} div.display-saved-links { div.pagination { diff --git a/less/lroundups.less b/less/lroundups.less index 6bc7ecb..8c389b6 100644 --- a/less/lroundups.less +++ b/less/lroundups.less @@ -80,9 +80,3 @@ Saved Links Widget border-top: 1px solid #e1e1e1 } } -button.button.append-saved-links { - margin: 10px 10px 10px 0; -} -.tablenav .actions select[name="link_date"] { - float: none; -} From 455344a696357eab074831ab4f162268cb1aa740 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Wed, 15 May 2019 18:25:27 -0400 Subject: [PATCH 60/67] Use rel="noopener noreferrer" for saved link widget opening in target="_blank" For https://github.com/INN/link-roundups/issues/30 because of https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/ --- inc/saved-links/class-saved-links-widget.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/inc/saved-links/class-saved-links-widget.php b/inc/saved-links/class-saved-links-widget.php index 0c05e0c..bf3e563 100644 --- a/inc/saved-links/class-saved-links-widget.php +++ b/inc/saved-links/class-saved-links-widget.php @@ -57,9 +57,12 @@ function widget( $args, $instance ) {
' . get_the_title() . ''; } else { @@ -79,7 +82,10 @@ function widget( $args, $instance ) { if ( isset($custom["lr_source"][0] ) && ! empty ( $custom["lr_source"][0] ) ) { $lr_source = '

' . __('Source: ', 'link-roundups') . ''; if ( !empty( $custom["lr_url"][0] ) ) { - $lr_source .= ' Date: Thu, 16 May 2019 10:39:57 -0400 Subject: [PATCH 61/67] Tag version 1.0-rc1 --- link-roundups.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/link-roundups.php b/link-roundups.php index 790d541..7fbca6b 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -5,7 +5,7 @@ Description: Use Link Roundups to aggregate links and create roundup posts. Mailchimp API integration and browser bookmark tool. Formerly argo-links from NPR's Project Argo. Author: INN Labs Author URI: http://labs.inn.org/ -Version: 1.0 +Version: 1.0-rc1 License: GPLv2 Text Domain: link-roundups From e0a54e5403becf2a2a920a35092bba5bc5e226f4 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 16 May 2019 16:42:48 -0400 Subject: [PATCH 62/67] A random package-lock.json update --- package-lock.json | 1666 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1665 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index b9d51fd..81e717a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,1669 @@ { "name": "link-roundups", "version": "1.0", - "lockfileVersion": 1 + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=" + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=" + }, + "argparse": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "requires": { + "underscore": "~1.7.0", + "underscore.string": "~2.4.0" + }, + "dependencies": { + "underscore.string": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=" + } + } + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "asn1": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=" + }, + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" + }, + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" + }, + "aws-sign2": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=" + }, + "boom": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", + "requires": { + "hoek": "0.9.x" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "requires": { + "pako": "~0.2.0" + } + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha1-TLiDLSNhJYmwQG6eKVbBfwb99TE=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "requires": { + "commander": "2.8.x", + "source-map": "0.4.x" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "coffee-script": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=" + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "requires": { + "delayed-stream": "0.0.5" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", + "requires": { + "boom": "0.4.x" + } + }, + "ctype": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=" + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-equal": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.0.0.tgz", + "integrity": "sha1-mWedO70EcVb81FDT0B7rkGhpHoM=" + }, + "defined": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=" + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "faye-websocket": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz", + "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=" + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "requires": { + "glob": "~3.2.9", + "lodash": "~2.4.1" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=" + }, + "form-data": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", + "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=", + "requires": { + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime": "~1.2.11" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + } + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "requires": { + "globule": "~0.1.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=" + }, + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=" + } + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=" + } + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "grunt": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", + "dev": true, + "requires": { + "async": "~0.1.22", + "coffee-script": "~1.3.3", + "colors": "~0.6.2", + "dateformat": "1.0.2-1.2.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.1.2", + "getobject": "~0.1.0", + "glob": "~3.1.21", + "grunt-legacy-log": "~0.1.0", + "grunt-legacy-util": "~0.2.0", + "hooker": "~0.2.3", + "iconv-lite": "~0.2.11", + "js-yaml": "~2.0.5", + "lodash": "~0.9.2", + "minimatch": "~0.2.12", + "nopt": "~1.0.10", + "rimraf": "~2.2.8", + "underscore.string": "~2.2.1", + "which": "~1.0.5" + } + }, + "grunt-contrib-cssmin": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.11.0.tgz", + "integrity": "sha1-CwiI3p2FScPYRKf8eaJ5tCdqe8c=", + "dev": true, + "requires": { + "chalk": "^0.5.1", + "clean-css": "^3.0.1", + "maxmin": "^1.0.0" + } + }, + "grunt-contrib-less": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-0.12.0.tgz", + "integrity": "sha1-7mpBtflLvpa18NhrFuBhwRS5VL4=", + "dev": true, + "requires": { + "async": "^0.2.10", + "chalk": "^0.5.1", + "less": "^1.7.2", + "lodash": "^2.4.1", + "maxmin": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "gzip-size": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-0.1.1.tgz", + "integrity": "sha1-rjNIO2/IIk6DQilt4Qjvk3V/duA=", + "dev": true, + "requires": { + "concat-stream": "^1.4.1", + "zlib-browserify": "^0.0.3" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "maxmin": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-0.1.0.tgz", + "integrity": "sha1-ldgcUonjqdMPf8fcVZwCTlAwydA=", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "gzip-size": "^0.1.0", + "pretty-bytes": "^0.1.0" + }, + "dependencies": { + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + } + } + }, + "pretty-bytes": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-0.1.2.tgz", + "integrity": "sha1-zZApTVihyk6KXQ+5yCJZmIgazwA=", + "dev": true + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "grunt-contrib-uglify": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.2.tgz", + "integrity": "sha1-GmHG8hJBDkq7T3yJFTcXsQFWAmA=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "lodash": "^3.2.0", + "maxmin": "^1.0.0", + "uglify-js": "^2.4.24", + "uri-path": "0.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-watch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz", + "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=", + "dev": true, + "requires": { + "async": "~0.2.9", + "gaze": "~0.5.1", + "lodash": "~2.4.1", + "tiny-lr-fork": "0.0.5" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "grunt-legacy-log": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", + "requires": { + "colors": "~0.6.2", + "grunt-legacy-log-utils": "~0.1.1", + "hooker": "~0.2.3", + "lodash": "~2.4.1", + "underscore.string": "~2.3.3" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=" + } + } + }, + "grunt-legacy-log-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", + "requires": { + "colors": "~0.6.2", + "lodash": "~2.4.1", + "underscore.string": "~2.3.3" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=" + } + } + }, + "grunt-legacy-util": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", + "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", + "requires": { + "async": "~0.1.22", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~0.9.2", + "underscore.string": "~2.2.1", + "which": "~1.0.5" + } + }, + "grunt-po2mo": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/grunt-po2mo/-/grunt-po2mo-0.1.2.tgz", + "integrity": "sha1-kI9zwcAAhjhazIPAdA7jYO9SdBs=", + "dev": true, + "requires": { + "sync-exec": "^0.4.0" + } + }, + "grunt-pot": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/grunt-pot/-/grunt-pot-0.2.1.tgz", + "integrity": "sha1-eCFIGpkTxY11K22N9XV7ZRz6Ous=", + "dev": true + }, + "grunt-shell": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-2.1.0.tgz", + "integrity": "sha1-Q595FZ7RHmSmUaacyKPQK+v17MI=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "npm-run-path": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "gzip-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", + "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "requires": { + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" + }, + "hawk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", + "requires": { + "boom": "0.4.x", + "cryptiles": "0.2.x", + "hoek": "0.9.x", + "sntp": "0.2.x" + } + }, + "hoek": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=" + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=" + }, + "http-signature": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", + "requires": { + "asn1": "0.1.11", + "assert-plus": "^0.1.5", + "ctype": "0.5.3" + } + }, + "iconv-lite": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "js-yaml": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "requires": { + "argparse": "~ 0.1.11", + "esprima": "~ 1.0.2" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "less": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/less/-/less-1.7.5.tgz", + "integrity": "sha1-TyIM9yiKJ+rKc5325ICKLUwNV1Y=", + "requires": { + "clean-css": "2.2.x", + "graceful-fs": "~3.0.2", + "mime": "~1.2.11", + "mkdirp": "~0.5.0", + "request": "~2.40.0", + "source-map": "0.1.x" + }, + "dependencies": { + "clean-css": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.2.23.tgz", + "integrity": "sha1-BZC1R4tRbEkD7cLYm9P9vdKGMow=", + "optional": true, + "requires": { + "commander": "2.2.x" + } + }, + "commander": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz", + "integrity": "sha1-F1rUuTF/P/YV8gHB5XIk9Vo+kd8=", + "optional": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "optional": true, + "requires": { + "natives": "^1.1.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "load-grunt-tasks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-1.0.0.tgz", + "integrity": "sha1-NKxnBIWb1q4by9fjwh96D8bqx9c=", + "dev": true, + "requires": { + "findup-sync": "^0.1.2", + "multimatch": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "lodash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "maxmin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", + "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "requires": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=" + }, + "mime-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", + "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=" + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "multimatch": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-1.0.1.tgz", + "integrity": "sha1-GFR8/iWNAf0zJDWVONv68QRqfI8=", + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "minimatch": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", + "integrity": "sha1-4N0hILSeG3JM6NcUxSCCKpQ4V20=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "natives": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", + "integrity": "sha1-Lw8iT8mn3VNAfHZnyEz42+dz3lg=" + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "noptify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz", + "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=", + "requires": { + "nopt": "~2.0.0" + }, + "dependencies": { + "nopt": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz", + "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=", + "requires": { + "abbrev": "1" + } + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", + "integrity": "sha1-y1QPk7srIqfVlBaRoojWDo6pOG4=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz", + "integrity": "sha1-UKk+K1r2aRwxvOpdrnjubqGQN2g=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz", + "integrity": "sha1-TdZw9pbx5uhC5mtLXoOTAaub62c=", + "requires": { + "aws-sign2": "~0.5.0", + "forever-agent": "~0.5.0", + "form-data": "~0.1.0", + "hawk": "1.1.1", + "http-signature": "~0.10.0", + "json-stringify-safe": "~5.0.0", + "mime-types": "~1.0.1", + "node-uuid": "~1.4.0", + "oauth-sign": "~0.3.0", + "qs": "~1.0.0", + "stringstream": "~0.0.4", + "tough-cookie": ">=0.12.0", + "tunnel-agent": "~0.4.0" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", + "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", + "requires": { + "hoek": "0.9.x" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha1-eIAiWw1K0Q4wkn0Weh1vL9OzOnI=" + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=" + }, + "sync-exec": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.4.0.tgz", + "integrity": "sha1-N1guegT684zW5T6iBEW5n5kvaTM=" + }, + "tape": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/tape/-/tape-0.2.2.tgz", + "integrity": "sha1-ZMz6S37PSgBgAH5hcW1CR4FnFjc=", + "requires": { + "deep-equal": "~0.0.0", + "defined": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "tiny-lr-fork": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz", + "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=", + "requires": { + "debug": "~0.7.0", + "faye-websocket": "~0.4.3", + "noptify": "~0.0.3", + "qs": "~0.5.2" + }, + "dependencies": { + "qs": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", + "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=" + } + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" + }, + "underscore.string": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", + "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=" + }, + "uri-path": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-0.0.2.tgz", + "integrity": "sha1-gD6wHy/rF5J9zOD2GH5yt19T9VQ=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + } + } + }, + "zlib-browserify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.3.tgz", + "integrity": "sha1-JAzNv9AgP6hCsTDe77FBQSLIzFA=", + "requires": { + "tape": "~0.2.2" + } + } + } } From 74cdc181ea7a8afc1233cfa338b4e063b37b65ea Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 16 May 2019 16:43:06 -0400 Subject: [PATCH 63/67] Update wordpress-mailchimp-tools to fix https://github.com/INN/link-roundups/issues/163 --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index d7a49cf..3874666 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { "require": { - "inn/wordpress-mailchimp-tools": "dev-master#31200e4b7bada4ab7c74449f4495b6f61256b283" + "inn/wordpress-mailchimp-tools": "dev-master#4ef8919f2e214ad0493c12405e6c8a263ac7a1c6" } } diff --git a/composer.lock b/composer.lock index 70e3bdb..c752a82 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c1dc5f81e182d0786caca19f7552aef2", + "content-hash": "c2dff385ba98797520b22558f1a9b7f1", "packages": [ { "name": "drewm/mailchimp-api", @@ -56,12 +56,12 @@ "source": { "type": "git", "url": "https://github.com/INN/wordpress-mailchimp-tools.git", - "reference": "31200e4b7bada4ab7c74449f4495b6f61256b283" + "reference": "4ef8919f2e214ad0493c12405e6c8a263ac7a1c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/31200e4b7bada4ab7c74449f4495b6f61256b283", - "reference": "31200e4b7bada4ab7c74449f4495b6f61256b283", + "url": "https://api.github.com/repos/INN/wordpress-mailchimp-tools/zipball/4ef8919f2e214ad0493c12405e6c8a263ac7a1c6", + "reference": "4ef8919f2e214ad0493c12405e6c8a263ac7a1c6", "shasum": "" }, "require": { @@ -95,7 +95,7 @@ "api", "email" ], - "time": "2019-05-10T02:35:02+00:00" + "time": "2019-05-16T20:35:15+00:00" } ], "packages-dev": [], From 6e312cf87929232cfd55fc3a4f10ee619b61566e Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 16 May 2019 17:05:34 -0400 Subject: [PATCH 64/67] Fix for mangled URL params in link to dependency plugin install page. Fixes https://github.com/INN/link-roundups/issues/164 --- inc/saved-links/class-saved-links.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/saved-links/class-saved-links.php b/inc/saved-links/class-saved-links.php index e9a6b46..8577181 100644 --- a/inc/saved-links/class-saved-links.php +++ b/inc/saved-links/class-saved-links.php @@ -377,7 +377,7 @@ public static function build_lroundups_page_admonition() { '%2$s', add_query_arg( array( - 's' => htmlspecialchars('"press this"'), + 's' => htmlspecialchars('press-this'), 'tab' => 'search', 'type' => 'term', ), From 2407d7cfe2e30ed682b3cb9bd2bf7382d968c27d Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Thu, 16 May 2019 17:31:52 -0400 Subject: [PATCH 65/67] check WordPress version to prevent deprecated function warning on WP 4.9+ --- inc/link-roundups/class-save-to-site-button.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inc/link-roundups/class-save-to-site-button.php b/inc/link-roundups/class-save-to-site-button.php index 7752813..fcb7588 100644 --- a/inc/link-roundups/class-save-to-site-button.php +++ b/inc/link-roundups/class-save-to-site-button.php @@ -70,7 +70,10 @@ public static function shortcut_link() { // This is the default 'Press This!' button link. $shortcut_link = ''; - if ( function_exists( 'get_shortcut_link' ) ) { + if ( + version_compare( get_bloginfo('version'), '4.9', '<' ) + && function_exists( 'get_shortcut_link' ) + ) { $shortcut_link = htmlspecialchars( get_shortcut_link() ); } From db4b111bbce6046cf74434b635d9197d5e29a144 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 20 May 2019 14:47:56 -0400 Subject: [PATCH 66/67] Various version number and docs bumps for 1.0 --- README.txt | 14 +++----------- link-roundups.php | 2 +- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/README.txt b/README.txt index a9094fd..cf7b576 100644 --- a/README.txt +++ b/README.txt @@ -7,7 +7,7 @@ Tested up to: 5.2 Stable tag: 1.0 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html -Minimum PHP: 5.6 +Requires PHP: 5.6 Text Domain: link-roundups @@ -22,7 +22,7 @@ Collect links from around the web, turn them into roundup posts and streamline t * **Custom HTML for links** Customize the presentation of Saved Links in Link Roundups * **Link Roundups Widget** Display most recent Link Roundup posts by date * **Saved Links Widget** Display a feed of your recent Saved Links, optionally filtered by tags -* **Browser Bookmark** Create new Saved Links via a browser bookmarklet +* **Browser Bookmark** Create new Saved Links via a browser bookmarklet, on supported WordPress configurations * **MailChimp Integration** Create new MailChimp campaigns based on a Link Roundup == Installation == @@ -34,15 +34,7 @@ Via WordPress.org: 3. Navigate to the Admin -> Link Roundups -> Options page to configure the plugin 4. Done! -Via manual upload: - -1. Download this plugin via the "Download" button on [WordPress.org](https://wordpress.org/plugins/link-roundups/#installation) or download a tagged release [from the GitHub releases page](https://github.com/INN/link-roundups/releases). -2. Unzip the package and rename the folder to "link-roundups" (The folder may be named "link-roundups-master" or something else. Uploading the plugin with this name may cause problems if you don't rename it before uploading to your site.) -3. Upload the folder to your WordPress installation in the `wp-content/plugins` directory -4. Log in to your site's WordPress Dashboard, then click on Plugins in the left hand menu -5. Select the Link Roundups plugin and click "activate" -6. Review the plugin settings under the Settings > Link Roundups menu - +For other installation methods, [see this plugin's installation methods on GitHub](https://github.com/INN/link-roundups/blob/master/docs/installation.md). [Read more about installing plugins here](https://codex.wordpress.org/Managing_Plugins#Installing_Plugins). diff --git a/link-roundups.php b/link-roundups.php index 7fbca6b..790d541 100644 --- a/link-roundups.php +++ b/link-roundups.php @@ -5,7 +5,7 @@ Description: Use Link Roundups to aggregate links and create roundup posts. Mailchimp API integration and browser bookmark tool. Formerly argo-links from NPR's Project Argo. Author: INN Labs Author URI: http://labs.inn.org/ -Version: 1.0-rc1 +Version: 1.0 License: GPLv2 Text Domain: link-roundups From 53ccf313895bdf99596e0456547ad526df38f410 Mon Sep 17 00:00:00 2001 From: Ben Keith Date: Mon, 20 May 2019 14:50:11 -0400 Subject: [PATCH 67/67] Fix numbering in installation docs. --- docs/installation.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 642dcf6..e416945 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -16,6 +16,7 @@ From your site's dashboard, go to Plugins, then "Add New", and search for "Link 2. Extract the .zip archive. 3. Rename the plugin directory to `link-roundups`. If the directory the plugin files reside in is named anything else, the plugin will not work. 4. Run `composer install` — this requires [composer](https://getcomposer.org/), the PHP dependency manager. -4. Upload the plugin directory to you server's `wp-content/plugins` directory. -5. Activate the plugin through the [`Plugins` menu](https://codex.wordpress.org/Plugins_Screen) in WordPress. +5. Upload the plugin directory to you server's `wp-content/plugins` directory. +6. Activate the plugin through the [`Plugins` menu](https://codex.wordpress.org/Plugins_Screen) in WordPress. +