Commit Graph

28 Commits

Author SHA1 Message Date
Rafael dos Santos Silva
2304dcf993 FIX: Do not truncate encoded slugs
Trying to truncate encoded slugs will mean that we have to keep the URL
valid, which can be tricky as you have to be aware of multibyte
characters.

Since we already have upper bounds for the title, the slug won't grow
for more than title*6 in the worst case. The slug column in the topic
table can store that just fine.

Added a test to ensure that a generated slug is a valid URL too, so we
don't introduce regressions in the future.
2019-10-17 13:38:31 -03:00
Rafael dos Santos Silva
76ab0350f1
FIX: Properly encoded slugs when configured to (#8158)
When an admin changes the site setting slug_generation_method to
encoded, we weren't really encoding the slug, but just allowing non-ascii
characters in the slug (unicode).

That brings problems when a user posts a link to topic without the slug, as
our topic controller tries to redirect the user to the correct URL that contains
the slug with unicode characters. Having unicode in the Location header in a
response is a RFC violation and some browsers end up in a redirection loop.

Bug report: https://meta.discourse.org/t/-/125371?u=falco

This commit also checks if a site uses encoded slugs and clear all saved slugs
in the db so they can be regenerated using an onceoff job.
2019-10-11 12:38:16 -03:00
Sam Saffron
30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
Gerhard Schlager
56f6065393 FIX: Generate ASCII slug with default locale 2019-04-29 18:29:58 +02:00
Arpit Jalan
3566c6f02b FIX: strip emoji string from slug 2018-04-18 11:32:32 +05:30
Guo Xiang Tan
401fbdbfe7 FIX: Topic#title were being parameterized when encoded slug is
enabled.
2017-10-27 11:02:47 +08:00
Guo Xiang Tan
f30366744a Fix the build. 2017-10-26 17:09:00 +08:00
Erick Guan
7c3123a2dd Downcase encoded slug by default and more specs 2017-10-26 16:50:29 +08:00
Guo Xiang Tan
5012d46cbd Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
Neil Lalonde
0328141e05 FIX: prevent creation of tags with invalid characters 2016-10-12 15:44:36 -04:00
James Cook
c0e25b5a9a Replace certain uses of 'gsub' with 'tr' or 'chomp' for a speed
improvement
2016-06-10 22:08:37 -05:00
Erick Guan
4c00eef8b5 FIX: category custom slug can't be set when generation method is none 2015-05-13 16:54:19 +08:00
Neil Lalonde
2139a6208b FIX: multisite migration fails when adding a new site because SiteSetting.slug_generation_method is nil 2015-05-05 18:50:54 -04:00
Erick Guan
a48dd1cc28 store the slug as the title is, only sanitize the slug
and prettify code
2015-05-05 18:33:16 +08:00
Erick Guan
b772ff6e13 FEATURE: add slug geneartion options 2015-05-05 18:08:30 +08:00
Gerhard Schlager
8a236c06e2 FEATURE: Adds transliteration of German umlauts in slugs
- Moves the already existing transliteration rules into `transliterations.en.yml` (there's no need to translate this for every language). The same goes for the stringex configuration.
- Doesn't calculate the default slug for *zh_CN* and *ja* anymore. It hasn't been used anyway since stringex is used instead.
- Removes a wrong comment from the Russion transliteration file (I hate wrong comments)
2015-02-27 23:53:58 +01:00
Sam
e668d770ac FEATURE: remove english korean slugs 2014-11-18 11:52:10 +11:00
Erick Guan
667758ff40 Add stringex for Chinese slug generation 2014-11-11 21:12:07 +08:00
Sam
da22c0f359 omit single quotes from slug 2013-06-03 09:08:34 +10:00
Neil Lalonde
b82a5dfd56 Move logic to reject slugs that are just numbers into the slug module 2013-05-30 11:54:02 -04:00
Kuba Brecka
dc62136642 various typos in comments 2013-03-06 08:52:24 +01:00
Gosha Arinich
cafc75b238 remove trailing whitespaces ❤️ 2013-02-26 07:31:35 +03:00
Dan Neumann
44642d4d0c slug should replace underscores 2013-02-14 17:04:30 -06:00
Dan Neumann
4a390bc562 remove reinvention of #parameterize 2013-02-12 17:53:06 -06:00
Dan Neumann
50cf8cd4d5 Set up slug.rb for obvious method extractions. 2013-02-11 20:36:54 -06:00
Dan Neumann
9daf53df73 lean on Inflector transliteration 2013-02-11 20:34:38 -06:00
Dan Neumann
ee8d68842e Strip leading and trailing slug punctuation. 2013-02-06 19:52:14 -06:00
Robin Ward
21b5628528 Initial release of Discourse 2013-02-05 14:16:51 -05:00