Commit Graph

112 Commits

Author SHA1 Message Date
Robin Ward
c322cccd53 FIX: Memory Leaks when decorating posts (#7749)
* Remove long-deprecated method

* FIX: Memory Leaks when decorating posts

Previously we'd keep creating mixins dynamically when decorating the
same class.

This code changes the API to recommend an `id` parameter for each
decorator which will avoid leaks. All plugins should be updated to
include this parameter, although if they don't in the meantime it'll
just mean a warning in the console (and a continued leak.)
2019-06-11 17:21:23 +02:00
Dan Ungureanu
28dcf445b7 DEV: Pass editor to plugin hook handling composer uploads. (#7673) 2019-06-03 12:07:25 +10:00
Robin Ward
85d8d5d092 FIX: Lint 2019-04-18 13:49:28 -04:00
Robin Ward
8e77b4d58e FIX: Replace references to flags in the header with review 2019-04-18 13:25:23 -04:00
tshenry
cc8082138f
Fix typos 2019-03-20 00:06:12 -07:00
Dan Ungureanu
91bd0becaa DEV: Allow topics to register default topic order criteria. (#7158) 2019-03-13 16:44:08 +01:00
Penar Musaraj
4955ab1689 DEV: add replaceTagRenderer to pluginApi 2019-02-20 14:52:56 -05:00
Joffrey JAFFEUX
6c195640b9
FEATURE: adds an API to register topic footer buttons 2019-02-07 14:43:33 +01:00
Dan Ungureanu
2c222e16fe FEATURE: Returning falsy value from upload handler stops upload. (#6969) 2019-02-05 10:54:11 +01:00
Joffrey JAFFEUX
0d0303e7ea
FIX: more resilient lookup in plugin-api (#6961)
Ember3 is more picky about having a container being destroyed and it's easier to cause exceptions, especially in tests.

This fix has been initially created for an exception occuring in tests when running discourse-code-review and discourse-polls tests at the same time. `getCurrentUser` method body was failing as the container was destroyed.

Original  stacktrace:

```
"Error: Assertion Failed: expected container not to be destroyed
    at new EmberError (ember:2929:31)
    at assert (ember:1793:23)
    at Container.lookup (ember:17736:64)
    at PluginApi.getCurrentUser (discourse/lib/plugin-api:56:31)
    at allowUser (javascripts/discourse/initializers/init-code-review:38:29)
    at eval (javascripts/discourse/initializers/init-code-review:78:11)
    at eval (select-kit/mixins/plugin-api:86:19)
    at Array.forEach (<anonymous>)
    at eval (select-kit/mixins/plugin-api:85:44)
    at Array.forEach (<anonymous>)"
```
2019-01-29 16:54:04 +01:00
Penar Musaraj
9886934ef5 DEV: fix some deprecated SVG icon refs 2019-01-22 14:42:00 -05:00
Joffrey JAFFEUX
80d42b4ea2
icons deprecations fixes (#6920) 2019-01-22 12:02:02 +01:00
Penar Musaraj
a953b71797 FEATURE: allow custom HighlightJS languages
Adds pluginApi function that allows themes and plugins to register languages for HighlightJS.
2019-01-02 19:07:36 -05:00
Penar Musaraj
f5c4ab0573 Add category link renderer to plugin API (#6787)
* Add category link renderer to plugin API

- lets themes/plugins override the category link display

- planning to use this in a "category icons" theme component

* small code review fix

* Code review refactor
2018-12-19 10:26:09 +01:00
Régis Hanol
0f5aeab003 DEV: enable no-alert & no-console eslint rules 2018-11-14 23:17:56 +01:00
Penar Musaraj
0ea8c1943f Let plugins decorate banner topic, fixes local dates in banners (#6452) 2018-10-10 17:27:23 +08:00
Joffrey JAFFEUX
17087eff2a
FIX: Reset tags on category change (#6363) 2018-09-05 17:18:52 +02:00
David Taylor
e7e8f4ef4c Add plugin API for handling uploads with specific file extensions 2018-08-17 16:08:47 +01:00
Guo Xiang Tan
ef78268c01 Give ExtraNavItem more control over when it can be displayed. 2018-07-30 17:30:13 +08:00
Joffrey JAFFEUX
03a7d532cf
DEV: introduces prettier for es6 files 2018-06-15 17:03:24 +02:00
Joffrey JAFFEUX
eddcb07f03 FEATURE: adds plugin sharing api 2018-06-13 13:25:51 +02:00
Sam
11b544ef4e DEV: add support for custom post message callbacks
Allows for cleaner subscription to changes by plugins, polls will move to
it.
2018-05-24 12:34:53 +10:00
Sam
7dd68e64d9 FEATURE: allow plugins to modify class statics
Adds `modifyClassStatic` to plugin api which can be used to amend static
methods on a class
2018-05-15 16:01:51 +10:00
Sam
9c6cf9eb14 FIX: decorate user stream should include element
In the past we would call the decorate function with no element
this made the extension on user stream pointless
2018-05-07 09:50:56 +10:00
Sam
458b9c3a62 FEATURE: suppress duplicate username/names containing .
- Adds official API to disable suppression if needed
2018-04-27 11:41:16 +10:00
Régis Hanol
3a58dc0858 Add new 'jumpToPostId' plugin API method 2018-03-24 02:43:39 +01:00
Robin Ward
08db10491e Adds a new plugin API for adding classes to be shown on user avatars 2018-02-01 15:24:26 -05:00
Joffrey JAFFEUX
56834dbd98
FEATURE: select-kit api to modify collection header 2018-01-26 14:42:24 +01:00
Neil Lalonde
718e932b44 FEATURE: plugins can send more data to Google Tag Manager 2018-01-17 11:18:17 -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
c1ae562389 Add support for app events in plugin api, plus an event for custom html 2018-01-05 16:45:57 -05: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
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
Robin Ward
a0dd75ba88 FEATURE: New API to create a custom formatter for displaying usernames
This is not exhaustive right now, but a good start and we can add to
it over time.
2017-10-30 13:27:08 -04:00
Robin Ward
fbd5f1e411 REFACTOR: Rename store:main to service:store so we can inject it 2017-10-27 13:59:45 -04:00
Robin Ward
954013a45c Use appEvents for page tracking so widgets can listen to it easily 2017-09-28 14:20:32 -04:00
Robin Ward
cb78ffd328 <<<<<<< HEAD
=======
>>>>>>> FEATURE: Add ability to claim topics on flagged topics page
Bump Plugin API version
2017-09-25 12:28:01 -04:00
Robin Ward
e809996c2a Allow modifyClass to operate on optional classes.
This is useful if you want to modify an admin class that might not be
present for regular users.
2017-09-25 12:28:00 -04:00
Robin Ward
e4e27a4b83 New API for replacing an icon 2017-09-15 13:54:47 -04:00
Régis Hanol
15fa27a1ff Add warning when using the 'modifyClass' plugin API after it's been cached in the container 2017-08-08 20:07:35 +02:00
Régis Hanol
125cc356f3 FIX: don't break the site when adding a navigation item without a 'name' field 2017-08-07 10:45:35 +02:00
Régis Hanol
4b53fe3cc7 new 'addNavigationBarItem' plugin api 2017-08-05 02:23:35 +02:00
Robin Ward
41afd9c818 Bump Plugin API version for icon api 2017-07-27 15:13:03 -04:00
Robin Ward
e87125b63c FEATURE: Plugins can overwrite and add support for new icons 2017-07-26 13:21:17 -04:00
Robin Ward
8ae445766f Upgrade Ember to 2.13 2017-06-15 10:12:07 -04:00
Robin Ward
733b0009cb FIX: Don't memoize the currentUser in case some plugins use it too early 2017-05-16 16:35:18 -04:00
James Kiesel
3b55ceffb3 Use local var for additionalPanels 2017-03-29 08:52:50 +09:00
James Kiesel
c99883cf65 SEMICOLONS ;.; 2017-03-25 21:44:28 +13:00
James Kiesel
a4127a8f71 Add addAdditionalHeader widget to pluginApi 2017-03-25 21:33:55 +13:00
Sam
0c03ccb01e FEATURE: allow plugins to transform, the transformed post
This allows plugins to amend posts prior to rendering.
2017-03-07 17:12:31 -05:00