Commit Graph

15545 Commits

Author SHA1 Message Date
Javier Martín
2094c25eba Merge pull request #3865 from consul/dependabot/bundler/acts-as-taggable-on-6.5.0
Bump acts-as-taggable-on from 6.0.0 to 6.5.0
2020-08-14 12:56:25 +02:00
dependabot-preview[bot]
c23ece99e1 Bump cocoon from 1.2.11 to 1.2.14
Bumps [cocoon](https://github.com/nathanvda/cocoon) from 1.2.11 to 1.2.14.
- [Release notes](https://github.com/nathanvda/cocoon/releases)
- [Changelog](https://github.com/nathanvda/cocoon/blob/master/History.md)
- [Commits](https://github.com/nathanvda/cocoon/compare/v1.2.11...v1.2.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-14 10:41:23 +00:00
Javier Martín
13e70ed492 Merge pull request #4077 from consul/fix_orbit
Fix poll answer images not being displayed
2020-08-13 18:27:57 +02:00
Javi Martín
e319b93dc6 Don't disable button to download emails
Rails automatically disables buttons when submitting a form. This works
fine most of the time: for AJAX requests, it enables them again after
the request is complete, and for non-AJAX requests, the button is
replaced by a new element when the new page loads.

However, there's an exception. When a request returns data so users can
download a fire, the request is not an AJAX one and the button is not
replaced. So users are left with a disabled button they can no longer
click.

So in this case, we aren't disabling the button after a user clicks it.
2020-08-13 18:11:02 +02:00
Javi Martín
38ebfed6ea Remove redundant code to prevent double submission
As mentioned in commit 7f30d0c6, Rails already does it automatically.
2020-08-13 18:11:02 +02:00
Javier Martín
373661025c Merge pull request #4080 from consul/banner_margin
Fix banner overlapping with other content
2020-08-12 18:25:41 +02:00
Javi Martín
e5f71d33d0 Fix poll answer images not being displayed
After updating foundation-rails in commit 58071fd6, the orbit slider
stopped working properly. That's because the `.orbit-slide` elements now
use a `position: absolute` rule, and so our rule for `.orbit-container`
elements making their height 100% (which we added in order to be able to
add images with different heights) makes them have a height of 0px,
since now the `.orbit-slide` elements are not part of the document flow
anymore.

Making the `.orbit-slide` elements have relative position fixes this
issue, but introduces a different one, producing a really bad-looking
animation when changing a slide.

So we're disabling the animation as well in order to avoid this jump.

This change also fixes another issue introduced in commit 58071fd6 which
caused slide controls to stop working when changing slides back and
forth.
2020-08-12 17:18:49 +02:00
Javi Martín
0b83be6837 Apply banner default colors to dev seeds
Banners created through the admin form were getting the default color.
However, banners created by other means (like the `db:dev_seed` rake
task) were not getting these default values.

This feature was originally implemented when we were using Rails 4.
With Rails 5, we can provide default values to all new banners and
simplify the code at the same time thanks to its `attribute` method.

Now, when creating a new banner, instead of getting a blank space, we
get an empty line with the banner's default background color, which most
users won't know what it's about until they fill in the banner's title.
So we're not displaying the content of the banner when it's empty,
thanks to the `:empty` CSS pseudoclass.
2020-08-12 17:16:11 +02:00
Javi Martín
361b7ee09d Fix banner text alignment
Unlike the rest of the page, it had no left margin nor padding
whatsoever.
2020-08-12 17:01:40 +02:00
Javi Martín
14a5d82377 Fix banner overlapping with other content
In some sections we had negative top margins to compensate the header
bottom margin. However, when adding a banner between the header and
those sections, the negative margin caused the content of those sections
to overlap with the content of the banner.

Removing the negative margins when a banner is present solves the issue.
2020-08-12 17:01:40 +02:00
Javi Martín
400c3a6fa0 Move header margin styles to CSS
Using HTML classes to apply styles to certain elements makes views
harder to customize.
2020-08-12 17:01:40 +02:00
Javier Martín
b8894eac70 Merge pull request #3699 from consul/upgrade_turbolinks
Bump turbolinks to 5.2.1
2020-08-12 14:34:19 +02:00
Javier Martín
a56c2d4a23 Merge pull request #4079 from consul/get_params
Fix redirect with GET params of after POST requests
2020-08-12 14:25:08 +02:00
Senén Rodero Rodríguez
b9ce68bc82 Set marker coordinates as map center when map location fields has valid coordinates
When a user recovers a page from browser history where placed a
marker in different map pane (visible map layer) marker was
successfully added to the map but the map center is the one
defined at Settings map properties so the marker was not visible
to the user.

Now when map_location form has valid coordinates we use them
instead of default map center settings. This will avoid the user to
have to rellocate the marker (or find the correct pane where the
marker was added) if already placed.
2020-08-12 10:10:58 +02:00
Senén Rodero Rodríguez
6aa94a787c Use map location form latitude, longitude and zoom when valid
When using an editable map is better to load marker latitude, longitude and
map zoom from form fields so we can show the marker at latest position defined
by user when the page was restored from browser history.

To reproduce this behavior:
0. Undo this commit
1. Go to new proposal page
2. Place the proposal map marker
3. Go away to any other page
4. Restore new proposal page from browser history.

At this point you should not see the recently placed marker.

The same thing happens when editing a proposal.
2020-08-12 10:10:58 +02:00
Senén Rodero Rodríguez
289426c1c3 Destroy maps before leaving the current page
If we do not do this a map could be initialized twice times or more
when restoring a page with a map causing weird UI effects and
loading some map layers also twice times or more.

Need to add a maps array to be able to store all initialized
(visible) maps so we can destroy them when needed. Notice that
we are destroying maps also when admin settings tabs changes
(only visible ones), this is again to avoid to re-initialize map more
than once when users navigate through settings tabs, another
option to the settings issue could be to detect if the map was
already initialized to skip uneeded initialization.
2020-08-12 10:10:58 +02:00
Senén Rodero Rodríguez
87339451de Reset columns_selector before caching the page
This will allow to initialize this module again without duplicating
columns checkboxes and without breaking the page.
2020-08-12 10:10:58 +02:00
Senén Rodero Rodríguez
137e0f5a64 Remove description for screen readers
It was being duplicated when restoring a page by using browser
history. With this solution we will avoid to have screen readers
descriptions more than once inside any sociual share button.
2020-08-12 10:07:35 +02:00
Senén Rodero Rodríguez
6b17452bd5 Fix "Publish comment" button when restoring a page from browser cache
We need to use page body event delegation so it will work with any
element even with the ones added through ajax, in this case the
annotation comments box form. By doing this way we do not need
this code on the server response anymore.

Furthermore JS events defined at ajax responses are not part of
application javascript and are lost when restoring a page from
browser cache, you can try to apply the same event delegation
technique to the `erb` file and it wont work just because events
added dinamically are not treated the same than `application.js`
code.

To reproduce the error:

  1. Load an annotatable draft version
  2. Move to any other page
  3. Go back

Now "Publish comment" button wont work.
2020-08-12 10:07:35 +02:00
Senén Rodero Rodríguez
fc0625df8b Destroy Annotator app before storing page into brwoser cache
If we do not destroy annotator app before storing the page at
browser cache we will unnecesarily initialize annotations twice (or
more) duplicating Annotator HTML markup and causing
unexpected  errors.

Without this commit you will find an error when restoring a page with
annotator, you can click on any annotation and you will see the annotation
comments are being loaded twice.

IMO this is an idempotency issue within Annotator JS library.
2020-08-12 10:07:35 +02:00
Senén Rodero Rodríguez
da658f3d8c Hack datepicker to make it work with Turbolinks 5.x
Patch extracted from here the comments on turbolinks issue 253 and
converted to vanilla javascript.

The hide action over datepickers ensures us that opened datepickers
will be closed before leving the page. Previously if you open any
datepicker and then move to previous page you will keep seeing the
datepicker in the restored page.
2020-08-12 10:07:35 +02:00
Javi Martín
83e4633643 Don't redirect to POST request URLs after sign out
Sometimes we define URLs for POST requests which are not defined for GET
requests, such as "/residence", so redirecting to it after signing out
results in a routing error.

So instead of using the request referer, we're using the stored location
devise uses, and we're not storing locations in POST requests.
2020-08-11 18:19:48 +02:00
Javi Martín
2fa8792a35 Redirect users in homepage to homepage after login
For reasons I'm not sure about, the homepage (and the welcome pages)
were an exception in our "redirect users to the same page they were"
policy.

I'm not sure about the welcome pages (no test was present indicating
they should behave in a special way), but in the case of the home page,
it was a bit annoying to be redirected to a different place after
signing in.
2020-08-11 18:19:27 +02:00
Andriy Iun
1ee750e042 Keep GET params in return URL
When signing in from a page containing GET params, like
`/budgets/1/investments?heading_id=4`, we were redirected to a URL
without those GET params; in this case, `/budgets/1/investments`.

Using the request fullpath, as recommended in the devise documentation,
keeps these parameters when redirecting.
2020-08-11 18:19:25 +02:00
dependabot-preview[bot]
d036f09002 Bump rollbar from 2.18.0 to 2.27.0
Bumps [rollbar](https://github.com/rollbar/rollbar-gem) from 2.18.0 to 2.27.0.
- [Release notes](https://github.com/rollbar/rollbar-gem/releases)
- [Changelog](https://github.com/rollbar/rollbar-gem/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollbar/rollbar-gem/compare/v2.18.0...v2.27.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-11 10:54:23 +00:00
Javier Martín
7a1bd06fa4 Merge pull request #4078 from consul/bump_mdl
Bump mdl from 0.5.0 to 0.10.0
2020-08-11 12:52:28 +02:00
Javier Martín
f22e508398 Merge pull request #4081 from consul/polls_feature_flag
Add feature flag exception for the module polls
2020-08-11 12:49:27 +02:00
Javi Martín
193316bac6 Apply spaces inside code span elements mdl rule 2020-08-11 12:13:23 +02:00
Javi Martín
8c389b3dd9 Apply trailing spaces mdl rule 2020-08-11 12:13:23 +02:00
Javi Martín
864e991047 Apply mdl link definition rule 2020-08-11 12:13:23 +02:00
Javi Martín
5bdf09844e Apply mdl bare URL rule 2020-08-11 12:13:23 +02:00
Javi Martín
e48c748e97 Apply mdl blank lines rules 2020-08-11 12:13:23 +02:00
Javi Martín
cbc8d2fb62 Remove "headers with the same content" mdl rule
This rule would be fine if it only applied to headers within the same
section, but the way we structure our CHANGELOG.md file, each release
has the "Added", "Changed" and "Fixed" headers.
2020-08-11 12:13:23 +02:00
Javi Martín
44f6d43212 Bump mdl from 0.5.0 to 0.10.0
This contains a security fix since we're upgrading kramdown.
2020-08-11 12:13:17 +02:00
Julian Herrero
d720826e59 Add feature flag exception for the module polls 2020-08-11 11:10:10 +07:00
Javier Martín
5d43b632e9 Merge pull request #4067 from consul/links_and_images_on_legislation
Allow links and images on legislation drafts
2020-08-10 13:45:48 +02:00
Julian Herrero
151aa6009d Allow links and images on legislation drafts
Note we're using a new sanitizer. Ideally we'd reuse the
`AdminWYSIWYGSanitizer`, but then code that would be correctly shown by
markdown-it (like the <h1> tag) wouldn't be shown on the web, which is
confusing. Ideally we would configure markdown-it to only allow the tags
present in the `AdminWYSIWYGSanitizer` and provide some kind of help
showing which tags are allowed.
2020-08-10 12:20:59 +02:00
dependabot-preview[bot]
9c54825d3b Bump acts-as-taggable-on from 5.0.0 to 6.5.0
Bumps [acts-as-taggable-on](https://github.com/mbleigh/acts-as-taggable-on) from 5.0.0 to 6.5.0.
- [Release notes](https://github.com/mbleigh/acts-as-taggable-on/releases)
- [Changelog](https://github.com/mbleigh/acts-as-taggable-on/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mbleigh/acts-as-taggable-on/compare/v5.0.0...v6.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-10 09:53:52 +00:00
Javier Martín
b2a07121e3 Merge pull request #4035 from consul/dependabot/bundler/geocoder-1.6.3
[Security] Bump geocoder from 1.4.5 to 1.6.3
2020-08-08 18:42:18 +02:00
Javier Martín
0d82ac871d Merge pull request #4076 from consul/legislation_keys
Use complete keys on legislation translations
2020-08-07 20:54:57 +02:00
Javier Martín
71cee9a785 Merge pull request #4047 from consul/poll-skip-verification
Allow voting when skip verification is enabled
2020-08-07 20:31:29 +02:00
Javi Martín
096f546c24 Make sure users only vote once in the same poll
When skipping verification, we cannot apply the validation rule saying
the document number and document type must be unique, because they'll be
`nil` in many cases. So we were skipping the rule, but that makes it
possible for the same user to vote several times (for instance, once in
a booth and once via web).

So we're changing the scope of the uniqueness rule: instead of being
unique per document number, voters are unique per user. The reason we
made them unique per document number was that back in commit 900563e3
(when we added the rule), we hadn't added the relation between users and
poll voters yet.
2020-08-07 13:40:25 +02:00
decabeza
4367b2054a Allow voting when skip verification is enabled 2020-08-07 11:52:24 +02:00
Javi Martín
24ccf23ed8 Don't save the answer if the voter is not recorded
Up until now, we were assuming the voter was valid, but were not raising
an exception if it wasn't. And in the user interface everything seemed
to be working properly.

We were having this issue when skipping verification, when there could
be voters without a document number, which would be considered invalid.

Raising an exception when failing to save the voter and making sure the
answer and the voter are saved inside a transaction solves the problem.
2020-08-07 11:52:24 +02:00
decabeza
bcfb9b7a18 Use complete keys on legislation translations 2020-08-07 10:29:39 +02:00
Javier Martín
2fbb224374 Merge pull request #4070 from consul/remove-redundant-calls
Remove redundant calls to load resources
2020-08-06 14:18:39 +02:00
Javier Martín
50372f4370 Merge pull request #4066 from consul/oauth_buttons
Show Wordpress login button if it's the only one enabled
2020-08-06 13:53:57 +02:00
Javier Martín
5fb951eeac Merge pull request #4063 from consul/approval_voting
Add approval voting to budgets
2020-08-06 13:52:19 +02:00
Ziyan Junaideen
1e3e8c1304 Add approval voting to budgets
Co-Authored-By: Javi Martín <javim@elretirao.net>
2020-08-06 12:38:18 +02:00
Javi Martín
6bb9ebf12f Move before-cache event calls to application.js
Turbolinks 5 handles page caching differently; it saves the current HTML
and, when the page is restored using the browser's back button, it
copies it and triggers the `turbolinks:load` event, which, in our case,
triggers our `initialize_modules` function.

This isn't a problem regarding event handlers, since they're removed
when caching the page (except fot the ones attached to the `document`).
However, it is a problem for functions that, once the document is ready,
scan the DOM and add certain elements. In this case, an element might be
added a second time when the page is restored.

So we need to either check an item has already been added before adding
it or remove it before caching the page. Since this is going to be a
common pattern, we're adding a function to handle these non-idempotent
parts of the application, so it mirrors our `initialize_modules`
function.

We're also moving the `destroy` function definition after the
`initialize` function definition, which makes more sense since we
initialize things before destroying them.
2020-08-05 14:10:22 +02:00