-
checked="checked"<% } %>/>
+
disabled="disabled"<% } %> <% if(permission.active) { %>checked="checked"<% } %>/>
Yes
No
@@ -279,10 +299,23 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
setActivePermissions = (permissions) ->
return _.map(permissions, (x) -> _.extend({}, x, {active: x["key"] in role.permissions}))
+ isPermissionEditable = (permission, role, project) ->
+ if role.external_user &&
+ !project.is_private &&
+ permission.key.indexOf("view_") == 0
+ return false
+ else
+ return true
+
setActivePermissionsPerCategory = (category) ->
- return _.map(category, (x) ->
- _.extend({}, x, {
- activePermissions: _.filter(x["permissions"], "active").length
+ return _.map(category, (cat) ->
+ cat.permissions = cat.permissions.map (permission) ->
+ permission.editable = isPermissionEditable(permission, role, $scope.project)
+
+ return permission
+
+ _.extend({}, cat, {
+ activePermissions: _.filter(cat["permissions"], "active").length
})
)
@@ -366,6 +399,7 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
return activePermissions
target = angular.element(event.currentTarget)
+
$scope.role.permissions = getActivePermissions()
onSuccess = (role) ->
@@ -381,7 +415,14 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
target.prop "checked", !target.prop("checked")
$scope.role.permissions = getActivePermissions()
- $repo.save($scope.role).then onSuccess, onError
+ if $scope.role.external_user
+ $scope.project.public_permissions = $scope.role.permissions
+ $scope.project.anon_permissions = $scope.role.permissions.filter (permission) ->
+ return permission.indexOf("view_") == 0
+
+ $repo.save($scope.project)
+ else
+ $repo.save($scope.role).then onSuccess, onError
$scope.$on "$destroy", ->
$el.off()
diff --git a/app/partials/admin/admin-roles.jade b/app/partials/admin/admin-roles.jade
index 52dc954f..94982f98 100644
--- a/app/partials/admin/admin-roles.jade
+++ b/app/partials/admin/admin-roles.jade
@@ -8,7 +8,7 @@ div.wrapper.roles(ng-controller="RolesController as ctrl",
section.main.admin-roles.admin-common
.header-with-actions
include ../includes/components/mainTitle
- .action-buttons
+ .action-buttons(ng-if="!role.external_user")
a.button-red.delete-role(href="", title="Delete", ng-click="ctrl.delete()")
span Delete
@@ -24,7 +24,7 @@ div.wrapper.roles(ng-controller="RolesController as ctrl",
div.any-computable-role(ng-hide="anyComputableRole") Be careful, no role in your project will be able to estimate the point value for user stories
- div.general-category
+ div.general-category(ng-if="!role.external_user")
| When enabled, members assigned to this role will be able to estimate the point value for user stories
div.check
input(type="checkbox", ng-model="role.computable", ng-change="ctrl.setComputable()")
diff --git a/app/styles/modules/admin/admin-roles.scss b/app/styles/modules/admin/admin-roles.scss
index 58203d80..daa55c21 100644
--- a/app/styles/modules/admin/admin-roles.scss
+++ b/app/styles/modules/admin/admin-roles.scss
@@ -101,5 +101,11 @@
opacity: 0;
}
}
+ input:disabled {
+ cursor: auto;
+ + div {
+ background-color: #ccc;
+ }
+ }
}
}