ThibG
a93fc74d31
Fix admin actions log crash when displaying updates of deleted announcements ( #13489 )
...
Fixes #13487
5 years ago
Eugen Rochko
6932e0e2af
Add ability to filter audit log in admin UI ( #13381 )
5 years ago
ThibG
cb93be3b88
Add ability to delete files uploaded for settings in admin UI ( #13192 )
...
* Allow deleting site uploads
* Refactor and move links into hints
* Fix i18n tests
* Fix HTML output of site_upload_delete_hint
5 years ago
Eugen Rochko
9c2d10cd0c
Fix punycode being rendered instead of unicode in some places ( #13030 )
5 years ago
ButterflyOfFire
4bacf6aa2f
Add kabyle language to Mastodon ( #12962 )
...
* Add kabyle language to settings_helper
* Adding kabyle language to application.rb
5 years ago
Eugen Rochko
f95fd62bac
Add announcements ( #12662 )
...
* Add announcements
Fix #11006
* Add reactions to announcements
* Add admin UI for announcements
* Add unit tests
* Fix issues
- Add `with_dismissed` param to announcements API
- Fix end date not being formatted when time range is given
- Fix announcement delete causing reactions to send streaming updates
- Fix announcements container growing too wide and mascot too small
- Fix `all_day` being settable when no time range is given
- Change text "Update" to "Announcement"
* Fix scheduler unpublishing announcements before they are due
* Fix filter params not being passed to announcements filter
5 years ago
Eugen Rochko
9ebfb23e87
Various fixes and improvements ( #12878 )
...
* Fix unused role routes being generated
* Remove unused JavaScript code
* Refactor filters code to be DRYer
* Fix `.count == 0` comparisons to `.empty?` in views
* Fix filters in views
5 years ago
Eugen Rochko
813bc119df
Add is to available locales ( #12882 )
...
Fix #12869
5 years ago
ThibG
431bd6addc
Fix ruby 2.7 warnings about keyword parameters ( #12824 )
5 years ago
Daigo 3 Dango
f994905ebb
Clarify keyword arguments with ** ( #12769 )
...
This change is to suppress the warning below on on ruby-2.7.0:
- warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/
5 years ago
Eugen Rochko
c72c27756f
Fix IDN mentions not being processed, IDN domains not being rendered ( #12715 )
...
This changes the REST API to return unicode domains in the `acct`
attribute instead of punycode, and to render unicode instead of
punycode on public HTML pages as well.
Fix #7812 , fix #12246
5 years ago
Takeshi Umeda
dffb8a8340
Remove some duplicate methods from StatusHelper and reflect changes to AccountHelper ( #12545 )
5 years ago
Takeshi Umeda
58dd9698c3
Add basic support for group actors ( #12071 )
...
* Show badge on group actor in WebUI
* Do not notify in case of by following group actor
* If you mention group actor, also mention group actor followers
* Relax characters that can be used in username (same as Application)
* Revert "Relax characters that can be used in username (same as Application)"
This reverts commit 7e10a137b878d0db1b5252c52106faef5e09ca4b.
* Delete display_name method
5 years ago
ThibG
4b0a6d79dd
Add ability to filter reports by target account domain ( #12154 )
...
* Add ability to filter reports by target account domain
* Reword by_target_domain label
5 years ago
noiob
0fe0be988e
Fix whitelist federation for subdomains ( #12435 )
5 years ago
Eugen Rochko
bf3c777751
Add kn, mr, ur to available locales ( #12379 )
5 years ago
ThibG
f73c977caa
Fix broken admin audit log in whitelist mode ( #12303 )
5 years ago
Takeshi Umeda
1dc1d01f95
Split AccountsHelper from StatusesHelper ( #12078 )
5 years ago
Eugen Rochko
27dff3317c
Add br, es-AR, et, mk, nn to available locales ( #12062 )
5 years ago
Eugen Rochko
a2d3728c36
Add account migration UI ( #11846 )
...
Fix #10736
- Change data export to be available for non-functional accounts
- Change non-functional accounts to include redirecting accounts
5 years ago
Eugen Rochko
722d8cdc36
New Crowdin translations ( #11799 )
...
* New translations doorkeeper.en.yml (Hungarian)
[ci skip]
* New translations doorkeeper.en.yml (Ido)
[ci skip]
* New translations doorkeeper.en.yml (Indonesian)
[ci skip]
* New translations doorkeeper.en.yml (Italian)
[ci skip]
* New translations doorkeeper.en.yml (Japanese)
[ci skip]
* New translations doorkeeper.en.yml (Kazakh)
[ci skip]
* New translations simple_form.en.yml (Asturian)
[ci skip]
* New translations simple_form.en.yml (Arabic)
[ci skip]
* New translations en.json (Portuguese)
[ci skip]
* New translations en.json (Japanese)
[ci skip]
* New translations en.json (Kazakh)
[ci skip]
* New translations en.json (Korean)
[ci skip]
* New translations en.json (Latvian)
[ci skip]
* New translations en.json (Lithuanian)
[ci skip]
* New translations en.json (Malay)
[ci skip]
* New translations en.json (Norwegian)
[ci skip]
* New translations en.json (Occitan)
[ci skip]
* New translations en.json (Persian)
[ci skip]
* New translations en.json (Polish)
[ci skip]
* New translations en.json (Portuguese, Brazilian)
[ci skip]
* New translations en.json (Indonesian)
[ci skip]
* New translations en.json (Romanian)
[ci skip]
* New translations en.json (Russian)
[ci skip]
* New translations en.json (Serbian (Cyrillic))
[ci skip]
* New translations en.json (Serbian (Latin))
[ci skip]
* New translations en.json (Slovak)
[ci skip]
* New translations en.json (Slovenian)
[ci skip]
* New translations en.json (Spanish)
[ci skip]
* New translations en.json (Swedish)
[ci skip]
* New translations en.json (Tamil)
[ci skip]
* New translations en.json (Telugu)
[ci skip]
* New translations en.json (Thai)
[ci skip]
* New translations en.json (Italian)
[ci skip]
* New translations en.json (Ido)
[ci skip]
* New translations en.json (Ukrainian)
[ci skip]
* New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
* New translations simple_form.en.yml (Czech)
[ci skip]
* New translations en.json (Albanian)
[ci skip]
* New translations en.json (Arabic)
[ci skip]
* New translations en.json (Armenian)
[ci skip]
* New translations en.json (Asturian)
[ci skip]
* New translations en.json (Basque)
[ci skip]
* New translations en.json (Bengali)
[ci skip]
* New translations en.json (Bulgarian)
[ci skip]
* New translations en.json (Catalan)
[ci skip]
* New translations en.json (Chinese Simplified)
[ci skip]
* New translations en.json (Chinese Traditional)
[ci skip]
* New translations en.json (Corsican)
[ci skip]
* New translations en.json (Hungarian)
[ci skip]
* New translations en.json (Croatian)
[ci skip]
* New translations en.json (Danish)
[ci skip]
* New translations en.json (Dutch)
[ci skip]
* New translations en.json (Esperanto)
[ci skip]
* New translations en.json (Finnish)
[ci skip]
* New translations en.json (French)
[ci skip]
* New translations en.json (Galician)
[ci skip]
* New translations en.json (Georgian)
[ci skip]
* New translations en.json (German)
[ci skip]
* New translations en.json (Greek)
[ci skip]
* New translations en.json (Hebrew)
[ci skip]
* New translations en.json (Turkish)
[ci skip]
* New translations en.json (Welsh)
[ci skip]
* New translations simple_form.en.yml (Albanian)
[ci skip]
* New translations en.yml (Russian)
[ci skip]
* New translations en.yml (Korean)
[ci skip]
* New translations en.yml (Latvian)
[ci skip]
* New translations en.yml (Lithuanian)
[ci skip]
* New translations en.yml (Malay)
[ci skip]
* New translations en.yml (Norwegian)
[ci skip]
* New translations en.yml (Occitan)
[ci skip]
* New translations en.yml (Persian)
[ci skip]
* New translations en.yml (Polish)
[ci skip]
* New translations en.yml (Portuguese)
[ci skip]
* New translations en.yml (Portuguese, Brazilian)
[ci skip]
* New translations en.yml (Romanian)
[ci skip]
* New translations en.yml (Serbian (Cyrillic))
[ci skip]
* New translations en.yml (Japanese)
[ci skip]
* New translations en.yml (Serbian (Latin))
[ci skip]
* New translations en.yml (Slovak)
[ci skip]
* New translations en.yml (Slovenian)
[ci skip]
* New translations en.yml (Spanish)
[ci skip]
* New translations en.yml (Swedish)
[ci skip]
* New translations en.yml (Tamil)
[ci skip]
* New translations en.yml (Telugu)
[ci skip]
* New translations en.yml (Thai)
[ci skip]
* New translations en.yml (Turkish)
[ci skip]
* New translations en.yml (Ukrainian)
[ci skip]
* New translations en.yml (Welsh)
[ci skip]
* New translations en.yml (Kazakh)
[ci skip]
* New translations en.yml (Italian)
[ci skip]
* New translations en.yml (Albanian)
[ci skip]
* New translations en.yml (Croatian)
[ci skip]
* New translations en.yml (Arabic)
[ci skip]
* New translations en.yml (Armenian)
[ci skip]
* New translations en.yml (Asturian)
[ci skip]
* New translations en.yml (Basque)
[ci skip]
* New translations en.yml (Bengali)
[ci skip]
* New translations en.yml (Bulgarian)
[ci skip]
* New translations en.yml (Catalan)
[ci skip]
* New translations en.yml (Chinese Simplified)
[ci skip]
* New translations en.yml (Chinese Traditional)
[ci skip]
* New translations en.yml (Chinese Traditional, Hong Kong)
[ci skip]
* New translations en.yml (Corsican)
[ci skip]
* New translations en.yml (Danish)
[ci skip]
* New translations en.yml (Indonesian)
[ci skip]
* New translations en.yml (Dutch)
[ci skip]
* New translations en.yml (Esperanto)
[ci skip]
* New translations en.yml (Finnish)
[ci skip]
* New translations en.yml (French)
[ci skip]
* New translations en.yml (Galician)
[ci skip]
* New translations en.yml (Georgian)
[ci skip]
* New translations en.yml (German)
[ci skip]
* New translations en.yml (Greek)
[ci skip]
* New translations en.yml (Hebrew)
[ci skip]
* New translations en.yml (Hungarian)
[ci skip]
* New translations en.yml (Ido)
[ci skip]
* New translations doorkeeper.en.yml (Estonian)
[ci skip]
* New translations en.json (Spanish)
[ci skip]
* New translations en.yml (Czech)
[ci skip]
* New translations en.json (Slovak)
[ci skip]
* New translations en.yml (Slovak)
[ci skip]
* New translations en.yml (Slovak)
[ci skip]
* New translations en.json (Russian)
[ci skip]
* New translations en.json (Russian)
[ci skip]
* New translations en.yml (Russian)
[ci skip]
* New translations simple_form.en.yml (Russian)
[ci skip]
* New translations en.yml (Corsican)
[ci skip]
* New translations en.json (Korean)
[ci skip]
* New translations en.json (Thai)
[ci skip]
* New translations en.yml (Thai)
[ci skip]
* New translations en.json (Spanish)
[ci skip]
* New translations en.yml (Spanish)
[ci skip]
* New translations simple_form.en.yml (Spanish)
[ci skip]
* New translations en.json (Spanish)
[ci skip]
* New translations en.yml (German)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.yml (Norwegian Nynorsk)
[ci skip]
* New translations simple_form.en.yml (Norwegian Nynorsk)
[ci skip]
* New translations activerecord.en.yml (Norwegian Nynorsk)
[ci skip]
* New translations devise.en.yml (Norwegian Nynorsk)
[ci skip]
* New translations doorkeeper.en.yml (Norwegian Nynorsk)
[ci skip]
* New translations en.json (Armenian)
[ci skip]
* New translations en.json (Breton)
[ci skip]
* New translations en.json (Bulgarian)
[ci skip]
* New translations doorkeeper.en.yml (Breton)
[ci skip]
* New translations devise.en.yml (Breton)
[ci skip]
* New translations simple_form.en.yml (Breton)
[ci skip]
* New translations en.yml (Breton)
[ci skip]
* New translations activerecord.en.yml (Breton)
[ci skip]
* New translations devise.en.yml (Asturian)
[ci skip]
* New translations en.json (Asturian)
[ci skip]
* New translations activerecord.en.yml (Asturian)
[ci skip]
* New translations devise.en.yml (Russian)
[ci skip]
* New translations activerecord.en.yml (Russian)
[ci skip]
* New translations simple_form.en.yml (Russian)
[ci skip]
* New translations devise.en.yml (Norwegian)
[ci skip]
* New translations activerecord.en.yml (Norwegian)
[ci skip]
* New translations en.json (Norwegian)
[ci skip]
* New translations en.json (Malay)
[ci skip]
* New translations en.json (Serbian (Cyrillic))
[ci skip]
* New translations devise.en.yml (Serbian (Latin))
[ci skip]
* New translations devise.en.yml (Ukrainian)
[ci skip]
* New translations activerecord.en.yml (Ukrainian)
[ci skip]
* New translations en.yml (Ukrainian)
[ci skip]
* New translations devise.en.yml (Slovak)
[ci skip]
* New translations activerecord.en.yml (Slovak)
[ci skip]
* New translations en.json (Slovak)
[ci skip]
* New translations activerecord.en.yml (Serbian (Latin))
[ci skip]
* New translations en.json (Serbian (Latin))
[ci skip]
* New translations devise.en.yml (Serbian (Cyrillic))
[ci skip]
* New translations activerecord.en.yml (Serbian (Cyrillic))
[ci skip]
* New translations activerecord.en.yml (Indonesian)
[ci skip]
* New translations devise.en.yml (Georgian)
[ci skip]
* New translations activerecord.en.yml (Georgian)
[ci skip]
* New translations en.json (Georgian)
[ci skip]
* New translations devise.en.yml (Croatian)
[ci skip]
* New translations en.json (Croatian)
[ci skip]
* New translations en.json (Hebrew)
[ci skip]
* New translations devise.en.yml (Chinese Traditional, Hong Kong)
[ci skip]
* New translations activerecord.en.yml (Chinese Traditional, Hong Kong)
[ci skip]
* New translations en.json (Chinese Traditional, Hong Kong)
[ci skip]
* New translations devise.en.yml (Bulgarian)
[ci skip]
* New translations activerecord.en.yml (Bulgarian)
[ci skip]
* New translations en.json (Lithuanian)
[ci skip]
* New translations en.json (Latvian)
[ci skip]
* New translations devise.en.yml (Indonesian)
[ci skip]
* New translations en.json (Indonesian)
[ci skip]
* New translations devise.en.yml (Ido)
[ci skip]
* New translations en.json (Ido)
[ci skip]
* New translations devise.en.yml (Hebrew)
[ci skip]
* New translations activerecord.en.yml (Hebrew)
[ci skip]
* New translations en.yml (Slovak)
[ci skip]
* New translations en.yml (Slovak)
[ci skip]
* New translations en.yml (French)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.json (Arabic)
[ci skip]
* New translations en.yml (Arabic)
[ci skip]
* New translations en.json (Norwegian Nynorsk)
[ci skip]
* New translations en.yml (Greek)
[ci skip]
* New translations en.yml (Hungarian)
[ci skip]
* New translations en.yml (Italian)
[ci skip]
* New translations en.yml (Japanese)
[ci skip]
* New translations en.yml (Kazakh)
[ci skip]
* New translations en.yml (Korean)
[ci skip]
* New translations en.yml (Dutch)
[ci skip]
* New translations en.yml (Esperanto)
[ci skip]
* New translations en.yml (Estonian)
[ci skip]
* New translations en.yml (German)
[ci skip]
* New translations en.yml (Finnish)
[ci skip]
* New translations en.yml (Galician)
[ci skip]
* New translations en.yml (Danish)
[ci skip]
* New translations en.yml (Swedish)
[ci skip]
* New translations en.yml (Spanish)
[ci skip]
* New translations en.yml (Welsh)
[ci skip]
* New translations en.yml (Occitan)
[ci skip]
* New translations en.yml (Portuguese)
[ci skip]
* New translations en.yml (Persian)
[ci skip]
* New translations en.yml (Polish)
[ci skip]
* New translations en.json (Portuguese)
[ci skip]
* New translations simple_form.en.yml (Portuguese)
[ci skip]
* New translations doorkeeper.en.yml (Portuguese)
[ci skip]
* New translations en.yml (Portuguese, Brazilian)
[ci skip]
* New translations en.yml (Romanian)
[ci skip]
* New translations en.yml (Slovenian)
[ci skip]
* New translations en.yml (Lithuanian)
[ci skip]
* New translations en.yml (Norwegian)
[ci skip]
* New translations en.yml (Asturian)
[ci skip]
* New translations en.yml (Chinese Traditional, Hong Kong)
[ci skip]
* New translations en.yml (Georgian)
[ci skip]
* New translations en.yml (Russian)
[ci skip]
* New translations en.yml (Chinese Simplified)
[ci skip]
* New translations en.yml (Catalan)
[ci skip]
* New translations en.yml (Chinese Traditional)
[ci skip]
* New translations en.yml (Corsican)
[ci skip]
* New translations en.yml (Czech)
[ci skip]
* New translations en.yml (Basque)
[ci skip]
* New translations en.yml (Serbian (Cyrillic))
[ci skip]
* New translations en.yml (Serbian (Latin))
[ci skip]
* New translations en.yml (Slovak)
[ci skip]
* New translations en.yml (Ukrainian)
[ci skip]
* New translations en.yml (French)
[ci skip]
* New translations en.yml (Arabic)
[ci skip]
* New translations en.yml (Albanian)
[ci skip]
* New translations en.yml (Danish)
[ci skip]
* i18n-tasks normalize
* yarn manage:translations
5 years ago
mayaeh
566e85716f
Add search and sort functions to hashtag admin UI ( #11829 )
...
* Add search and sort functions to hashtag admin UI
* Move scope processing from tags_controller to tag_filter
* Fix based on method naming conventions
* Fixed not to get 500 errors for invalid requests
5 years ago
Eugen Rochko
c8b25aa7fc
Fix name of Portuguese language not including Portugal ( #11820 )
...
Fix #11602
5 years ago
ThibG
4ba49f14dc
Change /admin/custom_emoji to honor the auto_play_gif setting ( #11801 )
...
Fixes #9535
5 years ago
Eugen Rochko
feeecba886
Change OpenGraph description on sign-up page to reflect invite ( #11744 )
5 years ago
Eugen Rochko
b47119eb61
Change layout of public profile directory to be the same as in web UI ( #11705 )
5 years ago
Eugen Rochko
a8d983934e
Fix blurhash and autoplay not working on public pages ( #11585 )
5 years ago
Eugen Rochko
05e9cd13eb
Change admin UI for hashtags and add back whitelisted trends ( #11490 )
...
Fix #271
Add back the `GET /api/v1/trends` API with the caveat that it does
not return tags that have not been allowed to trend by the staff.
When a hashtag begins to trend (internally) and that hashtag has
not been previously reviewed by the staff, the staff is notified.
The new admin UI for hashtags allows filtering hashtags by where
they are used (e.g. in the profile directory), whether they have
been reviewed or are pending reviewal, they show by how many people
the hashtag is used in the directory, how many people used it
today, how many statuses with it have been created today, and it
allows fixing the name of the hashtag to make it more readable.
The disallowed hashtags feature has been reworked. It is now
controlled from the admin UI for hashtags instead of from
the file `config/settings.yml`
5 years ago
Eugen Rochko
825dc3ca22
Add whitelist mode ( #11291 )
5 years ago
dependabot-preview[bot]
1cf7bdede4
Bump json-ld-preloaded from 3.0.2 to 3.0.3 ( #11316 )
...
* Bump json-ld-preloaded from 3.0.2 to 3.0.3
Bumps [json-ld-preloaded](https://github.com/ruby-rdf/json-ld-preloaded ) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/ruby-rdf/json-ld-preloaded/releases )
- [Commits](https://github.com/ruby-rdf/json-ld-preloaded/compare/3.0.2...3.0.3 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* use json-ld edge
5 years ago
Eugen Rochko
317b79d673
Add HTTP signatures to all outgoing ActivityPub GET requests ( #11284 )
5 years ago
Eugen Rochko
6baf5099a6
Refactor fetching of remote resources ( #11251 )
5 years ago
Eugen Rochko
d0b0b63b1a
Refactor domain block checks ( #11268 )
5 years ago
Eugen Rochko
fbbcbd940d
Remove Atom feeds and old URLs in the form of `GET /:username/updates/:id` ( #11247 )
5 years ago
Eugen Rochko
73e610790e
Change full logo to use primary text color of the given theme ( #10994 )
...
* Change full logo to use primary text color of the given theme
* Fix colors of public layout header in light theme
6 years ago
Eugen Rochko
c5234ac2aa
Use `<use />` to render transparent SVG logo instead of inserting it ( #10845 )
6 years ago
Eugen Rochko
6d5b05e3d5
Add invite request to pending account notification e-mail ( #10528 )
...
Fix sorting of the pending accounts page
6 years ago
Eugen Rochko
c84c30c542
Improve blocked view of profiles ( #10491 )
...
* Revert "Fix filtering of favourited_by, reblogged_by, followers and following (#10447 )"
This reverts commit 0317f37c6f
.
* Revert "Hide blocking accounts from blocked users (#10442 )"
This reverts commit 4cd944d364
.
* Improve blocked view of profiles
- Change "You are blocked" to "Profile unavailable"
- Hide following/followers in API when blocked
- Disable follow button and show "Profile unavailable" on public profile as well
6 years ago
Eugen Rochko
364e49ae1f
Rename :poll to :preloadable_poll and :owned_poll to :poll on Status ( #10401 )
...
Also, fix some n+1 queries
Resolve #10365
6 years ago
Eugen Rochko
7aeb50cc89
Add order options to relationship manager UI ( #10404 )
6 years ago
Eugen Rochko
88a85f2574
Change icons of features on admin dashboard to remove bias ( #10366 )
...
Red crosses implied that it was bad/unexpected that certain features
were not enabled. In reality, they are options, so showing a green
or grey power-off icon is more appropriate.
Add status of timeline preview as well
Fix sample accounts changing too frequently due to wrong query
Sample accounts are intended to be sorted by popularity
6 years ago
Eugen Rochko
0653375622
Add missing locales (bn, ga, hi) ( #10295 )
6 years ago
Eugen Rochko
b1e0164848
Add dormant filter to relationship manager, rename other filters ( #10308 )
...
Rename "abandoned" to "moved", and "active" to "primary"
6 years ago
Eugen Rochko
4fa2d55d4e
Add relationship manager UI ( #10268 )
6 years ago
ysksn
7e16669c44
Add specs for action log helper ( #9605 )
...
* Add specs for ActionLogHelper
* Make some methods private
methods below never referenced from outside of their module:
- #linkable_log_target
- #log_target_from_history
6 years ago
Eugen Rochko
73fb7bfa0f
Admission-based registrations mode ( #10250 )
...
Fix #6856
Fix #6951
6 years ago
Eugen Rochko
d5377d0d45
Fix poll update handler calling method was that was not available ( #10246 )
...
* Fix poll update handler calling method was that was not available
Fix regression from #10209
* Refactor VoteService
* Refactor ActivityPub::DistributePollUpdateWorker and optimize it
* Fix typo
* Fix typo
6 years ago
Eugen Rochko
56822606f4
Redesign landing page ( #10232 )
6 years ago
ThibG
0c8e3beb51
Do not error out on unsalvageable errors in FetchRepliesService ( #10175 )
...
* Do not error out on unsalvageable errors in FetchRepliesService
Fixes #10152
* Fix FetchRepliesWorker erroring out on deleted statuses
6 years ago
Eugen Rochko
1321801577
Fix various issues in polls ( #10165 )
...
* Fix ActivityPub poll results being serialized even with hide_totals
* Fix poll refresh button having a different font size
* Display poll in OpenGraph description
* Fix NoMethodError when serializing votes
Regression from #10158
* Fix polls on public pages being broken for non-logged-in users
* Do not show time remaining if poll has no expiration date
6 years ago