* Use correct table heading for username
* WIP add role filter and crayonsify forms
* styling
* responsive
* Add form back in that was removed by merge conflict fix
* Suggest only valid search options
* Add basic tests for search and filter by role
* Add aria for search field
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* Add email to aria
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
Co-authored-by: Paweł Ludwiczak <ludwiczakpawel@gmail.com>
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
* Adding indirection for Tag#name to ease future work
In pairing with Arit, we were able to capture a few small wins in
regards to favoring an accessible tag name. In other words, where ever
you see a tag's name, we want to render it as camel-case. This will
greatly help those using a screen reader and frankly visually scanning
the tag (idontknowaboutyoubutthisiskindahardtoread).
However, as we explored the
code base, we found several places that will require further
consideration. These revolve around the API and caching of tags for
articles and listings as well as the JSON documents we use for
populating drop-down lists.
So, instead of unleashing a large pull request, we're opting to provide
a small non-breaking refactor that demonstrates where we're going and
keeps production working as expected while allowing future
development/testing to benefit from these captured gains.
Our next steps are to revisit the related issue and do a proper task
breakdown, becuase there are too many considerations to call this a
"small win".
I also encourage reviewers to read the comments. This is an emerging
mental pattern that I believe helps us conceptually move our codebase
forward while also guarding against the mega-PR with oodles of commits
and file changes that span numerous contexts.
Related to forem/forem-internal-eng#269
* Expanding specs to address feedback
* Initial hack
* Begin functionality implementation
* Add proper route
* Finish up
* Fix test and formatting
* Fix test vars
* Update app/views/moderations/actions_panel.html.erb
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* Update app/views/moderations/actions_panel.html.erb
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* Update app/views/moderations/actions_panel.html.erb
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
* Update app/controllers/articles_controller.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
* Update file to not use keys that are not needed
* Finalize featured logic
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
Co-authored-by: Michael Kohl <me@citizen428.net>
* feat: remove the default email and cobine the periodic digest and the contact email under the Email section
* refactor: rename the email_link to contact link and use the contact_email as a default and fallback to the ForemInstance.email
* chore: alignment
* feat: use the contact_email helper
* feat: move the contact_email to the ForemInstance model
* feat: use ForemInstance.contact_email instead of the application helper method
* removed the application Helper
* feat: set the dafault on the contact_email
* fix: cypress tests
* Update app/lib/constants/settings/general.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Michael Kohl <me@citizen428.net>
* Refactoring questions asked of user
In this pull request, I'm extracting and normalizing role-based
questions asked of the user.
Prior to this commit, our codebase has asked two very similar questions
of our user model:
- `user.has_role?(:admin)`
- `user.admin?`
In asking `has_role?(:admin)` we are relying on implementation details
of the rolify gem. In addition, the `has_role?` question asked
throughout controllers or views means that it's harder to create
hieararchies of permissions.
In favoring `user.admin?` as our question, we can use that indirection
as an opportunity to discuss and decide "Should someone with the
`:super_admin` role be `user.admin? == true`?"
The details of this commit is to do three primary things:
1. Ask the `has_role?` questions in "one place" in the code (e.g. the
`Authorizer` module)
2. Extract the role based questions that are on the `User` model and
provde backwards compatable delegation.
3. Structure the code so that it's harder to accidentally call
`user.has_role?` (e.g., make `User#has_role?` and `User#has_any_role?`
private).
This is related to #15624 and the updates are informed by discussion in
PR #15691. This commit supplants #15691.
* Refactoring the liquid tag policy tests
* Fixing typo
* Bump for travis
* User decorator (and spec) should use `trusted?`
Fixes a few issues seen in an rspec run that show as:
DEPRECATION WARNING: User#trusted is deprecated, favor
User#trusted? (called from config_body_class at
/opt/apps/forem/app/decorators/user_decorator.rb:58)
And here:
/opt/apps/forem/spec/decorators/user_decorator_spec.rb:112
/opt/apps/forem/spec/decorators/user_decorator_spec.rb:121
/opt/apps/forem/spec/decorators/user_decorator_spec.rb:130
/opt/apps/forem/spec/decorators/user_decorator_spec.rb:139
* prefer User trusted? to trusted
DEPRECATION WARNING: User#trusted is deprecated, favor
User#trusted? (called from permissions at
/opt/apps/forem/app/models/rating_vote.rb:25)
* Prefer trusted? to trusted in user spec
* Use warned? rather than warned in admin article partial
* use trusted? rather than trusted in moderator requests spec
* Prefer trusted? to trusted in moderations controller
* Prefer trusted? to trusted in moderations view
* User auditable? should call trusted? and not trusted
Deprecations go rolling right along.
* Invert guard clause logic to be positive
The original "return unless multiple negated conditions hold" guard
was cumbersome.
Invert to return if any of the exceptions apply, namely:
- this is a comment or readinglist rating (rather than explicit),
allowed for all
- this rating is from a moderator/trusted user (allowed)
- this rating is offered by the article's author (allowed)
I had intended to also remove the safe navigation operators (since it
wasn't clear why there would be a null user or null article, as
rating_vote joins users to articles with a score), but the builtin
validation tests (is expected to validate ...) build objects with
missing attributes, and raise errors when the spec is run.
For most of these this isn't a big deal because `class` is delimited
by whitespace, but it changes the meaning of the `id` attribute since it
must be an exact match (including whitespace). There is also a data-*
attribute or two in here that may have had their semantics changed.
The malformed link ended up messing up HTML further down the page,
hiding the "Unpublish Article" button because the browser didn't parse
it as a separate element.
* erblint was failing on this file, it looks like two separate issues
a closing quote on the `aria-haspopup="true caused some issues when
running erblint
a warning about Lint/FloatComparison raised about casting the
rating_level value to_f, I chose to convert the float to integer and
compare to the value instead.
I suspect the lint rule didn't run in the most recent change to this
file.
* Use `round` instead of `to_i` when converting from float
Also, move the access and conversion outside of the
loop (microoptimization, but I did it to shorten the inline comparison).
* Replaced granular emails with the default one
* Set reply to header in emails
* Extract shared_examples from NotifyMailer
* Removed unused code
* Replaced SiteConfig with Settings::General
* Fixes related to replacing SiteConfig with Settings
* Removed duplicate line from specs
* Rename SiteConfig
* More renaming
* Update spec
* Update mandatory settings mapping
* More renaming
* e2e test fixes
* You have a rename, and you have a rename
* Spec fix
* More changes
* Temporarily disable specs
* After-merge update
* Undo rename for migration
* undo rename of DUS
* Fix DUS
* Fix merge problem
* Remove redundant DUS
* Fix specs
* Remove unused code
* Change wrong class name
* More cleanup
* Re-add missing values to constant
* Fix constant
* Fix spec
* Remove obsolete fields
* Add accidentally removed field
* Update spec
* Move methods from Settings::General to ForemInstance
* Remove unneeded model
* Change mentions of 'site config'
* update storybook example and docs
* update desktop home feed tabs with a11y enhancements
* update storybook to reflect buttons usage, update post editor buttons
* update admin html variants tabs
* update admin sponsorships tabs
* re-add flex to the crayons-tab class to prevent regression in tab components not updated
* Revert "update admin sponsorships tabs"
This reverts commit d9e4a5e4b0d362e38a11c795b35ceb4442bc4d90.
* Revert "update admin html variants tabs"
This reverts commit 3d9f119e88dc2f2f102d664c57a1f56413490a36.
* update search tabs
* update v2 form erb html
* update tag index tabs
* update notifications tabs
* label the notifications nav
* update mod sidebar tabs
* update main analytics page tabs
* add cypress tests for home feed tabs
* add tab tests for the post editor
* add cypress tests for tags index navigation
* fix UI issue with search tabs, add search cypress tests
* add tests for the analytics dashboard tabs
* add mod nav tests
* add notifications navigation tests
* get new handles after view switch
* replace hardcoded mod paths
* apply review suggestions
* fix: remove hardcoded paths
* fix: use path helpers
* swap href for link_to
* feat: use path helpers
* feat: use a data path to send through the path that we will be calling
* feat: pass route through to js
* dus index path
* chore: change to use path_helpers
* feat: update DUS controller
* chore: oops remove these paths
* Add page-header padding and overflow-x for tabs
* Split into two moderator files and move into Views folder
* Add page-header padding style
* Increase font size of crayons-tag on small screen
* Improve small screen view of menu and grid rows in mod center
* Fix date alignment
* Update after first PR revision
* Re-update
* Fix stylesheet reference
* Replace HEROKU_SLUG_COMMIT with custom footprint (naive)
* Fully set RELEASE_FOOTPRINT with the expectation of setting it before launch
* Change tests
* Fix cache
* Make FlagUserModal show up on click
* Explain extra div
* Make sure "Vomit All" reaction fires accurately
* Make test-file comment clearer
* Fix bug when 2 articles are open and the FlagUser modal does not open for the first article
* Still working it out ...
* Tests broken; need help
* Get rid of debugging alerts
* Fixed broken tests for <SingleArticle />
* Write tests for ModerationArticles component
* Complete tests for ModerationArticles component
* Employ safer Preact testing techniques
* Query all articles using "data-testid"
* Revert changes
* Got it working with portals for non-iframe implementation.
* wip tests
* Got mod tools flag user modal wprking on article page again.
* Added some documentation the code.
* Now confirm is disabled until you select an item in the flag user modal.
* Revert "wip tests"
This reverts commit fb7a0825039fd377cad04d9dedad9d1146b03978.
* test prep
* Fixed broken test.
* Refactored to use useRef hook.
* Rename a variable
* remove unnecessary comments
Co-authored-by: Nick Taylor <nick@dev.to>
* Update mod center layout & color fixes
* Update SVG for external link
* - Update external link svg to use
- Remove scrollbar in actions menu
- Move action panel styling from `articles.scss` to `moderators.scss`
* Delete schema.rb
* Add back schema file
* SiteConfig view refactoring (#9286)
* Clean up payment pointer in top shell
* Simplify handling of social media icons
* Also guard against empty strings
* Only traverse hash once
* Adds a default value to the shell version cache response in case it returns undefined (#9250)
* [deploy] 🐞 Hotfix Real time chat was broken (#9293)
* Feature 🚀 : Ability to delete messages in chat channels
- Sending message ID to frontend
- Deleting Message
- Use pusher to delete message realtime
* Minor Bug 🐞: Show message action only for current user
- User can delete or edit their own messages
* Test cases added
* Bug 🐞: Update message id for receiver
Message id was not sent to receiver by pusher
* Refactoring🛠: Message controller refactoring
* Test Cases📝 : Specs for Delete message added
* Feature 🚀 : Ability to edit messages
* Test Cases📝 : Specs for Edit message added
* Merge conflict resolved
* 🐞Hotfix: Findinder error in chat
Co-authored-by: Narender Singh <narender2031@gmail.com>
* Bump jsdom from 16.2.2 to 16.3.0 (#9279)
* Fix TypeError: userData is null in blockButton.js (#9299)
Should fix https://app.honeybadger.io/fault/67192/ed6f6b392b5bd791d6dc04732f125123.
* Fix TypeError: userData is null in initializeOnboardingTaskCard.js (#9298) [deploy]
* Fix TypeError: userData is null in initializeOnboardingTaskCard.js
Should fix https://app.honeybadger.io/fault/67192/65045742fda3390a067960f53a894e87.
* Combine return statements in initializeOnboardingTaskCard
* Fix TypeError: null is not an object in initializeArticleReactions.js (#9297) [deploy]
* Fix TypeError: null is not an object in initializeArticleReactions.js
Should fix https://app.honeybadger.io/fault/67192/6f9b4fdf475e2229c968fa26d785b90f
* Return 0 rather than undefined if reactionEl doesn't exist
* Routine Rubocop fixes (#9302)
* rubocop -A
* rubocop --auto-gen-config
* Fix sorting in Bundler/OrderedGems to consider punctuation
* Rubocop: activate Layout/ClassStructure (#9304)
* change Label Follow Weight Scale for Tags in Dashboard (#9247)
* [deploy] Remove codeql analysis for right now (#9308)
* Update Readme Headline (#9309)
* [deploy] Fix TypeError: Cannot set property 'innerHTML' of null (#9306)
Should fix https://app.honeybadger.io/fault/67192/f79e24dfb4e4364da09dda6380e9d2ff.
* Add /forem redirect (#9317)
* [deploy] Make sidebar sponsor headline configurable (#9251)
* Make sidebar sponsor headline configurable
* Fix spec
* Fix spec typo
* Create profile image generator (#8695)
* Create profile image generator
* Update spec/services/users/profile_image_generator_spec.rb
Co-authored-by: Mac Siri <krairit.siri@gmail.com>
* Remove difficult cloudinary dependency
Co-authored-by: Mac Siri <krairit.siri@gmail.com>
Co-authored-by: Michael Kohl <citizen428@gmail.com>
Co-authored-by: Fernando Valverde <fdov88@gmail.com>
Co-authored-by: Sarthak Sharma <7lovesharma7@gmail.com>
Co-authored-by: Narender Singh <narender2031@gmail.com>
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
Co-authored-by: rhymes <rhymesete@gmail.com>
Co-authored-by: Veggier <47649859+Veggier@users.noreply.github.com>
Co-authored-by: Molly Struve <mollylbs@gmail.com>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
Co-authored-by: Mac Siri <krairit.siri@gmail.com>