summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-09-02 14:51:36 +0100
committerPhil Hughes <me@iamphill.com>2016-09-02 14:51:36 +0100
commitf8513d768242dffbd0fd0230e0bbeca972bcf0ec (patch)
treec15559c8789173d2dbbb631efeb96ea135892b4f
parent4da474ca928fff916a1e8ac3bb42d81df2364431 (diff)
downloadgitlab-ce-project-edit-features-hide.tar.gz
Refactored code to rely less on IDs that could changeproject-edit-features-hide
-rw-r--r--app/assets/javascripts/project_new.js18
-rw-r--r--app/helpers/projects_helper.rb2
2 files changed, 14 insertions, 6 deletions
diff --git a/app/assets/javascripts/project_new.js b/app/assets/javascripts/project_new.js
index 06034574c8a..a787b11f2a9 100644
--- a/app/assets/javascripts/project_new.js
+++ b/app/assets/javascripts/project_new.js
@@ -4,6 +4,8 @@
this.ProjectNew = (function() {
function ProjectNew() {
this.toggleSettings = bind(this.toggleSettings, this);
+ this.$selects = $('.features select');
+
$('.project-edit-container').on('ajax:before', (function(_this) {
return function() {
$('.project-edit-container').hide();
@@ -15,17 +17,23 @@
}
ProjectNew.prototype.toggleSettings = function() {
- this._showOrHide('#project_project_feature_attributes_builds_access_level', '.builds-feature');
- this._showOrHide('#project_project_feature_attributes_merge_requests_access_level', '.merge-requests-feature');
+ var self = this;
+
+ this.$selects.each(function () {
+ var $select = $(this),
+ className = $select.data('field').replace(/_/g, '-')
+ .replace('access-level', 'feature');
+ self._showOrHide($select, '.' + className);
+ });
};
ProjectNew.prototype.toggleSettingsOnclick = function() {
- $('#project_project_feature_attributes_builds_access_level, #project_project_feature_attributes_merge_requests_access_level').on('change', this.toggleSettings);
+ this.$selects.on('change', this.toggleSettings);
};
ProjectNew.prototype._showOrHide = function(checkElement, container) {
- var $container;
- $container = $(container);
+ var $container = $(container);
+
if ($(checkElement).val() !== '0') {
return $container.show();
} else {
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index d6efa603223..4c685b97c03 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -431,6 +431,6 @@ module ProjectsHelper
options.delete('Everyone with access') if @project.private? && level != ProjectFeature::ENABLED
options = options_for_select(options, selected: @project.project_feature.public_send(field) || ProjectFeature::ENABLED)
- content_tag(:select, options, name: "project[project_feature_attributes][#{field.to_s}]", id: "project_project_feature_attributes_#{field.to_s}", class: "pull-right form-control").html_safe
+ content_tag(:select, options, name: "project[project_feature_attributes][#{field.to_s}]", id: "project_project_feature_attributes_#{field.to_s}", class: "pull-right form-control", data: { field: field }).html_safe
end
end