The mark started function for the completions scheduled task can be very
slow and causes performance issues when running. By splitting this into
it's own task it can be managed independantly from the other parts which
update regularly.
API functions do not know if they are being called from a web page, or a
web-service. They need a single function to call to correctly apply
filters, strip tags etc that knows the correct way to do this based on
the way it was called (e.g. webservices allow parameters for skipping
filters etc).
So here we are fixing the default for the filter argument used in
external_format_text and adding a matching external_format_string.
Fallback to guest user token when no user is specified in rss_get_url
rather than generating a junk token which is no use to anyone, this
matches existing logic which has been in place in forum for a while
and avoids custom handling all over the place.
If the files in the draft area have been modified more recently than the timestamp
of the draft - do not restore the files, or you will delete any newer files. We
cannot really guess here - merging the 2 lists of files will be wrong.
The first ajax load fetches the template and puts it in localstorage + a js var
The second load gets it from local storage, but does not put it in the js var.
The pix_icon helper expects it to be in the js var always.
It turns out that, after all these years, we've been doing it wrong.
The YUI Loader should be loaded at the top of the body, not in the head.
Having it in the head means that the body has not yet loaded, and we see
a number of minor issues for scripts which happen very early in the load
process. One of these is the creation of invalid HTML from the YUI loader
because it is not able to insert in the body as it has not yet been
created.
To be safe, we must move all JS to the same point (because of unknown
dependencies between them). These should be placed as early in the body as
possible.
We also change the way in which the legacy YUI css modules are loaded.
We often do isEqual tests but where a field, may have a single exception.
Ordinarily we can handle this easily by breaking the test down, but when
dealing with mocked objects we can only pass an instance of a
PHPUnit_Framework_Constraint, or a single value (which is cast to an
instance of PHPUnit_Framework_Constraint_IsEqual).
To deal with instances of time-based exception, we need to be able to
compare simple objects and classes where one or two values may be
different.
In order to have a consistant browser behavior and prevent nesting of
subscripts and superscripts, tags are converted to CSS classes and then
the CSS classes in the selection are toggeled using the rangy crossbrowser
selection library already included in Atto without using an execCommand.
Previously duplicate users could be returned when they had
done duplicate badge criteria - this would lead to a duplicate
constraint being hit as they were attempted to be awarded twice.