Drupal 8.0.0 beta 12. More info: https://www.drupal.org/node/2514176
This commit is contained in:
commit
9921556621
13277 changed files with 1459781 additions and 0 deletions
121
core/modules/contextual/js/toolbar/models/StateModel.js
Normal file
121
core/modules/contextual/js/toolbar/models/StateModel.js
Normal file
|
@ -0,0 +1,121 @@
|
|||
/**
|
||||
* @file
|
||||
* A Backbone Model for the state of Contextual module's edit toolbar tab.
|
||||
*/
|
||||
|
||||
(function (Drupal, Backbone) {
|
||||
|
||||
"use strict";
|
||||
|
||||
Drupal.contextualToolbar.StateModel = Backbone.Model.extend(/** @lends Drupal.contextualToolbar.StateModel# */{
|
||||
|
||||
/**
|
||||
* @type {object}
|
||||
*
|
||||
* @prop {bool} isViewing
|
||||
* @prop {bool} isVisible
|
||||
* @prop {number} contextualCount
|
||||
* @prop {Drupal~TabbingContext} tabbingContext
|
||||
*/
|
||||
defaults: /** @lends Drupal.contextualToolbar.StateModel# */{
|
||||
|
||||
/**
|
||||
* Indicates whether the toggle is currently in "view" or "edit" mode.
|
||||
*
|
||||
* @type {bool}
|
||||
*/
|
||||
isViewing: true,
|
||||
|
||||
/**
|
||||
* Indicates whether the toggle should be visible or hidden. Automatically
|
||||
* calculated, depends on contextualCount.
|
||||
*
|
||||
* @type {bool}
|
||||
*/
|
||||
isVisible: false,
|
||||
|
||||
/**
|
||||
* Tracks how many contextual links exist on the page.
|
||||
*
|
||||
* @type {number}
|
||||
*/
|
||||
contextualCount: 0,
|
||||
|
||||
/**
|
||||
* A TabbingContext object as returned by {@link Drupal~TabbingManager}:
|
||||
* the set of tabbable elements when edit mode is enabled.
|
||||
*
|
||||
* @type {?Drupal~TabbingContext}
|
||||
*/
|
||||
tabbingContext: null
|
||||
},
|
||||
|
||||
/**
|
||||
* Models the state of the edit mode toggle.
|
||||
*
|
||||
* @constructs
|
||||
*
|
||||
* @augments Backbone.Model
|
||||
*
|
||||
* @param {object} attrs
|
||||
* @param {object} options
|
||||
* An object with the following option:
|
||||
* @param {Backbone.collection} options.contextualCollection
|
||||
* The collection of {@link Drupal.contextual.StateModel} models that
|
||||
* represent the contextual links on the page.
|
||||
*/
|
||||
initialize: function (attrs, options) {
|
||||
// Respond to new/removed contextual links.
|
||||
this.listenTo(options.contextualCollection, {
|
||||
'reset remove add': this.countContextualLinks,
|
||||
'add': this.lockNewContextualLinks
|
||||
});
|
||||
|
||||
this.listenTo(this, {
|
||||
// Automatically determine visibility.
|
||||
'change:contextualCount': this.updateVisibility,
|
||||
// Whenever edit mode is toggled, lock all contextual links.
|
||||
'change:isViewing': function (model, isViewing) {
|
||||
options.contextualCollection.each(function (contextualModel) {
|
||||
contextualModel.set('isLocked', !isViewing);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Tracks the number of contextual link models in the collection.
|
||||
*
|
||||
* @param {Drupal.contextual.StateModel} contextualModel
|
||||
* The contextual links model that was added or removed.
|
||||
* @param {Backbone.Collection} contextualCollection
|
||||
* The collection of contextual link models.
|
||||
*/
|
||||
countContextualLinks: function (contextualModel, contextualCollection) {
|
||||
this.set('contextualCount', contextualCollection.length);
|
||||
},
|
||||
|
||||
/**
|
||||
* Lock newly added contextual links if edit mode is enabled.
|
||||
*
|
||||
* @param {Drupal.contextual.StateModel} contextualModel
|
||||
* The contextual links model that was added.
|
||||
* @param {Backbone.Collection} [contextualCollection]
|
||||
* The collection of contextual link models.
|
||||
*/
|
||||
lockNewContextualLinks: function (contextualModel, contextualCollection) {
|
||||
if (!this.get('isViewing')) {
|
||||
contextualModel.set('isLocked', true);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Automatically updates visibility of the view/edit mode toggle.
|
||||
*/
|
||||
updateVisibility: function () {
|
||||
this.set('isVisible', this.get('contextualCount') > 0);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(Drupal, Backbone);
|
Reference in a new issue