BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
e4aa5a5c
Commit
e4aa5a5c
authored
Oct 10, 2012
by
Riyad Preukschas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extract and split GFM auto-completion setup JS
* static initialization and setup moved to assets * per request initialization moved to layout partial
parent
eb928137
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
77 additions
and
46 deletions
+77
-46
gfm_auto_complete.js.coffee
app/assets/javascripts/gfm_auto_complete.js.coffee
+58
-0
_head_panel.html.haml
app/views/layouts/_head_panel.html.haml
+2
-0
_init_auto_complete.html.haml
app/views/layouts/_init_auto_complete.html.haml
+17
-0
_common_form.html.haml
app/views/notes/_common_form.html.haml
+0
-46
No files found.
app/assets/javascripts/gfm_auto_complete.js.coffee
0 → 100644
View file @
e4aa5a5c
###
Creates the variables for setting up GFM auto-completion
###
# Emoji
window
.
autocompleteEmojiData
=
[];
window
.
autocompleteEmojiTemplate
=
"<li data-value='${insert}'>${name} <img alt='${name}' height='20' src='${image}' width='20' /></li>"
;
# Team Members
window
.
autocompleteMembersUrl
=
""
;
window
.
autocompleteMembersParams
=
private_token
:
""
page
:
1
window
.
autocompleteMembersData
=
[];
###
Add GFM auto-completion to all input fields, that accept GFM input.
###
window
.
setupGfmAutoComplete
=
->
###
Emoji
###
$
(
'.gfm-input'
).
atWho
':'
,
data
:
autocompleteEmojiData
,
tpl
:
autocompleteEmojiTemplate
###
Team Members
###
$
(
'.gfm-input'
).
atWho
'@'
,
(
query
,
callback
)
->
(
getMoreMembers
=
->
$
.
getJSON
(
autocompleteMembersUrl
,
autocompleteMembersParams
)
.
success
(
members
)
->
# pick the data we need
newMembersData
=
$
.
map
members
,
(
m
)
->
m
.
name
# add the new page of data to the rest
$
.
merge
autocompleteMembersData
,
newMembersData
# show the pop-up with a copy of the current data
callback
autocompleteMembersData
[..]
# are we past the last page?
if
newMembersData
.
length
==
0
# set static data and stop callbacks
$
(
'.gfm-input'
).
atWho
'@'
,
data
:
autocompleteMembersData
callback
:
null
else
# get next page
getMoreMembers
()
# so the next request gets the next page
autocompleteMembersParams
.
page
+=
1
;
).
call
();
\ No newline at end of file
app/views/layouts/_head_panel.html.haml
View file @
e4aa5a5c
...
...
@@ -28,6 +28,8 @@
My profile
=
link_to
'Logout'
,
destroy_user_session_path
,
class:
"logout"
,
method: :delete
=
render
"layouts/init_auto_complete"
:javascript
$
(
function
(){
$
(
"#search"
).
autocomplete
({
...
...
app/views/layouts/_init_auto_complete.html.haml
0 → 100644
View file @
e4aa5a5c
:javascript
$
(
function
()
{
autocompleteMembersUrl
=
"
#{
"/api/v2/projects/#{@project.code}/members"
if
@project
}
"
;
autocompleteMembersParams
.
private_token
=
"
#{
current_user
.
authentication_token
}
"
;
autocompleteEmojiData
=
#{
raw
emoji_autocomplete_source
}
;
// convert the list so that the items have the right format for completion
autocompleteEmojiData
=
$
.
map
(
autocompleteEmojiData
,
function
(
value
)
{
return
{
name
:
value
,
insert
:
value
+
':'
,
image
:
'
#{
image_path
(
"emoji"
)
}
/'
+
value
+
'.png'
}
});
setupGfmAutoComplete
();
});
app/views/notes/_common_form.html.haml
View file @
e4aa5a5c
...
...
@@ -36,49 +36,3 @@
%a
.file_upload.btn.small
Upload File
=
f
.
file_field
:attachment
,
class:
"input-file"
%span
.hint
Any file less than 10 MB
:javascript
$
(
function
(){
// init auto-completion of team members
var
membersUrl
=
"
#{
root_url
}
/api/v2/projects/
#{
@project
.
code
}
/members"
;
var
membersParams
=
{
private_token
:
"
#{
current_user
.
authentication_token
}
"
,
page
:
1
,
};
var
membersData
=
[];
$
(
'.gfm-input'
).
atWho
(
'@'
,
function
(
query
,
callback
)
{
(
function
getMoreMembers
()
{
$
.
getJSON
(
membersUrl
,
membersParams
).
success
(
function
(
members
)
{
// pick the data we need
var
newMembersData
=
$
.
map
(
members
,
function
(
member
)
{
return
member
.
name
});
// add the new page of data to the rest
$
.
merge
(
membersData
,
newMembersData
);
// show the pop-up with a copy of the current data
callback
(
membersData
.
slice
(
0
));
// are we past the last page?
if
(
newMembersData
.
length
==
0
)
{
// set static data and stop callbacks
$
(
'.gfm-input'
).
atWho
(
'@'
,
{
data
:
membersData
,
callback
:
null
});
}
else
{
// get next page
getMoreMembers
();
}
});
// next request will get the next page
membersParams
.
page
+=
1
;
})();
});
// init auto-completion of emoji
var
emoji
=
#{
emoji_for_completion
}
;
// convert the list so that the items have the right format for completion
emoji
=
$
.
map
(
emoji
,
function
(
value
)
{
return
{
key
:
value
+
':'
,
name
:
value
}});
$
(
'.gfm-input'
).
atWho
(
':'
,
{
data
:
emoji
,
tpl
:
"<li data-value='${key}'>${name}
#{
escape_javascript
image_tag
(
'
emoji
/
$
{
name
}.
png
', :size => '
20
x20
'
)
}
</li>"
});
});
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