Commit graph

4989 commits

Author SHA1 Message Date
Michael Kohl
807efcfdd2
Ignore feed_admin_publish_permission column (#12482) 2021-02-02 13:34:36 +07:00
Katie Davis
c917f916f9
override disabled for comment like usecase (#12517) 2021-02-01 14:19:27 -05:00
rhymes
304b8f0e13
Add Message to the postgres.db_table_size dataset on Datadog (#12516) 2021-02-01 12:41:12 -05:00
Molly Struve
265c4d72c1
Optimization: Set ForemInstance.deployed_at Locally to Better Mirror Production (#12500) 2021-02-01 07:43:23 -06:00
Molly Struve
82585464b9
Bug Fix:ForemInstance.deployed_at is a String, not a datetime (#12498) 2021-01-31 14:57:48 -06:00
Molly Struve
113d195051
Bug Fix:Bust Bottom Shell Content on Admin Config Update (#12497) 2021-01-31 13:31:44 -06:00
Andrea Martz
0c0e28dd35
Add missing aria label for campaign close button (#12489) 2021-01-29 17:51:18 -05:00
Mac Siri
8e7cd6a699
Remove last DatadogStatsClient (#12490)
Co-authored-by: Zhao-Andy <17884966+Zhao-Andy@users.noreply.github.com>
2021-01-29 16:11:51 -05:00
Katie Davis
6a660776fa
fix check to remove class from null element (#12488) 2021-01-29 14:10:07 -05:00
Nick Taylor
a7da74b993
Cleaning Test Runs for End to End (E2E) Tests (#12143)
* Added custom seed task

* Added a test for the initial login for the intial admin of a forem instance.

* Renamed admin login seed data file.

* Pulled functions out of main Cypress plugin file and import them now.

* Added some comments.

* Added a comment about Cypress tasks requiring a return value to be considered successful.

* Moved admin_login_setup seed file to spec folder.

* Made change requests in regards to rake task.

* Fixed reference to SiteConfig

* Created the seeder class to be shared for all seed files.

* Added a missing param to function comment.

* Fixed seeder require in e2e test seed file.

* Fixed seeder require in seeds.rb. Why is Rails.root required?

* Added an environment guard for not being production in the e2e seed task.

* Made seeder require relative.

* Trying something for the Elastic Search issue in CI.

* Revert "Trying something for the Elastic Search issue in CI."

This reverts commit 7cb2a963c8ac1f9242c612a1b9fe8ff814605df6.

* Search indices are now removed via bundle exec rake search:destroy

* Now rake search:destroy is used in the Cypress task for resetting data as well.

* Moved Seeder class to app/lib

* Added cypress-rails

* Got two flows working with db rollbacks.

* Trimmed down the e2e dataset for now.

* Added a custom Cypress command to encompass test setup.

* removed unused e2e rake task

* added some user login/password e2e tests.

* Added a note about Cypress not cleaning cookies, so we do for the moment.

* Removed code no longer required.

* Removed comment in test that is no longer pertinent to the test suite.

* Removed data cleaning plugins as cypress rails gem handles it now.

* Added @citizen428's recommendation got raising an error if trying to seed production.

* Temporarily have paralleziation of e2e tests disabled to figure out cypres-rails/knapsack pro integration.

* Doh! Forgot a semi-colon in the Travis config.

* Added a comment about not integrating cypress-rails/knapsack pro right now.

* Removed knapsack pro npm package for now as we aren't using it.

* Reworded comment about cypress-rails/kanpsackpro.

* Removed seeding for tags to follow for onboarding in e2e seed data.

* Made pree2e script e2e:setup so it only runs explicitly when needed.

* Renamed bin/e2e to bin/e2e-ci.

* Created a new script for local e2e testing.

* Removed RAILS_ENV as it's in the e2e-ci script already.

* Fixed an auto corrected command.

* Fixed wording in e2e script prompt.

* Removed bundle exec rake data_updates:run that I had added. Doesn't appear to be necessary.

* Added missing new lines.

* Renamed e2e seed file and only use that one now. THere are no others.

* Some script cleanup.

* Added a check for the E2E environment so as to not pollute system tests.

* Now e2e test server cleanup occurs when the server shuts down.

* Put puts as this is really just for testing.

* Put environment variable in the proper place for runnning bundle exec.

* Added a check to only run for E2E tests.

* Some bash script formatting.

* Removed copy paste irrelevant comments.

* Updated e2e server shutdown message.

* Now a data-testid attribute is used for finding the user account errors panel.

* Made test selectors ignore casing of text.

* Removed prod paranoia check in e2e seed file.

* Refactored spec to use new cy.loginUser(user) command.

* Update app/lib/seeder.rb

Co-authored-by: Michael Kohl <citizen428@dev.to>

* Fixed flakiness that @aitchiss was experiencing.

* Rubocop fix.

* Due to a Cypress issue, fixing cookie clearing with another tweak.

* Bumped the wait time to 500ms if cookies don't clear.

* Added a 'bundle check' to the bin/e2e script as suggested by @katiedavis.

* Removed some white space

Co-authored-by: Michael Kohl <citizen428@dev.to>
2021-01-29 13:34:01 +01:00
Vaidehi Joshi
5907ff6b2d
Update /contact page with links to filing bug reports + forem.dev (#12475) 2021-01-29 06:40:24 -05:00
Mac Siri
5d86877e02
Limit user.touch usage in RepoSyncWorker (#12458) 2021-01-28 12:35:58 -05:00
Katie Davis
9d4b6c36ea
updates article form to have warning modal (#12430) 2021-01-28 11:32:28 -05:00
Rafi
335957edd5
Adding focus trap to trap focus within the modal (#12366)
* Adding focus trap to focus trap in the modal

* Adding yarn lock

* Removing Fragment

* Fixing focus trap casing

* Adding waitFor
2021-01-28 10:18:21 +01:00
Michael Kohl
12a8fbddb5
Add flash message for email confirmation (#12450)
* Add flash message for email confirmation

* Fix spec
2021-01-28 09:32:04 +07:00
Kirk Haines
ed74f2f245
Abstract DatadogStatsClient to ForemStatsClient (#12304)
* This change abstracts the DatadogStatsClient into a ForemStatsClient.
The purpose of this abstraction is to set the foundation for a subsequent PR that will allow one to use New Relic for recording Forem stats, instead of Datadog, if there is a New Relic configuration found.
This specific change creates an abstraction layer that can be built upon, without changing any actual default behavior. All specs still pass.

* Use delegate instead of explicit methods.

* Delegate instead of explicit methods.

* Fix the error.

* Refactor according to the suggestions in the comments.

* Ooops.  Stats work better when all of the code is committed.

* Removing the alias of count to increment since that was done in error.
2021-01-27 11:25:44 -05:00
Arit Amana
23f3386f3f
Don't display '0 reactions' on article feed (#12425)
* Implement for Feed Card only

* update snapshot

* write tests

* Implement changes in other article-feed-card views

* modify failing spec

* Address code review comments
2021-01-27 11:13:10 -05:00
Marcy Sutton
f072730f0f
Header navigation dropdown accessibility (#11509)
* Improve keyboard a11y of header menu dropdown

This commit also includes some cleanup of unnecessary functions that seemed to degrade performance.

Closes https://github.com/forem/forem/issues/1154

* Add temporary focus style on navigation-button

* Put menu items in a list

* Adjust menu button based on VoiceOver testing

* Refactor menu logic to be reusable/work on touch

* Preserve admin link visibility

* Focus on first item on menu open

* Clean up some HTML and CSS

* Apply suggestions from code review

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

* Ensure menu hides on click outside

* Rename toggle function and adjust formatting

* Update nav button focus style

* Clean up padding on header avatar focus style

* Make button show focus state for keyboard only

Using .focus-visible:focus targets keyboard focus and eliminates a flash of the blue border on click before focus is moved to the child item (which also has no focus style on mouse click)

* Update app/views/layouts/_top_bar.html.erb

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

* Add some defensive programming

* Removed initializeTouchDevice from base.js.erb

* navigation-butt ID is now member-menu-button

* Moved all the logic from initializeTouchDevice.js into a pack file/utilities.

* committing re-ordered schema after setup

* add tests for initializeTouchDevice

* remove some unneeded html setup

* make sure menu doesn't close if user tabs back from sign out

* Revert "committing re-ordered schema after setup"

This reverts commit a41a1c861cca3b97d8a7b8a99268b8afaae9f028.

* optimized code

* small tweaks, only show outline when focused

Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
Co-authored-by: rhymes <rhymes@hey.com>
Co-authored-by: Nick Taylor <nick@dev.to>
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
2021-01-27 09:39:17 +00:00
Ben Halpern
bb59e4b869
Fix failure on blank image URLs passed from oauth (#12390) 2021-01-27 09:34:19 +01:00
Philip Q Nguyen
f9f6be2ca7
Fix description for SiteConfig.periodic_email_digest_min (#12445)
Description for `periodic_email_digest_min` field is currently
`periodic_email_digest_max`, but it should be `periodic_email_digest_min`
2021-01-27 09:27:44 +01:00
narender2031
7a934a1565
Add Crayons classes to the "Destroy your account" page (#12346)
* add crayons classes

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* fix spec

Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
2021-01-26 16:28:37 +01:00
ludwiczakpawel
bf72758c4e
Close modal on escape keypress (#12428)
* tooltips 1.0.1

* tooltips 1.0.1

* close on esc

* simpler
2021-01-26 15:12:54 +01:00
ludwiczakpawel
6b0505dc47
Video max width (#12436)
* tooltips 1.0.1

* tooltips 1.0.1

* video width

* addding  to supported attributes for markdown scrubber
2021-01-26 15:12:37 +01:00
Michael Kohl
b4a480edae
Add validations to SiteConfig model (#12341)
* Move straightforward validations

* Add color contrast validation to SiteConfig

* Move domain and emoji validation to SiteConfig

* Add specs

* Update service object

* Experimentally remove validation

* Update spec

* Fix comment
2021-01-26 09:12:24 +07:00
rhymes
def0cf2437
Optimize column selection for articles belonging to "any" given tag (#12420)
When `acts-as-taggable-on`'s `.tagged_with()` is used with `any: true`,
the gem will use `SELECT *` regardless of any previous (or following) requests
of selecting a limited amount of columns.

Given that the `articles` table has [73 columns](https://dev.to/admin/blazer/queries/314-number-of-columns-in-all-tables)
that will amount to wasted RAM memory for columns we don't need.

By "unscoping" any previous `select()` we can optimize used memory.

Before:

```ruby
[24] pry(main)> Article.tagged_with([:ruby], any: true).select(:id, :name).to_sql
=> "SELECT \"articles\".*, \"articles\".\"id\", \"name\" FROM \"articles\" WHERE EXISTS (SELECT * FROM \"taggings\" WHERE \"taggings\".\"taggable_id\" = \"articles\".\"id\" AND \"taggings\".\"taggable_type\" = 'Article' AND \"taggings\".\"tag_id\" IN (SELECT \"tags\".\"id\" FROM \"tags\" WHERE (\"tags\".\"name\" LIKE 'ruby' ESCAPE '!')))"
```

Note, how the SQL query is `articles.*, articles.column_a`

After:

[25] pry(main)> Article.tagged_with([:ruby], any: true).unscope(:select).select(:id, :name).to_sql
=> "SELECT \"articles\".\"id\", \"name\" FROM \"articles\" WHERE EXISTS (SELECT * FROM \"taggings\" WHERE \"taggings\".\"taggable_id\" = \"articles\".\"id\" AND \"taggings\".\"taggable_type\" = 'Article' AND \"taggings\".\"tag_id\" IN (SELECT \"tags\".\"id\" FROM \"tags\" WHERE (\"tags\".\"name\" LIKE 'ruby' ESCAPE '!')))"
```

`articles.*` is gone :-)

- https://github.com/mbleigh/acts-as-taggable-on/issues/936
- 47da5036de/lib/acts_as_taggable_on/taggable/tagged_with_query/any_tags_query.rb (L2-L8)
2021-01-25 17:34:10 +01:00
Rafi
b13c76f405
Prevent text overflow of follow button (#12422) 2021-01-25 17:29:10 +01:00
Ben Halpern
8b5b19bfa8
Fix flash of unstyled content (#12385)
* Fix flash of unstyled content

* Fix test context

* Add missing user in test

* Add qualifier argument
2021-01-25 10:49:58 -05:00
Julianna Tetreault
2cd523f811
Update Tag Link to Route to Proper Admin Page (#12391) [deploy]
* fix: update admin tag edit page link to include /edit

* Update admin tag edit page link to be more descriptive
2021-01-25 08:25:39 -07:00
narender2031
06a6191424
fix ui issue to display bug (#12365) 2021-01-22 15:47:19 -05:00
cyrillefr
a3e76b6d09
Refactor magic numbers for /comments rendering (#12323)
* Refactor magic numbers for `/comments` rendering (#11594)

* Update comments_helper adding constants & accessor methods

* Refactor stories_controller replacing hard coded values by helper call

* Refactor _comments_section view accordingly with helper calls

* Add test to specs (view_user(index|comments)) accordingly

* Refactor magic numbers for `/comments` rendering

Small changes after initial review

* Change constante to more explicit names
* Change one helper method name
* Pluralize in view

Co-authored-by: rhymes <rhymes@hey.com>
2021-01-22 10:55:44 -06:00
Rafi
931d9169fd
Fixing link focus (#12362)
* Fixing link focus

1. Removing display content from link
2. Removing extra margin at the top of link
3. Adding before link

* Extending crayon-fields and removing margin-top
2021-01-22 09:26:51 -05:00
Fernando Valverde
88bd3a1069
Replace authentication_enabled_providers.include? with helper method (#12379)
* Replaces authentication_enabled_providers.include? with helper authentication_provider_enabled?

* Fix typo
2021-01-22 07:54:10 -06:00
Michael Kohl
6afaa25f50
Fix accidental publishing of draft articles (#12288)
* Fix accidental publishing of draft articles

* Add regression spec

* Fix spec
2021-01-22 08:47:16 +07:00
Julianna Tetreault
2ebe55fc22
Log Relevant Data from Self-Deletion Flow to Honeycomb (#12369) [deploy]
* Log params[:token] and destroy_token to Honeycomb when token mismatch

* Refactor #confirm_destroy and add Honeycomb fields for error logging

* Add tests around Honeycomb error logging in #confirm_destroy to spec

* Remove logging of user to Honeycomb in #confirm_destroy and in spec
2021-01-21 17:00:10 -07:00
Julianna Tetreault
63a1484a56
fix: remove extra href from admin/articles/index.html.erb (#12373) [deploy] 2021-01-21 16:32:18 -07:00
Andy Zhao
7c47d351f0
Cache only the static badge achievement data for notifications (#12368)
* Cache only the static badge achievement data for notifications

* Cache the image too, but at what cost...? 🤔

* Add data update script to clear badge achievement notifications' caches

* Remove unnecessary cache for badge achievement notifications
2021-01-21 17:03:42 -05:00
Rafi
940c7ee37d
Adding aria labels and role to onboarding modal (#12363)
1. Adding role dialog
2. Adding aria-labelledby and aria-describedby
2021-01-21 13:58:55 -05:00
Ridhwana
2dad0c42f8
Save Data Update Script errors to database and show them on http://localhost:3000/admin/data_update_scripts (#12348)
* feat: add an error column to the data update script

* feat: save the error to the error field

* feat: save the error when the script fails

* feat: show the script error on the data update script page

* chore: pass the error to mark_as_failed instead of having its own function

* refactor: use presence

* test: ensure that we test an error case of a data update script

* chore: rename errorneous to failing

* test: update some specs, working on the others

* chore: update tests now that there are two files

* chore: change error from a string to a text to allow for more char
2021-01-21 14:48:34 +01:00
Michael Kohl
71ea85be6e
Verify current password on password change (#12174)
* Verify current password on password change

* Address PR comments

* Allow password reset for logged in users

* Make password change message more explicit

* Reformat message

* Fix specs
2021-01-21 12:40:54 +07:00
Ben Halpern
e3d39e09b4
Patch: Fix UI bugs in follow adjustment form (#12137)
* Fix UI bugs in follow adjustment form

* Move to bottom
2021-01-20 17:23:18 -05:00
Michael Kohl
5d0fe12528
Update NavigationLink handling (#12316)
* Update copy

* Allow relative URLs and normalize on save

* Update specs

* Move clarification from index to form

* Add data update script

* Update spec
2021-01-20 13:57:59 -05:00
Arit Amana
94236d7ee6
Update dev.to/mods for non-logged in users (#12301)
* complete implementation

* check if forem is DEV properly

* Add tests

* improve tests

* improve tests again

* REALLY improve tests (sheesh!)

* Address code review comments

* small changes

* modify specs
2021-01-20 13:53:50 -05:00
Andy Zhao
0f15b8dbd3
Don't try to unsub users when destroying if Mailchimp is not enabled (#12331)
* Use proper Mailchimp newsletter IDs respective to methods

* Add guard clauses when Mailchimp newsletter isn't enabled

* Rubocop correction

* Only unsub after destroy if Mailchimp newsletter is enabled

* Refactor a bit

* Fix typo

* Fix boolean logic for guard clauses

* Update tests to account for new SiteConfig logic

* Break guard clause into two clauses
2021-01-20 12:32:35 -05:00
Alex
f5ab9552d5
Move MarkdownTraverser to service (#12282) 2021-01-20 11:29:42 -05:00
Mac Siri
bdd05f7a9d
Reindex comments' Elasticsearch doc when commentable is updated (#12330) 2021-01-20 09:44:59 -05:00
Suzanne Aitchison
a5365b762e
add permalinks to editor guide headings (#12347) 2021-01-20 14:39:05 +00:00
Dany Marcoux
4022ea9fc0
Fix deprecation warnings (#12339)
* Fix deprecation warnings in Images::Optimizer

The deprecation warnings were:

warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
warning: The called method `cloudinary' is defined here

and

warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
warning: The called method `imgproxy' is defined here

* Fix deprecation warning in Slack::Messengers::ArticlePublished

The deprecation warning was:

warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
warning: The called method `initialize' is defined here
2021-01-20 10:01:20 +01:00
Andy Zhao
8d462801ec
Add new cache key for article sidebar & bottom_content (#12185)
* Add new cache key for article sidebar & bottom_content

* Trigger build

* Undo automatic changes from 'merge conflict fixes' commit

* Revert to actual previous version, oops

* Trying again...

* Trying again...

* Trying again...

* Remove unnecessary variable

Co-authored-by: Mac Siri <krairit.siri@gmail.com>

Co-authored-by: Mac Siri <krairit.siri@gmail.com>
2021-01-19 14:03:15 -05:00
Anna Buianova
5b7a3df004 Load campaign articles in a widget as a collection (#12334) 2021-01-19 20:33:39 +03:00
Nick Taylor
86eb75cee7
Report a Message in Connect (#12229)
* Frontend Ready for Connect Report Abuse

* add feedback api

* js defination fix

* Added Hooks to the Component

* add json response in feedback

* Block popup added

* fix render issue

* Made changes in internal view

* change error message

* Added few design changes =

* add test cases

* Update app/javascript/chat/actions/requestActions.js

Co-authored-by: Nick Taylor <nick@iamdeveloper.com>

* add PR suggestions

* add backend test cases

* report abuse form close

* Update app/javascript/chat/actions/requestActions.js

Co-authored-by: Nick Taylor <nick@iamdeveloper.com>

* Update app/javascript/chat/ReportAbuse/index.jsx

Co-authored-by: Nick Taylor <nick@iamdeveloper.com>

* add test cases

* Update app/javascript/chat/ReportAbuse/index.jsx

Co-authored-by: Nick Taylor <nick@iamdeveloper.com>

* Update app/javascript/chat/ReportAbuse/index.jsx

Co-authored-by: Marcy Sutton <holla@marcysutton.com>

* Update app/javascript/chat/ReportAbuse/index.jsx

Co-authored-by: Marcy Sutton <holla@marcysutton.com>

* group the fieldset

* fix report abuse api

* fix test case

* fix request test case

* fix typo

* cleaned up markup in report abuse component.

* Fixed spacing between abuse options.

* Fixed wording in report abuse confirmation.

* Removed unnecessary data-testid and aria-label attributes.

* Added some top margin to the report abuse form.

* Update app/javascript/chat/message.jsx

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

* Added a legend to the the fieldset.

* Update app/javascript/chat/actions/requestActions.js

Co-authored-by: Michael Kohl <citizen428@dev.to>

Co-authored-by: Sarthak <7lovesharma7@gmail.com>
Co-authored-by: Narender Singh <narender2031@gmail.com>
Co-authored-by: Marcy Sutton <holla@marcysutton.com>
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
Co-authored-by: Michael Kohl <citizen428@dev.to>
2021-01-19 12:07:47 -05:00