Benjamin Bellamy
588b4d28da
feat: add cumulative listening time charts
2020-10-19 10:33:23 +00:00
semantic-release-bot
14733105e6
chore(release): 1.0.0-alpha.1 [skip ci]
...
# 1.0.0-alpha.1 (2020-10-16)
### Bug Fixes
* add public/media folder to castopod bundle ([8053d35](8053d3521b
)), closes [#52 ](https://code.podlibre.org/podlibre/castopod/issues/52 )
* add where condition to get episode count without deleted episodes ([7661734](7661734ed2
)), closes [#67 ](https://code.podlibre.org/podlibre/castopod/issues/67 )
* comment all cache clean after page update to prevent analytics cache deletion ([e6197a4](e6197a4972
))
* correct chart data ([4d3e9c8](4d3e9c8c02
))
* correct percona compatibility issue ([e53f819](e53f819264
))
* correct php-fpm issues ([1ef55d7](1ef55d7315
))
* correct referrer bug ([ed69b2f](ed69b2f500
))
* correction for servers with low int precision ([31b7828](31b7828e77
))
* declare typed properties in PHPDoc for php<7.4 ([14dd44d](14dd44d03d
)), closes [#23 ](https://code.podlibre.org/podlibre/castopod/issues/23 )
* escape generated feed tag values and remove new lines from public pages meta description ([6238a43](6238a43863
)), closes [#57 ](https://code.podlibre.org/podlibre/castopod/issues/57 ) [#46 ](https://code.podlibre.org/podlibre/castopod/issues/46 )
* fix layout bugs in admin and update translation files ([a834171](a83417180c
)), closes [#40 ](https://code.podlibre.org/podlibre/castopod/issues/40 )
* minor corrections ([13be386](13be386842
))
* move analytics to helper ([d311917](d31191732e
))
* re-order graph values ([35f633b](35f633b4c7
))
* remove required for other_categories field and add podcast_id to latest podcasts query ([5417be0](5417be0049
))
* rename issue_templates labels ([9f00305](9f00305844
))
* rename MyAccount controller file ([e109df3](e109df3004
)), closes [#60 ](https://code.podlibre.org/podlibre/castopod/issues/60 )
* reorder fields as composite primary keys for analytics tables ([9660aa9](9660aa97c8
))
* replace website key for webpages in breadcrumb translate file ([50e32ff](50e32ff756
))
* set episode duration translation to hardcoded english ([c39efc9](c39efc9489
)), closes [#64 ](https://code.podlibre.org/podlibre/castopod/issues/64 )
* set episode guid upon episode creation ([ad8b153](ad8b153f2a
)), closes [#48 ](https://code.podlibre.org/podlibre/castopod/issues/48 )
* update purgecss content path for php helper files ([eb70bb4](eb70bb4f70
)), closes [#59 ](https://code.podlibre.org/podlibre/castopod/issues/59 )
* **install:** redirect to input baseUrl after instance config ([2426af7](2426af7de8
)), closes [#53 ](https://code.podlibre.org/podlibre/castopod/issues/53 )
* **platforms:** display platform link only when visible is toggled on ([6e503c8](6e503c8d61
)), closes [#39 ](https://code.podlibre.org/podlibre/castopod/issues/39 )
* sort episodic podcasts by season ([d7b6794](d7b6794f68
))
* update .htaccess for shared hosting config ([2379826](2379826352
))
* update iso-369 language table seeder ([0c90db4](0c90db44c4
))
* **package.json:** update destination of postcss generation scripts ([21413f8](21413f8af3
))
* use slash instead of backslash to call layout ([a80adb2](a80adb2295
))
### Features
* add alternate rss feed link tag to podcast page head ([a973c09](a973c097d5
)), closes [#35 ](https://code.podlibre.org/podlibre/castopod/issues/35 )
* add analytics and unknown useragents ([ec92e65](ec92e65aa4
))
* add breadcrumb in admin area ([7fb1de2](7fb1de2cf3
)), closes [#17 ](https://code.podlibre.org/podlibre/castopod/issues/17 )
* add french translation ([196920d](196920d62f
))
* add install wizard form to bootstrap database and create the first superadmin user ([cba871c](cba871c5df
)), closes [#2 ](https://code.podlibre.org/podlibre/castopod/issues/2 )
* add ISO 3166 country codes ([97cd94b](97cd94b474
))
* add map analytics, add episodes analytics, clean analytics page layout, translate countries ([07eae83](07eae83a00
))
* add npm for js dependencies + move src/ files to root folder ([cbb83a6](cbb83a6f30
))
* add pages table to store custom instance pages (eg. legal-notice, cookie policy, etc.) ([9c224a8](9c224a8ac6
)), closes [#24 ](https://code.podlibre.org/podlibre/castopod/issues/24 )
* add platform models ([a333d29](a333d29196
))
* add platforms form in podcast settings ([043f49c](043f49c784
))
* add platforms tables ([ce59344](ce5934419a
))
* add unique listeners analytics ([3a49258](3a4925816f
))
* add user permissions and basic groups to handle authorizations ([d58e518](d58e51874a
)), closes [#3 ](https://code.podlibre.org/podlibre/castopod/issues/3 ) [#18 ](https://code.podlibre.org/podlibre/castopod/issues/18 )
* create optimized & resized images upon upload ([02e4441](02e4441f98
)), closes [#6 ](https://code.podlibre.org/podlibre/castopod/issues/6 )
* display legal disclaimer and warning on podcast import page ([2f07992](2f07992e55
)), closes [#34 ](https://code.podlibre.org/podlibre/castopod/issues/34 )
* edit + delete podcast and episode ([ac5f0c7](ac5f0c7328
))
* enhance admin ui with responsive design and ux improvements ([2d44b45](2d44b457a0
)), closes [#31 ](https://code.podlibre.org/podlibre/castopod/issues/31 ) [#9 ](https://code.podlibre.org/podlibre/castopod/issues/9 )
* enhance ui using javascript in admin area ([c0e66d5](c0e66d5f70
))
* import podcast from an rss feed url ([9a5d5a1](9a5d5a15b4
)), closes [#21 ](https://code.podlibre.org/podlibre/castopod/issues/21 )
* set podcast / episode description in the pages description meta tag ([1c4a504](1c4a50442b
)), closes [#44 ](https://code.podlibre.org/podlibre/castopod/issues/44 )
* update analytics so to meet IABv2 requirements ([03e23a2](03e23a28bf
)), closes [#10 ](https://code.podlibre.org/podlibre/castopod/issues/10 )
* **cache:** add podcast and episode pages to cache + clear them after insert or update ([da0f047](da0f047281
))
* **categories:** create model, entity, migrations and seeds ([f73b042](f73b042cc0
))
* **devcontainer:** add devcontainer settings for dev environment ([69e7266](69e7266736
))
* **episodes:** add create form and view pages for episode ([f3b2c8b](f3b2c8b84f
)), closes [#1 ](https://code.podlibre.org/podlibre/castopod/issues/1 )
* **episodes:** add migrations, model and entity for episodes table ([0444821](044482174e
))
* **podcast:** create a podcast using form ([1202ba3](1202ba3545
))
* **podcast-form:** update routes and redirect to podcast page ([12ce905](12ce905799
))
* **public-ui:** adapt public podcast and episode pages to wireframes ([40a0535](40a0535fc1
)), closes [#30 ](https://code.podlibre.org/podlibre/castopod/issues/30 ) [#13 ](https://code.podlibre.org/podlibre/castopod/issues/13 )
* **rss:** generate rss feed from podcast entity ([c815ecd](c815ecd664
))
* **users:** add myth-auth to handle users crud + add admin gateway only accessible by login ([c63a077](c63a077618
)), closes [#11 ](https://code.podlibre.org/podlibre/castopod/issues/11 )
* minor corrections to some tables ([3bf9420](3bf9420b59
))
* write id3v2 tags to episode's audio file ([4651d01](4651d01a84
))
### Reverts
* use basic input file for episodes audio files instead of button for better UX ([d5f22fb](d5f22fbb38
))
2020-10-16 15:26:13 +00:00
Yassine Doghri
6c36888a21
ci(release): automate castopod versioned releases using semantic-release
...
closes #38
2020-10-16 15:17:08 +00:00
Yassine Doghri
50e32ff756
fix: replace website key for webpages in breadcrumb translate file
2020-10-15 20:22:33 +00:00
Yassine Doghri
96b39002eb
chore: clean interactive rebase conflicts
2020-10-15 15:24:16 +00:00
Yassine Doghri
d5f22fbb38
revert: use basic input file for episodes audio files instead of button for better UX
...
replace platform visible checkbox with switch
2020-10-15 14:42:33 +00:00
Yassine Doghri
7661734ed2
fix: add where condition to get episode count without deleted episodes
...
contain podcast page header info within an md width
fixes #67
2020-10-15 14:42:32 +00:00
Yassine Doghri
e6197a4972
fix: comment all cache clean after page update to prevent analytics cache deletion
2020-10-15 14:42:31 +00:00
Yassine Doghri
eb70bb4f70
fix: update purgecss content path for php helper files
...
- fix overshooting podcast name when too long in podcast sidebar
- update npm packages to latest versions
fixes #59
2020-10-15 14:42:30 +00:00
Yassine Doghri
c39efc9489
fix: set episode duration translation to hardcoded english
...
- intl NumberFormatter doesn't work as it should with french language
- fix typo in episode french tranlation
fixes #64
2020-10-15 14:42:29 +00:00
Benjamin Bellamy
07eae83a00
feat: add map analytics, add episodes analytics, clean analytics page layout, translate countries
2020-10-15 14:42:28 +00:00
Benjamin Bellamy
196920d62f
feat: add french translation
2020-10-15 14:42:25 +00:00
Yassine Doghri
93eb9e1056
style: update 404 and 500 error pages to use tailwindcss and Castopod mascot
...
- add back to previous page button to 404 page
- replace public/favicon.ico
2020-10-15 14:42:24 +00:00
Yassine Doghri
a83417180c
fix: fix layout bugs in admin and update translation files
...
fixes #40
2020-10-15 14:42:23 +00:00
Yassine Doghri
e109df3004
fix: rename MyAccount controller file
...
Myaccount controller causes 404 page on certain systems
fixes #60
2020-10-15 14:42:22 +00:00
Yassine Doghri
6238a43863
fix: escape generated feed tag values and remove new lines from public pages meta description
...
fixes #57 , #46
2020-10-15 14:42:21 +00:00
Yassine Doghri
8053d3521b
fix: add public/media folder to castopod bundle
...
ignore all contents of media folder except index.html file in .gitignore
fixes #52
2020-10-15 14:42:20 +00:00
Yassine Doghri
ad8b153f2a
fix: set episode guid upon episode creation
...
fixes #48
2020-10-15 14:42:19 +00:00
Yassine Doghri
9f00305844
fix: rename issue_templates labels
2020-10-15 14:42:18 +00:00
Yassine Doghri
4101ef47ad
docs: add gitlab issue templates, code of conduct and contributing files
...
- update prettier config for markdown file for better readability
- fix some formatting issues
2020-10-15 14:42:18 +00:00
Yassine Doghri
2426af7de8
fix(install): redirect to input baseUrl after instance config
...
install was redirecting to default baseUrl because `redirect->back()` uses the `site_url()` function
fix #53
2020-10-15 14:42:17 +00:00
Benjamin Bellamy
419604c486
docs(readme): fix broken image link
2020-10-15 14:42:16 +00:00
Yassine Doghri
1c4a50442b
feat: set podcast / episode description in the pages description meta tag
...
strip html tags from description_html attributes to generate text only description
closes #44
2020-10-15 14:42:15 +00:00
Benjamin Bellamy
4d3e9c8c02
fix: correct chart data
2020-10-15 14:42:14 +00:00
Yassine Doghri
769ea469c9
refactor: update install logic and add missing cache config step
...
- add `.env.example` and `INSTALL.md` to castopod bundle for installation docs
- update seeders to be silent on insert errors
- update install layout
- add manual config instructions when .env file is not writable
- fix eslint error in Charts.ts module
closes #32
2020-10-15 14:42:13 +00:00
Benjamin Bellamy
35f633b4c7
fix: re-order graph values
2020-10-15 14:42:11 +00:00
Benjamin Bellamy
e53f819264
fix: correct percona compatibility issue
2020-10-15 14:42:10 +00:00
Benjamin Bellamy
3a4925816f
feat: add unique listeners analytics
...
- add unique listener
- add some charts
- correct minor bugs
2020-10-15 14:42:09 +00:00
Benjamin Bellamy
9660aa97c8
fix: reorder fields as composite primary keys for analytics tables
2020-10-15 14:42:07 +00:00
Benjamin Bellamy
ed69b2f500
fix: correct referrer bug
2020-10-15 14:42:06 +00:00
Yassine Doghri
6e503c8d61
fix(platforms): display platform link only when visible is toggled on
...
add condition to podcast page
fix #39
2020-10-15 14:42:05 +00:00
Yassine Doghri
2f07992e55
feat: display legal disclaimer and warning on podcast import page
...
updated podcast import translations
closes #34
2020-10-15 14:42:04 +00:00
Yassine Doghri
a973c097d5
feat: add alternate rss feed link tag to podcast page head
...
update composer packages to latest versions
closes #35
2020-10-15 14:42:03 +00:00
Benjamin Bellamy
03e23a28bf
feat: update analytics so to meet IABv2 requirements
...
- https://iabtechlab.com/wp-content/uploads/2017/12/Podcast_Measurement_v2-Dec-20-2017.pdf
- no IP address is ever stored on the server. Only aggregate data is stored in the dababase.
- rolling 24-hour window
- castopod does not do pre-load
- IP Blacklisting https://github.com/client9/ipcat
- user-agent Filtering https://github.com/opawg/user-agents
- ignores 2 bytes range "Range: 0-1" (performed by official Apple iOS Podcast app)
- in case of partial content, adds up all requests to check >1mn was downloaded
- identifying Uniques is done with a combination of IP Address and User Agent
- add AMcharts
- add some graphs
- add regions to analytics
- add ipcat blacklist
- enhance useragents performances
- add filesize and header size in order to calculate 1mn downloads
- update publisher ID3 field
- update castopod icon
- add disclaimer and warning import form translation
- update docs/setup-development.md
closes #10
2020-10-15 14:42:02 +00:00
Benjamin Bellamy
5417be0049
fix: remove required for other_categories field and add podcast_id to latest podcasts query
2020-10-15 14:41:57 +00:00
Yassine Doghri
2d44b457a0
feat: enhance admin ui with responsive design and ux improvements
...
- add podcast sidebar navigation
- add podcast dashboard with latest episodes
- add pagination to podcast episodes
- add components helper to reuse ui components (button, data_table, etc.)
- enhance podcast and episode forms by splitting them into form sections
- add hint tooltips to podcast and episode forms
- transform radio inputs as buttons for better ux
- replace explicit field by parental_advisory
- replace author field by publisher
- add podcasts_categories table to set multiple categories
- use choices.js to enhance multiselect fields
- update Language files
- update js dependencies to latest versions
closes #31 , #9
2020-10-15 14:41:56 +00:00
Benjamin Bellamy
31b7828e77
fix: correction for servers with low int precision
2020-10-15 14:41:49 +00:00
Benjamin Bellamy
d7b6794f68
fix: sort episodic podcasts by season
2020-10-15 14:41:49 +00:00
Benjamin Bellamy
2379826352
fix: update .htaccess for shared hosting config
2020-10-15 14:41:48 +00:00
Benjamin Bellamy
1ef55d7315
fix: correct php-fpm issues
2020-10-15 14:41:47 +00:00
Yassine Doghri
cbc5d0891d
ci: define app bundle script in .gitlab-ci.yml
...
set `bundle/` folder in .gitignore
closes #8
2020-10-15 14:41:46 +00:00
Yassine Doghri
02e4441f98
feat: create optimized & resized images upon upload
...
- resize uploaded image to thumbnail, medium, large, feed, and id3 formats
- set image url formats where adapted in views
- set format sizes and extensions in Images config file for customization
- add validation for image uploads: `min_dims` and `is_image_squared`
- update codeigniter4 and myth-auth php packages to latest develop versions
- update npm packages to latest versions
- update public/.htaccess
closes #6
2020-10-15 14:41:45 +00:00
Yassine Doghri
40a0535fc1
feat(public-ui): adapt public podcast and episode pages to wireframes
...
- adapt wireframes with responsive design
- refactor models methods to cache requests for faster queries
- update public controllers to cache pages while retaining analytics hits
- add platform links to podcast page
- add previous / next episodes in episode page
- update npm packages to latest versions
closes #30 , #13
2020-10-15 14:41:43 +00:00
Yassine Doghri
2517808cd4
refactor: remove unnecessary permissions and update route filters
...
- add missing pages-manage permission
- remove some instance wide permissions for superadmin
closes #29
2020-10-15 14:41:41 +00:00
Yassine Doghri
043f49c784
feat: add platforms form in podcast settings
...
- set and remove platform links for a podcast
- remove unnecessary fields from platforms and platform_links tables
- add platforms svg icons to show in form
- update platform and auth seeders
- update svgo config for images
2020-10-15 14:41:39 +00:00
Benjamin Bellamy
9a5d5a15b4
feat: import podcast from an rss feed url
...
* add podcast import form
* add League\\HTMLToMarkdown
* add guid field in podcast table
* change podcast category from string to id
closes #21
2020-10-15 14:41:36 +00:00
Yassine Doghri
9c224a8ac6
feat: add pages table to store custom instance pages (eg. legal-notice, cookie policy, etc.)
...
- add pages migration, model and entity
- add page controllers
- update routes config to input page forms and page view in public
- fix markdow editor focus area
- show pages links in public side footer
closes #24
2020-10-15 14:41:34 +00:00
Yassine Doghri
a1a28de702
refactor: rewrite form pages using form helper
...
- add installGateway to app config
- update route names and groups
- remove `author_name` and `author_email` from `episodes` table
- remove `author_name` and `author_email` from `podcasts` table
- remove `owner_id` + add `created_by` and `updated_by` fields in `podcasts` and `episodes` tables
- remove unnecessary comments in database fields
- remove confirm password inputs from auth forms for better ux
- rename `pub_date` field to `published_at` and add publication time field in episode form
closes #14 , #28
2020-10-15 14:41:32 +00:00
Benjamin Bellamy
012de2072e
docs: add translation keys for tooltips helper messages
2020-10-15 14:41:29 +00:00
Yassine Doghri
cba871c5df
feat: add install wizard form to bootstrap database and create the first superadmin user
...
- generate .env file to configure instance's environment
- add phpdotenv dependency to verify .env file
- add AppSeeder to call all required seeds at once
- add env and superadmin form views using form helpers
closes #2
2020-10-15 14:41:28 +00:00