Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-53056

Improve the fragments API

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.1
    • Fix Version/s: 3.1
    • Component/s: JavaScript
    • Labels:

      Description

      There are some problems, and inflexible bits of the new fragments javascript API.

      1. It does not notify the filters about inserted content
      2. It does not return a promise so there is no way to chain actions after the fragment is loaded
      3. It does not allow any control over how the dom nodes are injected (fade in etc)
      4. It is not using the safe YUI instance from core/yui
      5. The javascriptnodeidentifier argument is unnessesary
      6. It does not need to remove event listeners from script nodes.
      7. It does not pass the context to the callback so it can be verified.
      8. The arguments are passed from javascript as a named array - but through php as a flat array which means the order is undetermined.

      A better API would be to change fragmentAppend to loadFragment which returns a promise. The promise will be resolved with the html and js variables and the caller is responsible for adding them to the page. They can re-use the templates.replaceNodeContents function to add the nodes - which will correctly notify the filters etc.

      There is some code in there to cleanup YUI event listeners - I'll check the YUI source to see if that is truely needed - and if so - we can add it to the templates.replaceNode and templates.replaceNodeContents functions.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              damyon Damyon Wiese
              Reporter:
              damyon Damyon Wiese
              Peer reviewer:
              Ryan Wyllie
              Integrator:
              Andrew Nicols
              Tester:
              Simey Lameze
              Participants:
              Component watchers:
              Andrew Nicols, Jun Pataleta, Michael Hawkins, Shamim Rezaie, Simey Lameze
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Fix Release Date:
                23/May/16