Merge pull request #960 from mabashian/stream-awfeature

Hide Activity Stream button when the feature is turned off
This commit is contained in:
Michael Abashian
2016-02-15 11:08:37 -05:00
3 changed files with 56 additions and 4 deletions

View File

@@ -15,6 +15,27 @@ export default {
label: "ACTIVITY STREAM"
},
resolve: {
features: ['FeaturesService', 'ProcessErrors', '$state', function(FeaturesService, ProcessErrors, $state) {
FeaturesService.get()
.then(function(features) {
if(FeaturesService.featureEnabled('activity_streams')) {
// Good to go - pass the features along to the controller.
return features;
}
else {
// The activity stream feature isn't enabled. Take the user
// back to the dashboard
$state.go('dashboard');
}
})
.catch(function (response) {
ProcessErrors(null, response.data, response.status, null, {
hdr: 'Error!',
msg: 'Failed to get feature info. GET returned status: ' +
response.status
});
});
}],
subTitle:
[ '$stateParams',
'Rest',

View File

@@ -1,7 +1,5 @@
/* jshint unused: vars */
export default
[ 'templateUrl', '$state', function(templateUrl, $state) {
[ 'templateUrl', '$state', 'FeaturesService', 'ProcessErrors', function(templateUrl, $state, FeaturesService, ProcessErrors) {
return {
restrict: 'E',
templateUrl: templateUrl('bread-crumb/bread-crumb'),
@@ -32,10 +30,35 @@ export default
streamConfig = (toState && toState.data) ? toState.data : {};
if(streamConfig && streamConfig.activityStream) {
scope.showActivityStreamButton = true;
// Check to see if activity_streams is an enabled feature. $stateChangeSuccess fires
// after the resolve on the state declaration so features should be available at this
// point. We use the get() function call here just in case the features aren't available.
// The get() function will only fire off the server call if the features aren't already
// attached to the $rootScope.
FeaturesService.get()
.then(function(features) {
if(FeaturesService.featureEnabled('activity_streams')) {
scope.showActivityStreamButton = true;
}
else {
scope.showActivityStreamButton = false;
}
})
.catch(function (response) {
ProcessErrors(null, response.data, response.status, null, {
hdr: 'Error!',
msg: 'Failed to get feature info. GET returned status: ' +
response.status
});
});
}
else {
scope.showActivityStreamButton = false;
}
});

View File

@@ -31,6 +31,14 @@ function ($rootScope, Rest, GetBasePath, ProcessErrors, $http, $q) {
// as a resovled promise.
return $q.when($rootScope.features);
}
},
featureEnabled: function(feature) {
if($rootScope.features && $rootScope.features[feature] && $rootScope.features[feature] == true) {
return true;
}
else {
return false;
}
}
};
}];