Added multi editor setting on the profile preferences page
This commit is contained in:
parent
54bbcc3df9
commit
0a35f372d2
12 changed files with 86 additions and 2 deletions
BIN
app/assets/images/multi-editor-off.png
Normal file
BIN
app/assets/images/multi-editor-off.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
BIN
app/assets/images/multi-editor-on.png
Normal file
BIN
app/assets/images/multi-editor-on.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.3 KiB |
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable comma-dangle, no-unused-vars, class-methods-use-this, quotes, consistent-return, func-names, prefer-arrow-callback, space-before-function-paren, max-len */
|
||||
import Cookies from 'js-cookie';
|
||||
import Flash from '../flash';
|
||||
import { getPagePath } from '../lib/utils/common_utils';
|
||||
|
||||
|
@ -7,6 +8,8 @@ import { getPagePath } from '../lib/utils/common_utils';
|
|||
constructor({ form } = {}) {
|
||||
this.onSubmitForm = this.onSubmitForm.bind(this);
|
||||
this.form = form || $('.edit-user');
|
||||
this.newRepoActivated = Cookies.get('new_repo');
|
||||
this.setRepoRadio();
|
||||
this.bindEvents();
|
||||
this.initAvatarGlCrop();
|
||||
}
|
||||
|
@ -25,6 +28,7 @@ import { getPagePath } from '../lib/utils/common_utils';
|
|||
|
||||
bindEvents() {
|
||||
$('.js-preferences-form').on('change.preference', 'input[type=radio]', this.submitForm);
|
||||
$('input[name="user[multi_file]"]').on('change', this.setNewRepoCookie);
|
||||
$('#user_notification_email').on('change', this.submitForm);
|
||||
$('#user_notified_of_own_activity').on('change', this.submitForm);
|
||||
$('.update-username').on('ajax:before', this.beforeUpdateUsername);
|
||||
|
@ -82,6 +86,23 @@ import { getPagePath } from '../lib/utils/common_utils';
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
setNewRepoCookie() {
|
||||
if (this.value === 'off') {
|
||||
Cookies.remove('new_repo');
|
||||
} else {
|
||||
Cookies.set('new_repo', true, { expires_in: 365 });
|
||||
}
|
||||
}
|
||||
|
||||
setRepoRadio() {
|
||||
const multiEditRadios = $('input[name="user[multi_file]"]');
|
||||
if (this.newRepoActivated || this.newRepoActivated === 'true') {
|
||||
multiEditRadios.filter('[value=on]').prop('checked', true);
|
||||
} else {
|
||||
multiEditRadios.filter('[value=off]').prop('checked', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(function() {
|
||||
|
|
|
@ -516,7 +516,7 @@
|
|||
.header-user {
|
||||
.dropdown-menu-nav {
|
||||
width: auto;
|
||||
min-width: 140px;
|
||||
min-width: 160px;
|
||||
margin-top: 4px;
|
||||
color: $gl-text-color;
|
||||
left: auto;
|
||||
|
|
|
@ -727,3 +727,8 @@ Popup
|
|||
$popup-triangle-size: 15px;
|
||||
$popup-triangle-border-size: 1px;
|
||||
$popup-box-shadow-color: rgba(90, 90, 90, 0.05);
|
||||
|
||||
/*
|
||||
Multi file editor
|
||||
*/
|
||||
$border-color-settings: #e1e1e1;
|
||||
|
|
|
@ -20,6 +20,22 @@
|
|||
}
|
||||
}
|
||||
|
||||
.multi-file-editor-options {
|
||||
label {
|
||||
margin-right: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.preview {
|
||||
font-size: 0;
|
||||
|
||||
img {
|
||||
border: 1px solid $border-color-settings;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.application-theme {
|
||||
label {
|
||||
margin-right: 20px;
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
= link_to "Profile", current_user, class: 'profile-link', data: { user: current_user.username }
|
||||
%li
|
||||
= link_to "Settings", profile_path
|
||||
%li
|
||||
= link_to "Turn on multi edit", profile_preferences_path
|
||||
- if current_user
|
||||
%li
|
||||
= link_to "Help", help_path
|
||||
|
|
|
@ -3,6 +3,23 @@
|
|||
= render 'profiles/head'
|
||||
|
||||
= form_for @user, url: profile_preferences_path, remote: true, method: :put, html: { class: 'row prepend-top-default js-preferences-form' } do |f|
|
||||
.col-lg-4
|
||||
%h4.prepend-top-0
|
||||
GitLab multi file editor
|
||||
%p Unlock an additional editing experience which makes it possible to edit and commit multiple files
|
||||
.col-lg-8.multi-file-editor-options
|
||||
= label_tag do
|
||||
.preview.append-bottom-10= image_tag "multi-editor-off.png"
|
||||
= f.radio_button :multi_file, "off", checked: true
|
||||
Off
|
||||
= label_tag do
|
||||
.preview.append-bottom-10= image_tag "multi-editor-on.png"
|
||||
= f.radio_button :multi_file, "on", checked: false
|
||||
On
|
||||
|
||||
.col-sm-12
|
||||
%hr
|
||||
|
||||
.col-lg-4.application-theme
|
||||
%h4.prepend-top-0
|
||||
GitLab navigation theme
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Added option to user preferences to enable the multi file editor
|
||||
merge_request: 16056
|
||||
author:
|
||||
type: added
|
|
@ -32,6 +32,18 @@ describe 'User visits the profile preferences page' do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'User changes their multi file editor preferences', :js do
|
||||
it 'set the new_repo cookie when the option is ON' do
|
||||
choose 'user_multi_file_on'
|
||||
expect(get_cookie('new_repo')).not_to be_nil
|
||||
end
|
||||
|
||||
it 'deletes the new_repo cookie when the option is OFF' do
|
||||
choose 'user_multi_file_off'
|
||||
expect(get_cookie('new_repo')).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe 'User changes their default dashboard', :js do
|
||||
it 'creates a flash message' do
|
||||
select 'Starred Projects', from: 'user_dashboard'
|
||||
|
|
|
@ -33,7 +33,9 @@ describe 'User edits files' do
|
|||
binary_file = File.join(project.repository.root_ref, 'files/images/logo-black.png')
|
||||
visit(project_blob_path(project, binary_file))
|
||||
|
||||
expect(page).not_to have_link('edit')
|
||||
page.within '.content' do
|
||||
expect(page).not_to have_link('edit')
|
||||
end
|
||||
end
|
||||
|
||||
it 'commits an edited file', :js do
|
||||
|
|
|
@ -8,6 +8,10 @@ module CookieHelper
|
|||
page.driver.browser.manage.add_cookie(name: name, value: value, **options)
|
||||
end
|
||||
|
||||
def get_cookie(name)
|
||||
page.driver.browser.manage.cookie_named(name)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def on_a_page?
|
||||
|
|
Loading…
Reference in a new issue