Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 3.5.0 #805

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
06d6225
convert CI to github action
jtolj Apr 9, 2024
1ed3644
Set PHP 8.1 as testing base
jtolj Apr 17, 2024
9e213ce
Onboarding menu item
zahardev Apr 29, 2024
bac05ba
Escape tags in the player
zahardev Apr 30, 2024
f9bea98
Cache Castos podcasts response
zahardev Apr 30, 2024
5855d53
Improved scheduled episodes sync, max 3 attempts
zahardev Apr 30, 2024
353733e
Version 3.3.0-alpha
zahardev Apr 30, 2024
4c40912
PHP warning fixes
zahardev May 2, 2024
bf643cd
Hide player if no file provided #714
zahardev May 2, 2024
5a64409
version 3.3.0-alpha.2
zahardev May 2, 2024
02f4427
Fixed Unit tests (player)
zahardev May 2, 2024
a67eae9
Automatically set feed title on step-1 of onboarding
zahardev May 6, 2024
6c5b802
Version 3.3.0-alpha.3
zahardev May 6, 2024
e3feb76
Acceptance tests fix
zahardev May 6, 2024
6a5a3a0
Tests fix 2
zahardev May 6, 2024
421b97a
Onboarding categories bug fixd (&-related issue)
zahardev May 7, 2024
485e7db
Version 3.3.0-alpha.4
zahardev May 7, 2024
4e752dd
Tests fix
zahardev May 8, 2024
dac70b3
Version 3.3.0
zahardev May 8, 2024
1386cd2
Fixed the plugin activation issue in WordPress 6.5.3
zahardev May 8, 2024
7f40485
Version 3.3.1
zahardev May 8, 2024
4b13da5
Polylang support #707
zahardev May 18, 2024
99d1fad
Removed outdated categories update notification #715
zahardev May 18, 2024
83f5af9
Use podcast post type by default when importing from RSS #716
zahardev May 18, 2024
f38ffcc
Delete Castos credentials on plugin deactivate #695
zahardev May 20, 2024
9c0edba
Support latest episodes in the [podcast_episode] shortcode #718
zahardev May 21, 2024
d5467ff
Removed outdated notifications
zahardev May 21, 2024
ecdc1bf
Improved player rendering #719
zahardev May 21, 2024
5d5259e
Carry over podcast description to feed details #691
zahardev May 21, 2024
dc8643f
Version 3.4.0-alpha
zahardev May 21, 2024
ad14cd6
Polylang support: ignore podmotor fields
zahardev May 28, 2024
e80eb73
Version 3.4.0-alpha.2
zahardev May 28, 2024
1609c57
Version 3.4.0
zahardev May 28, 2024
c67b162
Improved sync for Paid Memberships Pro #734
zahardev Jul 30, 2024
1b19b25
Castos authorization headers
zahardev Jul 30, 2024
75e5902
Version 3.4.1-beta
zahardev Jul 31, 2024
e14aaf6
Version 3.4.1
zahardev Jul 31, 2024
a790f83
Additional classes for the player block #723
zahardev Jun 20, 2024
022c794
Additional classes for playlist block, fixed playlist block color mod…
zahardev Jun 20, 2024
efb1678
Catch possible errors when downloading the file #727
zahardev Jun 28, 2024
11e3326
New connect and disconnect Castos logic #696
zahardev Jul 1, 2024
847a903
New castos connect for onboarding wizard #696
zahardev Jul 4, 2024
acc6bd6
Dynamically update sync status and show errors, backend #696
zahardev Jul 6, 2024
e7210b8
Display sync status and sync messages on post update #696
zahardev Jul 6, 2024
4bf226b
Display Sync status only for SSP post types #696
zahardev Jul 7, 2024
68079e7
Removed Subscribers challenge from sidebar #720
zahardev Jul 8, 2024
8d920d5
Added a filter for the tags allowed in the feed description #722
zahardev Jul 8, 2024
e6558c7
Version 3.5.0-alpha
zahardev Jul 8, 2024
1c668db
Version 3.5.0-alpha.2
zahardev Aug 6, 2024
6a71d1f
Acceptance tests fix
zahardev Aug 6, 2024
bb7ee72
Hosting page copy updates
KTorrii Aug 8, 2024
937df76
New connect and disconnect Castos logic #696
zahardev Jul 1, 2024
b131871
Show Castos Account on the Hosting tab
zahardev Aug 14, 2024
a49b665
Tests fix
zahardev Aug 14, 2024
fec886b
Version 3.5.0-alpha.3
zahardev Aug 14, 2024
527f9b2
Fixed Castos email unhandled exception
zahardev Aug 15, 2024
07643ae
Version 3.5.0-alpha.4
zahardev Aug 15, 2024
2e32a5a
Automatically disconnect if disconnected on Castos, constant notices
zahardev Sep 3, 2024
1d5a55f
Version 3.5.0-alpha.5
zahardev Sep 3, 2024
566e762
Onboarding connect: support long Castos messages #737
zahardev Sep 4, 2024
ebaf6b1
Version 3.5.0-alpha.6
zahardev Sep 4, 2024
b9d2d46
Fixed tests
zahardev Sep 4, 2024
bde61e3
Bug fixed: Sync status showing on disconnected accounts
zahardev Sep 6, 2024
73dc7b4
Version 3.5.0-alpha.7
zahardev Sep 6, 2024
c103585
Bug fixed: show disconnection notice second time after reconnection
zahardev Sep 6, 2024
72acb04
Version 3.5.0-alpha.8
zahardev Sep 6, 2024
83773e7
Do not show redundant "not synced yet" status
zahardev Sep 10, 2024
b767037
Version 3.5.0
zahardev Sep 11, 2024
74ee0e0
Updated artifact version
zahardev Sep 11, 2024
518f47d
Updated plugin video
zahardev Sep 26, 2024
469f1d1
Updated plugin video v2
zahardev Sep 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions .github/workflows/run_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: CI

on:
pull_request:
branches:
- develop
- master

permissions:
contents: read

jobs:
run_tests:
name: Run Unit & Acceptance Tests
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8
env:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress_test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
coverage: none
tools: wp-cli

- name: Install Composer dependencies
run: composer install

- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: '17'

- name: Prepare testing environment
run: |
# Move the plugin files to the separate folder
mkdir ssp && mv `ls -A | grep -v ssp` ssp

# Download WordPress
wp core download --allow-root

# Set up .env
echo "TEST_WP_ROOT=$(pwd)" > .env.testing
echo "TEST_DB_HOST=127.0.0.1" >> .env.testing
echo "TEST_DB_NAME=wordpress_test" >> .env.testing
echo "TEST_DB_USER=wordpress" >> .env.testing
echo "TEST_DB_PASSWORD=wordpress" >> .env.testing
echo "TEST_DOMAIN=localhost" >> .env.testing
mv .env.testing ssp/

# Move the plugin to the plugins folder
mv ssp ./wp-content/plugins/seriously-simple-podcasting
cd wp-content/plugins/seriously-simple-podcasting
npm install -g grunt-cli
npm install
npm rebuild node-sass
grunt uglify && grunt cssmin && npm run build

- name: Run Unit tests
run: cd wp-content/plugins/seriously-simple-podcasting && vendor/bin/codecept run wpunit

- name: Run Acceptance tests
run: |
wp config create --dbname=wordpress_test --dbuser=wordpress --dbpass=wordpress --dbhost=127.0.0.1 --dbprefix=wsy_ --allow-root
wp config set WP_SITEURL http://localhost:8000 --type=constant --allow-root
wp config set WP_HOME http://localhost:8000 --type=constant --allow-root
nohup php -S localhost:8000 &
cd wp-content/plugins/seriously-simple-podcasting
echo "SITE_URL=http://localhost:8000" >> .env.testing
echo "SITE_USER=autotest" >> .env.testing
echo "SITE_USER_PASS=password" >> .env.testing
echo "PODCAST_GUID=dd94465b-580a-501c-a892-caf224d23d7a" >> .env.testing
sudo apt-get update -qq
sudo env DEBIAN_FRONTEND=noninteractive apt-get install -qq mysql-client default-libmysqlclient-dev
gzip -d tests/seed.sql.gz && wp db import tests/seed.sql --allow-root
wp core update-db --allow-root
wp theme activate twentytwentyfour --allow-root
wp plugin install classic-editor --allow-root
vendor/bin/codecept run acceptance --steps

- name: Upload codeception output on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: acceptance-tests
path: wp-content/plugins/seriously-simple-podcasting/tests/_output

- name: Upload PHP server logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: acceptance-tests
path: nohup.out
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ unit_tests:

# Prepare testing environment file
- touch .env.testing
- echo "TEST_WP_ROOT=$(pwd)"
- echo "TEST_WP_ROOT=$(pwd)" >> .env.testing
- echo "TEST_DB_HOST=db" >> .env.testing
- echo "TEST_DB_NAME=$MYSQL_DATABASE" >> .env.testing
Expand Down Expand Up @@ -151,6 +150,7 @@ acceptance_tests:
- echo "SITE_URL=$SSH_USER" >> .env.testing
- echo "SITE_USER=$SITE_USER" >> .env.testing
- echo "SITE_USER_PASS=$SITE_USER_PASS" >> .env.testing
- echo "PODCAST_GUID=115e423a-72d2-531e-9d3c-ece7dd4b74fe" >> .env.testing

# Run Acceptance tests
- vendor/bin/codecept run acceptance --steps
123 changes: 88 additions & 35 deletions assets/admin/css/admin.css
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,16 @@ textarea#episode_embed_code {
font-size: 16px;
top: -3px; }

#podmotor_account_api_token {
width: 100%;
min-width: 100%;
display: block;
margin-bottom: 8px; }

.ssp-settings-integrations table label {
margin-top: 10px;
display: block; }

.ssp-settings:not(.ssp-settings-extensions, .ssp-settings-integrations) {
background: #FFFFFF;
margin-top: 28px;
Expand All @@ -219,8 +229,6 @@ textarea#episode_embed_code {
.ssp-settings table input.regular-text {
max-width: 90%;
background: #F1F5F9; }
.ssp-settings .validate-api-credentials-message {
margin-left: 30px; }
.ssp-settings .loader {
position: relative; }
.ssp-settings .loader:after {
Expand All @@ -243,6 +251,32 @@ textarea#episode_embed_code {
.ssp-settings .ssp-sync-msg.success .sync-overview {
color: #4caf50; }

.ssp-main-settings .error {
color: #DF4E4F; }

.ssp-main-settings .hidden {
display: none; }

.ssp-main-settings .disconnect-castos {
margin-right: 8px;
vertical-align: middle; }

.ssp-main-settings.tab-castos-hosting .loader {
position: relative; }
.ssp-main-settings.tab-castos-hosting .loader:after {
content: '';
display: block;
background: url(../img/loader2.svg) no-repeat;
position: absolute;
right: -50px;
top: -9px;
background-size: contain;
width: 44px;
height: 44px; }

.connect-castos-message {
margin-left: 20px; }

.ssp-sync-podcast {
display: flex;
justify-content: space-between;
Expand Down Expand Up @@ -467,6 +501,8 @@ textarea#episode_embed_code {
right: 350px; }
.ssp-onboarding-step-4 .ssp-onboarding__steps::after {
right: 180px; }
.ssp-onboarding-step-4 .ssp-onboarding__settings-body {
padding: 24px 24px 36px; }
.ssp-onboarding-step-4__info {
display: flex;
flex-direction: column;
Expand Down Expand Up @@ -659,7 +695,7 @@ textarea#episode_embed_code {
z-index: 0;
visibility: hidden;
transition: .6s;
margin-top: -444px; }
margin-top: -345px; }
.ssp-onboarding-step-4__form--opened {
visibility: visible;
margin-top: 0; }
Expand Down Expand Up @@ -749,6 +785,10 @@ textarea#episode_embed_code {
text-align: right;
margin-top: 25px;
position: relative; }
.ssp-onboarding__submit span.connect-castos-message {
display: block;
text-align: left;
margin: 20px 0 0; }
.ssp-onboarding__submit button[type=submit], .ssp-onboarding__submit .button {
position: relative;
height: 50px;
Expand Down Expand Up @@ -794,39 +834,56 @@ textarea#episode_embed_code {
background: #516178; }
.ssp-onboarding__submit .button span {
line-height: 50px; }
.ssp-onboarding__submit .validate-token {
.ssp-onboarding__submit .castos-connect {
float: left;
position: relative;
padding: 0 20px 0 45px; }
.ssp-onboarding__submit .validate-token:after {
.ssp-onboarding__submit .castos-connect:after {
content: '';
display: block;
position: absolute;
background: url(../img/validate.svg) no-repeat;
background-size: cover;
left: 19px;
top: 17px;
width: 14px;
height: 18px;
filter: none; }
.ssp-onboarding__submit .validate-token.validating {
background: #374151; }
.ssp-onboarding__submit .validate-token.validating:hover, .ssp-onboarding__submit .validate-token.validating:active, .ssp-onboarding__submit .validate-token.validating:focus {
background: #374151; }
.ssp-onboarding__submit .validate-token.validating:after {
background: url(../img/connect.svg) no-repeat;
left: 13px;
top: 13px;
width: 25px;
height: 23px;
filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(198deg) brightness(101%) contrast(102%);
background-size: contain; }
.ssp-onboarding__submit .castos-connect:disabled {
background: #9CA3AF !important;
color: #D1D5DB !important; }
.ssp-onboarding__submit .castos-connect:disabled:after {
filter: invert(94%) sepia(8%) saturate(150%) hue-rotate(177deg) brightness(90%) contrast(93%);
transition: none; }
.ssp-onboarding__submit .castos-connect.connecting {
background: #DE7373 !important;
color: #FFFFFF !important; }
.ssp-onboarding__submit .castos-connect.connecting:hover, .ssp-onboarding__submit .castos-connect.connecting:active, .ssp-onboarding__submit .castos-connect.connecting:focus, .ssp-onboarding__submit .castos-connect.connecting:disabled {
background: #DE7373; }
.ssp-onboarding__submit .castos-connect.connecting:after {
width: 17px;
height: 18px;
background-image: url(../img/validating.svg); }
.ssp-onboarding__submit .validate-token.valid {
background: #10B981;
padding: 0 16px 0 45px; }
.ssp-onboarding__submit .validate-token.valid:hover, .ssp-onboarding__submit .validate-token.valid:active, .ssp-onboarding__submit .validate-token.valid:focus {
background-image: url(../img/connecting.svg);
animation: rotation 2s infinite linear;
filter: none;
transition: none;
top: 15px;
left: 15px; }
.ssp-onboarding__submit .castos-connect.connected {
background: #10B981 !important;
color: #FFFFFF !important;
padding: 0 16px 0 45px;
opacity: .7; }
.ssp-onboarding__submit .castos-connect.connected:hover, .ssp-onboarding__submit .castos-connect.connected:active, .ssp-onboarding__submit .castos-connect.connected:focus {
background: #10B981; }
.ssp-onboarding__submit .validate-token.valid:after {
width: 16px;
height: 12px;
top: 19px;
background-image: url(../img/checkbox.svg); }
.ssp-onboarding__submit .castos-connect.connected:after {
background-image: url(../img/connect.svg);
left: 13px;
top: 13px;
width: 25px;
height: 23px;
filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(198deg) brightness(101%) contrast(102%);
background-size: contain; }
.ssp-onboarding__image-info {
position: absolute;
display: flex;
Expand Down Expand Up @@ -864,10 +921,6 @@ textarea#episode_embed_code {
transform: rotate(-45deg); }
.ssp-onboarding__delete-image:hover:before, .ssp-onboarding__delete-image:hover:after {
background: #fff; }
.ssp-onboarding .validate-api-credentials-message {
position: absolute;
left: 0;
bottom: -18px; }
.ssp-onboarding__links {
display: flex;
text-align: left; }
Expand Down Expand Up @@ -977,17 +1030,17 @@ textarea#episode_embed_code {
font-family: dashicons, 'Inter', sans-serif; }

/* Hide the WP bars */
.admin_page_ssp-onboarding-1 #adminmenumain, .admin_page_ssp-onboarding-1 #wpadminbar, .admin_page_ssp-onboarding-1 #wpfooter, .admin_page_ssp-onboarding-2 #adminmenumain, .admin_page_ssp-onboarding-2 #wpadminbar, .admin_page_ssp-onboarding-2 #wpfooter, .admin_page_ssp-onboarding-3 #adminmenumain, .admin_page_ssp-onboarding-3 #wpadminbar, .admin_page_ssp-onboarding-3 #wpfooter, .admin_page_ssp-onboarding-4 #adminmenumain, .admin_page_ssp-onboarding-4 #wpadminbar, .admin_page_ssp-onboarding-4 #wpfooter, .admin_page_ssp-onboarding-5 #adminmenumain, .admin_page_ssp-onboarding-5 #wpadminbar, .admin_page_ssp-onboarding-5 #wpfooter {
.podcast_page_ssp-onboarding-1 #adminmenumain, .podcast_page_ssp-onboarding-1 #wpadminbar, .podcast_page_ssp-onboarding-1 #wpfooter, .admin_page_ssp-onboarding-1 #adminmenumain, .admin_page_ssp-onboarding-1 #wpadminbar, .admin_page_ssp-onboarding-1 #wpfooter, .admin_page_ssp-onboarding-2 #adminmenumain, .admin_page_ssp-onboarding-2 #wpadminbar, .admin_page_ssp-onboarding-2 #wpfooter, .admin_page_ssp-onboarding-3 #adminmenumain, .admin_page_ssp-onboarding-3 #wpadminbar, .admin_page_ssp-onboarding-3 #wpfooter, .admin_page_ssp-onboarding-4 #adminmenumain, .admin_page_ssp-onboarding-4 #wpadminbar, .admin_page_ssp-onboarding-4 #wpfooter, .admin_page_ssp-onboarding-5 #adminmenumain, .admin_page_ssp-onboarding-5 #wpadminbar, .admin_page_ssp-onboarding-5 #wpfooter {
display: none; }

.admin_page_ssp-onboarding-1 #wpcontent, .admin_page_ssp-onboarding-2 #wpcontent, .admin_page_ssp-onboarding-3 #wpcontent, .admin_page_ssp-onboarding-4 #wpcontent, .admin_page_ssp-onboarding-5 #wpcontent {
.podcast_page_ssp-onboarding-1 #wpcontent, .admin_page_ssp-onboarding-1 #wpcontent, .admin_page_ssp-onboarding-2 #wpcontent, .admin_page_ssp-onboarding-3 #wpcontent, .admin_page_ssp-onboarding-4 #wpcontent, .admin_page_ssp-onboarding-5 #wpcontent {
margin-left: 0;
padding-left: 0; }

.admin_page_ssp-onboarding-1 #wpbody-content, .admin_page_ssp-onboarding-2 #wpbody-content, .admin_page_ssp-onboarding-3 #wpbody-content, .admin_page_ssp-onboarding-4 #wpbody-content, .admin_page_ssp-onboarding-5 #wpbody-content {
.podcast_page_ssp-onboarding-1 #wpbody-content, .admin_page_ssp-onboarding-1 #wpbody-content, .admin_page_ssp-onboarding-2 #wpbody-content, .admin_page_ssp-onboarding-3 #wpbody-content, .admin_page_ssp-onboarding-4 #wpbody-content, .admin_page_ssp-onboarding-5 #wpbody-content {
padding-bottom: 30px; }

.admin_page_ssp-onboarding-1 .notice, .admin_page_ssp-onboarding-1 .error, .admin_page_ssp-onboarding-2 .notice, .admin_page_ssp-onboarding-2 .error, .admin_page_ssp-onboarding-3 .notice, .admin_page_ssp-onboarding-3 .error, .admin_page_ssp-onboarding-4 .notice, .admin_page_ssp-onboarding-4 .error, .admin_page_ssp-onboarding-5 .notice, .admin_page_ssp-onboarding-5 .error {
.podcast_page_ssp-onboarding-1 .notice, .podcast_page_ssp-onboarding-1 .error, .admin_page_ssp-onboarding-1 .notice, .admin_page_ssp-onboarding-1 .error, .admin_page_ssp-onboarding-2 .notice, .admin_page_ssp-onboarding-2 .error, .admin_page_ssp-onboarding-3 .notice, .admin_page_ssp-onboarding-3 .error, .admin_page_ssp-onboarding-4 .notice, .admin_page_ssp-onboarding-4 .error, .admin_page_ssp-onboarding-5 .notice, .admin_page_ssp-onboarding-5 .error {
display: none; }

.ssp-review-notice {
Expand Down
3 changes: 3 additions & 0 deletions assets/admin/img/connect.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions assets/admin/img/connecting.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading