Commit graph

2871 commits

Author SHA1 Message Date
yheuhtozr
6a3a91d9b7
views/podcasts, views/podcast_episodes i18n (#15020)
* views/podcasts, views/podcast_episodes i18n

* reformat for PR

* helper labels

* PR sync with main

* remove ja.yml

* Update en.yml

* Update fr.yml

* Update _meta.html.erb

* Update podcast_episodes_index_spec.rb

* Update podcast_create_spec.rb

* Update user_visits_podcast_episode_spec.rb

* Update en.yml

* Update feed.rb

* Update index.html.erb
2021-10-25 14:32:51 +01:00
ludwiczakpawel
719b87e2ae
Auto border-radius (#15165) 2021-10-25 14:41:13 +02:00
ludwiczakpawel
656cfcd655
Tag edit (#15173)
* tag edit

* more

* chop chop

* spec

* Apply suggestions from code review

Co-authored-by: Michael Kohl <me@citizen428.net>

* french translation

* Fix I18n usage

* Apply suggestions from code review

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>

* lang

Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Michael Kohl <citizen428@forem.com>
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
2021-10-25 12:50:00 +02:00
Lewis Sparlin
e621659279
Add Article post_commit when user_id changes with specs (#15132)
* Add Article post_commit when user_id changes with specs

* Add example in requests/admin/articles_spec for updating user
2021-10-25 10:53:21 +07:00
ludwiczakpawel
d1aac57053
Podcasts fixes (#15130) 2021-10-22 11:06:11 +02:00
Nick Taylor
bf2d673492
Created the Forem creator confirmation email template (#14659)
Co-authored-by: Michael Kohl <citizen428@forem.com>
Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>
2021-10-21 14:56:09 -04:00
Arit Amana
55a6bc3644
Allow users to choose their default Home and Tags-View Feed (Part 1) (#15128)
* add new column & define enums

* add new column & define enums

* add tests; improve enum naming

* complete specs update 😅

* discard changes to schema.rb

* rename column name more appropriately

* update specs

* update specs properly 🤦🏾‍♀️

* Please Travis do the thing

* Add DB schema diff

Co-authored-by: Jamie Gaskins <jgaskins@hey.com>
2021-10-20 18:02:59 -04:00
Julianna Tetreault
22d1e6dd83
Adds a Creator user to the users.rb for testing purposes (#15138) 2021-10-20 07:15:41 -06:00
Michael Kohl
26aef9da93
Don't notify authors about own org posts (#15113) 2021-10-19 21:32:44 +07:00
Suzanne Aitchison
5069cd681a
Markdown editor toolbar (#14876)
* rough starting point, roving tabindex in toolbar, bold and italic buttons

* refactor, add link

* add ul

* add ordered list

* core formatters in place, wip

* overflow options

* add keyboard shortcuts

* tidy up some dodgy classes

* add mocks for runtime in test and storybook, use correct modifier key for tooltip

* style tweaks

* refactor tooltips

* add markdown formatters tests

* add tests for toolbar component, fix mistake in overflow menu tooltips

* undo change no longer needed to button

* fix issue accessing runtime in formatters file

* only show darkened buttons and tooltips when focus-visible is true

* mobile view

* fix for responsive buttons & roving tabindex

* tweaks from PR review

* update cursor position on link insertion

* add a new line after block selection formatting

* align icons in center

* tidy up overflow menu listeners

* small refactors

* test for new text area util

* tidy up new lines after syntaxes

* fix logic in cursor offsets for links

* prevent scroll jumps after inserting syntax

* some style tweaks

* insert level 2 heading with new lines above and below

* update icons

* use margin instead of gap
2021-10-19 09:22:54 +01:00
Ben Halpern
09fa66a03f
Fix and clean up podcast pages (#15004)
* Fix and clean up podcast pages

* Adjust tests

* Fix a test

* Fix missing i18n

* Fix tests

* Fix tests

* Fiddle with test

* Sure up css and tests

* Add featured as allowed param

* Fix a couple tests

* xit out test

* Update app/views/podcast_episodes/index.html.erb

* Update app/views/podcast_episodes/index.html.erb

Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>

Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
2021-10-15 17:38:57 -04:00
Jamie Gaskins
820dd9b5a6
Allow Emails::RemoveOldEmailsWorker to run longer (#15085)
* Allow Emails::RemoveOldEmailsWorker to run longer

We set the SQL statement timeout based on the STATEMENT_TIMEOUT
environment variable (defaulting to 2.5 seconds in production), but not
all SQL queries are created equal. Since some may take longer out of
necessity, this PR introduces a `Model.with_statement_timeout` method
that allows you to change the SQL statement timeout only for a given
block.

* EmailMessage doesn't inherit ApplicationRecord

It inherits from `Ahoy::Message`, which inherits directly from
`ActiveRecord::Base`.

[3] pry(main)> EmailMessage.ancestors
=> [EmailMessage(id: integer, clicked_at: datetime, content: text, feedback_message_id: integer, mailer: string, sent_at: datetime, subject: text, to: text, token: string, user_id: integer, user_type: string, utm_campaign: string, utm_content: string, utm_medium: string, utm_source: string, utm_term: string),
 EmailMessage::GeneratedAssociationMethods,
 EmailMessage::GeneratedAttributeMethods,
 Ahoy::Message(id: integer, clicked_at: datetime, content: text, feedback_message_id: integer, mailer: string, sent_at: datetime, subject: text, to: text, token: string, user_id: integer, user_type: string, utm_campaign: string, utm_content: string, utm_medium: string, utm_source: string, utm_term: string),
 Kaminari::ConfigurationMethods,
 Kaminari::ActiveRecordModelExtension,
 Ahoy::Message::GeneratedAssociationMethods,
 Ahoy::Message::GeneratedAttributeMethods,
 Bullet::SaveWithBulletSupport,
 ActiveRecord::Base,
 ...

* Use milliseconds to match STATEMENT_TIMEOUT units
2021-10-15 11:53:55 -04:00
Michael Kohl
a1f512e49e
✂✂✂ Remove events (#15062)
* Remove events

* Fix schema

* Fix specs

* More removal
2021-10-15 09:31:08 -04:00
Ben Halpern
333775b831
Admin productivity: Allow admins to unpublish all posts from a user (#15054)
* Allow admins to unpublish all posts from a user

* Update app/services/moderator/unpublish_all_articles.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

* Update app/services/moderator/unpublish_all_articles.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

* Update app/services/moderator/unpublish_all_articles.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

* Unset `published` irrespective of front matter

* Change to worker and make other adjustments

* Fix controller test

* Fix object name

* Update app/views/admin/users/edit.html.erb

Co-authored-by: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com>

* Update spec/requests/admin/users_spec.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

Co-authored-by: Jamie Gaskins <jamie@forem.com>
Co-authored-by: Jamie Gaskins <jgaskins@hey.com>
Co-authored-by: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com>
2021-10-15 08:56:59 +02:00
Lewis Sparlin
ff5a94dbf3
Fix notifications not deleting because mentions already destroyed (#14987)
* Fix notifications not deleting because mentions already destroyed

* Fix spelling in spec

* Use rspec expect/to assertions for delete notification spec clarity

* resolve failing spec, and remove need for environment check 🎉
2021-10-14 09:41:10 -06:00
VISHAL DEEPAK
3964bd7983
When a user is blocked from commenting on an article, show correct error message (#15009)
* When a user is blocked from commenting on an article, show correct error message

* Created new error type ModerationUnauthorizedError and changed error text for it
2021-10-14 07:42:08 -06:00
Daniel Uber
3167ff44d7
Change fixed organization id to fixed organization slug (#15067)
* Remove hard coded organization id from seed

Since we create (hopefully) an organization with a known slug, use
find_by here to set the organization_id on the seeded DisplayAd.

* Since the DisplayAd looks by slug, create org if slug not found

Change the seed guard to ensure an organization with slug "bachmanity"
is present - we'll find by slug in DisplayAd (rather than assuming
this is id 1).
2021-10-13 11:18:54 -05:00
Ben Halpern
b900c8de92
Remove legacy "deleted commentable" view (#15052)
* Remove unneeded extra page

* Update app/views/comments/index.html.erb

Co-authored-by: Michael Kohl <citizen428@forem.com>

* Update app/views/comments/index.html.erb

Co-authored-by: Michael Kohl <citizen428@forem.com>
2021-10-13 10:23:25 -04:00
Ben Halpern
549336b0a2
Delete old retained emails after certain period (#14949)
* Delete old retained emails after certain period

* Update app/models/email_message.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

* Update spec/workers/emails/remove_old_emails_worker_spec.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

* Update app/models/email_message.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

Co-authored-by: Jamie Gaskins <jamie@forem.com>
2021-10-12 16:27:13 -04:00
Jamie Gaskins
29fb20cd83
Transliterate article titles to slugs (#15051) 2021-10-12 12:35:32 -04:00
Daniel Uber
5c69cf5880
Make e2e seed safe to run twice (#15049)
* Make e2e seed safe to run twice

We have a number of checks in the seed file that prevent creating
objects if they're found in the database, but nothing is guarding
against this breaking.

Change a few create! to create_with().find_or_create_by() and update
guard clauses where we create if doesn't exist to match the objects
created. These had drifted, preventing subsequent runs of the seed in
a "dirty" database. In CI we're typically creating a new database,
loading schema, and only running this once, so the guards are never
checked and the objects are always created, but locally that might not
always be the case.

* Update multiple guards

We're creating test users against @forem.local domain, let's check
that there's not already a forem.local user with the same email
account.

Additionally, something was causing the "find article by title" to
miss identifying the commented article, but it was not create()'d due
to a slug collision, and the comment could not be created. Update the
call to use `create!` instead (since we rely on it existing in the
comment create) and guard against the slug instead of the title.
2021-10-12 10:43:08 -05:00
Ben Halpern
ebc2961920
Translate pinned (#15008)
* Translate pinned

* Add pinned
2021-10-12 08:24:29 -04:00
Jamie Gaskins
70cf28ca7b
Fix rotation of images uploaded from iPhones (#15010)
* Fix rotation of images uploaded from iPhones

iPhones[1] take pictures in portrait mode with the orientation set to
90ºCCW. We noticed that uploading one of these images to a Forem
instance caused the image to be rotated when rendered. The current
theory is that Imgproxy is not maintaining the orientation value when
processing, which is solved by setting `auto_rotate: true` (serialized
into the Imgproxy URL as `ar:1`), according to the documentation.

See: 8e6585e28d/docs/generating_the_url_advanced.md (auto-rotate)

[1] This probably happens with other phones, but we discovered the issue
using an iPhone.

* Fix Imgproxy URL expectation for auto_rotate
2021-10-11 15:17:14 -04:00
Ben Halpern
3f921ec9c6
Fix profile image bug on email registration (#14991) 2021-10-08 14:30:57 -04:00
Lewis Sparlin
30b36ab014
I18n copy on Tags index page (#14891)
* Move hard-coded Tags index copy to [en,fr] locale files

* Use tags.pluralize for a better page title implementation

* Add better french translations

* Once more fr translation fix

* Remove .pluralize from title i18n
2021-10-08 10:21:06 +07:00
Ben Halpern
b0a79da072
✂️✂️✂️ Remove boosted states from articles (legacy/dead code) (#14977)
* Remove boosted states from articles (legacy/dead code)

* Fix indentation
2021-10-07 14:39:34 -04:00
Ben Halpern
1d62d30853
Consolidate and internationalize various 'contact us' prompts (#14951)
* Consolidate and internationalize various 'contact us' prompts

* Update spec/requests/user/user_settings_spec.rb

Co-authored-by: Michael Kohl <citizen428@forem.com>

Co-authored-by: Michael Kohl <citizen428@forem.com>
2021-10-07 12:05:21 -04:00
Andy Zhao
f5d0c3be31
Fix small bugs related to identities when merging a user (#14885)
* Only prevent merge user if 2+ more identities, not 1+ more

* Refactor error messages into constants

* Skip only if no identities on deleted user

* Raise standard error instead of a string

* Add test to confirm correct identity was merged
2021-10-07 10:08:02 -04:00
Ben Halpern
d85f07c00d
Fix legacy sitemap logic (#14926)
* Fix legacy sitemap logic

* Add aggregate failures

* Fix formatting

* Adjust robots.txt spec

* Fix index minimum to >=
2021-10-07 08:59:16 -04:00
Andy Zhao
0c28781c47
Remove tag categories from admin UI and remove aliased tags from /tags page (#14966)
* Don't show aliased tags in top 100 tags page

* Remove tag category from admin UI and controller params

* Fix styling of checkbox
2021-10-06 14:45:51 -04:00
Monica Mateiu
bd0b4f1117
Tokenize settings menu and add French translations (#14905)
* tokenize settings menu and add French translations

* add quotes around tokens

* add tokens in alphabetical order

Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
2021-10-06 17:53:58 +02:00
Mohamed Asan N
cceb175d5d
Use section instead of header in dashboard pages (#14873)
* Use section instead of header

* Trigger Build

* Move section inside main

* Fix test case

Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
2021-10-06 17:12:43 +02:00
Alex
eed3c12f4d
Auto register Forems on Discover (#14962) 2021-10-06 10:51:15 -04:00
Takuma
baab2c0930
Subscribe the newsletter if email_newsletter is changed (#14226)
* Check if email_newsletter is changed

* Check if Settings::General.mailchimp_api_key is defined

* Add spec for Users::NotificationSetting

* Remove spec for boolean column

http://www.chrisrolle.com/en/blog/boolean-attribute-validation

* Check if email is set when changing newsletter subscription setting

* Make it easy to read

* Remove specs for a case never happening
2021-10-06 12:30:22 +07:00
Ben Halpern
5cc09767c5
Add conditional autovomits to user name and improve user score recalc (#14858)
* Add conditional autovomits to user name and improve user score recalc

* Remove puts

* Add missing ||

* Fix tests

* Update app/views/users/show.html.erb

Co-authored-by: Michael Kohl <citizen428@forem.com>

* Update app/models/user.rb

Co-authored-by: Michael Kohl <citizen428@forem.com>

* Add in-line score calc principles

Co-authored-by: Michael Kohl <citizen428@forem.com>
2021-10-05 10:11:41 -04:00
Ben Halpern
49247fdc8c
Remove organization dependency and improve display ad UX (#14913) 2021-10-05 08:29:08 -04:00
rhymes
eba0ddb240
Misc i18n fixes (#14852)
* Add i18n tasks spec

* Ignore storybook static folder

* Run i18n-tasks normalize

* Fix inconsistent interpolations flagged by i18n-tasks check-consistent-interpolations

* Update devise en translation and add devise_invitable fr translation

* Add missing keys, ignore those to be translated and normalize

* Temporarily ignore unused keys until we have a strategy for maintenance

* Add missing key

* Re-run normalize

* Disable normalize test temporarily
2021-10-05 13:22:33 +02:00
Arit Amana
9d1eaee84e
Heavy Confirmation Flow for DisplayAd-Destroy (#14862)
* wham, bam, done!

* refactor and remove switch statement

* add guards to handleRecord function

* make cypress spec more robust
2021-10-04 08:36:43 -04:00
Alex
f1e02b389a
Add Forem Discover registration worker and service (#14865)
* Register on Forem Discover after onboarding

* PR feedback
2021-10-01 10:27:31 -04:00
Ben Halpern
0715b042b5
Add recent resource sitemap endpoint for posts (#14857)
* Add generic recent resource sitemap endpoint

* Update spec/requests/sitemaps_spec.rb

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Update spec/requests/sitemaps_spec.rb

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Update spec/requests/sitemaps_spec.rb

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

* Update spec/requests/sitemaps_spec.rb

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>

Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
2021-09-30 16:44:45 -04:00
Michael Kohl
f11e7b49d4
Remove check_box type from profile fields (#14832)
* Remove check_box type from profile fields

* Fix profile field spec

* Delete emphasized_comments_experiment.rb

This file was not supposed to be part of this PR
2021-09-30 13:27:39 -04:00
rhymes
8b4a909aac
Rubocop fixes (#14868) 2021-09-30 13:22:09 -04:00
ludwiczakpawel
096cf18b10
Article layout (#14753)
* style updates

* author and tools

* overflow hidden for avatars because geeeez

* font smoothing

* reverting little change

* specs

* preview

* css fix

* avatar fix'

* No longer eager load user profile when showing articles.

articles show view no longer needs user profile, as it no longer
renders the user profile preview.

* tags

* tags

* tags reverts

* typo

* dropping initializer for user cards previews on article page

* spec

* remove spec

* revert

* Update app/decorators/article_decorator.rb

Co-authored-by: Michael Kohl <me@citizen428.net>

* Update spec/requests/stories_show_spec.rb

Co-authored-by: Michael Kohl <me@citizen428.net>

* yoloing outline change on buttons because i couldn't see any visual difference

Co-authored-by: Dan Uber <dan@forem.com>
Co-authored-by: Michael Kohl <me@citizen428.net>
2021-09-30 19:08:06 +02:00
Ben Halpern
49d47369e4
Return 404 if empty and unsupported tag (#14864) 2021-09-30 09:15:40 -04:00
Fernando Valverde
c74121b0c0
Forem passport (cont) (#14759)
* Initial forem omniauth strategy setup work

* Finish basic raw proof of concept

* Some playing around

* use OAuth payloads + PASSPORT_OAUTH_URL for local dev

* Use FeatureFlag for Forem Passport Auth

* Working on tests

* Fix tests 🤞🏼 & some cleanup

* Use correct namespace within lib directory (match class namespace)

* Test to ensure Forem Passport auth is restricted by FeatureFlag

* Add broadcast + work on tests

* Update spec/lib/data_update_scripts/insert_forem_connect_broadcast_message_spec.rb

Co-authored-by: Michael Kohl <citizen428@forem.com>

* Hash format

* Schema cleanup + inline comments

* Use temprorary Heroku domain

* More cleanup

* Missed one

* Back to passport.forem.com

* Require correct path in lib

* Apply suggestions from code review

Co-authored-by: Michael Kohl <citizen428@forem.com>

* Use with_indifferent_access for symbol hash access in Forem strategy

Co-authored-by: benhalpern <bendhalpern@gmail.com>
Co-authored-by: Michael Kohl <citizen428@forem.com>
2021-09-30 06:47:45 -06:00
Suzanne Aitchison
58e3d6efd5
Suggest top tags when tag search is empty (#14817)
* show top tags when search is empty

* add cypress tests

* nudge travis

* tweak to e2e test

* show a 'top tags' heading

* only suggest tags that are supported

* Add supported scope to Tag

Co-authored-by: Michael Kohl <citizen428@forem.com>
2021-09-30 09:41:20 +01:00
Michael Kohl
081f43b356
Don't include "anti-followed" tags in email digest (#14782)
* Separate followed and "anti-followed" tags

* Minor code change

* Indicate "anti-followed" tags in sidebar

* Fix UpdatePointsWorker spec

* Cries in Arel

* Use antifollow scope more selectively

* Add spec for not_cached_tagged_with_any scope

* Add explanatory comment

* Remove unused route

* Update comment

* Remove unrelated change, figure out why > 1 later

* Need more 

* Avoid false positives in spec

* Change handling of ingored tags in sidebar

* Add explanatory comment
2021-09-30 10:44:38 +07:00
Arit Amana
8cbbc222e9
Heavy Confirmation Flow for Broadcast-Destroy (#14819)
* hook up frontend parts

* complete backend, save success alert issues

* fix broken existing specs

* complete snackbar confirmation on page redirect

* rollback success alert; but leave foundation for it in place

* preserve a11y features of snackbar; complete cypress tests

* test redirect after braodcast destroy
2021-09-29 07:43:00 -04:00
Michael Kohl
43a1c576a4
Move featured story to separate service (#14810)
* Move featured story to separate service

* Travis, wake up
2021-09-29 12:26:14 +07:00
Daniel Uber
5678fb77f5
Remove unneeded checks for code tags when filtering articles from search indexing (#14801)
* Move logic to determine noindex from view to model

This brings attention to the code and allows for faster unit tests.

I expect we'll be modifying this soon to deemphasize the code tag as a
marker of quality.

* Replace "5" constant with home feed minimum score

* Remove check for "code" tags in low quality article check

This made sense for DEV and other devrel communities, but is no longer
necessary for Forems.

* Add UserExperience setting for minimum index score

- add setting, I used `index_minimum_score` to match the
`home_feed_minimum_score`, `minimum_index_score` feels natural but
breaks the pattern.

- use this to determine whether to include article in the sitemap

- use this to determine whether to add noindex meta to article show page

* Remove unneeded tests

Since there's no longer any check for <code> tags in the body, omit
those tests (which passed anyway).

* Add new setting to admin page
2021-09-28 13:44:35 -04:00