Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
eb08e1d1
Commit
eb08e1d1
authored
Feb 27, 2018
by
Clement Ho
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 'pipelines_show_refactor'
# Conflicts: # config/webpack.config.js
parents
f20ee984
11196289
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
82 additions
and
101 deletions
+82
-101
app/assets/javascripts/pages/profiles/index.js
app/assets/javascripts/pages/profiles/index.js
+16
-0
app/assets/javascripts/profile/profile.js
app/assets/javascripts/profile/profile.js
+66
-84
app/assets/javascripts/profile/profile_bundle.js
app/assets/javascripts/profile/profile_bundle.js
+0
-2
app/views/profiles/_head.html.haml
app/views/profiles/_head.html.haml
+0
-2
app/views/profiles/accounts/show.html.haml
app/views/profiles/accounts/show.html.haml
+0
-1
app/views/profiles/audit_log.html.haml
app/views/profiles/audit_log.html.haml
+0
-1
app/views/profiles/chat_names/index.html.haml
app/views/profiles/chat_names/index.html.haml
+0
-1
app/views/profiles/emails/index.html.haml
app/views/profiles/emails/index.html.haml
+0
-1
app/views/profiles/gpg_keys/index.html.haml
app/views/profiles/gpg_keys/index.html.haml
+0
-1
app/views/profiles/keys/index.html.haml
app/views/profiles/keys/index.html.haml
+0
-1
app/views/profiles/keys/show.html.haml
app/views/profiles/keys/show.html.haml
+0
-1
app/views/profiles/notifications/show.html.haml
app/views/profiles/notifications/show.html.haml
+0
-1
app/views/profiles/personal_access_tokens/index.html.haml
app/views/profiles/personal_access_tokens/index.html.haml
+0
-1
app/views/profiles/preferences/show.html.haml
app/views/profiles/preferences/show.html.haml
+0
-1
app/views/profiles/show.html.haml
app/views/profiles/show.html.haml
+0
-1
app/views/profiles/two_factor_auths/show.html.haml
app/views/profiles/two_factor_auths/show.html.haml
+0
-1
config/webpack.config.js
config/webpack.config.js
+0
-1
No files found.
app/assets/javascripts/pages/profiles/index.js
0 → 100644
View file @
eb08e1d1
import
'
~/profile/gl_crop
'
;
import
Profile
from
'
~/profile/profile
'
;
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
$
(
document
).
on
(
'
input.ssh_key
'
,
'
#key_key
'
,
function
()
{
// eslint-disable-line func-names
const
$title
=
$
(
'
#key_title
'
);
const
comment
=
$
(
this
).
val
().
match
(
/^
\S
+
\S
+
(
.+
)\n?
$/
);
// Extract the SSH Key title from its comment
if
(
comment
&&
comment
.
length
>
1
)
{
$title
.
val
(
comment
[
1
]).
change
();
}
});
new
Profile
();
// eslint-disable-line no-new
});
app/assets/javascripts/profile/profile.js
View file @
eb08e1d1
/* 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
{
getPagePath
}
from
'
~/lib/utils/common_utils
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
{
__
}
from
'
~/locale
'
;
import
flash
from
'
../flash
'
;
((
global
)
=>
{
class
Profile
{
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
();
}
initAvatarGlCrop
()
{
const
cropOpts
=
{
filename
:
'
.js-avatar-filename
'
,
previewImage
:
'
.avatar-image .avatar
'
,
modalCrop
:
'
.modal-profile-crop
'
,
pickImageEl
:
'
.js-choose-user-avatar-button
'
,
uploadImageBtn
:
'
.js-upload-user-avatar
'
,
modalCropImg
:
'
.modal-profile-crop-image
'
};
this
.
avatarGlCrop
=
$
(
'
.js-user-avatar-input
'
).
glCrop
(
cropOpts
).
data
(
'
glcrop
'
);
}
export
default
class
Profile
{
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
();
}
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
);
this
.
form
.
on
(
'
submit
'
,
this
.
onSubmitForm
);
}
initAvatarGlCrop
()
{
const
cropOpts
=
{
filename
:
'
.js-avatar-filename
'
,
previewImage
:
'
.avatar-image .avatar
'
,
modalCrop
:
'
.modal-profile-crop
'
,
pickImageEl
:
'
.js-choose-user-avatar-button
'
,
uploadImageBtn
:
'
.js-upload-user-avatar
'
,
modalCropImg
:
'
.modal-profile-crop-image
'
};
this
.
avatarGlCrop
=
$
(
'
.js-user-avatar-input
'
).
glCrop
(
cropOpts
).
data
(
'
glcrop
'
);
}
submitForm
()
{
return
$
(
this
).
parents
(
'
form
'
).
submit
();
}
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
);
this
.
form
.
on
(
'
submit
'
,
this
.
onSubmitForm
);
}
onSubmitForm
(
e
)
{
e
.
preventDefault
();
return
this
.
saveForm
();
}
submitForm
()
{
return
$
(
this
).
parents
(
'
form
'
).
submit
();
}
saveForm
(
)
{
const
self
=
this
;
const
formData
=
new
FormData
(
this
.
form
[
0
]
);
const
avatarBlob
=
this
.
avatarGlCrop
.
getBlob
();
onSubmitForm
(
e
)
{
e
.
preventDefault
()
;
return
this
.
saveForm
(
);
}
if
(
avatarBlob
!=
null
)
{
formData
.
append
(
'
user[avatar]
'
,
avatarBlob
,
'
avatar.png
'
);
}
saveForm
()
{
const
self
=
this
;
const
formData
=
new
FormData
(
this
.
form
[
0
]);
const
avatarBlob
=
this
.
avatarGlCrop
.
getBlob
();
axios
({
method
:
this
.
form
.
attr
(
'
method
'
),
url
:
this
.
form
.
attr
(
'
action
'
),
data
:
formData
,
})
.
then
(({
data
})
=>
flash
(
data
.
message
,
'
notice
'
))
.
then
(()
=>
{
window
.
scrollTo
(
0
,
0
);
// Enable submit button after requests ends
self
.
form
.
find
(
'
:input[disabled]
'
).
enable
();
})
.
catch
(
error
=>
flash
(
error
.
message
));
if
(
avatarBlob
!=
null
)
{
formData
.
append
(
'
user[avatar]
'
,
avatarBlob
,
'
avatar.png
'
);
}
setNewRepoCookie
()
{
if
(
this
.
value
===
'
off
'
)
{
Cookies
.
remove
(
'
new_repo
'
);
}
else
{
Cookies
.
set
(
'
new_repo
'
,
true
,
{
expires_in
:
365
});
}
}
axios
({
method
:
this
.
form
.
attr
(
'
method
'
),
url
:
this
.
form
.
attr
(
'
action
'
),
data
:
formData
,
})
.
then
(({
data
})
=>
flash
(
data
.
message
,
'
notice
'
))
.
then
(()
=>
{
window
.
scrollTo
(
0
,
0
);
// Enable submit button after requests ends
self
.
form
.
find
(
'
:input[disabled]
'
).
enable
();
})
.
catch
(
error
=>
flash
(
error
.
message
));
}
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
);
}
setNewRepoCookie
()
{
if
(
this
.
value
===
'
off
'
)
{
Cookies
.
remove
(
'
new_repo
'
);
}
else
{
Cookies
.
set
(
'
new_repo
'
,
true
,
{
expires_in
:
365
});
}
}
$
(
function
()
{
$
(
document
).
on
(
'
input.ssh_key
'
,
'
#key_key
'
,
function
()
{
const
$title
=
$
(
'
#key_title
'
);
const
comment
=
$
(
this
).
val
().
match
(
/^
\S
+
\S
+
(
.+
)\n?
$/
);
// Extract the SSH Key title from its comment
if
(
comment
&&
comment
.
length
>
1
)
{
return
$title
.
val
(
comment
[
1
]).
change
();
}
});
if
(
getPagePath
()
===
'
profiles
'
)
{
return
new
Profile
();
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
);
}
}
);
}
)(
window
.
gl
||
(
window
.
gl
=
{}));
}
}
app/assets/javascripts/profile/profile_bundle.js
deleted
100644 → 0
View file @
f20ee984
import
'
./gl_crop
'
;
import
'
./profile
'
;
app/views/profiles/_head.html.haml
deleted
100644 → 0
View file @
f20ee984
-
content_for
:page_specific_javascripts
do
=
webpack_bundle_tag
(
'profile'
)
app/views/profiles/accounts/show.html.haml
View file @
eb08e1d1
-
page_title
"Account"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
-
if
current_user
.
ldap_user?
.alert.alert-info
...
...
app/views/profiles/audit_log.html.haml
View file @
eb08e1d1
-
page_title
"Authentication log"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
...
...
app/views/profiles/chat_names/index.html.haml
View file @
eb08e1d1
-
page_title
'Chat'
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
...
...
app/views/profiles/emails/index.html.haml
View file @
eb08e1d1
-
page_title
"Emails"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
...
...
app/views/profiles/gpg_keys/index.html.haml
View file @
eb08e1d1
-
page_title
"GPG Keys"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
...
...
app/views/profiles/keys/index.html.haml
View file @
eb08e1d1
-
page_title
"SSH Keys"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
...
...
app/views/profiles/keys/show.html.haml
View file @
eb08e1d1
...
...
@@ -2,5 +2,4 @@
-
breadcrumb_title
@key
.
title
-
page_title
@key
.
title
,
"SSH Keys"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
=
render
"key_details"
app/views/profiles/notifications/show.html.haml
View file @
eb08e1d1
-
page_title
"Notifications"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
%div
-
if
@user
.
errors
.
any?
...
...
app/views/profiles/personal_access_tokens/index.html.haml
View file @
eb08e1d1
...
...
@@ -2,7 +2,6 @@
-
page_title
"Personal Access Tokens"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
.row.prepend-top-default
.col-lg-4.profile-settings-sidebar
...
...
app/views/profiles/preferences/show.html.haml
View file @
eb08e1d1
-
page_title
'Preferences'
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
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.application-theme
...
...
app/views/profiles/show.html.haml
View file @
eb08e1d1
-
breadcrumb_title
"Edit Profile"
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
=
bootstrap_form_for
@user
,
url:
profile_path
,
method: :put
,
html:
{
multipart:
true
,
class:
'edit-user prepend-top-default js-quick-submit'
},
authenticity_token:
true
do
|
f
|
=
form_errors
(
@user
)
...
...
app/views/profiles/two_factor_auths/show.html.haml
View file @
eb08e1d1
...
...
@@ -2,7 +2,6 @@
-
add_to_breadcrumbs
(
"Two-Factor Authentication"
,
profile_account_path
)
-
@content_class
=
"limit-container-width"
unless
fluid_layout
=
render
'profiles/head'
-
content_for
:page_specific_javascripts
do
-
if
inject_u2f_api?
...
...
config/webpack.config.js
View file @
eb08e1d1
...
...
@@ -54,7 +54,6 @@ function generateEntries() {
monitoring
:
'
./monitoring/monitoring_bundle.js
'
,
notebook_viewer
:
'
./blob/notebook_viewer.js
'
,
pdf_viewer
:
'
./blob/pdf_viewer.js
'
,
profile
:
'
./profile/profile_bundle.js
'
,
project_import_gl
:
'
./projects/project_import_gitlab_project.js
'
,
protected_branches
:
'
./protected_branches
'
,
protected_tags
:
'
./protected_tags
'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment