* remove comment and article docs when they are deleted
* fix banish user spec to handle ES deletes
* remove comments from elasticsearch when deleted via delete comments service
* Add a discuss/ask notification(s) to seeds + factories
* Add a start discussion/ask question welcome notification
* Add a scope for finding articles published by a user + with a certain tag.
* Some clean up/refactoring in the generator
* Reorganize welcome notification sending, add specs for discuss/ask notification
* 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
* Move channel settings to sidecar
* added spec for chat_channels_memberships_controller.rb (#6539)
* added spec for chat_channels_memberships_controller.rb
* simplified record not found error for membership
* error message formatting updated
* added error key in flash message
Co-authored-by: jitendra <jitendrarajpurohit@skynox.tech>
* Refining "Move sidecar to iframe" branch (#6634)
* added spec for chat_channels_memberships_controller.rb
* simplified record not found error for membership
* error message formatting updated
* added error key in flash message
* 🐞 Bug Fix: Open sidecar of clicking @all
* 🐞 Bug Fix: adding space after selecting the username from suggestion box
* added remove channel member functionality for moderators
* 🔩 Small Tweaks: Hover issue fixed
* 🐞 Bug Fix: Remove sidecar toggle on @all tag (for now)
* updated manually constructed urls with rails path helpers
* mod users cannot remove members of other channel
Co-authored-by: jitendra <jitendrarajpurohit@skynox.tech>
* 🚀 Finalising the connect group/channel feature. (#6829)
* added spec for chat_channels_memberships_controller.rb
* simplified record not found error for membership
* error message formatting updated
* added error key in flash message
* 🐞 Bug Fix: Open sidecar of clicking @all
* 🐞 Bug Fix: adding space after selecting the username from suggestion box
* added remove channel member functionality for moderators
* 🔩 Small Tweaks: Hover issue fixed
* 🐞 Bug Fix: Remove sidecar toggle on @all tag (for now)
* updated manually constructed urls with rails path helpers
* mod users cannot remove members of other channel
* mod members can now invite user who have left the channel
* 🐞 Bug Fix: Ability to open sidecar on mention all properly
* Eslint Changes
* send email notification on inviting user feature added
* 🛠 Email design enhancements for channel invitation
* send invitation to mod user added from internal
* 🛠 Gif changes for Mod
* spec fixed
* inviter name issue fixed
* 🚀 Open sidecar when automatically if you use link from email
Co-authored-by: jitendra <jitendrarajpurohit@skynox.tech>
* review changes
* added spec for channel_invite_email
* Bug🐞: Design problem with sidecar after merge
* Bug🐞: Design problem with invitation alert box
* replaced instance variables with local variable
* Bug🐞: Wrong css classes fixed
* Bug🐞: Edit option bug
* yarn.lock file updated
* code review changes
* updated manually constructed urls with rails path helpers in spec
* user name url issue fix in invite email
* user url corrected
Co-authored-by: Sarthak Sharma <7lovesharma7@gmail.com>
Co-authored-by: benhalpern <bendhalpern@gmail.com>
* Index reactions when they are created and updated, remove when destroyed
* update reading list reactions when related article fields are updated
* create indexable method and use for indexing to elasticsearch
* chore: remove the description
* feat: change the meta og:site_name property from The Practical DEV to The <COMMUNITY_NAME> Community consistently
* refactor: change the canonical link to be more dynamic using the <%= ApplicationConfig["APP_PROTOCOL"] %><%= ApplicationConfig["APP_DOMAIN"] %>
* refactor: update the path to be dynamic
* refactor: change some other meta properties to be dynamic
* refactor: update the index
* refactor: update the sitename to just read <%= ApplicationConfig["COMMUNITY_NAME"] %> Community
* feat: copyright year should be dynamic
* feat: change the meta og:url content to be dynamic by using <%= ApplicationConfig["APP_PROTOCOL"] %><%= ApplicationConfig["APP_DOMAIN"] %> for the former part of the url
* feat: space
* refactor: move the copyright notice to a helper
* refactor: use the community_qualified_name helper!
* refactor: start year is already a string
* refactor: use app url helper instead of <%= ApplicationConfig["APP_PROTOCOL"] %><%= ApplicationConfig["APP_DOMAIN"] %> everywhere
* chore:oops
* refactor: Change <meta name="twitter:image:src" content="http://i.imgur.com/B4JNl1w.png"> to `<meta name="twitter:image:src" content="<%= SiteConfig.main_social_image %>">` consistently.
* refactor: Replace `<meta property="og:image" content="http://i.imgur.com/B4JNl1w.png" />` with ` <meta property="og:image" content="<%= SiteConfig.main_social_image %>" />`
* chore: update some other meta's
* feat: replace 'The Practical DEV' with 'DEV Community' and
* test: remove The :)
* test: copyright_notice
* fix: syntax error
* feat: name of community
* refactor: use app url
* fix: template strings
* fix: tag
* feat: update the app url parameters
* feat: add a community_name helper so we don't have to refer to an environment variable in the templates
* feat: take into account the case when the start year is a blank string
* feat: single quotes to double quotes
* test: add a test for the #community_name
* chore: update or codeclimate
* chore: amend the community helper
* refactor: use the community_name helper in here
* feat: update ApplicationConfig["COMMUNITY_NAME"] with community_name
* fix: Time.current.year needs to be a string :(
* chore: extra space
* chore: change to use community_qualified_name
* Rename find_broadcast to find_auth_broadcast
* Fix broken div rendering on /notifications tab
* Allow customize notification to be enqueued
* Add specs for customize welcome notification
Also clean up existing specs to match!
* Rename customization notification method for clarity
* Remove some redundant assertions in generator spec
* Fix delete button with correct form_with options
* Use correct path for edit button
* Add test for edit and delete response templates
* Use old pattern to accept alert
* Check for text instead b/c weird timing issue with backend
* throttle requests made to search endpoints
* stub elasticsearch requests in rack attack specs and disable for running specs unless tagged
* use original client IP from fastly to throttle requests to search endpoints
* create index for reactions and their reactables, set up serializer
* use respond_to instead of checking type
* remove rubocop change
* add last_indexed_at to reactions index
* Add audit logging for negative reactions
This change saves requests that create negative reactions to the audit
log. We need to be monitoring admin and moderator actions throughout the
app to increase visiblity on how our tools are being used and identify
abuse.
Additionally, this will help east concerns about giving elevated users
more powerful tools.
* Add a basic UI for moderator audit logs
* Log experience level ratings
* Log tag adjustments
* UI tweaks for moderator actions log
* Add logging to internal reactions controller
* Add logging for admin actions on users and articles
* Add searching to the moderator actions table
* Move audit instrumentation out of concern
We are able to use a PORO here instead of using a Rails concern. Moving
this also makes syntax to audit something quite a bit more explicit and
obvious to future developers
* Change moderator logs pagination page length
* Move auditing to after action filters
* Add moderator actions to the internal navbar
* Add request spec for internal moderator actions
* Use request params to populate AuditLog slug
* Add response templates controller, routes, and view
* Add response templates settings page
* Remove dead code
* Use proper variable oops
* Use proper indentation
* Use before action for checking current_user
* Remove index action temporarily
* Use url helpers for redirects
* Use form_with over form_tag and form_for
* Persist previous content if edit fails
* Use exists for performance
* Remove index spec and add CRUD specs
* Memoize @response_template
* Use workaround for sad paths b/c render doesn't work
* Refactor and extract permitted_attributes into var
* Use present over exists to preload into memory
* Use last over first
* Lint for codeclimate
* Use two redirects for happy and sad create path
* Remove proper index route oops
* Codeclimate comma sigh
* Update some test descriptions in notifications_spec
The descriptions of these tests didn't actually match the test's assertions!
* Add welcome_notifications column to users table
Also ensures that welcome_notifications cannot be set to `nil`.
* Show an opt-out message for Welcome broadcast notifications
* Add opt-out link to notifications + welcome notification box to settings
* Allow welcome notification subscription to be updated
* Add tests for unsubscribed to welcome notification users
Also refactor generator specs a bit.
* Fix up paths, copy, tests
Use rails path helpers instead of hardcoding paths. Improve copy in a few locations.
* Add a table for moderator reactions
This is a simplified version of a feature that should be fleshed out
in the near future.
Despite the fact that this project is taking a new direction, I think
this table could be useful in the meantime.
* Add specs for internal mod actions view
* Rename mod actions to negative reactions
* Add Slack::Announcer and SlackClient
* Add Slack::Messengers::Feedback class
* Use Slack::Messengers::Feedback and refactor test
* Should not raise an error if params are nil, let the job fail
* Add Slack::Messengers::Sponsorship
* Rename spec
* Use Slack::Messengers::Sponsorship
* Add Slack::Messengers::PotentialSpammer
* Use Slack::Messengers::PotentialSpammer
* Add Slack::Messengers::RateLimit and use it
* Refactor a bit and improve tests
* Add Slack::Messengers::Note and use it
* Use Slack::Announcer and fix spec
* Fix specs
* Update app/services/slack/announcer.rb
Co-Authored-By: Vaidehi Joshi <vaidehi.sj@gmail.com>
* Implement review suggestions
* Empty commit to trigger Travis
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
* add tons of colors
* add tons of colors
* moving cheese around and prepping for new theming system
* documenting
* .
* moving theme code to own files
* replacing some variables
* whitespaces
* replacing another batch of variables
* get rid of another variable
* replace loading animation variable with one-fits-all-sizes
* get rid of theme-anchor-color
* remove code colors variables
* another batch of variables replaced
* mostly bringing in variables for haxor theme
* remove invert-image variable for chat
* remove another inver-image variable
* forgot to remove reaction-background variable
* remove border variable
* series
* .
* remove another variable
* remove another variable..
* another batch of variables
* and more...
* drop comments
* Update approval file for tweet
Co-authored-by: rhymes <rhymesete@gmail.com>
Co-authored-by: benhalpern <bendhalpern@gmail.com>
* JavaScript MVP
- First round of linting
- Use for testing
* Add some default UI error handling
* Add file validation to updating profile image
* Add type validation and fix size bug
* Refactor and add file validation to article cover
* Add file validation to body images
* Add accept field to profile image form
* Add parseInt to maxFileSizeMb
* Add accept and max-file-size-mb to article images
* Change parseInt to Number
* Add file validations to podcast form
* Add accept image to podcasts
* Add file validation and accept field to org form
* Use appendChild for error message
* Add file validation to comment form
* Add JS Docs comments
* Remove redundant format check
* Add documentation to override default values
* Update documention (spelling, formatting, etc.)
* Update max-file-size-mb to 25
* Bump default max file size for images to 25
* Change appendChild to append
* Refactor remove error message
* Refactor JS, remove console logs, update error msg
* Remove video from permitted file types
* Update error messaging
* Update docs for funciton params...oops 🙈
* Fix file size check logic
- Allow for 0 maxFileSizeMb
- Use JSON.parse() for permittedFileTypes to get an Array
* Add specs
* Change blackbox to black box
* Remove wait_for_javascript
* Remove comments from spec