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
1e689bfb
Commit
1e689bfb
authored
Feb 27, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed notes logic
parent
f0f14c8e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
108 additions
and
78 deletions
+108
-78
application.js
app/assets/javascripts/application.js
+3
-20
note.js
app/assets/javascripts/note.js
+93
-32
notes.scss
app/assets/stylesheets/notes.scss
+6
-1
notes_controller.rb
app/controllers/notes_controller.rb
+1
-1
_load.js.haml
app/views/notes/_load.js.haml
+3
-7
_notes.html.haml
app/views/notes/_notes.html.haml
+2
-17
No files found.
app/assets/javascripts/application.js
View file @
1e689bfb
...
...
@@ -23,9 +23,6 @@ $(document).ready(function(){
$
(
this
).
select
();
});
$
(
'select#branch'
).
selectmenu
({
style
:
'popup'
,
width
:
200
});
$
(
'select#tag'
).
selectmenu
({
style
:
'popup'
,
width
:
200
});
$
(
".account-box"
).
mouseenter
(
showMenu
);
$
(
".account-box"
).
mouseleave
(
resetMenu
);
...
...
@@ -45,6 +42,9 @@ $(document).ready(function(){
}
});
/**
* Focus search field by pressing 's' key
*/
$
(
document
).
keypress
(
function
(
e
)
{
if
(
$
(
e
.
target
).
is
(
":input"
)
)
return
;
switch
(
e
.
which
)
{
...
...
@@ -52,27 +52,12 @@ $(document).ready(function(){
e
.
preventDefault
();
}
});
});
function
focusSearch
()
{
$
(
"#search"
).
focus
();
}
function
taggifyForm
(){
var
tag_field
=
$
(
'#tag_field'
).
tagify
();
tag_field
.
tagify
(
'inputField'
).
autocomplete
({
source
:
'/tags.json'
});
$
(
'form'
).
submit
(
function
()
{
var
tag_field
=
$
(
'#tag_field'
)
tag_field
.
val
(
tag_field
.
tagify
(
'serialize'
)
);
return
true
;
});
}
function
updatePage
(
data
){
$
.
ajax
({
type
:
"GET"
,
url
:
location
.
href
,
data
:
data
,
dataType
:
"script"
});
}
...
...
@@ -84,5 +69,3 @@ function showMenu() {
function
resetMenu
()
{
$
(
this
).
removeClass
(
"hover"
);
}
app/assets/javascripts/note.js
View file @
1e689bfb
...
...
@@ -13,46 +13,54 @@ init:
this
.
notes_path
=
path
+
".js"
;
this
.
target_id
=
tid
;
this
.
target_type
=
tt
;
this
.
target_params
=
"&target_type="
+
this
.
target_type
+
"&target_id="
+
this
.
target_id
this
.
refresh
();
this
.
target_params
=
"&target_type="
+
this
.
target_type
+
"&target_id="
+
this
.
target_id
;
// get notes
this
.
getContent
();
// get new notes every n seconds
this
.
initRefresh
();
this
.
initLoadMore
();
},
getOld
:
function
()
{
$
(
'.loading'
).
show
();
$
.
ajax
({
type
:
"GET"
,
url
:
this
.
notes_path
,
data
:
"first_id="
+
this
.
first_id
+
this
.
target_params
,
complete
:
function
(){
$
(
'.loading'
).
hide
()},
dataType
:
"script"
});
$
(
'.delete-note'
).
live
(
'ajax:success'
,
function
()
{
$
(
this
).
closest
(
'li'
).
fadeOut
();
});
$
(
"#new_note"
).
live
(
"ajax:before"
,
function
(){
$
(
"#submit_note"
).
attr
(
"disabled"
,
"disabled"
);
})
$
(
"#new_note"
).
live
(
"ajax:complete"
,
function
(){
$
(
"#submit_note"
).
removeAttr
(
"disabled"
);
})
$
(
"#note_note"
).
live
(
"click"
,
function
(){
$
(
this
).
css
(
"height"
,
"100px"
);
$
(
'.attach_holder'
).
show
();
});
},
append
:
function
(
id
,
html
)
{
if
(
this
.
first_id
==
id
)
{
this
.
disable
=
true
;
}
else
{
this
.
first_id
=
id
;
$
(
"#notes-list"
).
append
(
html
);
}
/**
* Load new notes to fresh list called 'new_notes_list':
* - Replace 'new_notes_list' with new list every n seconds
* - Append new notes to this list after submit
*/
initRefresh
:
function
()
{
// init timer
var
intNew
=
setInterval
(
"NoteList.getNew()"
,
10000
);
},
replace
:
function
(
fid
,
lid
,
html
)
{
this
.
first_id
=
fid
;
this
.
last_id
=
lid
;
$
(
"#notes-list"
).
html
(
html
);
this
.
initLoadMore
();
function
(
html
)
{
$
(
"#new_notes_list"
).
html
(
html
);
},
prepend
:
function
(
id
,
html
)
{
if
(
id
!=
this
.
last_id
)
{
this
.
last_id
=
id
;
$
(
"#notes-list"
).
prepend
(
html
);
$
(
"#new_notes_list"
).
prepend
(
html
);
}
},
...
...
@@ -76,13 +84,66 @@ refresh:
dataType
:
"script"
});
},
initRefresh
:
/**
* Init load of notes:
* 1. Get content with ajax call
* 2. Set content of notes list with loaded one
*/
getContent
:
function
()
{
$
.
ajax
({
type
:
"GET"
,
url
:
this
.
notes_path
,
data
:
"?"
+
this
.
target_params
,
dataType
:
"script"
});
},
setContent
:
function
(
fid
,
lid
,
html
)
{
this
.
last_id
=
lid
;
this
.
first_id
=
fid
;
$
(
"#notes-list"
).
html
(
html
);
// Init infinite scrolling
this
.
initLoadMore
();
},
/**
* Paging for old notes when scroll to bottom:
* 1. Init scroll events with 'initLoadMore'
* 2. Load onlder notes with 'getOld' method
* 3. append old notes to bottom of list with 'append'
*
*/
getOld
:
function
()
{
// init timer
var
intNew
=
setInterval
(
"NoteList.getNew()"
,
15000
);
var
intRefresh
=
setInterval
(
"NoteList.refresh()"
,
90000
);
$
(
'.loading'
).
show
();
$
.
ajax
({
type
:
"GET"
,
url
:
this
.
notes_path
,
data
:
"first_id="
+
this
.
first_id
+
this
.
target_params
,
complete
:
function
(){
$
(
'.status'
).
removeClass
(
"loading"
)},
beforeSend
:
function
()
{
$
(
'.status'
).
addClass
(
"loading"
)
},
dataType
:
"script"
});
},
append
:
function
(
id
,
html
)
{
if
(
this
.
first_id
==
id
)
{
this
.
disable
=
true
;
}
else
{
this
.
first_id
=
id
;
$
(
"#notes-list"
).
append
(
html
);
}
},
initLoadMore
:
function
()
{
$
(
document
).
endlessScroll
({
...
...
app/assets/stylesheets/notes.scss
View file @
1e689bfb
...
...
@@ -2,13 +2,18 @@
* Notes
*
*/
#notes-list
{
#notes-list
,
#new_notes_list
{
display
:block
;
list-style
:none
;
margin
:
0px
;
padding
:
0px
;
}
#new_notes_list
li
:last-child
{
border-bottom
:
1px
solid
#aaa
;
}
.issue_notes
{
.note_content
{
float
:left
;
...
...
app/controllers/notes_controller.rb
View file @
1e689bfb
...
...
@@ -16,7 +16,7 @@ class NotesController < ApplicationController
when
"snippet"
then
project
.
snippets
.
find
(
params
[
:target_id
]).
notes
when
"wall"
then
project
.
common_notes
.
order
(
"created_at DESC"
).
fresh
.
limit
(
6
0
)
then
project
.
common_notes
.
order
(
"created_at DESC"
).
fresh
.
limit
(
1
0
)
when
"issue"
then
project
.
issues
.
find
(
params
[
:target_id
]).
notes
.
inc_author
.
order
(
"created_at DESC"
).
limit
(
20
)
when
"merge_request"
...
...
app/views/notes/_load.js.haml
View file @
1e689bfb
-
unless
@notes
.
blank?
-
if
params
[
:last_id
]
&&
params
[
:first_id
]
:plain
NoteList.replace(
#{
@notes
.
last
.
id
}
,
#{
@notes
.
first
.
id
}
, "
#{
escape_javascript
(
render
(
:partial
=>
'notes/notes_list'
))
}
");
-
elsif
params
[
:last_id
]
-
if
params
[
:last_id
]
:plain
NoteList.
prepend(
#{
@notes
.
first
.
id
}
,
"
#{
escape_javascript
(
render
(
:partial
=>
'notes/notes_list'
))
}
");
NoteList.
replace(
"
#{
escape_javascript
(
render
(
:partial
=>
'notes/notes_list'
))
}
");
-
elsif
params
[
:first_id
]
:plain
...
...
@@ -14,6 +9,7 @@
-
else
:plain
NoteList.setContent(
#{
@notes
.
last
.
id
}
,
#{
@notes
.
first
.
id
}
, "
#{
escape_javascript
(
render
(
:partial
=>
'notes/notes_list'
))
}
");
-
else
-
if
params
[
:first_id
]
...
...
app/views/notes/_notes.html.haml
View file @
1e689bfb
...
...
@@ -2,27 +2,12 @@
=
render
"notes/form"
.clear
%hr
%ul
#new_notes_list
%ul
#notes-list
.
loading
.
status
:javascript
$
(
'.delete-note'
).
live
(
'ajax:success'
,
function
()
{
$
(
this
).
closest
(
'li'
).
fadeOut
();
});
$
(
"#new_note"
).
live
(
"ajax:before"
,
function
(){
$
(
"#submit_note"
).
attr
(
"disabled"
,
"disabled"
);
})
$
(
"#new_note"
).
live
(
"ajax:complete"
,
function
(){
$
(
"#submit_note"
).
removeAttr
(
"disabled"
);
})
$
(
function
(){
$
(
"#note_note"
).
live
(
"click"
,
function
(){
$
(
this
).
css
(
"height"
,
"100px"
);
$
(
'.attach_holder'
).
show
();
});
NoteList
.
init
(
"
#{
tid
}
"
,
"
#{
tt
}
"
,
"
#{
project_notes_path
(
@project
)
}
"
);
});
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