* Fix showing unpublished article edit link
* Change if clauses to surround only edit link
* Fix: use ArticlePolicy.update? instead of checking article update authority manually
* Refactor: move has_long_markdown from view to helper, and change it from variable to method
* Fix: Article Posted Date and Author Card Posted Date do not match #8789
* Add test case for Article Posted Date and Author Card Posted Date do not match #8789
* Use our custom URL helper module instead of manually constructing URL
* Move long_markdown? from ArticlesHelper to ArticleDecorator
* Change method name from has_long_markdown? to long_markdown?
* Add test suites for long_markdown? method to ArticleDecorator spec
* Use << over +=
* Fix typo
* Remove unnecessary cache
* Add local_date helper to handle dates with respect of user timezone
* Fix date timezone bug for articles/show
* Fix date_helper to meet system specs requirements
* 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>
* Initial user payment pointer work
* Finalize functionality and tests
* Fix schema
* Update app/views/shared/_payment_pointer.html.erb
* Add function to list
* db
* Add an iframe to host mod actions menu
This iframe is probably the fastest way to get a working mod actions
menu without rewriting existing code. We may eventually re-write this,
but based on Ben's recommendation we are going to go with an iframe
because it gets us a working feature quickly and it seems to be serving
us well in other parts of the application.
* Add the mod actions menu button to articles
When the user is "trusted" they will see a small badge on the lower
right-hand side of the screen. Clicking the icon reveals the mod actions
menu.
* Add header to actions panel (#7395)
* Update iframe border
* Add 'Moderate Post' header and button
* Use inline SVG over <img src='svg'>
* Use Crayons variables for units
* Use flexbox to center chevron
* Add accidentally deleted positioning
* Add chevron-right.svg
* Use a partial for actions panel and revert /mod page
* Load actions panel in iframe and not /mod
* Style UpVote, DownVote and Vomit buttons (#7421)
* Add a iframe to host mod actions menu
* Up and Downvote Icons
* Starting with vomit button
* Completed UI; interactions pending
* Incorporated Andy changes; making mod action-panel
* space reactions away from header
* UI tweaks and corrections 1
* Fixing styles to match crayons
* choose pure white color css variable
* Add thumbs-up emoji; address Lisa comments
* Trying to fix reactions interactions
* remove clearThumbReactions function
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Add bottom layout for actions panel (#7501)
* WIP for Lisa
* Finalize mod actions bottom section
* Use showing instead of hidden for transition
* Add new optimized SVGs
* Fix weird height issues for actions panel
* Move hover styles below the cascade, yo
* Use margin-top for sticky footer over height: 100%
* Move initialize actions panel button to Webpack (#7506)
* Move actions panel JS code to webpack
* Refactor and use destructuring
Thanks @nickytonline!
Co-Authored-By: Nick Taylor <nick@iamdeveloper.com>
* Rename file
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Configure Experience Level options for Mod Action Panel (#7507)
* Add a iframe to host mod actions menu
* Click interactions (no toggle of dropdowns yet)
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Fix the iframe's path (#7509)
* Toggle the 'Set Experience Level' menu on button-click (#7529)
* Add a iframe to host mod actions menu
* Add set-exp dropdown functionality
* WIP: making exp level updates async
* Completes async implementation
* Fix controller for "actions_panel" and "/mod"
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Add close button interaction (#7552)
* Rename actions panel pack file
* Add close button toggle to actions panel
* DB update
* Move more code to Webpack and add conditional tag adjustments section (#7652)
* Move JS code to Webpack
* Clean up a few style issues
* Add styling for tag adjustments
* Add active/inactive functionality
* Add conditional rendering for tag adjustments section
* Add missing variable oops (#7673)
* update with upstream
* Add missing subtract svg (#7695)
* Create 'Flag User' modal (#7626)
* Add a iframe to host mod actions menu
* Starting task
* Phase 1
* Fix "Close Modal" icon
* Implement open modal
* Working on all "Close Modal" actions
* Almost-complete implementation
* Remove Abuse Report snackbar
* Delete unneeded JS code
* Remove "How does this work?" links
* Link to Community Moderation page
* Addressing code review corrections
* Update api call to use "request" method
* Make else path clearer in api call
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Mod Actions Panel: Prevent nonsensical reaction pairs (#7699)
* Still implementing
* Completed Implementation
* Address code review feednack; refactor "create" method
* Move scss variables to native-css (for ModPanel code only)
* Correct missing native css
* update to native-css again
* More sccs -> native-css fixes
* Adjust ModPanel Button position on mobile (#7744)
* Adjusted ModPanel position on mobile
* Better adjustment
* Fix phantom schema.rb changes
* Fix phantom schema.rb changes
* Finalize tag adjustments (#7740)
* Finalize tag adjustments and flow
* Fix logic for rendering adjust tags options
* Clean up alert response
* Rename user to trusted user
* Use new CSS variables
* Add/remove tag on article's tag section after adjusting
* Fix logic for admin tag input and some other niceties
* Final bug fixes mod panel (#7772)
* Use correct boolean statement
* Clear the value of the textarea not div
* Use the correct attribute
* Use actions panel for /mod page (#7775)
* Fix loading logic with tag adjust button conditional render
* Link to tag moderation for adjust tags section
* Use top over window.parent
Thanks @nickytonline!
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Use Webpack alias to import
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Use place-items shorthand over align-items + justify-content
Thanks @nickytonline!
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Fix typo for utilities
* Add new line to end of file
* Disable linter for use for top function
* Use align-items and justify-content center
* Update SVGs to spec
* Remove unnecessary height and use spacing units for open button
* Remove accidentally added comment
* Error handling when selecting reactions; optimize "reactions.each" loop
* Add comment about clearing innerHTML
* Revert schema back to master
* Use each since there should only be two reactions
* Fix typo oops
* Add missing height oops
* Return if there are no reactions to be destroyed
* Center path with GUI tool shrug
* chose more appropriate name for JS pack; rewrote api calls using async-await
* Rename variables and methods and check categories before clearing
* Use addSnackbarItem instead of hardcoded version
* Place articleModerationTools pack behind user_signed_in
* Correct omission
* Implement dynamic imports for ModPanel tools
* Implemented async/await; added snackbar message for null response use-case
* Fix the "/article/mod" page; make sure all reactions, vomit-user and exp-level working as expected
* Update language to reflect new UI
* Close the modal after the "Confirm Action" button is clicked
* Change text for Spam/Abuse button
* Fix schema to use with master
* Update schema to master again
* Use crayons button for actions panel button
* UI tweak to play nicer with site themes
* Make actions panel work for dev.to/mod
* Add snackbar for reactions
* Update how does this work links
* Add "thumbsup" reactions to logging
* Add thumbsup to categories
* Add external link icon
* Changes to reflect "Privileged" and not "Negative" reactions; spec changes pending
* Updated instance variable
* Starting to update the specs
* Update "thumbsup" points from 10 to 5
* Still working on both requests
* Embracing an easier implemantation (thanks Andy!)
* Add tests for actions panel
* Add some basic tests for actions panel
* Change to flag to admins
* Indicate that 'Reason for Tag adjust' is required
Co-authored-by: Mac Siri <krairit.siri@gmail.com>
* Rename negative_reactions to privileged
* Update rating level to use correct values
* Use a different display value than backend value
* Don't show adjust tags for trusted users
* Add specs for moderation_routes for admin and super_admin
Co-authored-by: Arit Amana <msarit@gmail.com>
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
Co-authored-by: Arit Amana <32520970+msarit@users.noreply.github.com>
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
Co-authored-by: Mac Siri <krairit.siri@gmail.com>
* Fix Runkit tags not being activated when comment is added
* Runkit tag activation was ran once, on page load. I've changed it to
run on on comment preview and submit.
* It was necessary to add a check to skip already activated Runkit
tags. The code didn't take into account that a tag could be already
processed, and would just crash.
* Fix Runkit tags and add tests
* Add test for previewing article with Runkit tag
* "Fix CodeClimate not finding waitForRunkitAndActivateTags()
* Refactor a test for readability
* Make Rubocop happy
* Improve test for previewing article with Runkit tag
* Use one method for determining active Runkit tags
* Defer loading of JS from embed.runkit.com
* Add utility function dynamicallyLoadScript(url)
* Switch to dynamic loading of Runkit
* parsed content code block is also hidden now to avoid displaying <code /> block before runkit iframe loads.
* Fix Runkit test
* Remove Runkit script caching in v2 form
* Use <%== instead of .html_safe in v2 form
* Update app/assets/javascripts/utilities/dynamicallyLoadScript.js
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* wip
* Right aligned the comment subscription panel.
* Cleaned up the comment area on the article page so it uses crayon margin classes.
* Updated tests
* Removed old UI for comment subscriptions.
* Made Discussion text bigger and bolder.
* Fixed some layout issues as per PR comments.
* Fixed some layout issues as per PR comments.
* Updated Storybook stories, tests and snapshots
* wip
* Everything works now, just need to integrate snackbar.
* Removed setTimeout I was debugging with.
* Using the new utilities/http/request utility now.
* Added the <SnackbarPoller />
* Now when unsubscribed, the subscription type resets to all comments.
* Removed overflow hidden from .home CSS class so comment subscription component displays properly.
* Now unsuccessful subscribes/unsubscribes error properly.
* Changed button text from Done to Subscribe
* Merged the <SnackbarPoller /> component into the <Snackbar /> component.
* Fixed a propType issue.
* Fixed a test.
* Removed snackbar tests for now. Need to figure out polling in tests.
* Now comment subscription component is only loaded for logged on users.
* Added a comment.
* Updated some storybook stories.
* Fixed a small formatting issue.
* Reduced snackbar item lifespans to 3 seconds.
* Extracted <CogIcon /> to it's own file because other features are going to need it.
* Added some Storybook stories and tests for the <CogIcon /> component.
* Revert "Extracted <CogIcon /> to it's own file because other features are going to need it."
This reverts commit b30406a50e491c53c3dce5be03bcdf8112b043df.
* Put back <CogIcon /> component.
* Added some error handling if the component doesn't load.
* Moving some things around.
* Rename the article pack file.
* Changed wording from "article" to "post".
* Fixed false negative CSS issue. It was a dangling div tag.
* Add the option to add an optional close button to snackbar items.
* Fixed z-index of subscription type options panel so it is always visible on mobile.
* Reworked the comment subsciption utilities a bit.
* Added test for comment subscription utilities.
* Fixed a broken test from a refactor.
* Added more tests for comment subscription utiltities.
* Fixed comments footer bottom padding.
* Fixed issue with stale find in comment subscription test.
* Update app/javascript/packs/articlePage.jsx
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
* Update app/assets/stylesheets/article-show.scss
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
* Changed close button wording to Dismiss.
* Fixed padding to use utility variable instead.
* Added missing import for SASS file.
Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
* Added configurable meta keywords
* Replaced hardcoded meta-keywords with the configurable ones
* Added tests for configurable meta_keywords
* Improve info for configuring meta-keywords
* Replace cover image div tag with img tag in articles/show
* Make cover images more semantic with img tag and src
* Keep img styling for now
* Replace divs with inline img in _main_stories_feed.html.erb
* Remove div in favor img tag to make more semantic
* Add extra line at file end in _main_stories_feed.html.erb
* Reword img alt text in articles/show.html.erb
* Remove unnecessary styling for cover images from stylesheets
* Remove background image styling for main feed article
* Remove background image styling for article show page
* Adjust padding for main feed article
* Adjust padding for article show page
* Add 100% width to main feed article
* Adjust styling for article show pages
* Add height to article show CSS
* Adjust article show padding to be 0
* Revert div to img change in _main_stories_feed.html.erb
* Revert styling changes for articles.scss
* Add original styling back to article-show.scss
* Add original styling for article show pages back
* Hopefully avoid conflicts due to caching by keeping code
* Adjust team delightful TODO to be more explicit and readily accessible
* Update app/assets/stylesheets/article-show.scss
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* Add JSON-LD in place of schema.org in _video_player.html.erb
* Remove unnecessary tags around JSON-LD to clean up templates
* Fix indenatation and remove extra elements from show.html.erb and _profile_header.html.erb
* Remove empty line from articles/show.html.erb
* Clean up JSON-LD commas across erb templates
* Revert articleBody changes, adjust nesting, and remove extra quote
* Add application/ld+json to allowed_types in .erb-lint.yml
This addition makes it so that the no verify flag is no longer required
* Add additional data for Articles, Users, and Orgs to better SEO
* Add additional data to JSON-LD structures
*Add sameAs data to articles/show.html.erb
*Add sameAs data to users/show.html.erb
*Make adjustments to VideoObject data in _video_player
*Make adjustments to Org in _profile_header
*Add removed erb back to all erb templates
* Refactor code to fix syntax Google syntax errors
* Add missing double quotes to values
* Remove unnecessary meta tags from _video_player.html.erb
* Add additional key-value pairs to data structures
* General code clean up
* Clean up existing data structures
*Remove useless meta tag and replace with a tag
*Small refactor to users/show.html.erb data
* Extract user json-ld out of users/show.html.erb
*Move json-ld logic to stories_controller
*Use user_json_ld variable in place of entire data structure
*Set user_json_ld as a before_action in the controller
* Add specs around JSON-LD data in templates
*Add request spec for users/show.html.erb
*Add request spec for articles/show.html.erb
*Add request spec for _video_player.html.erb
*Add request spec for _profile_header.html.erb
*WIP: Fix pending specs for all templates
* Remove useless meta tags from users/show and _profile_header.html.erb
* Add additional test coverage to users/show.html.erb
*Add additional tests to user_show_spec
*Ensure that all tests pass
*Small refactor to users/show.html.erb JSON data structure
* Add additional test coverage around JSON-LD data
*Add more robust tests to template specs
*Remove unnecessary comments from specs
*Uncomment pending specs
* Adjust modified date to be more readable in article specs
* Refactor spec to be more readable and update GitHub username test
* Remove meta erb from articles/show.html.erb
* Remove meta data from _video_player.html.erb
* Clean up useless codeand whitespace for final review
* Extract users/show data structure from template into StoriesController
* Remove JSON-LD object from users/show.html.erb
* Place JSON-LD for users/show.html.erb in StoriesController
* Store user_json_ld in set_json_ld method in StoriesController
* Call user_json_ld variable in script tag in users/show
* Clean up trailing commas and refactor articles/show.html.erb
* Remove redundant user/profile_header_spec.rb
* Remove unnecessary code from _profile_header and articles/show
* Remove Organization from articles/show.html.erb
* Remove unnecessary comments from _profile_header.html.erb
* Extract user_json_ld into separate methods to fix Code Climate failures
* Rename user_profile_details and user_same_as methods to be more explicit
* Refactored user_json_ld methods to use symbols instead of strings
* Use symbols to fetch keys from a hash instead of strings
* Changed user_url in data structure
* Removal of erb tags and general clean up
* Revert schema changes
* Remove unnecessary quotation marks
* feat: define the different social media handles
* feat: dynamically render all the social media fields
* feat: ensure that the social media handles are permitter and dealt in a separate path from the rest
* test: update social_networks_handle to social_media_handles
* feat: update the sidebar to use different social media
* feat: update the twitter:site meta handle to be SiteConfig.social_media_handles["twitter"]
* feat: update the a links to tweets
* feat: make the links dynamic and only show those that there is a value for
* refactor: make @ThePracticalDev dynamic
* refactor: make @ThePracticalDev dynamic
* feat: add dynamic social media handles
* chore: rename values
* chore: remove extra social handles
* chore: some spacing
* chore: remove lines
* rafector: user rails-settings-cached type: :hash to set the type and the defaults
* feat: use nil and blank instead of "" and empty
* chore: move the social media handles into the right box
* refactor: rearrange model placement based on the UI
* chore: code climate
* refactor: comments from PR
* chore: rename the ff
* chore: amended twitter username
* chore: add a temporary rake task
* feat: update names
* chore: why am i using the old syntax :(
* chore: revert dynamic erb variable in offline.html
* 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