Skip to content

Commit

Permalink
v2 release (#85)
Browse files Browse the repository at this point in the history
* chore: replace AutocompleteTokenfield with Newspack Components version (#40)

* feat: use post categories and tags for all listing post types (#39)

* feat: use post categories and tags for all listing post types

* fix: undo patterns post type changes (for another PR)

* chore: remove unneeded admin page highlighting filter

BREAKING CHANGE: This feature will deprecate existing custom taxonomies, so any existing terms for those taxonomies will be lost.

To fix, we can convert terms from the deprecated taxonomies to standard post categories/tags via a migration script.


Fixes #32.

* feat: better integration with Newspack Theme features

* feat: add settings for individual listing type URL slugs

Closes #41.

* fix: wp_insert_post filter name and theme_mod filter

* fix: newspack_blocks support slug

* feat: add revisions support for listings

* chore: update outdated docblock

* refactor: use material icons with Newspack color

* fix: warning about default meta value

* fix: util for checking post type on new posts

* chore: update label of "hide author" setting

* feat: flush permalinks automatically if updating slug option

* feat: update cpt icon and block icons

See #49

* fix: remove material packages

* fix: failing npm ci command

* [WIP] feat: harden post type usage and establish relationships between listings and posts/pages (#43)

* feat: make Business patterns applicable only to places

* feat: create shadow taxonomy for places

* feat: add ability to associate Places with regular posts and pages

* fix: remove default map markers from patterns

* feat: new Price block for Marketplace listings

Also create a proof-of-concept Marketplace listing pattern to test block implementation.

* feat: add meta field with data synced from Price block

* feat: second test pattern

* fix: incorrect conditional for updating shadow terms (whoops)

* feat: abstract shadow tax functions to make it easier to add more

* refactor: simplify setting formattedPrice attribute via useEffect

* chore: fix PHP warning about passing variables

* feat: shadow taxonomies for all CPTs; test automated related listings

* fix: avoid showing post on itself

* fix: incorrect var assignment

* fix: decode HTML entities before rendering currency options

* chore: fix function/class docs

* fix: formatting an empty string results in NaN

* fix: wrong post type being returned by util

* fix: handle all listing post types for shadow taxonomies

* fix: don't show the shadow taxonomy for the post being edited

* feat: add new post button for shadow taxonomies

* chore: instantiate var as empty array, just in case

* fix: updating of terms, and delete orphan terms

* fix: replace Material icon with WordPress icon

* feat: custom UI for parent/child listings instead of WP taxonomy UI

* chore: update function comment

* chore: remove commented-out code

* fix: posts/pages child search fields; only show child UI if published

* fix: logical errors in validation method 🤦

* chore: update function name and comments for clarity

* refactor: use AutocompleteWithSuggestions from newspack-components (#56)

* feat: CSV importer script (#51)

* feat: init CSV importer via CLI command

* refactor: move importer files to subdir

* feat: take field mappings from config file instead of hard-coding them

* feat: add (currently unused) image_ids meta field for future use

* feat: process meta fields and content into block patterns

* fix: mismatch between data types in term handling

* feat: support multiple post types for importing

* docs: add README and sample config

* fix: do not apply content filters to legacy content upon importing

* chore: description

* fix: check if default post type constant is a listing

* feat: update block template; handle social media links

* feat: importer edits for GDG

* feat: add a new global setting and post option to hide date (#57)

* fix: use value property of selection from AutocompleteWithSuggestions (#61)

* fix: use value property of selection from AutocompleteWithSuggestions

* fix: cast listing ID value as an integer

* fix: cast listing IDs as strings to avoid breaking existing listings

* feat: convert legacy custom terms to regular post terms (#67)

* test: init test suite (#60)

* test: init test suite

* chore: fix function comment

* chore: remove redundant lint-php NPM script

* feat: if no view.php, register blocks with default attributes

* fix: activation PHP warning (#70)

* feat: support Newspack Sponsors for listings (#65)

* feat: support Newspack Sponsors

* refactor: response object with author and sponsors

* fix: sponsors for queried listings

* feat: update price block to use placeholder and large font size (#71)

* fix: guard against nonexistent meta object (#66)

* feat: child and related listings UI (#58)

* feat: initial exploration of UI in a modal

* fix: filter out parent post from child listings response

* feat: child and related listings UI

* chore: clear messages when closing modals

* chore: hide shadow terms from menu

* chore: handle errors from fetching suggestions

* chore: more context-sensitive labels for child/parent UI

* chore: update empty message

* refactor: make parent/child UI components more self-contained, reusable

* chore: update newspack-components

* fix: parent/child listings UI bugs

* chore: rename "Child Listings" to "Related Content"

* fix: default listings to one-column-wide.php post template (#77)

* chore: gate legacy taxonomy term deletion behind an environment constant

* fix: memory leaks from legacy term utilities (#81)

* feat: gate custom tax migration behind env flag to avoid expensive ops

* feat: move legacy taxonomy migrator script to a CLI command

* chore: rename CLI command and use ::log instead of ::line

* refactor: move missing/orphan shadow term handling to WP CLI

Co-authored-by: Thomas Guillot <info@thomasguillot.com>
Co-authored-by: Thomas Guillot <thomasguillot@users.noreply.github.com>
  • Loading branch information
3 people authored Jul 6, 2021
1 parent 90da6c5 commit 748810d
Show file tree
Hide file tree
Showing 64 changed files with 33,355 additions and 26,411 deletions.
54 changes: 43 additions & 11 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,54 @@ jobs:
root: ~/
paths:
- project

# Linting
lint:
lint-js-scss:
docker:
- image: circleci/php:7.2-node-browsers
steps:
- checkout_with_workspace
- run:
name: Run SCSS Linter
command: npm run lint:js
name: Run Linter
command: npm run lint

test-php:
docker:
- image: circleci/php:7.2
- image: circleci/mysql:5.6.50
environment:
- WP_TESTS_DIR: '/tmp/wordpress-tests-lib'
- WP_CORE_DIR: '/tmp/wordpress/'
steps:
- checkout
- run:
name: Setup Environment Variables
command: |
echo "export PATH=$HOME/.composer/vendor/bin:$PATH" >> $BASH_ENV
source /home/circleci/.bashrc
- run:
name: Run JS Linter
command: npm run lint:js
name: Install Dependencies
command: |
sudo apt-get update && sudo apt-get install subversion
sudo -E docker-php-ext-install mysqli
sudo apt-get update && sudo apt-get install default-mysql-client
- run:
name: Run Tests
command: |
composer install
composer global require "phpunit/phpunit=5.7.*"
rm -rf $WP_TESTS_DIR $WP_CORE_DIR
bash bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 latest
phpunit
lint-php:
docker:
- image: circleci/php:7.2
steps:
- checkout
- run:
name: Run PHP Linter
name: Lint PHP Files
command: |
composer install
npm run lint:php
./vendor/bin/phpcs
# Release job
release:
Expand Down Expand Up @@ -71,10 +101,12 @@ jobs:
workflows:
version: 2
main:
all:
jobs:
- test-php
- build
- lint:
- lint-php
- lint-js-scss:
requires:
- build
- release:
Expand Down
2 changes: 1 addition & 1 deletion .distignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ node_modules
/bin
/src/**/*.js
*.scss
import
/import
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
.DS_Store
.cache
/vendor/
/node_modules/
/dist/
.DS_Store
release
.cache
/import/
155 changes: 155 additions & 0 deletions bin/install-wp-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
#!/usr/bin/env bash

if [ $# -lt 3 ]; then
echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation]"
exit 1
fi

DB_NAME=$1
DB_USER=$2
DB_PASS=$3
DB_HOST=${4-localhost}
WP_VERSION=${5-latest}
SKIP_DB_CREATE=${6-false}

TMPDIR=${TMPDIR-/tmp}
TMPDIR=$(echo $TMPDIR | sed -e "s/\/$//")
WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR/wordpress-tests-lib}
WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR/wordpress/}

download() {
if [ `which curl` ]; then
curl -s "$1" > "$2";
elif [ `which wget` ]; then
wget -nv -O "$2" "$1"
fi
}

if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+\-(beta|RC)[0-9]+$ ]]; then
WP_BRANCH=${WP_VERSION%\-*}
WP_TESTS_TAG="branches/$WP_BRANCH"

elif [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then
WP_TESTS_TAG="branches/$WP_VERSION"
elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then
if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then
# version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
WP_TESTS_TAG="tags/${WP_VERSION%??}"
else
WP_TESTS_TAG="tags/$WP_VERSION"
fi
elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
WP_TESTS_TAG="trunk"
else
# http serves a single offer, whereas https serves multiple. we only want one
download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json
grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json
LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//')
if [[ -z "$LATEST_VERSION" ]]; then
echo "Latest WordPress version could not be found"
exit 1
fi
WP_TESTS_TAG="tags/$LATEST_VERSION"
fi
set -ex

install_wp() {

if [ -d $WP_CORE_DIR ]; then
return;
fi

mkdir -p $WP_CORE_DIR

if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
mkdir -p $TMPDIR/wordpress-nightly
download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip
unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/
mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR
else
if [ $WP_VERSION == 'latest' ]; then
local ARCHIVE_NAME='latest'
elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then
# https serves multiple offers, whereas http serves single.
download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json
if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then
# version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
LATEST_VERSION=${WP_VERSION%??}
else
# otherwise, scan the releases and get the most up to date minor version of the major release
local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'`
LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1)
fi
if [[ -z "$LATEST_VERSION" ]]; then
local ARCHIVE_NAME="wordpress-$WP_VERSION"
else
local ARCHIVE_NAME="wordpress-$LATEST_VERSION"
fi
else
local ARCHIVE_NAME="wordpress-$WP_VERSION"
fi
download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz
tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR
fi

download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php
}

install_test_suite() {
# portable in-place argument for both GNU sed and Mac OSX sed
if [[ $(uname -s) == 'Darwin' ]]; then
local ioption='-i.bak'
else
local ioption='-i'
fi

# set up testing suite if it doesn't yet exist
if [ ! -d $WP_TESTS_DIR ]; then
# set up testing suite
mkdir -p $WP_TESTS_DIR
svn co --ignore-externals --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes
svn co --ignore-externals --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data
fi

if [ ! -f wp-tests-config.php ]; then
download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php
# remove all forward slashes in the end
WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::")
sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php
sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php
sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php
sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php
sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php
fi

}

install_db() {

if [ ${SKIP_DB_CREATE} = "true" ]; then
return 0
fi

# parse DB_HOST for port or socket references
local PARTS=(${DB_HOST//\:/ })
local DB_HOSTNAME=${PARTS[0]};
local DB_SOCK_OR_PORT=${PARTS[1]};
local EXTRA=""

if ! [ -z $DB_HOSTNAME ] ; then
if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then
EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp"
elif ! [ -z $DB_SOCK_OR_PORT ] ; then
EXTRA=" --socket=$DB_SOCK_OR_PORT"
elif ! [ -z $DB_HOSTNAME ] ; then
EXTRA=" --host=$DB_HOSTNAME --protocol=tcp"
fi
fi

# create database
mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA
}

install_wp
install_test_suite
install_db
Loading

0 comments on commit 748810d

Please sign in to comment.