API Docs for: 1.0.0
Show:

File: Resources/public/js/views/fields/ez-media-view.js

/*
 * Copyright (C) eZ Systems AS. All rights reserved.
 * For full copyright and license information view LICENSE file distributed with this source code.
 */
YUI.add('ez-media-view', function (Y) {
    "use strict";
    /**
     * Provides the Media field view
     *
     * @module ez-media-view
     */
    Y.namespace('eZ');

    var IS_UNSUPPORTED = 'is-media-unsupported';

    /**
     * The Media field view
     *
     * @namespace eZ
     * @class MediaView
     * @constructor
     * @extends eZ.FieldView
     */
    Y.eZ.MediaView = Y.Base.create('mediaView', Y.eZ.FieldView, [], {

        render: function () {
            Y.eZ.FieldView.prototype.render.call(this);
            this._watchPlayerEvents();
            return this;
        },

        _variables: function () {
            return {
                "isAudio": this.get('fieldDefinition').fieldSettings.mediaType === "TYPE_HTML5_AUDIO",
            };
        },

        /**
         * Adds the unsupported class when the file can not read by the browser
         *
         * @method _mediaError
         * @param {Node} player the video/audio node
         */
        _mediaError: function (player) {
            var error = player.get('error');

            if ( error && error.code === error.MEDIA_ERR_SRC_NOT_SUPPORTED ) {
                this.get('container').addClass(IS_UNSUPPORTED);
            }
        },

        /**
         * Sets the event handler on the video/audio element to detect whether
         * the file is supported.
         *
         * @method _watchPlayerEvents
         * @protected
         */
        _watchPlayerEvents: function () {
            var that = this,
                container = this.get('container'),
                player = container.one('.ez-media-player');

            if ( !player ) {
                return;
            }
            this._attachedViewEvents.push(player.on('error', function () {
                that._mediaError(player);
            }));
        },
    });

    Y.eZ.FieldView.registerFieldView('ezmedia', Y.eZ.MediaView);
});