API Docs for: 1.0.0
Show:

File: Resources/public/js/views/fields/ez-relationlist-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-relationlist-view', function (Y) {
    "use strict";
    /**
     * Provides the Relation list View class
     *
     * @module ez-relationlist-view
     */
    Y.namespace('eZ');

    /**
     * The relation list view
     *
     * @namespace eZ
     * @class RelationListView
     * @constructor
     * @extends eZ.FieldView
     */
    Y.eZ.RelationListView = Y.Base.create('relationlistView', Y.eZ.FieldView, [Y.eZ.AsynchronousView], {
        initializer: function () {
            this._fireMethod = this._fireLoadObjectRelations;
            this._watchAttribute = 'relatedContents';
        },

        /**
         * Checks whether the field is empty
         *
         * @method _isFieldEmpty
         * @protected
         * @return {Boolean}
         */
        _isFieldEmpty: function () {
            var fieldValue = this.get('field').fieldValue;

            return (!fieldValue || !fieldValue.destinationContentIds || !fieldValue.destinationContentIds.length);
        },

        /**
         * Fire the `loadObjectRelations` event to retrieve the related contents
         *
         * @method _fireLoadObjectRelations
         * @protected
         */
        _fireLoadObjectRelations: function () {
            if (!this._isFieldEmpty()){
                this.fire('loadObjectRelations', {
                    relationType: 'ATTRIBUTE',
                    fieldDefinitionIdentifier: this.get('fieldDefinition').identifier,
                    content: this.get('content'),
                });
            }
        },

        /**
         * Returns an object containing the additional variables
         *
         * @method _variables
         * @protected
         * @return Object
         */
        _variables: function () {
            var relatedContents = this.get('relatedContents'),
                relatedContentsJSON = [];

            Y.Array.each(relatedContents, function (value) {
                relatedContentsJSON.push(value.toJSON());
            });

            return {
                relatedContents: relatedContentsJSON,
                loadingError: this.get('loadingError'),
            };
        },
    },{
        ATTRS: {
            /**
             * The related contents of the relation list
             *
             * @attribute relatedContents
             * @type Array
             */
            relatedContents: {
                value: null,
            },
        },
    });

    Y.eZ.FieldView.registerFieldView('ezobjectrelationlist', Y.eZ.RelationListView);
});