Commit graph

6675 commits

Author SHA1 Message Date
Arit Amana
1679fbf47d
Allow Moderator Role to Unpublish Single Post (#17795)
* relocate btn; build functionality for admin only

* remove commented code

* add explanatory comment

* refactor

* build unpublish and feature-post policies

* mod role in policies fails specs 😓

* fix failing specs

* add end-to-end tests

* fix hardcoded name in modal  😓
2022-06-03 12:48:20 -04:00
Jeremy Friesen
3fb085b3d9
Adding more context to /admin/abtests (#17821)
* Adding more context to `/admin/abtests`

Prior to this commit, the `/admin/abtests` was fully rendered by the
field_test gem (see
https://github.com/ankane/field_test/blob/master/app/views/field_test/experiments/index.html.erb
and
https://github.com/ankane/field_test/blob/master/app/views/field_test/experiments/show.html.erb).

With this commit, we're pre-pending our own
partial (e.g. `app/views/field_test/experiments/_experiments.html.erb`)
in the view paths; which means instead of rendering
https://github.com/ankane/field_test/blob/master/app/views/field_test/experiments/_experiments.html.erb
we render our newly created
`app/views/field_test/experiments/_experiments.html.erb`)

Why the ugly antics in the view?  As I'm not fully certain if this will
"meet" the full needs of those monitoring the experiments.  I'm also
constructing this to most closely match the spreadsheet that has been
assembled for tracking this information.

Why introduce another caching layer for the variant assembly?  The
original caching
layer (e.g. `Articles::Feeds::VariantAssembler.pre_assembled_variants`)
is in place to provide the quickest access to the assembled variants.
But due to the nature of the implemented view, we are needing a
programmatic representation of all variants.  And the added Rails cache
is there to minimize disk reads.

Closes forem/forem#17820

* Update app/models/articles/feeds/variant_assembler.rb

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>

* Update app/models/articles/feeds/variant_assembler.rb

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>
2022-06-03 11:27:09 -04:00
Jeremy Friesen
8fb98b9f30
Exposing past feed experiments in /admin/abtests (#17818)
Prior to this commit, as a matter of undocumented practice, we would
overwrite past experiments with upcoming experiments.

With this commit, we're leveraging a feature of the field_test gem:
declaring a winner.  Instead of overwriting an experiment with the next
experiment, we're going to declare the expiring experiment's winner then
prepend to the ./config/field_test.yml the new experiment.

The [field_test/app/views/field_test/experiments/index.html.erb][1] then
uses logic to first render "active" experiments and "completed"
experiments.  A "completed" experiment is one in which we've declared a
winner.

Closes forem/forem#17816

[1]:https://github.com/ankane/field_test/blob/master/app/views/field_test/experiments/index.html.erb
2022-06-02 20:41:31 -04:00
Andy Zhao
103394d5ad
Add tooltip to cover image button describing optimal image ratio (#17779)
* Add tooltip for cover image button

* Add cover img tooltip to v1 editor

* Use a slightly different message

* Fix tests

* Use proper comment syntax for front matter

* Fix Cypress test

* Use regex to find matching label
2022-06-02 17:44:34 -04:00
Josh Puetz
d2e1bde2ee
Change API key limit from 20 to 10 (#17811) 2022-06-02 15:35:21 -05:00
ludwiczakpawel
9ac2587b39
Banner template (#17808)
* banner template

* remove whitespace
2022-06-02 13:14:21 -04:00
Suzanne Aitchison
c119b64b74
Reusable user admin modals (#17763)
* target modal content by a classname to avoid duplicate IDs

* woops - fix missed selector

* use showWindowModal in editUser

* move add org to a partial

* move add role into a partial

* move adjust credits to a partial

* move profile modals to be re-used

* generalise approach to add organisation modal

* generalise add role modal form

* generalise adjust credits modal

* rework unpublish modal

* refactor banish user modal

* refactors

* prevent issues with duplicate ids

* fix banish form action

* make sure role management specs covered in cypress

* let hidden modal content use IDs

* rename file for clarity

* add some JSDoc notes

* cleanup some redundant changes

* one more

* woops - fixed id that contained a classname
2022-06-02 09:52:26 -06:00
Julianna Tetreault
b155398f17
"Empty State" for Result-less Search and Filter (#17777)
* Adds an empty state when user search & filter returns nothing

* Addresses e2e failures for small screens
2022-06-01 06:54:39 -06:00
Julianna Tetreault
b155749db0
Searchable GDPR Delete Requests Table (#17633)
* Adds search functionality to GDPR delete requests table

* Adds e2e tests for searching GDPR delete requests

* WIP: Address PR review feedback and add a RSpec test

* Updates spec name to include _query

* Updates Adnub::GDPRDeleteRequests#index

* Adjusts expectations within gdpr_delete_requests_query_spec.rb

* Adjusts GDPR Delete Requests Query search default

* Updates gdpr_delete_requests_query_spec.rb
2022-05-31 16:22:25 -06:00
Ikko Ashimine
127fe37e19
Fix typo in runtime.js (#17783)
succesful -> successful
2022-05-31 14:30:04 -04:00
João Gabriel Quaresma
2912365109
chore: € character at article model TITLE_CHARACTERS_ALLOWED (#17790) 2022-05-31 12:26:30 -04:00
Suzanne Aitchison
02cdaed8e6
layout tweaks for mobile (#17771) 2022-05-31 10:55:19 +02:00
Dwight Scott
8b70e9e1f3
added ability to assign moderator role via admin/super admin (#17759)
* added ability to assign moderator role via admin/super admin

* create Mod User in seeds

* add Cypress specs

* fix failing Cypress tests

* fix failing specs by moving test Mod user to the end

* nudge Travis

* nudge Travis

Co-authored-by: Arit Amana <msarit@gmail.com>
2022-05-26 10:57:08 -04:00
Viviane Dias
94c431afb0
[single-article] Refactor class components to be functional component (#17681)
* refactor(single-article): migrates class to use pure components

* test(single-article): removes repeated test from file
2022-05-26 12:59:06 +01:00
Viviane Dias
0960b36d92
[categories] Refactor class components to be functional component (#17682)
* feat(categories): migrate Categories to pure component

* test(categories): adds tests to Categories comp
2022-05-26 12:53:25 +01:00
Jeferson S. Brito
6f8c07aa69
Fix Stackoverflow liquid embedded styles (#17541)
* Fix Stackoverflow liquid embedded styles

* Fix extend cryaons styles

* Remove unnecessary alt descriptions

* Extend header selector to apply styles to old tags

* Add pointer-events to nested anchor on legacy html

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

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
2022-05-26 11:59:32 +01:00
Suzanne Aitchison
f545b4b73f
localize display of US and non-US date format (#17758) 2022-05-25 17:08:00 +01:00
Arit Amana
2fed62454d
Reposition 'Feature Post' button on Mod Panel (#17735)
* physically move btn

* fix styling

* actually fix styling 😅

* remove old button

* add cypress seed and specs

* fix E2E seeds to fix Travis failures

* refactor specs
2022-05-24 16:49:22 -04:00
Suzanne Aitchison
c93794f987
Initial BETA storybook version of DateRangePicker (#17742)
* WIP initial component/story

* examples of customisation

* populate the month year pickers

* change the calendar view when the month or year is chosen

* fix which dates should be disabled

* style left right nav buttons

* add calendar icon, fix some date range styles

* extract some color variables

* some minor changes to styles and comments

* add phrases, allow all dates to be toggled in story

* consolidate styles

* conditional navigation given max and min dates

* labels on selects, tweaks to story

* undo unrelated changes from merge

* undo unrelated changes from merge

* undo unrelated changes from merge

* undo unrelated changes from merge

* retry adding dependencies, not feeling hopeful XD

* is this a preact issue?

* Revert "is this a preact issue?"

This reverts commit 5f3f720f8e739cc3dcca7fd54f8d97e08d8bb88c.

* without css import

* import styles via sass file, not component

* Apply suggestions from code review

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>
2022-05-24 17:43:58 +01:00
Dwight Scott
c6f852624f
create helper for roles and add FF for moderator role (#17737)
* create helper for roles and add FF for moderator role

* address PR feedback
2022-05-24 10:46:30 -04:00
Suzanne Aitchison
e62684342f
Member index view - collapse other filter sections when one is clicked (#17740)
* collapse any filter sections when a new one is clicked

* add a cypress test
2022-05-24 14:51:18 +01:00
Suzanne Aitchison
3eafafd2e7
switch icon (#17757) 2022-05-24 14:38:12 +01:00
Viviane Dias
655bfb59c4
refactor(article-cover-image): migrates class comp to pure comp (#17697) 2022-05-24 06:50:36 -06:00
Viviane Dias
34a78440cf
refactor(single-listing): migrates class comp to pure comp (#17698) 2022-05-23 16:52:52 +01:00
Viviane Dias
b2e6ca67a2
refactor(save-btn): migrates class comp to pure comp (#17699) 2022-05-23 16:15:27 +01:00
Viviane Dias
ab26216de9
[github-repos] Refactor class components to be functional component (#17700)
* refactor(github-repos): migrates class comp to pure comp

* refactor(github-repos): shifts functions to keep same pattern
2022-05-23 16:12:13 +01:00
Suzanne Aitchison
5f12358040
add UI for member index v2 actions (#17739) 2022-05-23 14:55:28 +01:00
Dwight Scott
dbeb4a5aca
make feed image consistent with cover image (#17512)
* make feed image consistent with cover image

* small tweaks for the logged out view of the feed cover image`

* update feed cover image for logged in users

* update to reflect new cover image

* reverting to see if the build, builds?

* snapshot tests

* update spec to look for the right class

* too long by ONE character 121/120 🙄

* Update app/javascript/articles/components/ArticleCoverImage.jsx

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

* Update app/views/articles/_single_story.html.erb

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

* Update app/views/articles/_single_story.html.erb

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

* no need for the anchor tag to have a bg color

* update snapshot test expectations

* remove unnecessary span with hidden class

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
2022-05-19 13:40:00 -04:00
Dwight Scott
58763c0b9d
apply same scale-down property to preview cover image (#17502) 2022-05-19 13:39:40 -04:00
Dwight Scott
0b0aa97562
change the object-fit to scale down to retain ratio on cover images (#17347) 2022-05-19 13:39:28 -04:00
Md Sahil
8ef63d73f3
Update ListingsController, resolves issue #17683 (#17685)
* Updating listings_controller.rb and fixing issue :->  17683

* Update listings_controller.rb

* adding tests for publishing and unpublishing lists

* Apply suggestions from code review

Co-authored-by: Jeremy Friesen <jeremy.n.friesen@gmail.com>
2022-05-18 16:29:14 -04:00
dependabot[bot]
17955537e7
Bump ddtrace from 0.54.2 to 1.0.0 (#17662)
* Bump ddtrace from 0.54.2 to 1.0.0

Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.54.2 to 1.0.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.54.2...v1.0.0)

---
updated-dependencies:
- dependency-name: ddtrace
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Apply configurationa update

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mac Siri <krairit.siri@gmail.com>
2022-05-18 15:46:49 -04:00
yheuhtozr
aa7e5d45fc
i18n keys update for new profile decorator (#17684) 2022-05-18 10:51:06 -04:00
Takuya N
c3c33aa9cd
Show friendly error message on API fetch failure on stats (#17570)
Signed-off-by: Takuya Noguchi <takninnovationresearch@gmail.com>
2022-05-18 16:12:42 +02:00
Suzanne Aitchison
c37bbd77e5
Member index phase 2 - mock filters modal (#17578)
* mock filters popover

* fix for safari

* add missing label
2022-05-17 15:25:21 +01:00
Jeremy Friesen
0c6b6b9e62
Ensuring that embed fallback renders URL (#17680)
Prior to this commit, our fallback HREF was using only the URL's
domain (e.g. `guides.rubyonrails.org/routing.html`) instead of the
provided URL (e.g. `https://guides.rubyonrails.org/routing.html`).  This
resulted in the link resolving to
`<url-of-article>/guides.rubyonrails.org/routing.html`)

With this commit, we're using the given URL for the HREF.

An interesting side note, the Ruby on Rails guides includes an
`og:title` but not an `og:url` so we hit the fallback condition.  Could
we use the given URL if `og:url` does not exist?

Fixes forem/forem#17679
2022-05-17 07:43:17 -04:00
Jeremy Friesen
127e3ac248
Adding page view goal for experiments (#17696)
With comments, publishing articles, and reactions we had symmetry on two
goals:

- Create a _subject_ (e.g. Comment, Published Article, Reaction)
- Create four _subjects_ within a week.

For page views we only had "Create four _subjects_ within a week."  This
PR addes the "Create a _subject_".

To do this required adjusting some tests as they were too specific in
nature (looking at an expected count).

In addition, in consultation with Jennie, I've updated the experiment
order to better reflect some hierarchical importance.

**Rollback considerations:**

This also includes a feature flag that we can explicitly disable if we
overload the application with workers handling reaction goals.  Using
`FeatureFlag.accessible?(:field_test_event_single_create_pageview)`
returns `true` unless we explicitly disable this flag.

Related to forem/forem#17673
Related to forem/forem#17669
Closes forem/forem#17691
2022-05-16 15:07:42 -04:00
Jeremy Friesen
8a4e1ebeba
Adding more goals to feed experiments (#17673)
This commit adds three new feed experiment goals:

* user publishes four posts within a week
* user reacts with a "heart", "unicorn", or "reading list" to an article
* user reacts with a "heart", "unicorn", or "reading list" to an article
  four times in a week

In addition it adds it to the existing experiment.  Adding it to the
existing experiment is acceptable because:

1. We can ignore the results
2. The experiments are structured such that these new goals could be met
   with prior data.
3. Both variants are playing by the same rules, so the results relative
   to each other are valid.

**There is a nuanced assumption in how we handle reactions:**

This implementation does not count by unique article reactions. However,
most folks will ❤️ , 🦄 , and 🔖 in one swoop; thus
those 3 reactions are all grouped into happening on one day.

Further, it's a reflection of the person taking an action after reading
a post, not how much action on that particular post.

**Rollback considerations:**

This also includes a feature flag that we can explicitly disable if we
overload the application with workers handling reaction goals.  Using
`FeatureFlag.accessible?(:field_test_event_for_reactions)` returns
`true` unless we explicitly disable this flag.

Closes forem/forem#17669
2022-05-13 13:22:06 -04:00
Arit Amana
e2c06429fd
complete implementation; specs pending (#17630) 2022-05-12 13:52:48 -04:00
Mac Siri
8d39d22d9e
Revert "Bump ddtrace from 0.54.2 to 1.0.0 (#17560)" (#17643)
This reverts commit eeed96cf9c.
2022-05-12 09:28:50 -04:00
Arit Amana
a75ef4e1b2
Fix styling on Follow Button in User Info Panel (post view) (#17642)
* fix

* nudge Travis
2022-05-12 08:03:41 -04:00
Jeremy Friesen
ca7228084a
Ensuring we don't render call to action when unauthorized (#17640)
Prior to this commit, if the Forem limitted article creation only to
admins, when a new user would sign-up their call to action was to
"Create a Post".  If that new user clicked on the button, they would get
an action unauthorized error.

With this commit, the call to action for Creating a Post is hidden to
that user.

The `users/onboardings/_task_card.html.erb` is rendered as part of the
home page.  The home page, due to our [EdgeCacheSafetyCheck][1], does not
allow us to access attributes of the current user (e.g. are they an
admin); which means we can't add a `if policy(Article).create` to the
HTML erb.  We must instead use the [`application_policy_content_tag`][2]
as well as the [AsyncInfo][3] to help inform the
[applyApplicationPolicyToggles.js pack][4] of the conditional rendering.

Closes forem/forem#17638
Related to forem/forem-internal-eng#347

[1]:8160089f3d/app/controllers/concerns/edge_cache_safety_check.rb
[2]:8160089f3d/app/helpers/application_helper.rb (L390)
[3]:8160089f3d/app/models/async_info.rb (L52-L61)
[4]:8160089f3d/app/javascript/packs/applyApplicationPolicyToggles.js
2022-05-11 15:26:24 -04:00
Fernando Valverde
8160089f3d
Remove Community Wellness badge feature flag (#17623)
* Remove feature flag

* Remove tracking spec

* Add rollout date restriction logic + specs
2022-05-11 12:08:40 -06:00
yheuhtozr
ee42894990
restore i18n lib.constants.settings.campaign.url (#17637) 2022-05-11 16:02:52 +01:00
Jeremy Friesen
bcfbd523d4
Moving from user.trusted tests to policy tests (#17619)
The [`ArticlePolicy#moderate?`][1] method answers the questions around article
moderation.

At present this change does not introduce any significant changes (aside
from the JS logic loop).  The next "step" is to adjust the
`ArticlePolicy#moderate?` method to test if the user has a moderator
role.

Further, we'd need to see what is available on the action panel.

Related to forem/forem#17606

[1]:5ac3216a5a/app/policies/article_policy.rb (L160-L174)
2022-05-11 08:18:13 -04:00
Jeremy Friesen
f4d4889a07
Replacing a potentially expensive query (#17605)
Prior to this commit, if we didn't have an instance of `Article` we
likely had the class `Article`; we would then run a potentially VERY
expensive query (`SELECT user_id FROM articles;`) to provide an
answer; namely if all of the articles are written by the same user then
yes this user is the author.

With this commit, when you're authorizing the `Article` class, let's
just say "Nope, this user isn't the author".

Closes forem/forem#17604
2022-05-11 08:17:51 -04:00
yheuhtozr
d6c15a3fc6
I18nize Constants::Settings (#17086)
* app/lib i18n (no callers)

* tidy key names

* callers deconstantified

* delete ja.yml

* update locale keys and calls

* remove ja.yml

* Revert "remove ja.yml"

This reverts commit 6a6881e274b58424ece0411c887c862124a2ca87.

* fix conflicts

* remove ja.yml

* Update general.rb
2022-05-11 09:58:37 +01:00
Arit Amana
41acd673d0
Make Follow Buttons in User, Org and Tag Embeds "secondary" (#17602)
* complete implementation

* Make PR review changes
2022-05-10 16:37:39 -04:00
Jeremy Friesen
d499a3727c
Ensuring only privileged users may give certain reactions (#17632)
There are 2 things going on in this pull request:

1. Reducing duplication of knowledge, by favoring constants found in
   Reaction.
2. Creating and enforcing the policies regarding the different
   categories of reactions.

I chose to conflate these two as I was working on developing the
ReactionPolicy's finder method.

Closes forem/forem-internal-eng#454
Related to forem/forem#17628
2022-05-10 16:13:23 -04:00
Takuya N
e3a30eeb31
Replace forem/forem instead of thepracticaldev/dev.to (#17625)
Signed-off-by: Takuya Noguchi <takninnovationresearch@gmail.com>
2022-05-10 06:56:58 -06:00