src/cm/media/js/lib/yui/yui3-3.15.0/build/pjax/pjax.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('pjax', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
Provides seamless, gracefully degrading Pjax (pushState + Ajax) functionality,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
which makes it easy to progressively enhance standard links on the page so that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
they can be loaded normally in old browsers, or via Ajax (with HTML5 history
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
support) in newer browsers.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
@module pjax
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
@main
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
@since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
A stack of middleware which forms the default Pjax route.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
@property defaultRoute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
@type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
@since 3.7.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
var defaultRoute = ['loadContent', '_defaultRoute'],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
Fired when an error occurs while attempting to load a URL via Ajax.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
@event error
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
@param {Object} content Content extracted from the response, if any.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
    @param {Node} content.node A `Y.Node` instance for a document fragment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
        containing the extracted HTML content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    @param {String} [content.title] The title of the HTML page, if any,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
        extracted using the `titleSelector` attribute. If `titleSelector` is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
        not set or if a title could not be found, this property will be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
        `undefined`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
@param {String} responseText Raw Ajax response text.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
@param {Number} status HTTP status code for the Ajax response.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
@param {String} url The absolute URL that failed to load.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
@since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
EVT_ERROR = 'error',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
Fired when a URL is successfully loaded via Ajax.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
@event load
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
@param {Object} content Content extracted from the response, if any.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
    @param {Node} content.node A `Y.Node` instance for a document fragment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
        containing the extracted HTML content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
    @param {String} [content.title] The title of the HTML page, if any,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        extracted using the `titleSelector` attribute. If `titleSelector` is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
        not set or if a title could not be found, this property will be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
        `undefined`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
@param {String} responseText Raw Ajax response text.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
@param {Number} status HTTP status code for the Ajax response.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
@param {String} url The absolute URL that was loaded.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
@since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
EVT_LOAD = 'load';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
Provides seamless, gracefully degrading Pjax (pushState + Ajax) functionality,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
which makes it easy to progressively enhance standard links on the page so that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
they can be loaded normally in old browsers, or via Ajax (with HTML5 history
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
support) in newer browsers.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
@class Pjax
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
@extends Router
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
@uses PjaxBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
@uses PjaxContent
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
@constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
@param {Object} [config] Config attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
@since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
Y.Pjax = Y.Base.create('pjax', Y.Router, [Y.PjaxBase, Y.PjaxContent], {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
    // -- Lifecycle Methods ----------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
    initializer: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
        this.publish(EVT_ERROR, {defaultFn: this._defCompleteFn});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
        this.publish(EVT_LOAD,  {defaultFn: this._defCompleteFn});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
    // -- Protected Methods ----------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
    Default Pjax route callback. Fires either the `load` or `error` event based
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
    on the status of the `Y.io` request made by the `loadContent()` middleware.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
    **Note:** This route callback assumes that it's called after the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
    `loadContent()` middleware.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
    @method _defaultRoute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
    @param {Object} req Request object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    @param {Object} res Response Object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
    @param {Function} next Function to pass control to the next route callback.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
    @see Y.Pjax.defaultRoute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
    _defaultRoute: function (req, res, next) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
        var ioResponse = res.ioResponse,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
            status     = ioResponse.status,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            event      = status >= 200 && status < 300 ? EVT_LOAD : EVT_ERROR;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
        this.fire(event, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
            content     : res.content,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
            responseText: ioResponse.responseText,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
            status      : status,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            url         : req.ioURL
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        next();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
    // -- Event Handlers -------------------------------------------------------
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
    Default event handler for both the `error` and `load` events. Attempts to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
    insert the loaded content into the `container` node and update the page's
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
    title.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
    @method _defCompleteFn
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    @param {EventFacade} e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
    @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
    @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
    _defCompleteFn: function (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
        var container = this.get('container'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
            content   = e.content;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
        if (container && content.node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
            container.setHTML(content.node);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
        if (content.title && Y.config.doc) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
            Y.config.doc.title = content.title;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
        Node into which content should be inserted when a page is loaded via
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
        Pjax. This node's existing contents will be removed to make way for the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
        new content.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
        If not set, loaded content will not be automatically inserted into the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
        page.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
        @attribute container
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
        @type Node
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
        @default null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
        @since 3.5.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
        **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
        container: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
            value : null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
            setter: Y.one
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
        // Inherited from Router and already documented there.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
        routes: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
            value: [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
                {path: '*', callbacks: defaultRoute}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
            ]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
    // Documented towards the top of this file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
    defaultRoute: defaultRoute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
}, '@VERSION@', {"requires": ["pjax-base", "pjax-content"]});