* feat: add a feature flag for data update scripts
* feat: write some tests for it
* chore: oops
* stub the data update scripts out wherever the profile admin is
* chore: remove some unneeded ones
* refactor: use call_original
* feat: add a feature flag to all the Forems (but not enable it as yet)
* Fix erroring data update script
* Add spec to ensure that script doesn't impact any other user if tech_admin users don't exist
* Comment out erroring script, delete its associated spec
* Add replacement AddSingleResourceRoleToTechAdmins data update script
* feat: add tech_menu_items to the admin helper
* feat: add the tech resources to /admin if the user has the correct role
* feat: use a partial that will show the data update scripts in the navbar with the correct role
* chore: use a method
* test: chore
* feat: setup the data to need permission single_resource_admin with DataUpdateScript permissions
* chore: remove the if current_user.tech_admin?
* chore: remove line
* feat: add a DUS for single_resource_admin roles to be added to users with tech_admin roles
* fix: move all teh routes outside of the block where tech_admin is required.
* chore: use the constant and remove the method
* chore: add a comma
* Update config/routes.rb
Co-authored-by: rhymes <rhymes@hey.com>
* feat: add a tech admin role to the dropdown
* feat: add the tech admin role along with single_resource_admin
* chore: oops
* refactor: amend the spec to use let blocks
Co-authored-by: rhymes <rhymes@hey.com>
* 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.
* Update copy
* Allow relative URLs and normalize on save
* Update specs
* Move clarification from index to form
* Add data update script
* Update spec
* Add script to remove feature flag
* Remove :feeds_import feature flag and RssReader and related classes
* Change Feeds::ImportArticlesWorker signature to support Sidekiq Cron serialization
* Replace RssReader::Assembler with Feeds::AssembleArticleMarkdown
* Removing Assembler
* Removes collective_noun and collective_noun_disabled from SiteConfig
* Adds a data_update script to remove collective_noun fields from Config
* Adds additional guard clauses to collective noun scripts
* Adds an unfinished spec around the removal of collective_noun fields
* Reworks remove_collective_noun_from_site_config_spec test and expectations
* Reverts changes to data_update script and removal of Config fields
* Remove safe navigator from data_update script
* Adds collective_noun and collective_noun_disabled back to SiteConfig model
* Adds a script that appends collective_noun conditionally and matching spec
* Adds a conditional to determine if collective_noun should be appended
* Refactors data_update script logic to be cleaner
* Refactors spec to use method stubs
* Adds a comment to the SiteConfig model about collective_noun fields
* Adds an additional check to the scripts return statement
* Removes collective_noun and collective_noun_disabled from app
* Config Generalization: replaces community_qualified_name with community_name
- Generalizes SiteConfig after the removal of collective_noun field
- Updates copy where necessary to be readable with community_name
- Makes the community_name SiteConfig description more explicit
- Adds flexibility for Admins by removing appended "community"
* Adds a data_update script to remove collective_noun and collective_noun_disabled
* Removes appended community from stories_controller.rb
* Removes unnecessary quotation marks around SiteConfig.community_name.to_s
* Makes SiteConfig community_name description more explicit
* Removes topic from #email_from and replaces arg with _
* Removes argument from #email_from (facepalm)
* Reverts changes to application_mailer and notify_mailer_spec
* Removes default "Community" topic from application_mailer and makes topic optional
* Refactors #prepopulate_new_form to resolve Code Climate failures
* Refactors #email_from even further by use of a ternary operator per review suggestion
* Simplifies the data_update script used to remove collective_noun per review request
* Adds a data_update script to append community to community_name
* Updates data_update script to correctly append Community to community_name
* Removes RemoveCollectiveNounFromConfig and updates other script
* Removes superfluous false from data_update script
* Updates data_update script to be more idiomatic
* Remove GitHub repositories when user deletes their own GitHub identity
* Remove GitHub repos also from the admin remove identity
* Add a notice in Settings/Extension
* Add data update script to cleanup orphan GitHub repos
* feat: add a new script that updates the email_addresses hash with the contact key
* add a comment to old data script
* feat: add a spec (not passing as yet)
* fix: test passing
* chore: comment script with reason
* Adds a lower() query to the DB in Stories#show
* Restructure spec
* bypass article callbacks in order to test edge case
* Fixes spec
* Change the approach to unsure downcase path in Article model
* Move .downcase call to set_caches before_save callback
* Adds data update script for fixing offending Article paths
* Moves model tests to correct block
* Apply suggestions from code review
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
* 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
* UI completed for Create Channel
* API for create channel & invitations
* 🚀 Combining Backend and Frontend
* Test cases added
* UI completed for Create Channel
* API for create channel & invitations
* 🚀 Combining Backend and Frontend
* Test cases added
* fix suggestions
* add test cases
* replace mod_relations_admin to tag_moderator
* fix test cases
* refactor and fix code climate issues
* Update app/controllers/chat_channel_memberships_controller.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
* fix suggestions
* renaming the methods
* Update app/javascript/chat/chat.jsx
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Update app/javascript/chat/components/createChatModal.jsx
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* add jsDoc and add validation
* add PR suggestions
* renmae the file name to PascalCase
* add styled component
* refactor channel button component
* fix specs
* fix code smell issues
* fix file name issue
* handle error message
* add jsDoc
* Update app/controllers/chat_channels_controller.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
* refactor chat_channel_helpers
* update old hash to new hash
* Update app/javascript/chat/components/ChannelButton.jsx
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Update app/views/chat_channels/index.html.erb
Co-authored-by: Michael Kohl <me@citizen428.net>
* fix syntax error
* Update app/views/chat_channels/index.html.erb
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Policies changed
* The Disable Button issue 🐞
* Fixing Disabled button Issue 🐞
* New group doesn't show up 🐞
Co-authored-by: Narender Singh <narender2031@gmail.com>
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Prepare to drop profile columns from user
* Update code and factory
* Also remove unused constant
* Move validation from user to profile
* Remove Profiles::ExtractData service object
* Add more comments
* Simplify sameAs attribute generation
* Obey me machine, I am your master
* Fix condition order in guard clause
* Temporarily disable callback
* Fix specs
* Reduce usage of Profile#refresh_attributes!
* Remove leftover comment
* Handle social media links differently
* More spec fixes
* Fix specs for admin profile fields controller
* Fix specs after merge
* Fix remaining specs
* Update user show request spec
* Add comment for follow_hiring_tag
* Only save profile when user is valid
* Fix seeds.rb for profile fields
* Switch from before_save to after_save
* Undo unrelated formattin change
* Update spec/fixtures/files/profile_fields.csv
Co-authored-by: Molly Struve <mollylbs@gmail.com>
* Remove data update script and spec
* Fix spec
* Fix typo in comment
* Fix typo in comment
* Move article resave logic to service object
* Move profile field creation to before(:suite)
* Refactor error handling in Profiles::Update
* Fix Profiles::Update specs and refactor
* Temporarily disable spec
* Add ProfileValidator
* Clean up
* Move DB ready check into app/lib
* Refresh attributes after importing from CSV
* Fix specs
* Remove unused file
* A girl has no name. A profile neither.
* Fix specs
* Add responds_to? check
* Spec fix
* Add name to user fields in profile settings page
Co-authored-by: Molly Struve <mollylbs@gmail.com>
* Copy username to search_fields
* Add test for searching by a username
* Add data update script for reindexing users for username search
* Comment out ReindexUsersForProfiles update script
Co-authored-by: rhymes <rhymes@hey.com>
* Adds a data_update script to backfill registered for created, unregistered users
* Checks that invitation_accepted_at is nil and modifies return placement
* Removes user.created_at.nil check from data_update script
* Removes gaurd clause and fetches users from DB
* chore: update the profile to be more dynamic. Maps out the group + field name + value for field
* feat: add the correct input type to the form tying it to the correct method to update
* feat: update the value and the label
* feat: update the profile with a submit
* refactor: ensure we dont show empty groups on the settings/profile
* fix: this shoudl be dribbble
* fix: use attributes! to refresh the cache to ensure that we font run into the case where Profile.attributes is []
* feat: show group description only when it exists
* chore: add some classes
* feat: use the profile update service to update the relevant user information
* chore: rename variable
* chore: use a scope to not return empty groups
* fix: only update user if the profile sync is update is successful. Also capture errors
* feat: style the crayons field checkbox
* refactor: rename the attribute to user instead of profile
* refactor: service object
* Fix CodeClimate warning and rearrange code
* Fix service object, add missing attribute
* Fix flash and add redirect
* Fix service object + spec
* Fix user edits profile spec
* Disable spec
* Fix more specs
* Undo vim fail
* Add data update scripts
* Update where clause in data update script
* Rename method
* Make sync_to_user conditional
* Add after update actions and Honeycomb
* feat: handle checkbox allow chcekbox to check
* Don't set experience cookie in ProfilesController
* Clean up Profiles::Update object
* Fix spec
* Remove Twitch integration (#10732)
* Remove Twitch integration
* Ignore columns
* Change admin password in docs (#10735)
Update default admin password in documentation
* Do not require meta_keywords to be set (#10721)
* Remove extra character from meta_keywords in /listings/index.html.erb
* Remove meta_keywords from MANDATORY_CONFIGS
* Add and use meta_keywords_tag helper
* Use modern tag syntax instead of deprecated syntax
* Add and use meta_keywords_default helper
* Add and use meta_keywords_article helper
* Remove * from meta_keywords_field.label
* Update meta_keyword specs to account for no keywords being set
* Generalizes Connect welcome message and settings nav tab and refactors tests (#10741) [deploy]
* [deploy] fix: Clear chat input after Enter key submit (#10487)
* fix: Clear chat input after Enter key submit
* fix: Rename Composer component
* test: Add integration tests for input value
* After pressing Enter
* After clicking Send
* After clicking Save edit
* After clicking Close edit
* Remove tabindex of -1 on upload image input in the write a post editor (#10543)
* Remove tabindex of -1 on upload image input in the write a post editor
* Remove negative tabindex on image uploader's outer button
* Give tabindex of -1 to outer button on image uploader
* Update buttons.scss
* [deploy] Add recaptcha keys to as site-configurable keys (#10736)
* Add recaptcha keys to as site-configurable keys
* Add recaptcha to site config view
* Use site config key
* Make ReCAPTCHA tag optional if keys are blank
* Use proper capitalization of recaptcha
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
* Refactor logic for readability
* Use proper capitalization of recaptcha
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
* Use proper capitalization of recaptcha
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
* Use proper capitalization of recaptcha
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
* Add Section for Series/Collections (#10719)
* Add Section for Series/Collections
I added a small section in this area of the docs to share some information about collections/ series.
There is not much information in the documentation about collections or series and I felt like this would be beneficial to others looking to help with the Series feature of the website.
* Updated wording of collections section.
* Articles API: filtering by tags (#3654) (#10614)
* Articles API: filtering by tags (#3654)
* Address CR comments (#3654)
* Add test case
* Move tests
* Update docs
* Use _any_ option for querying by tags (#3654)
* Move Imgproxy endpoint config to Images::Optimizer (#10742)
* Link Email Account creation UI to existing Create Account UI (#10746) [deploy]
* Conditional button to link to email accout creation
* Rename email signup state param
* Test for email account creation button scenarios
* Add forem meta tags (#10747)
* Add forem meta tags
* Add docs
* Update docs/technical-overview/compatibility.md
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
* Update docs/technical-overview/compatibility.md
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
* Update docs/technical-overview/compatibility.md
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
* Update docs/technical-overview/compatibility.md
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
* Remove Twitch-related columns from users table (#10750)
* [deploy] Long text goes outside cards (#10740)
* Add word-break to crayons-card
Add word-break to crayons-card this will allow words to be broken if the word is too long but will wrap normally otherwise.
* Use overflow-wrap: anywhere;
`break-word` is deprecated though `anywhere` does not work in IE
* Removes superfluous sign_in from users_onboarding_spec.rb (#10757) [deploy]
* [deploy] Allow glitch id starting with ~ (#10544)
* [deploy] crayons prep (#10737)
* Add DEV special case for following hiring tag
* Move image validation to Profiles::Update object
* spec: move over the tests for validating images
* Move follow_hiring_tag into the service object
Co-authored-by: Ridhwana <ridhwana.khan16@gmail.com>
Co-authored-by: Andrew Bone <AndrewB05@gmail.com>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
Co-authored-by: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com>
Co-authored-by: Robin Gagnon <me@reobin.dev>
Co-authored-by: Manaswini <58681405+Manaswini1832@users.noreply.github.com>
Co-authored-by: Andy Zhao <17884966+Zhao-Andy@users.noreply.github.com>
Co-authored-by: Christopher Wray <53663762+cwray-tech@users.noreply.github.com>
Co-authored-by: Rafal Trojanowski <rt.trojanowski@gmail.com>
Co-authored-by: Mac Siri <mac@dev.to>
Co-authored-by: Josh Puetz <josh@dev.to>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
Co-authored-by: irmela <irmela@berlin-coding.de>
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>