Commit Graph

1569 Commits

Author SHA1 Message Date
Guo Xiang Tan fe96ef6ed2 UX: Use topic list for displaying group messages on group page.
https://meta.discourse.org/t/group-inbox-on-a-groups-page-mockup/71319
2018-03-16 11:56:40 +08:00
Guo Xiang Tan a35227918f UX: Display group topics in a topic list. 2018-03-15 11:37:55 +08:00
Gerhard Schlager 243ee565dc Reset widget decorators after each test 2018-03-12 14:22:50 +01:00
Sam b57d4c87a4 FEATURE: update CommonMark to version 0.28 2018-03-08 12:19:53 +11:00
Gerhard Schlager 8e48b339fa Drop unused tables (#5630) 2018-03-05 17:27:30 -05:00
Joffrey JAFFEUX 6d4ff05cf0
FIX: makes sure [999500..999999] is correctly shown as 999k 2018-03-02 11:00:48 +01:00
Guo Xiang Tan b9ff6d60b9 Fix the build. 2018-03-02 14:43:02 +08:00
Guo Xiang Tan d9b4b12694 UX: Display warning message about social logins disabled when 2FA is enabled. 2018-03-02 14:22:52 +08:00
Arpit Jalan 841e58fc46 delete extra blank lines 2018-02-27 15:51:50 +05:30
Arpit Jalan ec8cc833c6 fix the build 2018-02-27 15:48:36 +05:30
Arpit Jalan 4010d8d9f9 FEATURE: show "edit message" button on message footer for staff
Show "Edit Message" button on personal message footer for staff if PM tagging is enabled.
2018-02-27 14:22:03 +05:30
Guo Xiang Tan 24bd310d7b Fix the build. 2018-02-27 10:15:13 +08:00
Neil Lalonde 3313072957 Remove censored_pattern site setting, which is replaced by watched words 2018-02-26 16:29:27 -05:00
Joffrey JAFFEUX ac701696b3
FEATURE: replaces tag-chooser/tag-group-chooser with select-kit component
These component were also the last using select2. As a consequence select2 is removed from Discourse in this commit.
2018-02-26 11:42:57 +01:00
Joffrey JAFFEUX 6f5acfe783 Login with email/forget password UI refactoring
* move button into login modal with social buttons
* adds email link next to login field when filling it
* adds proper validation messages
* improves forgot password flash clearing
* more tests
2018-02-22 08:06:15 +08:00
Guo Xiang Tan 14f3594f9f Review Changes for f4f8a293e7. 2018-02-21 14:55:49 +08:00
Jeff Wong f4f8a293e7 FEATURE: Implement 2factor login TOTP
implemented review items.

Blocking previous codes - valid 2-factor auth tokens can only be authenticated once/30 seconds.
I played with updating the “last used” any time the token was attempted but that seemed to be overkill, and frustrating as to why a token would fail.
Translatable texts.
Move second factor logic to a helper class.
Move second factor specific controller endpoints to its own controller.
Move serialization logic for 2-factor details in admin user views.
Add a login ember component for de-duplication
Fix up code formatting
Change verbiage of google authenticator

add controller tests:
second factor controller tests
change email tests
change password tests
admin login tests

add qunit tests - password reset, preferences

fix: check for 2factor on change email controller
fix: email controller - only show second factor errors on attempt
fix: check against 'true' to enable second factor.

Add modal for explaining what 2fa with links to Google Authenticator/FreeOTP

add two factor to email signin link

rate limit if second factor token present

add rate limiter test for second factor attempts
2018-02-21 09:04:07 +08:00
OsamaSayegh f3815cd785 FEATURE: New site setting for additional allowed filetypes for staff (#5364)
* FEATURE: New site setting for additional allowed filetypes for staff

* Problematic variable name

* feedback

* small issues

* fix indentation

* failing tests

* Remove message bus and fix minor issues

* Missed this message bus
2018-02-19 10:44:24 +01:00
Joffrey JAFFEUX 25dd8ff62a
FIX: broken composer-actions spec 2018-02-14 11:32:20 +01:00
Erick Guan 03b3e57a44 FEATURE: login by a link from email
Co-authored-by: tgxworld <tgx@discourse.org>
2018-02-13 16:14:39 +08:00
Sam b34b1b6fe3 FIX: invite to message was not allowing groups
Previously we were incorrectly checking mentionable instead of messageable

Also fix edge case where multiple groups sharing a name mean that exact match override is not working

Also cleans up params sent to user selector
2018-02-13 13:28:46 +11:00
Vinoth Kannan 91beedd0ca FEATURE: Composer HTML pasting ul tag support for MS Word 2018-02-10 01:18:56 +05:30
Joffrey JAFFEUX 190d208631
FEATURE: improves composer-actions toggle menu
* only toggles
* fix a bug with presence
* more tests
* do not duplicate `continuing discussion...` text
* persist state to allow switching between toggles
2018-02-08 11:46:55 +01:00
Robin Ward 80ea2e5107 FIX: Enable personal messages in tests 2018-02-02 17:06:02 -05:00
Robin Ward 8ff4104555 Many enhancements to the flagging / suspending interface. 2018-02-01 17:13:02 -05:00
Joffrey JAFFEUX f7df68c9a3
FIX: makes composer-actions toggling whisper instead of replying 2018-02-01 23:07:37 +01:00
Joffrey JAFFEUX 97ddaeeae8
FIX: use css instead of js to fix select-kit-collection max-height 2018-02-01 16:56:07 +01:00
Joffrey JAFFEUX 9923829402
FEATURE: Menu toggle for different reply modes
Allow users to access different reply modes from the composer.

Actions introduced:

- reply_as_new_topic
- reply_as_private_message
- reply_to_topic
- reply_as_whisper/not
2018-02-01 16:42:56 +01:00
Robin Ward 96710754d9
Merge pull request #5540 from discourse/mixed-text-direction-support
FEATURE: Mixed text direction support
2018-02-01 07:29:15 -08:00
Arpit Jalan 49424fd798 rename private to personal 2018-02-01 13:25:29 +05:30
Arpit Jalan ff0376a80b rename 'enable_private_messages' to 'enable_personal_messages' 2018-02-01 13:25:29 +05:30
Arpit Jalan 25ec077eca rename 'min_private_message_{post/title}_length' to 'min_personal_message_{post/title}_length' 2018-02-01 13:25:29 +05:30
Sam 187b0031c5 correct specs 2018-02-01 16:16:14 +11:00
Vinoth Kannan 10ed4c0078 FEATURE: Composer HTML pasting support for complex table formats 2018-01-31 01:39:11 +05:30
scossar 843d88c5d0 Remove unused imports 2018-01-29 20:11:12 -08:00
scossar 5d18f72b8c Add tests for text-direction functions 2018-01-29 19:16:35 -08:00
scossar 41f1e7430c Refactor code; add tests 2018-01-29 17:42:19 -08:00
Gerhard Schlager eb52c5469e FEATURE: Allow plugins to register a new locale 2018-01-25 14:57:41 +01:00
Neil Lalonde dc97239040 FIX: censored regex words were replacing other text that shouldn't be censored 2018-01-24 12:33:47 -05:00
Sam 3b083ca0bd correct spec 2018-01-24 13:23:27 +11:00
Vinoth Kannan 86e142b39f UX: Copy selected text to the link building modal 2018-01-24 02:02:12 +05:30
Régis Hanol c425a2d335 fix js suite 2018-01-22 17:48:03 +01:00
Kyle Zhao 83c549bd31 FEATURE: grant badges in post admin wrench (#5498)
* FEATURE: grant badges in post admin wrench

* only grant manually grantable badges

* extract GrantBadgeController mixin
2018-01-22 14:10:53 +11:00
Régis Hanol f674b9e86e FIX: encode image filename so '[', ']' and '|' doesn't break the markdown 2018-01-19 19:52:03 +01:00
Jeff Atwood 7ed41fae2b
Merge pull request #5493 from notriddle/home_logo_h1
Change the text-only home logo to an H1
2018-01-18 16:14:36 -08:00
Arpit Jalan 79eb9d7086 FEATURE: show header search results on search log term details page 2018-01-17 12:47:16 +05:30
Arpit Jalan bd7e21fa99 fix the build 2018-01-15 14:35:11 +05:30
Arpit Jalan 785d063a6b
Merge pull request #5496 from techAPJ/admin-graphs
FIX: graphs should go to zero for missing dates
2018-01-15 11:10:29 +05:30
Arpit Jalan b7ba490df7 FIX: graphs should go to zero for missing dates 2018-01-15 10:16:34 +05:30
Michael Howell f29d233287 Fix test case for site logo as `<h2>` 2018-01-12 23:34:31 +00:00
Neil Lalonde 2493648f9c PERF: calculate topic_counts for tags in an async job so tag queries that include counts are much faster 2018-01-12 11:03:03 -05:00
Joffrey JAFFEUX e9fd4f271a
FIX: fix category-link spec failure 2018-01-11 13:43:05 +01:00
Joffrey JAFFEUX 3ee7b18886
FIX: disable by default limitMatches 2018-01-11 09:54:39 +01:00
Joffrey JAFFEUX 3ec2024466
select-kit refactoring
* improve events naming/handling
* do not explicitly check for true/Fasle
* make sure header is re-computed on toggle
2018-01-11 09:39:51 +01:00
Neil Lalonde edb3a7f646 FIX: support for watched_words_regular_expressions when censoring words 2018-01-10 14:11:23 -05:00
Neil Lalonde ad62f1099c FIX: censored words should support * as wildcard 2018-01-09 15:53:40 -05:00
Joffrey JAFFEUX c9921869f1
FIX: adds select-kit api to modify header computed content (#5476)
This api would allow to simply modify header text or icons, eg:

```
      api.modifySelectKit("select-kit")
        .modifyHeaderComputedContent((context, computedContent) => {
          computedContent.title = "Not so evil";
          return computedContent;
        });
```
2018-01-09 10:52:32 +01:00
Robin Ward fb863e18ec FIX: Broken test 2018-01-08 17:22:53 -05:00
Guo Xiang Tan 6cab53abd4 Puppeteer `page.authenticate` messes up CSRF tokens in forms. 2018-01-04 21:30:04 +08:00
Guo Xiang Tan af1e2865f7 Re-introduce ability to handle basic authentication in smoke tests. 2018-01-03 14:24:06 +08:00
Vinoth Kannan d18c42abd5 FIX: Ignore if the default localization node is not an object (#5439) 2017-12-27 16:53:53 +11:00
Vinoth Kannan 035f96d25f Allow linked images inside table cells in HTML to Markdown conversion 2017-12-23 22:48:39 +05:30
Guo Xiang Tan 47585202cb Handle promise in smoke test. 2017-12-23 09:29:22 +08:00
Vinoth Kannan 3ae9d91d86 UX: Use tight list by default in HTML to Markdown conversion 2017-12-22 21:34:55 +05:30
Vinoth Kannan ac1e93e82a Minor fix to correctly trim spaces in HTML to Markdown conversion 2017-12-22 19:05:40 +05:30
Joffrey JAFFEUX 315b9d796d
select-kit refactoring
* better test helper
* more reliable tests
* more consistent use of data-value/data-name/title/aria-label everywhere: header and rows
2017-12-22 13:08:12 +01:00
Vinoth Kannan 4935ae4338 Remove unwanted spaces between HTML tags and support Word documents 2017-12-22 09:28:24 +05:30
Sam ab2215e629 fix broken test 2017-12-21 20:19:15 +11:00
Vinoth Kannan 129d924c0d Dont support single row or column tables in HTML to Markdown conversion 2017-12-21 12:58:57 +05:30
Guo Xiang Tan 8f6e2b7186 Fix unhandled promise in smoke test. 2017-12-21 10:32:43 +08:00
Vinoth Kannan ac1d3a761e Support for table & ol tags for HTML pasting in composer 2017-12-20 19:24:55 +05:30
Gerhard Schlager e49c7147ce Use default timeout (30s) for smoke tests 2017-12-20 14:41:49 +01:00
Gerhard Schlager e6fc543aef Use higher timeouts for smoke_test 2017-12-20 12:47:22 +01:00
Guo Xiang Tan 6e0b2a9f37 Bump timeout when logging in in smoke_test. 2017-12-20 17:08:57 +08:00
Guo Xiang Tan 87c334c063 Fix randomly failing JS acceptance tests. 2017-12-20 11:04:47 +08:00
Arpit Jalan eab66065d1 FEATURE: search log term details page (#5445) 2017-12-20 13:41:31 +11:00
Vinoth Kannan 6272f35eec blockquote tag support for HTML pasting in composer 2017-12-19 20:59:55 +05:30
Guo Xiang Tan dfed56cb57 Disable JS test that fails in headless mode. 2017-12-19 20:50:39 +08:00
Guo Xiang Tan 6a4f391e38 Switch to chrome headless mode instead of phantomjs. 2017-12-19 16:00:43 +08:00
Vinoth Kannan ad41523895 FEATURE: Converting code tags to Markdown while pasting 2017-12-18 22:12:05 +05:30
Guo Xiang Tan 8d44642b97 Add smoke test script that runs in chrome headless. 2017-12-18 16:39:01 +08:00
Vinoth Kannan 0588edbc96 FEATURE: Keep supported HTML tags in HTML to Markdown conversion 2017-12-18 12:48:17 +05:30
Vinoth Kannan 4f2f42d710 PERF: Better handling of headings in HTML inline pasting 2017-12-17 00:45:21 +05:30
Vinoth Kannan dc159d7fa6 Grab dimention of the clipboard images 2017-12-15 17:28:38 +05:30
Guo Xiang Tan 0f011e1c1c Update fixtures to fix JS test. 2017-12-15 13:42:17 +08:00
Vinoth Kannan f0497ee9c4
FEATURE: HTML to Markdown conversion using native JavaScript ES6 classes (#5425) 2017-12-15 10:28:20 +05:30
Régis Hanol 2f792bc59f FIX: a topic should be visited when you've read everything and there's deleted posts at the end 2017-12-15 00:00:48 +01:00
Régis Hanol cad122993a eslint 😲 🔫 2017-12-13 22:24:02 +01:00
Régis Hanol 1b4483c942 FEATURE: Added 'select +below' and 'select +all replies' options to selecting posts 2017-12-13 22:12:06 +01:00
Joffrey JAFFEUX c1c31b99ce
Replaces toolbar popup-menu with select-kit 2017-12-13 10:49:32 +01:00
Robin Ward 74b9828731 FIX: Remove mentions filters from user and groups
Additionally return no data if disabled
2017-12-07 16:29:02 -05:00
Joffrey JAFFEUX fd99e1ef56 FEATURE: site setting enable_mentions to turn on/off mentions 2017-12-07 16:27:58 -05:00
Neil Lalonde 23ea4b6739 FIX: don't create featured link if title includes more than a url 2017-12-04 14:21:08 -05:00
Neil Lalonde fb08441802 Revert "FIX: don't create featured link if title includes more than a url" 2017-12-04 12:53:12 -05:00
Neil Lalonde cde42c3f69 FIX: don't create featured link if title includes more than a url 2017-12-04 12:03:41 -05:00
Joffrey JAFFEUX dbadebacd1
FIX: allows select-kit to search by null value 2017-12-01 20:02:00 +01:00
Arpit Jalan 496cd3b4df
Merge pull request #5385 from techAPJ/search-logs-improvements
FEATURE: support search click through tracking for user, category and tags
2017-12-01 12:08:38 +05:30
Arpit Jalan e3925278e2 FEATURE: support search click through tracking for user, category and tags
https://meta.discourse.org/t/search-logs-page/73281/11?u=techapj

This commit adds following features:

- support for tracking click through to user, tag and category
- new filter for search type (header, full page)

This commit also removes "most viewed topic" field from search logs page because we are now tracking multiple click through entities, so topic is not a special entity anymore. This also improves query perf. The query now takes `20.5ms` to runs, as opposed to `655.9ms` previously.
2017-12-01 12:04:55 +05:30
Arpit Jalan fb735d78ef fix the build 2017-11-30 17:28:36 +05:30
Sam 610d7a9412 teach acceptance test to work on the last day of the month 2017-11-30 13:20:04 +11:00
Gerhard Schlager 41e70c410c
FEATURE: replace GUID in image name uploaded from iOS (#5370) 2017-11-28 11:05:34 +01:00
Joffrey JAFFEUX 49b1df40fc
FIX: various issues when editing category permissions
This commit also adds multiple tests
2017-11-27 19:50:04 +01:00
Joffrey JAFFEUX 87ada55e67
FIX: avoids test failing at some times of the day 2017-11-27 10:49:35 +01:00
Joffrey JAFFEUX 96cdc4e66e
FIX: makes allowInitialValueMutation more restrictive 2017-11-24 13:15:02 +01:00
Joffrey JAFFEUX 63307c303a
FIX: regression preventing to set number of hours before closing
This commit also adds a full test suite for editing topic timer.
2017-11-24 02:48:45 +01:00
Joffrey JAFFEUX 9208909b26 tweak icon-library generation 2017-11-23 18:24:26 +01:00
Neil Lalonde ac4b4e30dc remove the test that only works in a browser 2017-11-22 15:23:06 -05:00
Neil Lalonde 6c86e0c94a FEATURE: remove the featured link by editing the topic 2017-11-22 14:53:35 -05:00
Joffrey JAFFEUX b14d9529b8
FIX: adds support for name changes tracking 2017-11-22 13:49:45 +01:00
Joffrey JAFFEUX b2b565c2fb
select-kit initial plugin api implementation (0.8.13)
```
api.modifySelectKit("identifier-of-the-select-targeted")
  .modifyContent((context, existingContent) => {})
  .appendContent(() => {})
  .prependContent(() => {})
  .onSelect((context, val) => {});
```
2017-11-22 10:34:12 +01:00
Neil Lalonde 33feb62673 FIX: times showing as < 1m instead of blank 2017-11-21 14:33:49 -05:00
Robin Ward 7533e5b541 UX: Use date picker on full page search 2017-11-21 12:52:23 -05:00
Joffrey JAFFEUX 39f3dbd945
Introduces select-kit
* renames `select-box-kit` into `select-kit`
* introduces `single-select` and `multi-select` as base components
* introduces {{search-advanced-category-chooser}} as a better component for selecting category in advanced search
* improves events handling in select-kit
* recreates color selection inputs using {{multi-select}} and a custom {{selected-color}} component
* replaces category-selector by a component using select-kit and based on multi-select
* improves positioning of wrapper
* removes the need for offscreen, and instead use `select-kit-header` as a base focus point for all select-kit based components
* introduces a formal plugin api for select-kit based components
* introduces a formal pattern for loading and updating select-kit based components:

```
computeValue()
computeContent()
mutateValue()
```
2017-11-21 11:53:09 +01:00
Guo Xiang Tan edc4b30f82 Remove tests that are no longer being used. 2017-11-21 18:07:23 +08:00
Robin Ward b9595966d4 FIX: Error applying quotes with blank lines in front 2017-11-20 13:46:19 -05:00
Neil Lalonde b37e40eea9 FEATURE: show read time in last 60 days 2017-11-16 15:46:51 -05:00
Arpit Jalan 3831663fea FEATURE: search logs page (#5313) 2017-11-15 11:13:50 +11:00
Joffrey JAFFEUX 680696fc04
Replaces delete flag modal by a dropdown 2017-11-14 07:55:08 -08:00
Sam 38c103c75e correct spec 2017-11-13 18:09:24 +11:00
Robin Ward 1f14350220 Rename "Blocked" to "Silenced" 2017-11-10 14:10:27 -05:00
Joffrey JAFFEUX 6d3ed966cd
FEATURE: replace admin flags modal by a select-box 2017-11-09 12:33:36 -08:00
Michael Howell 38b8d68c68 FEATURE: Allow the user to select a custom home page (#5268)
* Add user_home configuration option

* Use the new user_home preference to actually show the right home page

* Fix trailing whitespace

* Update user_option_serializer.rb

* Fix JavaScript default homepage tests

* Use an object instead of a giant switch

* Remove trailing whitespace

* Make the default `user_home` set to `null` instead of `0`

* Rename user_home to homepage_id
2017-11-10 06:45:19 +11:00
Joffrey JAFFEUX 0da529010a
FEATURE: support for multi-combo-box 2017-11-09 10:57:53 -08:00
Robin Ward 3093074398 UX: Include the flagged person's username on the flagged post 2017-11-09 13:18:33 -05:00
Neil Lalonde 814502f7bb FEATURE: add a Dismiss link to user menu that dismisses all notifications 2017-11-07 10:41:21 -05:00
Guo Xiang Tan abdfac9cb5 FIX: Allow group members to freely exit group option incorrectly disabled.
https://meta.discourse.org/t/cannot-check-allow-members-to-leave-group-freely-when-group-is-configured-to-allow-users-to-send-membership-requests-to-group-owners/73400
2017-11-06 10:30:58 +08:00
ckeboss 93633865d9 Adds primary user group as a class to quote (#5285)
* Adds primary user group as a class to quote

This feature addition will add the class `group-PRIMARY_USER_GROUP` to
the quote `aside`. `PRIMARY_USER_GROUP` will be the primary user group
of the user being quoted. This is similar to the class that is added to
a `topic-post`.

* Remove trailing whitespace

* Fix avatar in test

* Address PR comments

* Fix trailing whitespace
2017-11-03 09:51:40 -04:00
Gerhard Schlager c107e99138 clear localStorage after each test 2017-11-02 23:39:24 +01:00
Robin Ward 05a61fa8e1 FIX: CSS class names changed on group posts 2017-11-02 15:05:41 -04:00
Robin Ward 0a69f2bc77 REFACTOR: Remove many `Discourse.Category.list()` calls 2017-11-01 15:25:35 -04:00
Neil Lalonde 7dc3671490 FEATURE: remove obsolete settings ga_tracking_code and ga_domain_name. Use ga_universal_tracking_code and ga_universal_domain_name instead. 2017-11-01 11:41:51 -04:00
OsamaSayegh 55095bc44e FEATURE: Use ACE for badge queries (#5269)
* FEATURE: Use ACE for badge queries

* Forgot disabled

* When disabled, cursor should be `not-allowed`

* Tests + prefix custom attribute with `data-`
2017-10-30 18:07:49 +11:00
Robin Ward fbd5f1e411 REFACTOR: Rename `store:main` to `service:store` so we can inject it 2017-10-27 13:59:45 -04:00
Joffrey JAFFEUX ae1e4de286 [FIX] better control on value mutation 2017-10-20 13:40:56 -07:00
Régis Hanol 62156885ec UX: remove 🔥heading and ruler button from composer toolbar 2017-10-20 10:59:31 +02:00
Joffrey JAFFEUX 4d041d5b87 [FIX] Fix wizard spec
This commit introduces a mutation on input value given to select-box-kit when value is empty. The refactoring required to avoid this would be too heavy atm, but ultimately we would want to avoid this.
2017-10-19 17:34:56 -07:00
Joffrey JAFFEUX d77ef05ee1 Fix broken tests 2017-10-19 14:32:37 -07:00
Joffrey JAFFEUX ae1743c61f [WIP] select-box-kit refactoring 2017-10-19 12:51:08 -07:00
Robin Ward fb2e581b26 FIX: Headings must begin with `heading--` to avoid some griefing 2017-10-16 11:53:47 -04:00
Robin Ward 5572d1d5f7 Refactor user summary page to use more components 2017-10-13 16:05:40 -04:00
Robin Ward f4decf9193 The `quote-other-topic` class has been removed 2017-10-06 15:16:06 -04:00
Guo Xiang Tan 91c5f928c2 FIX: `Group#mentionable` and `Group#messageable` not fully working. 2017-10-02 16:50:58 +08:00
Guo Xiang Tan a370d7c7fd FIX: Compatibility between Client and Server routing.
mend
2017-09-29 10:34:50 -04:00
Robin Ward df81d109e5 The ability to attach `attrs` when embedding widgets 2017-09-28 16:08:43 -04:00
Guo Xiang Tan 793ccd144e Fix broken JS tests. 2017-09-26 16:15:25 +08:00
Robin Ward b3ffa19f95 FIX: Make sure `Post` records have access to `Site` 2017-09-25 13:18:26 -04:00
Robin Ward 09ed2ed749 Add Suspend User to flags page 2017-09-25 12:28:00 -04:00
Robin Ward 079f108ceb UX: Improve interface for flagging with many flaggers 2017-09-25 12:28:00 -04:00
Robin Ward 6bce3004d9 UX: Nicer selection of suspend duration 2017-09-25 12:28:00 -04:00
Robin Ward 2a56cf8bb6 Tests + Refactoring for Suspension Modal 2017-09-25 12:26:06 -04:00
Robin Ward 6e48884274 Extract out common "cancel" link functionality from modals 2017-09-25 12:25:15 -04:00
Robin Ward 4020409bbf Add support for suspension message 2017-09-25 12:25:14 -04:00
Robin Ward daceeb9700 Refactor user suspension modal 2017-09-25 12:25:14 -04:00
Robin Ward d7c37d9369 Add front end service for staff controls 2017-09-25 12:25:14 -04:00
Robin Ward 5cf50f0034 Adjust flagged posts to use the store 2017-09-25 12:25:14 -04:00
Robin Ward cc1a461254 Convert flags admin to flexbox 2017-09-25 12:25:14 -04:00
Robin Ward 1af4acbb3d Add tests to flagged topics 2017-09-25 12:25:14 -04:00
Robin Ward 40eba8cd93 FEATURE: View flags grouped by topic 2017-09-25 12:25:14 -04:00
Régis Hanol 8ed318c4fe display 'similar to' earlier when composing a post 2017-09-16 01:03:29 +02:00
Joffrey JAFFEUX e6385e4527 attempts to fix broken spec only on CI 2017-09-14 20:34:37 +02:00
Joffrey JAFFEUX 562e48dfb7 adds a dsl to simplify testing of the select-box 2017-09-14 19:50:32 +02:00
Robin Ward 8c2d6118ff Remove some of the last few `fa-icon` helpers 2017-09-14 11:20:36 -04:00
Robin Ward 4f9ba874a9 API so that you don't have to use a global variable for pretender 2017-09-13 11:55:58 -04:00
Joffrey JAFFEUX c06c88b479 cleaner title attribute for select-box 2017-09-12 01:36:58 +02:00
Joffrey JAFFEUX e924920bec uses select-box for pinned-button
This commit also moves more logic in dropdown-select-box instead of
duplicating it for notifications-options and pinned-options
2017-09-11 19:14:22 +02:00
Joffrey JAFFEUX 7f9220a2cd minor select-box fixes
- select row when using tab
- makes sure tab order is correct
- highlight first row when filtering
2017-09-11 00:38:32 +02:00
Joffrey JAFFEUX a0f36a0401 fix broken spec 2017-09-10 21:07:13 +02:00
Joffrey JAFFEUX 4b558638c8 FEATURE: improves keyboard handling of select-box
- arrow keys
- escape key
2017-09-10 19:12:03 +02:00
Joffrey JAFFEUX 950b9e9eaf FIX: keeps as much as possible the same api for select-box components 2017-09-09 20:29:07 +02:00
Joffrey JAFFEUX cf6fb7622e Replaces all notification-options like dropdowns with select-box 2017-09-08 20:47:39 +02:00
Joffrey JAFFEUX dd27c0c80e FIX: supports emojis in pinned topic excerpt 2017-09-07 11:06:04 +02:00
Joffrey JAFFEUX ccf5005feb FEATURE: uses select-box for topic-notifications-button component
- Introduces ComponentConnector to use a component inside a widget
- Use css to set size of components instead of properties
- Smarted positionning
- Style tweaks
2017-09-06 16:58:00 +02:00
Sam Saffron 46ebd0ee40 correct spec and allow for zero allowed iframes 2017-09-01 12:08:55 -04:00
Robin Ward dffb1fc4ee FEATURE: Use Glimmer compiler for widget templates
Widgets can now specify a template which is precompiled using Glimmer's
AST and then converted into our virtual dom code.

Example:

```javascript
createWidget('post-link-arrow', {
  template: hbs`
    {{#if attrs.above}}
      <a class="post-info arrow" title={{i18n "topic.jump_reply_up"}}>
        {{fa-icon "arrow-up"}}
      </a>
    {{else}}
      <a class="post-info arrow" title={{i18n "topic.jump_reply_down"}}>
        {{fa-icon "arrow-down"}}
      </a>
    {{/if}}
  `,

  click() {
    DiscourseURL.routeTo(this.attrs.shareUrl);
  }
});
```
2017-09-01 09:28:16 -04:00
Robin Ward 70706897f4 FIX: Test was failing on high DPI monitor 2017-08-30 15:32:58 -04:00
Robin Ward 3d95bac3fb Migrate away from `#discourse-modal` to `.d-modal` 2017-08-30 15:29:51 -04:00
Robin Ward b100ea1baa FIX: Broken acceptance test 2017-08-30 12:35:02 -04:00
Robin Ward b210c801a4 FIX: Linting error 2017-08-30 11:30:57 -04:00
Joffrey JAFFEUX 746c5927e1 Replaces remaining {{category-chooser}} by {{category-select-box}}
To achieve replacement, this commit also adds support for:
- clearSelectionLabel which will allows to unselect any chosen category
- select-box inside a modal
- fixes minor css positioning issues

Note: {{category-chooser}} will be removed in the next weeks.
2017-08-30 17:04:17 +02:00
Guo Xiang Tan 0a53c589c4 Fix linting. 2017-08-30 15:36:45 +08:00
Joffrey JAFFEUX 1ea5205022 FIX: tests helper do not use es6 2017-08-29 16:16:51 +02:00
Joffrey JAFFEUX 1bcfa87d18 FIX: select-box broken spec
Introduces a test helper for selectBox to simplify these cases.
2017-08-29 15:51:25 +02:00
Joffrey JAFFEUX f101fec19c FIX: improves uncategorized support for category-select-box 2017-08-29 12:48:26 +02:00
Joffrey JAFFEUX 861dbe3b51 select-box refactoring
- more flexibility (allows custom title)
- less re-render
- more robustness
2017-08-29 12:25:54 +02:00
Joffrey JAFFEUX b83c0747d9 FIX: select-box improvments
- more tests for category-select-box
- allows to clear selection
- fix positioning on safari
- focus on click
- do not display uncategorized if not allowed in settings
- fix component state impacting other specs
- better texts
- higher category-select-box on mobile
2017-08-28 14:34:04 +02:00
Joffrey JAFFEUX 14f06c2740 select-box minor fixes 2017-08-25 19:56:57 +02:00
Neil Lalonde 2c56f8df7c FEATURE: show tags in search results 2017-08-25 11:52:59 -04:00
Joffrey JAFFEUX d05df4a337 FIX: better headerText handling on select-box 2017-08-24 18:31:33 +02:00
Joffrey JAFFEUX d52048ad34 Revert "Revert "FEATURE: improves select-box to support category selection on new topic""
This reverts commit 1d90f6016a.
2017-08-24 16:04:47 +02:00
Robin Ward 16b67745d8 FIX: `store:main` error when running QUnit tests checking disabled plugins 2017-08-23 19:34:31 -04:00
Joffrey JAFFEUX 1d90f6016a Revert "FEATURE: improves select-box to support category selection on new topic"
This reverts commit 7b4e302677.
2017-08-23 16:33:03 +02:00
Joffrey JAFFEUX 7b4e302677 FEATURE: improves select-box to support category selection on new topic 2017-08-23 15:08:19 +02:00
Guo Xiang Tan 93fe76fc02 Make eslint happy. 2017-08-21 21:56:22 +09:00
Guo Xiang Tan 9f11223250 Fix `select-box` Qunit tests to use the proper Ember test helpers. 2017-08-16 09:35:56 +09:00
Joffrey JAFFEUX cad6107624 refactors select-box
Note: this commit also now uses select-box for mobile topics controls
2017-08-16 00:41:56 +02:00
Neil Lalonde d506e577a5 FEATURE: if full search returns no results, show google search form 2017-08-15 16:46:41 -04:00
Kyle Zhao c3249f6e93 FEATURE: add full editing access to queued posts (#5047)
For pending new topics: the body of the post, title, categories
and the tags are editable.

For pending new replies: only the body is applicable and thus
editable

DISCUSSION: https://meta.discourse.org/t/66754
2017-08-15 12:44:05 -04:00
Joffrey JAFFEUX 482924b161 FEATURE: initial implementation of an ember native select 2017-08-13 14:34:50 +02:00
Régis Hanol 05a74d2534 FIX: navigation item counters weren't updating properly 2017-08-10 12:22:15 +02:00
Guo Xiang Tan 705f75dd8c Merge pull request #5032 from xrav3nz/ux-hide-options-in-adv-search
UX: exclude irrelevant search filters for anonymous users
2017-08-09 18:21:44 +09:00
Kyle Zhao 9c6c4a7705 restructure search-test to test all filters w/ variable visibiltiy 2017-08-09 04:42:50 -04:00
Guo Xiang Tan a9613163b5 FEATURE: Force user to enter reason when requesting for group membership. 2017-08-09 15:45:28 +09:00
Kyle Zhao cea2a9fe53 UX: exclude irrelevant search filters for anonymous users
On the advanced search page, filters like "I've read", "I'm watch
-ing", etc, are irrelevant to anonymous users and should be hidden
2017-08-08 15:25:40 -04:00
Robin Ward 8dd7c0c984 UX: Convert buttons to `d-button` 2017-08-01 17:24:06 -04:00
Robin Ward 75d10a4098 UX: Add consistent classes to buttons 2017-08-01 17:24:06 -04:00
Neil Lalonde ec85b41078 UX: Move watched words to the Logs section of admin 2017-07-31 17:06:50 -04:00
Sam a13d146251 Correct post deletion spec so it is async 2017-07-28 10:50:18 -04:00
Guo Xiang Tan 4620dfe92d FEATURE: Add group settngs to allow users to leave a group freely.
https://meta.discourse.org/t/split-join-leave-freely-setting-on-groups/65565
2017-07-28 15:00:25 +09:00
Robin Ward 5b590b9637 REFACTOR: Replace some `fa-*` uses with helpers 2017-07-27 14:55:41 -04:00
Guo Xiang Tan 75374c76b3 UX: Display button to message group on group page.
https://meta.discourse.org/t/make-it-easier-to-send-a-message-to-groups/65065
2017-07-27 17:51:25 +09:00
Guo Xiang Tan 9c93a20cf1 Fix incorrect assertion in JS tests. 2017-07-27 17:05:08 +09:00
Neil Lalonde 24cb950432 FEATURE: Watched Words: when posts contain words, do one of flag, require approval, censor, or block 2017-07-26 11:01:09 -04:00
David Taylor febd7621ea Qunit plugin rake tasks (#4985)
* Allow running specific plugin tests using ENV variables

* Add a `rake plugin:qunit` task to match the existing `rake plugin:spec` task

* Improve docker.rake to allow running specific plugin qunit tests

* Purge cache before and after qunit tests

* Stop module auto-loader trying to auto-load tests

* Use URL query parameters to pass config into Qunit, avoiding caching issues

* Oops, searchParams doesn’t work in phantomJS. Parse the URL manually.

* Escape ampersands before passing URL to phantomJS, otherwise multiple parameters go wrong
2017-07-26 09:07:46 -04:00
Sam 17d56a4cb7 FEATURE: use Markdown for image pasted in as opposed to IMG tags 2017-07-25 15:11:38 -04:00
Joffrey JAFFEUX 22c5fb20b4 FIX: emoji-picker broken and skipped specs 2017-07-25 12:23:38 +02:00
Robin Ward bc3a32385c FIX: Empty lines should be selected for block quotes 2017-07-21 16:32:29 -04:00
Arpit Jalan 6d09fbde44 UX: use down chevron icon to expand "show more links.." 2017-07-22 00:10:37 +05:30
Joffrey JAFFEUX c2db2c5c78 FIX: do not store scroll position in local storage 2017-07-21 20:18:32 +02:00
Joffrey JAFFEUX e36d9f55c3 replaces links/imgs by buttons in the emoji-picker 2017-07-21 19:42:50 +02:00
Joffrey JAFFEUX 36b6ed7d8c fix broken specs 2017-07-21 15:57:32 +02:00
Joffrey JAFFEUX 6754205c51 es-lints errors 2017-07-21 14:27:18 +02:00
Joffrey JAFFEUX c906bd3f22 emoji-picker refactoring 2017-07-21 13:35:29 +02:00
Joffrey JAFFEUX bb7241ccc2 simplify emoji-picker recent usage logic 2017-07-19 22:54:56 +02:00
Joffrey JAFFEUX a7090c15ad Skip emoji-picker tests
They are currently failing when using the rake task and not when
loading qunit directly from web ui
2017-07-19 17:07:53 +02:00
Joffrey JAFFEUX be379596e6 skip random failures on travis ci 2017-07-19 16:48:23 +02:00
Joffrey JAFFEUX 7718141ee0 not applicable anymore 2017-07-19 16:48:23 +02:00
Joffrey JAFFEUX c99a5bce8f faster tests 2017-07-19 16:48:23 +02:00
Joffrey JAFFEUX e5d81597b6 removes tests causing timeouts on travais 2017-07-19 16:48:23 +02:00
Joffrey JAFFEUX 6de258d4cf FEATURE: Introduces new emoji-picker 2017-07-19 16:48:23 +02:00
Sam d7d22554ca correct js test 2017-07-17 18:06:11 -04:00
Robin Ward cdb3706025 Track clicks on topics in search results 2017-07-17 15:42:32 -04:00
Sam Saffron d0c5205a52 Feature: Change markdown engine to markdown it
This commit removes the old evilstreak markdownjs engine.

- Adds specs to WhiteLister and changes it to stop using globals
    (Fixes large memory leak)
- Fixes edge cases around bbcode handling
- Removes mdtest which is no longer valid (to be replaced with
    CommonMark)
- Updates MiniRacer to correct minor unmanaged memory leak
- Fixes plugin specs
2017-07-17 11:41:34 -04:00
Sam 79a084dd58 Revert "remove old markdown engine work-in-progress"
This reverts commit ee470b5317.
2017-07-12 18:10:51 -04:00
Sam bcbb9f208d Revert "Integrate new engine, correct old specs"
This reverts commit f1b38ba4fb.
2017-07-12 18:10:07 -04:00
Sam 8caaa6a56e Revert "Remove mdtest, the plan is to use commonmark spec instead"
This reverts commit c64aabc964.
2017-07-12 18:10:03 -04:00
Sam c64aabc964 Remove mdtest, the plan is to use commonmark spec instead 2017-07-12 17:44:40 -04:00
Sam f1b38ba4fb Integrate new engine, correct old specs
corrects edge cases with

- full quotes
- [url] with nested tags
- engine overrides
- onebox applying to non http srcs
2017-07-12 17:44:40 -04:00
Sam Saffron ee470b5317 remove old markdown engine work-in-progress 2017-07-12 17:44:40 -04:00
Robin Ward 754c1e5438 Upgrade to Babel 6 2017-07-05 15:25:23 -04:00
Sam Saffron b8b4970481 correct some tests 2017-07-04 10:01:36 -04:00
Sam e2f57a154b FIX: blockquote button implementation
Previously clicking on blockquote in the middle of sentence
would result in incorrect formatting
2017-06-27 13:32:20 -04:00
Sam 8967d50dc2 Clean up sanitization code
- remove html table test, this is soon to be deprecated
- move sanitization tests into pretty text.rb
- fix up whitelister so it makes a copy of options
2017-06-26 15:21:47 -04:00
Sam 234694b50f Feature: CommonMark support
This adds the markdown.it engine to Discourse.
https://github.com/markdown-it/markdown-it

As the migration is going to take a while the new engine is default
disabled. To enable it you must change the hidden site setting:
enable_experimental_markdown_it.

This commit is a squash of many other commits, it also includes some
improvements to autospec (ability to run plugins), and a dev dependency
on the og gem for html normalization.
2017-06-23 12:01:33 -04:00
Robin Ward cc525b1a8d Upgrade QUnit to latest version 2017-06-15 10:12:07 -04:00
Régis Hanol f943efe1a9 remove use of soon-to-be-deprecated 'Discourse.SiteSettings' (cc @eviltrout) 2017-06-14 10:02:13 +02:00
Robin Ward 867cefc492 Ember.K was deprecated, so let's remove it. 2017-06-13 15:59:48 -04:00
Sam 826f332766 Merge pull request #4901 from jjaffeux/emoji-5.0
Emoji next
2017-06-13 11:12:41 -04:00
Régis Hanol 54e8fb0d89 FEATURE: new 'allow_staff_to_upload_any_file_in_pm' site setting 2017-06-12 22:41:29 +02:00
Arpit Jalan b9c94aa234 FEATURE: add required user fields to invite accept form
UX: make "accept invitation" page consistent with sign up modal
2017-06-12 20:43:07 +05:30
Guo Xiang Tan 684b05f510 FIX: Strip zero-width characters from search terms. 2017-06-07 18:19:47 +09:00
Joffrey JAFFEUX 64336a8c75 Emoji 5.0 support 2017-06-05 14:06:23 +02:00
Robin Ward e66fa82f3a FIX: Don't load JS via SCRIPT tag in QUnit mode 2017-05-31 15:31:24 -04:00
Sam febc2c571f add a test for customize theme controller 2017-05-31 11:18:17 -04:00
Neil Lalonde 0c2a54dbb5 fix failing js test 2017-05-30 15:13:56 -04:00
Arpit Jalan d2c2139da8 FEATURE: require name when accepting invite if 'full name required' setting is enabled 2017-05-29 21:46:43 +05:30
Robin Ward 2820cf2b50 FIX: Broken Acceptance test 2017-05-25 15:56:11 -04:00
Neil Lalonde 0a8e16d049 UX: show short flag descriptions in the flag modal on mobile 2017-05-19 15:35:10 -04:00
Neil Lalonde 019f954c44 fix js test failure 2017-05-18 13:36:45 -04:00
Neil Lalonde dbb814ec6a FIX: allow pasting links into title field that are longer than the max title length 2017-05-18 12:32:47 -04:00
Guo Xiang Tan accd78cd8c Make eslint happy. 2017-05-12 09:31:23 +08:00
Guo Xiang Tan e63614024d FIX: Users can't request to join group due to alias level restriction.
https://meta.discourse.org/t/request-to-join-group-not-working/62371
2017-05-12 09:26:26 +08:00
Sam bc0b9af576 FEATURE: support uploads for themes
This allows themes to bundle various assets
2017-05-10 15:47:11 -04:00
Neil Lalonde b7322b05a0 FIX: some changes in composer affect all visible text editors 2017-05-05 12:59:45 -04:00
Guo Xiang Tan 2b21e5ea7e UX: Display translated group name for automatic groups. 2017-05-05 14:34:47 +08:00
Neil Lalonde c98601129b Move name, avatar, and title fields from profile tab to account tab 2017-05-04 12:04:07 -04:00
Guo Xiang Tan 489c3bc1cd Disable failing JS tests first. 2017-05-04 16:49:12 +08:00
Guo Xiang Tan 94c8410521 FIX: Show share popup only for valid buttons. 2017-05-04 10:31:09 +08:00
Neil Lalonde 7f09bc9a09 Merge pull request #4849 from discourse/prefs
User preferences in tabs
2017-05-03 16:53:26 -04:00
Neil Lalonde 47b816c168 comment test failing on theme widget 2017-05-03 15:33:25 -04:00
Neil Lalonde 96aee443fa wip js test 2017-05-03 13:49:16 -04:00
Robin Ward 12fb20fe1b FEATURE: Allow users to resend/update email from confirmation page 2017-05-03 11:18:01 -04:00
Robin Ward b381372184 Use Ember.js for the `/u/account-created` path so we can add controls 2017-05-03 11:18:01 -04:00
Neil Lalonde 2503241ce5 FEATURE: rebuild user preferences page to use tabs 2017-05-02 16:52:18 -04:00
Sam f5f4c36795 Increase autospec qunit timeout to 600 seconds
Correct it so it refocuses on correct runner after running a test
JS tests can not focus on line so skip in vim mode
2017-05-02 16:02:14 -04:00
Sam 556ef4cfbd FIX: case sensitive unconditional add of exact match in user search 2017-05-01 14:37:16 -04:00
Sam a5fc51a967 improve QUNIT support for autospec 2017-05-01 13:50:28 -04:00
Guo Xiang Tan 59b906ab0d FEATURE: Disable minimum post length check when in PM with non human users.
https://meta.discourse.org/t/discourse-narrative-bot-beta-feedback/58621/65?u=tgxworld
2017-04-27 16:00:22 +08:00
James Kiesel 48c0f3faf3 Use image gallery feature of magnific
commit cc7061e9458d04dd02aad9c02ba3a89306e0fae7
Author: James Kiesel <james.kiesel@gmail.com>
Date:   Tue Apr 25 11:21:08 2017 +0900

    ;

commit 9233be7e432daff605812e6b49042f69d348b6e7
Author: James Kiesel <james.kiesel@gmail.com>
Date:   Tue Apr 25 10:01:26 2017 +0900

    Don't break if $elem is undefined

commit 598a694c070c86df8d9f5ffa1ed84e2f8756e65f
Author: James Kiesel <james.kiesel@gmail.com>
Date:   Tue Apr 25 04:51:14 2017 +0900

    .

commit 1711685a33ccd236011f54d3e652991728530b3a
Author: James Kiesel <james.kiesel@gmail.com>
Date:   Tue Apr 25 04:34:11 2017 +0900

    ;

commit 81703f36c0593250aeac3418fde86660fd307092
Author: James Kiesel <james.kiesel@gmail.com>
Date:   Tue Apr 25 04:12:37 2017 +0900

    Use image gallery functionality in magnific
2017-04-25 11:23:15 +09:00
Guo Xiang Tan 5c39c8f24b UX: Improve the way users set timers for `TopicStatusUpdate`. 2017-04-20 14:25:45 +08:00
Sam a3e8c3cd7b FEATURE: Native theme support
This feature introduces the concept of themes. Themes are an evolution
of site customizations.

Themes introduce two very big conceptual changes:

- A theme may include other "child themes", children can include grand
children and so on.

- A theme may specify a color scheme

The change does away with the idea of "enabled" color schemes.

It also adds a bunch of big niceties like

- You can source a theme from a git repo

- History for themes is much improved

- You can only have a single enabled theme. Themes can be selected by
    users, if you opt for it.

On a technical level this change comes with a whole bunch of goodies

- All CSS is now compiled using a custom pipeline that uses libsass
    see /lib/stylesheet

- There is a single pipeline for css compilation (in the past we used
    one for customizations and another one for the rest of the app

- The stylesheet pipeline is now divorced of sprockets, there is no
   reliance on sprockets for CSS bundling

- CSS is generated with source maps everywhere (including themes) this
    makes debugging much easier

- Our "live reloader" is smarter and avoid a flash of unstyled content
   we run a file watcher in "puma" in dev so you no longer need to run
   rake autospec to watch for CSS changes
2017-04-12 10:53:49 -04:00
Guo Xiang Tan 24d3c77d19 Fix the build. 2017-04-12 10:38:17 -04:00
Guo Xiang Tan 5cb64810cd FIX: Changing notification level in topic footer buttons was not updating timeline. 2017-04-12 14:54:03 +08:00
Robin Ward 40ab2e5667 FEATURE: Let users update their emails before confirming
This allows users who entered a typo or invalid email address when
signing up an opportunity to fix it and resending the confirmation
email to that address.
2017-04-05 16:44:49 -04:00
Robin Ward 0829671963 FIX: Nested quotes weren't rendered properly with BBCode 2017-04-03 14:38:30 -04:00
Robin Ward 7b6242bfbb Minor cleanup of `/users/` rename 2017-03-30 10:23:24 -04:00
Robin Ward 14410b71fb Convert server side paths to use `/u/` 2017-03-30 10:23:24 -04:00
Robin Ward 45a257815a Convert front end paths from `/users/` to `/u/` 2017-03-30 10:23:24 -04:00
Robin Ward 6b976433c9 Support for both `/users/` and `/u/` paths 2017-03-30 10:23:24 -04:00
Robin Ward a4b658920e FIX: Clear `sessionStorage` between click track tests 2017-03-27 16:16:14 -04:00
Arpit Jalan ec2a66d1f0 FEATURE: make summary as first tab on user page
https://meta.discourse.org/t/custom-user-fields-show-on-activity-but-not-summary-page/59196/3?u=techapj
2017-03-21 23:12:28 +05:30
Neil Lalonde 22f197c153 FEATURE: subcategory list style: boxes with featured topics 2017-03-16 11:54:45 -04:00
Guo Xiang Tan bb85795934 FIX: Leave group membership button not updating.
https://meta.discourse.org/t/leave-group-button-on-groups-page-doesnt-give-any-feedback/57359/4
2017-03-16 11:33:55 +08:00
Guo Xiang Tan 83d2e63771 Make eslint happy. 2017-03-14 11:47:35 +08:00
Guo Xiang Tan 8e45322b09 FIX: Only group admins can see group edit page. 2017-03-14 11:45:58 +08:00
Neil Lalonde 6d7e968e30 FEATURE: box-style rendering of sub-categories 2017-03-13 15:25:52 -04:00
Régis Hanol dd60cb82c3 UX: add client-side rate limit on click counters 2017-03-13 11:31:37 +01:00
Guo Xiang Tan b419a5765e FEATURE: Add seen/unseen filters to advanced search UI.
https://meta.discourse.org/t/advanced-search-posts-that-i-have-seen/57966
2017-03-09 10:46:06 +08:00
Robin Ward c310a32ac1 FIX: Broken tests. :( 2017-03-07 12:36:31 -05:00
Guo Xiang Tan 2a35abf757 Fix the build. 2017-03-02 12:36:15 +08:00
Neil Lalonde 262016604d FEATURE: each category can control how many topics to show on categories page 2017-03-01 15:12:57 -05:00