Commit Graph

32 Commits

Author SHA1 Message Date
Kyle Zhao
ffc241eb25
FIX: multiple loadScript to the same url may resolve prematurely (#6474)
This is how `loadScript(url)` currently deals with multiple concurrent requests

1. Check existing `<script>` tags, and mark existing scripts (other than the 
   input `url`) as loaded
2. Find "true" `url` of the requested resource (CDN, subfolder path, etc)
3. Check if we have loaded the resource with that "true" `url`, and resolve 
   immediately if we have
4. Otherwise insert a `<script>` tag with the "true" `url` to load it

For example, in a subfolder install:

- Input `url` = `/javascripts/script.js`
- "True" `url` = `/subfolder/javascript/script.js`

And the _very_ subtle bug here is that we should use also use the true `url` 
for step (1), because:

- Since the input and true `url` are different, we mistakenly mark the true 
  `url` as loaded in step one 
- After finding the true `url`, and setting `loaded[trueUrl] = true` in (1), we
  resolve the promise prematurely, when the resource could still be loading
2018-10-11 08:55:36 +08:00
Kyle Zhao
373d6e3fe6
always loadScript with a script tag (#6411)
to avoid Content Security Policy unsafe-line violations
2018-10-01 10:06:01 +08:00
Joffrey JAFFEUX
03a7d532cf
DEV: introduces prettier for es6 files 2018-06-15 17:03:24 +02:00
kleinfreund
4ce1d230c7 Prefer throwing a new Error object instead of just a string expression 2018-06-12 12:56:22 +10:00
Guo Xiang Tan
87a1ff15fd Treat URL as loaded when loading script with tag. 2017-07-19 10:25:13 +09:00
Guo Xiang Tan
2ddf2e0e95 FIX: Concurently loading deferred loading of a script incorrectly resolves the promise. 2017-07-17 14:41:46 +09:00
Guo Xiang Tan
d613f3f559 Fix guard against concurrently loading of assets. 2017-07-17 13:04:30 +09:00
Robin Ward
007873af3c FIX: Don't run in testing mode 2017-06-02 12:42:00 -04:00
Robin Ward
62e6108756 FIX: Improper error message 2017-06-02 12:37:03 -04:00
Robin Ward
e66fa82f3a FIX: Don't load JS via SCRIPT tag in QUnit mode 2017-05-31 15:31:24 -04:00
Sam
8628a57f4e FIX: colors picker not working with CDN 2017-04-20 11:04:23 -04: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
Robin Ward
e03d5e2140 Reapply Ember 2.10 for good this time!
This reverts commit ddd299f4aa.
2016-12-19 11:19:10 -05:00
Robin Ward
ddd299f4aa Revert "Revert "Revert Ember 2.10+ for a short while""
This reverts commit 76bbc481cb.
2016-12-16 10:29:30 -05:00
Robin Ward
76bbc481cb Revert "Revert Ember 2.10+ for a short while"
This reverts commit 21682fd60b.
2016-12-16 09:52:29 -05:00
Robin Ward
21682fd60b Revert Ember 2.10+ for a short while 2016-12-15 16:43:38 -05:00
Robin Ward
0348f23f6d FIX: Register a test waiter rather than using hidden properties 2016-12-15 11:36:21 -05:00
Robin Ward
3d21805022 FIX: Backwards compatibility for plugins who sanitize 2016-07-11 12:57:05 -04:00
Robin Ward
b8125b3512 REFACTOR: Remove Discourse.Ajax 2016-07-11 12:57:05 -04:00
Robin Ward
a546395397 REFACTOR: Migrate markdown functionality in ES6 2016-07-11 12:57:05 -04:00
Sam
ada7b4a4e8 FIX: guard against concurrent loading of deferred assets 2015-05-22 15:07:04 +10:00
Robin Ward
d90063fc59 FIX: Error with ace editor and new ember.
Fix upgrades ace editor, which was a huge headache due to AMD.
2015-05-13 16:25:33 -04:00
Sam
f359cdeddc remove hacky protocol code, not needed 2015-03-13 20:50:38 +11:00
Sam
4301ce6613 another try at a fix 2015-03-13 20:05:24 +11:00
Sam
a09d471514 Correct CDN url creation for "//" rooted CDNs 2015-03-13 19:31:33 +11:00
Sam
08abb85682 oops 2015-03-13 18:50:34 +11:00
Sam
f6d56fef9e correct behavior 2015-03-13 18:33:47 +11:00
Sam
20ab1f97e4 REGRESSION: not caching async scripts, remove cache buster 2015-03-13 16:55:27 +11:00
Sam
a82530012a FEATURE: Allow selection of highlight js languages
PERF: stop loading highlight js on load

To get latest highlight js run bin/rake highlightjs:update
2015-03-13 16:18:59 +11:00
Robin Ward
3ecb58980f FIX: Allow loadScript to use script tags if the JS library require it. 2015-03-12 13:09:17 -04:00
Robin Ward
de4e4f2b98 Replace $LAB with path aware loadScript that uses jQuery 2015-03-09 14:39:39 -04:00
Robin Ward
fb726cfa0c Replace Discourse.script global with a module 2015-03-09 14:39:39 -04:00