Commit Graph

16282 Commits

Author SHA1 Message Date
Javi Martín
4f30720593 Fix flagging/unflagging in the admin section
We weren't adding the HTML id our JavaScript expects, and so the page
didn't update the flag element.
2020-07-07 23:39:21 +02:00
Javi Martín
31b65679c3 Extract partial to render flag actions
The main obstacle to extract this partial was probably the paths for the
flag and unflag actions.

Now that we use Rails 5.1 `resolve` method to handle nested resources,
we can use `polymorphic_path`.

Also note the code is a bit ugly because comments render a divider. We
should probably use a CSS border instead.

Co-Authored-By: taitus <sebastia.roig@gmail.com>
2020-07-07 23:39:21 +02:00
Javi Martín
bd7beed8a1 Remove no longer necessary flag/unflag HTML IDs
They were added in commit 015fe704 because we used them in the specs,
but we don't use them anymore and they make the code hard to read.
2020-07-07 23:39:21 +02:00
Javi Martín
014ccd8374 Use shared specs to flag comments 2020-07-07 23:39:21 +02:00
Javi Martín
3c27df592e Remove test for flagging poll comments
This feature hasn't been implemented and there are no plans to implement
it in the near future.
2020-07-07 23:39:21 +02:00
volcov
09fd3ab44a Fix legislation proposals flag actions
We were treating legislation proposals as if they were proposals,
omitting the "legislation" namespace, and so we were flagging/unflagging
proposals when we wanted to flag/unflag a legislation proposal.
2020-07-07 23:39:21 +02:00
Javi Martín
0d7c2c7a7c Simplify rendering flag actions
The `respond_with` method is no longer part of Rails (it's now part of
the responders gem) and we barely use it. Using a template forced us to
use different criteria for different controllers.

This change will also make it easier to fix the flag/unflag actions for
legislation proposals. With the old code, we would have to add another
condition for the legislation/proposals controller.
2020-07-07 23:39:19 +02:00
Javi Martín
91da038b27 Extract shared tests to flag/unflag a record 2020-07-07 22:56:17 +02:00
Javi Martín
9937e94fcd Fix flagging debates and comments with AJAX
We weren't using `foundation()` in these cases, so after flagging a
debate or a comment, we had to reload the page before we could unflag
it.

We're also adding a test for the fix in commit ea85059d. This test shows
it's necessary to filter the elements with JavaSctipt using `first()` if
we want the same code to work with comments.

Co-Authored-By: taitus <sebastia.roig@gmail.com>
2020-07-07 22:56:17 +02:00
Javier Martín
328ec5e25f Merge pull request #4001 from rockandror/check-session-locale
Discard session[:locale] when is not valid
2020-06-25 22:00:37 +02:00
taitus
3b5a96bdfd Refactor set_locale
Add new current_locale method to simplify logic
2020-06-25 19:53:48 +02:00
taitus
ee5ac25cb1 Improve set_locale
We discard session[:locale] as valid locale when it is no longer include in
the :available_locales
2020-06-25 19:45:56 +02:00
Javi Martín
002e9239d0 Simplify code involving Globalize.locale
We don't need to set this value. In commit f2ef27d3 I made a mistake
thinking `Globalize.locale` and `I18n.locale` should always be in sync,
but they're actually automatically in sync when `Globalize.locale` is
`nil`.

So the best way to avoid any issues is not to assign `Globalize.locale`,
and use `Globalize.with_locale` where necessary instead.
2020-06-25 19:37:57 +02:00
Javier Martín
11a1fa1b1d Merge pull request #4042 from consul/dependabot/bundler/rack-2.2.3
[Security] Bump rack from 2.2.2 to 2.2.3
2020-06-23 19:06:33 +02:00
Javier Martín
e7d557a95c Merge pull request #4004 from consul/shared-banner
Move conditional into shared banner partial
2020-06-18 23:39:32 +02:00
Javier Martín
3261a0c02f Merge pull request #4046 from consul/poll-documents
Remove unused document section on polls
2020-06-18 12:33:12 +02:00
decabeza
0896701b57 Remove unused document section on polls
This section is not used because it's only possible to add documents to the poll's answers not to the poll itself.
2020-06-18 09:30:25 +02:00
Javier Martín
769db34b76 Merge pull request #4040 from consul/rename_admin_proposal_notifications_controller
Rename admin proposal notifications controller
2020-06-16 19:56:21 +02:00
Javi Martín
438a751599 Rename admin proposal notifications controller
To be consistent with all the other controllers dealing with hidden
content, we use the word "hidden" in the controller class.
2020-06-16 19:40:04 +02:00
Javier Martín
539db4398a Merge pull request #4038 from consul/fix_admin_search
Fix deleting searched managers/moderators/admins
2020-06-16 19:39:14 +02:00
Javi Martín
99256adf13 Simplify manager/moderator/admin/official tables
Originally, the code was shared between the index action and the search
action, but since commit fb6dbdf2 that's no longer the case. So in the
index action we don't need to check whether a user is a
moderator/manager/admin/official or not; they all are.
2020-06-16 19:26:05 +02:00
Javi Martín
5d10afdf26 Fix deleting searched managers/moderators/admins
We were deleting managers, moderators and administrators based on their
user ID, instead of their manager/moderator/administrator ID.
2020-06-16 19:09:27 +02:00
Javier Martín
21572e704d Merge pull request #4033 from consul/dependabot/bundler/websocket-extensions-0.1.5
[Security] Bump websocket-extensions from 0.1.4 to 0.1.5
2020-06-16 17:49:09 +02:00
dependabot-preview[bot]
976f031984 [Security] Bump rack from 2.2.2 to 2.2.3
Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3. **This update includes a security fix.**
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 12:16:08 +00:00
Javier Martín
99dc861d45 Merge pull request #4036 from consul/space_around_method_call_operator
Apply Layout/SpaceAroundMethodCallOperator rule
2020-06-16 14:13:52 +02:00
Javi Martín
4bb906f0be Apply Layout/SpaceAroundMethodCallOperator rule
This rule was added in rubocop 0.82.
2020-06-16 13:47:38 +02:00
Javi Martín
5315f34c72 Remove Performance/Detect rubocop rule
After upgrading the rubocop-performance gem, we're asked to change this
code:

milestones.select { |milestone| milestone.image.present? }.last

To:

milestones.reverse.find { |milestone| milestone.image.present? }

IMHO the original code is easier to read, so the performance gain isn't
worth it.
2020-06-16 13:47:38 +02:00
Javi Martín
199d8ff609 Bump rubocop from 0.75.0 to 0.83.0
Recent versions introduce the `Layout/SpaceAroundMethodCallOperator`,
which we are going to use. We aren't upgrading to the latest rubocop
version because it conflicts with the version of Capybara we're using
and because it isn't supported by Hound.

Some rules have been renamed:

Layout/IndentAssignment is now Layout/AssignmentIndentation
Layout/IndentHeredoc is now Layout/HeredocIndentation
Layout/LeadingBlankLines is now Layout/LeadingEmptyLines
Layout/Tab is now Layout/IndentationStyle
Layout/TrailingBlankLines is now Layout/TrailingEmptyLines
Lint/StringConversionInInterpolation is now Lint/RedundantStringCoercion
Metrics/LineLength is now Layout/LineLength

Note after upgrading we get a new "offense" in the `StartWith` rule, so
we're changing the code in order to fix it.
2020-06-16 13:47:38 +02:00
Javier Martín
129fbb52e5 Merge pull request #4007 from consul/development_cache
Use a memory cache store in development
2020-06-15 19:21:23 +02:00
Javier Martín
3872e3792d Merge pull request #3952 from consul/resolve
Use "resolve" for polymorphic hierarchy paths
2020-06-15 17:31:55 +02:00
Javi Martín
65604a92c2 Add non-prefixed polymorphic admin routes
These routes are solved in a different way because of an inconsistency:
we define `groups` and `budget_investments`; we should either use the
`budget_` prefix in all places or remove it everywhere.

We can now share code using `polymorphic_path` even with these models.
2020-06-15 11:54:05 +02:00
Javi Martín
7563b7f4d1 Simplify polymorphic routes in shared specs
Now we get rid of the "hierarchy" methods and use standard Rails methods
except in the routes definitions themselves.
2020-06-15 11:54:05 +02:00
Javi Martín
ff93f5a591 Use "resolve" for polymorphic hierarchy paths
In the past, we couldn't use `polymorphic_path` in many places. For
instance, `polymorphic_path(budget, investment)` would return
`budget_budget_investment_path`, while in our routes we had defined
`budget_investment_path`.

With the `resolve` method, introduced in Rails 5.1, we can use symbols
to define we want it to use `investment` instead of `budget_investment`.
It also works with nested resources, so now we can write
`polymorphic_path(investment)`.

This makes the code for `resource_hierarchy_for` almost impossible to
understand. I reached this result after having a look at the internals
of the `resolve` method in order to get its results and then remove the
symbols we include.

Note using this method will not make admin routes compatible with
`polymorphic_path`. Quoting from the Rails documentation:

> This custom behavior only applies to simple polymorphic URLs where a
> single model instance is passed and not more complicated forms, e.g:
> [example showing admin routes won't work]

Also note that now the `admin_polymorphic_path` method will not work for
every model due to inconsistencies in our admin routes. For instance, we
define `groups` and `budget_investments`; we should either use the
`budget_` prefix in all places or remove it everywhere. Right now the
code only works for items with the prefix; it isn't a big deal because
we never call it with an item without the prefix.

Finally, for unknown reasons some routing tests fail if we use
`polymorphic_path`, so we need to redefine that method in those tests
and force the `only_path: true` option.
2020-06-15 11:54:05 +02:00
Javi Martín
334b57501b Simplify uses of polymorphic admin nested routes 2020-06-11 18:39:57 +02:00
Javier Martín
59f70641cb Merge pull request #4026 from consul/fill_in_ckeditor
Fix chromedriver hanging with CKEditor
2020-06-09 14:47:06 +02:00
Javi Martín
72c2b87227 Wait till CKEditor is ready before checking it
With chromedriver >= 80, the tests are freezing sometimes, particularly
when the same editor is loaded again.

We don't know whether it's a CKEditor issue or a chromedriver issue. In
the past we've had some errors related to CKEditor trying to load the
same instance twice and we aren't sure they have been fixed since we
could never reproduce them.

It could be a coincidence, though. If we modify the views so the only
content of the `<body>` tag is a textarea with the `html-area` class,
chromedriver freezes even if we only access the page once. So maybe
we're only detecting the problem on the second visit because the second
request is faster than the first one.

Since chromedriver no longer hangs after this change, we don't have to
force any chromedriver version anymore.
2020-06-09 13:29:56 +02:00
Javi Martín
8408bfdcf0 Don't use ckeditor.setData in specs
After upgrading to chromedriver 80, tests checking CKEditor's content
were causing chromedriver to hang. That's why we were configuring
webdrivers to use an older chromedriver.

Version 80 of chromedriver introduced several issues regarding frames.
Debugging shows in this case chromedriver froze when we used `setData`
and then `within_frame`. Since adding a `sleep` call made it work, we
think `within_frame` was being executed before `setData` had finished.
The fact that `setData` causes the browser to enter the frame having
CKEditor is probably the reason.

Even though the `setData` method provides a callback when it's finished,
configuring it so the rest of the Ruby code isn't executed until that
happens leads to complex code. Using Capybara's `set` to fill in the
editor is IMHO a bit easier to understand.

After this change, since we're using a method provided by Capybara
instead of executing asynchronous JavaScript code, we don't have to
check CKEditor has been filled anymore. The "Admin Active polls add"
test, which failed on my machine without that check, now passes.
2020-06-09 13:29:56 +02:00
Javi Martín
4d65507cbb Check for exact text in have_ckeditor
If we don't use the `exact` option, tests will pass even if filling in
CKEditor adds the content twice or adds the new content to the existing
content, which has actually happened and has gone mostly unnoticed while
testing several ways to fill in CKEditor with Capybara (particularly,
when using Capybara's `send_keys` method). The problem was detected by
just one test, which checked the original content wasn't present anymore
after updating a record.
2020-06-09 13:29:56 +02:00
dependabot-preview[bot]
b734732cfd [Security] Bump geocoder from 1.4.5 to 1.6.3
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.4.5 to 1.6.3. **This update includes a security fix.**
- [Release notes](https://github.com/alexreisner/geocoder/releases)
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.4.5...v1.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 15:11:06 +00:00
Julian Herrero
fb0917026c Add processes feature info section in help page 2020-06-08 11:39:27 +07:00
dependabot-preview[bot]
4b5f518482 [Security] Bump websocket-extensions from 0.1.4 to 0.1.5
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-ruby) from 0.1.4 to 0.1.5. **This update includes a security fix.**
- [Release notes](https://github.com/faye/websocket-extensions-ruby/releases)
- [Changelog](https://github.com/faye/websocket-extensions-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-ruby/compare/0.1.4...0.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-05 14:36:56 +00:00
Javier Martín
4aee1d28cf Merge pull request #4027 from consul/dependabot/bundler/kaminari-1.2.1
[Security] Bump kaminari from 1.1.1 to 1.2.1
2020-05-29 18:24:49 +02:00
dependabot-preview[bot]
eab36f476e [Security] Bump kaminari from 1.1.1 to 1.2.1
Bumps [kaminari](https://github.com/kaminari/kaminari) from 1.1.1 to 1.2.1. **This update includes a security fix.**
- [Release notes](https://github.com/kaminari/kaminari/releases)
- [Changelog](https://github.com/kaminari/kaminari/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kaminari/kaminari/compare/v1.1.1...v1.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-28 21:14:42 +00:00
Javier Martín
83b930f357 Merge pull request #4014 from consul/dependabot/bundler/puma-4.3.5
[Security] Bump puma from 4.3.3 to 4.3.5
2020-05-26 18:57:35 +02:00
dependabot-preview[bot]
8e36fab5ad [Security] Bump puma from 4.3.3 to 4.3.5
Bumps [puma](https://github.com/puma/puma) from 4.3.3 to 4.3.5. **This update includes security fixes.**
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 16:39:43 +00:00
Javier Martín
f929108870 Merge pull request #4023 from consul/homepage_confirm_dialog
Don't use confirm dialog in admin homepage form
2020-05-26 18:14:58 +02:00
Javier Martín
a3ed4e380e Merge pull request #4003 from rockandror/fix-comments-reply-alternate
Update comment responses count when adding replies
2020-05-26 14:14:22 +02:00
Senén Rodero Rodríguez
31c0b4360d Improve the way to toggle comment responses
Co-Authored-By: Javi Martín <javim@elretirao.net>
2020-05-26 13:20:26 +02:00
Senén Rodero Rodríguez
dcff7e8a33 Show parent comment responses when a new reply is added
When a user replies to a comment whose responses was hidden at the
moment of reply form submission and although the reply were correctly
added to the DOM it was hidden because was added to a collapsed list.

This solution is about showing all responses of parent comment after adding
the new comment to the DOM so the user can see new reply into the screen.
(This is not applicable to root comments which cannot be collapsed)
2020-05-26 13:20:26 +02:00
Senén Rodero Rodríguez
014fa6eb1c Add mutations observer to initialize user initials added through ajax 2020-05-26 13:20:26 +02:00