/*
* Copyright 2015 Anyware Services
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This class controls a ribbon controller that is able to test if test target
* (which should be a target) is modifiable.
* @private
*/
Ext.define('Ametys.plugins.web.zone.controller.ModifiableZoneItemController', {
extend: 'Ametys.web.controller.WebButtonController',
/**
* @cfg {Boolean} [enabled-on-modifiable-only=true] If true the controller will be disabled the selection is not modifiable
*/
/**
* @cfg {String} modifiable-description-no The description text used for tooltip when the selection is not modifiable
*/
areSameTargets: function(target1, target2)
{
var match = this.callParent(arguments);
return match && target1.getParameters()['zoneitem-id'] == target2.getParameters()['zoneitem-id'];
},
additionalErrorDescriptionOnSelectionChanged: function(targets)
{
var additionalErrorDesc = this.callParent(arguments);
if (additionalErrorDesc != null)
{
// Parent condition failed
return additionalErrorDesc;
}
var enabledOnModifiableOnly = String(this.getInitialConfig("enabled-on-modifiable-only") || 'true') == 'true';
var target = targets[0];
if (enabledOnModifiableOnly && target.getParameters()['zoneitem-id'] != null)
{
var zoneItemId = target.getParameters()['zoneitem-id'];
var zoneItemTarget = target.getSubtarget(function (target) { return target.getId() == 'zoneitem' && target.getParameters().id == zoneItemId});
if (!zoneItemTarget.getParameters().isModifiable)
{
return this.getInitialConfig('modifiable-description-no') || '';
}
}
return null;
}
});