Commit 21d87023 authored by Filipa Lacerda's avatar Filipa Lacerda

Moves EE code into a mixin

parent c30742e9
<script> <script>
import settingsMixin from 'ee_else_ce/pages/projects/shared/permissions/mixins/settings_pannel_mixin';
import projectFeatureSetting from './project_feature_setting.vue'; import projectFeatureSetting from './project_feature_setting.vue';
import projectFeatureToggle from '../../../../../vue_shared/components/toggle_button.vue'; import projectFeatureToggle from '~/vue_shared/components/toggle_button.vue';
import projectSettingRow from './project_setting_row.vue'; import projectSettingRow from './project_setting_row.vue';
import { visibilityOptions, visibilityLevelDescriptions } from '../constants'; import { visibilityOptions, visibilityLevelDescriptions } from '../constants';
import { toggleHiddenClassBySelector } from '../external'; import { toggleHiddenClassBySelector } from '../external';
...@@ -11,6 +12,7 @@ export default { ...@@ -11,6 +12,7 @@ export default {
projectFeatureToggle, projectFeatureToggle,
projectSettingRow, projectSettingRow,
}, },
mixins: [settingsMixin],
props: { props: {
currentSettings: { currentSettings: {
...@@ -37,6 +39,11 @@ export default { ...@@ -37,6 +39,11 @@ export default {
required: false, required: false,
default: false, default: false,
}, },
packagesAvailable: {
type: Boolean,
required: false,
default: false,
},
visibilityHelpPath: { visibilityHelpPath: {
type: String, type: String,
required: false, required: false,
...@@ -67,8 +74,12 @@ export default { ...@@ -67,8 +74,12 @@ export default {
required: false, required: false,
default: '', default: '',
}, },
packagesHelpPath: {
type: String,
required: false,
default: '',
},
}, },
data() { data() {
const defaults = { const defaults = {
visibilityOptions, visibilityOptions,
...@@ -148,24 +159,6 @@ export default { ...@@ -148,24 +159,6 @@ export default {
} }
}, },
repositoryAccessLevel(value, oldValue) {
if (value < oldValue) {
// sub-features cannot have more premissive access level
this.mergeRequestsAccessLevel = Math.min(this.mergeRequestsAccessLevel, value);
this.buildsAccessLevel = Math.min(this.buildsAccessLevel, value);
if (value === 0) {
this.containerRegistryEnabled = false;
this.lfsEnabled = false;
}
} else if (oldValue === 0) {
this.mergeRequestsAccessLevel = value;
this.buildsAccessLevel = value;
this.containerRegistryEnabled = true;
this.lfsEnabled = true;
}
},
issuesAccessLevel(value, oldValue) { issuesAccessLevel(value, oldValue) {
if (value === 0) toggleHiddenClassBySelector('.issues-feature', true); if (value === 0) toggleHiddenClassBySelector('.issues-feature', true);
else if (oldValue === 0) toggleHiddenClassBySelector('.issues-feature', false); else if (oldValue === 0) toggleHiddenClassBySelector('.issues-feature', false);
...@@ -207,23 +200,20 @@ export default { ...@@ -207,23 +200,20 @@ export default {
<option <option
:value="visibilityOptions.PRIVATE" :value="visibilityOptions.PRIVATE"
:disabled="!visibilityAllowed(visibilityOptions.PRIVATE)" :disabled="!visibilityAllowed(visibilityOptions.PRIVATE)"
>Private</option
> >
Private
</option>
<option <option
:value="visibilityOptions.INTERNAL" :value="visibilityOptions.INTERNAL"
:disabled="!visibilityAllowed(visibilityOptions.INTERNAL)" :disabled="!visibilityAllowed(visibilityOptions.INTERNAL)"
>Internal</option
> >
Internal
</option>
<option <option
:value="visibilityOptions.PUBLIC" :value="visibilityOptions.PUBLIC"
:disabled="!visibilityAllowed(visibilityOptions.PUBLIC)" :disabled="!visibilityAllowed(visibilityOptions.PUBLIC)"
>Public</option
> >
Public
</option>
</select> </select>
<i aria-hidden="true" data-hidden="true" class="fa fa-chevron-down"> </i> <i aria-hidden="true" data-hidden="true" class="fa fa-chevron-down"></i>
</div> </div>
</div> </div>
<span class="form-text text-muted">{{ visibilityLevelDescription }}</span> <span class="form-text text-muted">{{ visibilityLevelDescription }}</span>
...@@ -299,6 +289,18 @@ export default { ...@@ -299,6 +289,18 @@ export default {
name="project[lfs_enabled]" name="project[lfs_enabled]"
/> />
</project-setting-row> </project-setting-row>
<project-setting-row
v-if="packagesAvailable"
:help-path="packagesHelpPath"
label="Packages"
help-text="Every project can have its own space to store its packages"
>
<project-feature-toggle
v-model="packagesEnabled"
:disabled-input="!repositoryEnabled"
name="project[packages_enabled]"
/>
</project-setting-row>
</div> </div>
<project-setting-row label="Wiki" help-text="Pages for project documentation"> <project-setting-row label="Wiki" help-text="Pages for project documentation">
<project-feature-setting <project-feature-setting
......
export default {
data() {
return {
packagesEnabled: false,
};
},
watch: {
repositoryAccessLevel(value, oldValue) {
if (value < oldValue) {
// sub-features cannot have more premissive access level
this.mergeRequestsAccessLevel = Math.min(this.mergeRequestsAccessLevel, value);
this.buildsAccessLevel = Math.min(this.buildsAccessLevel, value);
if (value === 0) {
this.containerRegistryEnabled = false;
this.lfsEnabled = false;
}
} else if (oldValue === 0) {
this.mergeRequestsAccessLevel = value;
this.buildsAccessLevel = value;
this.containerRegistryEnabled = true;
this.lfsEnabled = true;
}
},
},
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment