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
0
Merge Requests
0
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
Boxiang Sun
gitlab-ce
Commits
49cbcade
Commit
49cbcade
authored
Oct 21, 2011
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into feature/team_member_role_validation
parents
f2e035bb
d7b70b0e
Changes
43
Show whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
381 additions
and
234 deletions
+381
-234
CHANGELOG
CHANGELOG
+2
-0
Gemfile
Gemfile
+1
-1
Gemfile.lock
Gemfile.lock
+7
-8
README.rdoc
README.rdoc
+5
-3
VERSION
VERSION
+1
-1
app/assets/javascripts/application.js
app/assets/javascripts/application.js
+4
-0
app/assets/stylesheets/projects.css.scss
app/assets/stylesheets/projects.css.scss
+37
-4
app/controllers/projects_controller.rb
app/controllers/projects_controller.rb
+23
-19
app/helpers/application_helper.rb
app/helpers/application_helper.rb
+0
-21
app/models/note.rb
app/models/note.rb
+1
-0
app/models/project.rb
app/models/project.rb
+36
-1
app/models/snippet.rb
app/models/snippet.rb
+6
-0
app/views/commits/_commits.html.haml
app/views/commits/_commits.html.haml
+2
-2
app/views/commits/_diff.html.haml
app/views/commits/_diff.html.haml
+8
-43
app/views/commits/_diff_head.html.haml
app/views/commits/_diff_head.html.haml
+24
-0
app/views/commits/_text_file.html.haml
app/views/commits/_text_file.html.haml
+15
-0
app/views/commits/show.js.haml
app/views/commits/show.js.haml
+3
-1
app/views/notes/_form.html.haml
app/views/notes/_form.html.haml
+2
-2
app/views/notes/_notes.html.haml
app/views/notes/_notes.html.haml
+8
-9
app/views/notes/_show.html.haml
app/views/notes/_show.html.haml
+5
-7
app/views/notes/create.js.haml
app/views/notes/create.js.haml
+1
-1
app/views/projects/_recent_commits.html.haml
app/views/projects/_recent_commits.html.haml
+2
-2
app/views/projects/_recent_messages.html.haml
app/views/projects/_recent_messages.html.haml
+0
-6
app/views/projects/_top_menu.html.haml
app/views/projects/_top_menu.html.haml
+1
-1
app/views/projects/_tree_file.html.haml
app/views/projects/_tree_file.html.haml
+5
-6
app/views/projects/empty.html.erb
app/views/projects/empty.html.erb
+4
-3
app/views/projects/show.html.haml
app/views/projects/show.html.haml
+5
-2
app/views/projects/wall.html.haml
app/views/projects/wall.html.haml
+28
-0
app/views/snippets/show.html.haml
app/views/snippets/show.html.haml
+1
-2
app/views/team_members/_show.html.haml
app/views/team_members/_show.html.haml
+4
-2
app/views/team_members/show.html.haml
app/views/team_members/show.html.haml
+28
-0
config/initializers/grit_ext.rb
config/initializers/grit_ext.rb
+8
-0
db/fixtures/development/001_admin.rb
db/fixtures/development/001_admin.rb
+9
-1
db/fixtures/production/001_admin.rb
db/fixtures/production/001_admin.rb
+9
-0
db/migrate/20111021101550_change_social_fields_in_users.rb
db/migrate/20111021101550_change_social_fields_in_users.rb
+14
-0
db/schema.rb
db/schema.rb
+4
-4
install.rb
install.rb
+0
-32
lib/utils.rb
lib/utils.rb
+47
-4
spec/models/project_spec.rb
spec/models/project_spec.rb
+9
-0
spec/requests/projects_spec.rb
spec/requests/projects_spec.rb
+1
-1
spec/requests/team_members_spec.rb
spec/requests/team_members_spec.rb
+9
-0
spec/support/login.rb
spec/support/login.rb
+2
-1
update.rb
update.rb
+0
-44
No files found.
CHANGELOG
View file @
49cbcade
v 1.1.0
- project dashboard
- wall redesigned
- feature: code snippets
- fixed horizontal scroll on file preview
- fixed app crash if commit message has invalid chars
...
...
Gemfile
View file @
49cbcade
...
...
@@ -15,7 +15,7 @@ gem 'therubyracer'
gem
'
faker
'
gem
'
seed-fu
'
,
:git
=>
'git://github.com/mbleigh/seed-fu.git'
gem
"
inifile
"
gem
"
albino
"
,
:git
=>
"git://github.com/gitlabhq/albino.git
"
gem
"
pygments.rb
"
,
"0.2.3
"
gem
"
kaminari
"
gem
"
thin
"
gem
"
git
"
...
...
Gemfile.lock
View file @
49cbcade
...
...
@@ -4,13 +4,6 @@ GIT
specs:
annotate (2.4.1.beta1)
GIT
remote: git://github.com/gitlabhq/albino.git
revision: 118380924969f3a856659f86ea1f40c1ba7bfcb1
specs:
albino (1.3.3)
posix-spawn (>= 0.3.6)
GIT
remote: git://github.com/gitlabhq/grit.git
revision: ff015074ef35bd94cba943f9c0f98e161ab5851c
...
...
@@ -72,6 +65,7 @@ GEM
ZenTest (= 4.5)
awesome_print (0.4.0)
bcrypt-ruby (3.0.1)
blankslate (2.1.2.4)
builder (3.0.0)
capybara (1.0.1)
mime-types (>= 1.16)
...
...
@@ -138,6 +132,8 @@ GEM
orm_adapter (0.0.5)
polyglot (0.3.2)
posix-spawn (0.3.6)
pygments.rb (0.2.3)
rubypython (>= 0.5.1)
rack (1.3.2)
rack-cache (1.0.3)
rack (>= 0.4)
...
...
@@ -189,6 +185,9 @@ GEM
ruby-debug-base19 (>= 0.11.19)
ruby_core_source (0.1.5)
archive-tar-minitar (>= 0.5.2)
rubypython (0.5.1)
blankslate (>= 2.1.2.3)
ffi (~> 1.0.7)
rubyzip (0.9.4)
sass (3.1.7)
sass-rails (3.1.1)
...
...
@@ -242,7 +241,6 @@ PLATFORMS
DEPENDENCIES
acts_as_list
albino!
annotate!
autotest
autotest-rails
...
...
@@ -260,6 +258,7 @@ DEPENDENCIES
jquery-rails
kaminari
launchy
pygments.rb (= 0.2.3)
rails (= 3.1.0)
rails-footnotes (>= 3.7.5.rc4)
rspec-rails
...
...
README.rdoc
View file @
49cbcade
...
...
@@ -34,18 +34,19 @@ sqlite as default db
sudo easy_install pygments
sudo gem install bundler
bundle
RAILS_ENV=production rake db:setup
bundle exec rake db:setup RAILS_ENV=production
# create admin user
# login....admin@local.host
# pass.....5iveL!fe
RAILS_ENV=production rake db:seed_fu
bundle exec rake db:seed_fu RAILS_ENV=production
Install gitosis, edit conf/gitosis.yml & start server
rails s
rails s
-e production
== Install Gitosis
sudo aptitude install gitosis
...
...
@@ -63,6 +64,7 @@ Install gitosis, edit conf/gitosis.yml & start server
ssh-keygen -t rsa
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
...
...
VERSION
View file @
49cbcade
1.
0.2
1.
1.0
app/assets/javascripts/application.js
View file @
49cbcade
...
...
@@ -16,3 +16,7 @@ $(function(){
$
(
'
select#branch
'
).
selectmenu
({
style
:
'
popup
'
,
width
:
200
});
$
(
'
select#tag
'
).
selectmenu
({
style
:
'
popup
'
,
width
:
200
});
});
function
updatePage
(){
$
.
ajax
({
type
:
"
GET
"
,
url
:
location
.
href
,
dataType
:
"
script
"
});
}
app/assets/stylesheets/projects.css.scss
View file @
49cbcade
...
...
@@ -491,8 +491,14 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
background
:
white
;
}
p
{
margin-bottom
:
3px
;
font-size
:
12px
;
margin-bottom
:
4px
;
font-size
:
13px
;
color
:
#111
;
}
}
cite
{
&
.ago
{
color
:
#666
;
}
}
}
...
...
@@ -515,7 +521,7 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
}
.note_content
{
float
:left
;
width
:
7
50px
;
width
:
6
50px
;
}
.issue_notes
{
...
...
@@ -605,7 +611,9 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
}
}
.message
{
.commit
,
.message
,
#notes-list
{
.author
{
background
:
#eaeaea
;
color
:
#333
;
...
...
@@ -614,3 +622,28 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
margin-right
:
5px
;
}
}
/* Note textare */
#note_note
{
height
:
100px
;
width
:
97%
;
font-size
:
14px
;
}
.wall_page
{
#note_note
{
height
:
25px
;
}
.attach_holder
{
display
:none
;
}
}
.field_with_errors
{
input
[
type
=
"text"
],
input
[
type
=
"password"
],
textarea
{
background
:
none
repeat
scroll
0
0
#FFBBBB
}
}
app/controllers/projects_controller.rb
View file @
49cbcade
...
...
@@ -60,24 +60,21 @@ class ProjectsController < ApplicationController
end
def
show
if
@project
.
repo_exists?
return
render
"projects/empty"
unless
@project
.
repo_exists?
@date
=
case
params
[
:view
]
when
"week"
then
Date
.
today
-
7
.
days
else
Date
.
today
end
.
at_beginning_of_day
@heads
=
@project
.
repo
.
heads
@commits
=
@heads
.
map
do
|
h
|
@project
.
repo
.
log
(
h
.
name
,
nil
,
:since
=>
@date
)
end
.
flatten
.
uniq
{
|
c
|
c
.
id
}
@commits
.
sort!
do
|
x
,
y
|
y
.
committed_date
<=>
x
.
committed_date
when
"day"
then
Date
.
today
else
nil
end
@messages
=
project
.
notes
.
since
(
@date
).
limit
(
40
).
order
(
"created_at DESC"
)
if
@date
@date
=
@date
.
at_beginning_of_day
@commits
=
@project
.
commits_since
(
@date
)
@messages
=
project
.
notes
.
since
(
@date
).
order
(
"created_at DESC"
)
else
return
render
"projects/empty"
@commits
=
@project
.
fresh_commits
@messages
=
project
.
notes
.
fresh
.
limit
(
10
)
end
end
...
...
@@ -86,8 +83,15 @@ class ProjectsController < ApplicationController
#
def
wall
@notes
=
@project
.
common_notes
@note
=
Note
.
new
@notes
=
@project
.
common_notes
.
order
(
"created_at DESC"
)
@notes
=
case
params
[
:view
]
when
"week"
then
@notes
.
since
((
Date
.
today
-
7
.
days
).
at_beginning_of_day
)
when
"all"
then
@notes
.
all
when
"day"
then
@notes
.
since
(
Date
.
today
.
at_beginning_of_day
)
else
@notes
.
fresh
.
limit
(
10
)
end
end
#
...
...
app/helpers/application_helper.rb
View file @
49cbcade
...
...
@@ -53,25 +53,4 @@ module ApplicationHelper
[
projects
,
default_nav
,
project_nav
].
flatten
.
to_json
end
def
handle_file_type
(
file_name
,
mime_type
=
nil
)
if
file_name
=~
/(\.rb|\.ru|\.rake|Rakefile|\.gemspec|\.rbx|Gemfile)$/
:ruby
elsif
file_name
=~
/\.py$/
:python
elsif
file_name
=~
/(\.pl|\.scala|\.c|\.cpp|\.java|\.haml|\.html|\.sass|\.scss|\.xml|\.php|\.erb)$/
$1
[
1
..-
1
].
to_sym
elsif
file_name
=~
/\.js$/
:javascript
elsif
file_name
=~
/\.sh$/
:bash
elsif
file_name
=~
/\.coffee$/
:coffeescript
elsif
file_name
=~
/\.yml$/
:yaml
elsif
file_name
=~
/\.md$/
:minid
else
:text
end
end
end
app/models/note.rb
View file @
49cbcade
...
...
@@ -24,6 +24,7 @@ class Note < ActiveRecord::Base
scope
:last_week
,
where
(
"created_at >= :date"
,
:date
=>
(
Date
.
today
-
7
.
days
))
scope
:since
,
lambda
{
|
day
|
where
(
"created_at >= :date"
,
:date
=>
(
day
))
}
scope
:fresh
,
order
(
"created_at DESC"
)
mount_uploader
:attachment
,
AttachmentUploader
end
...
...
app/models/project.rb
View file @
49cbcade
...
...
@@ -35,6 +35,7 @@ class Project < ActiveRecord::Base
:presence
=>
true
validate
:check_limit
validate
:repo_name
after_destroy
:destroy_gitosis_project
after_save
:update_gitosis_project
...
...
@@ -126,6 +127,34 @@ class Project < ActiveRecord::Base
end
end
def
heads
@heads
||=
repo
.
heads
end
def
fresh_commits
commits
=
heads
.
map
do
|
h
|
repo
.
commits
(
h
.
name
,
10
)
end
.
flatten
.
uniq
{
|
c
|
c
.
id
}
commits
.
sort!
do
|
x
,
y
|
y
.
committed_date
<=>
x
.
committed_date
end
commits
[
0
..
10
]
end
def
commits_since
(
date
)
commits
=
heads
.
map
do
|
h
|
repo
.
log
(
h
.
name
,
nil
,
:since
=>
date
)
end
.
flatten
.
uniq
{
|
c
|
c
.
id
}
commits
.
sort!
do
|
x
,
y
|
y
.
committed_date
<=>
x
.
committed_date
end
commits
end
def
tree
(
fcommit
,
path
=
nil
)
fcommit
=
commit
if
fcommit
==
:head
tree
=
fcommit
.
tree
...
...
@@ -140,6 +169,12 @@ class Project < ActiveRecord::Base
errors
[
:base
]
<<
(
"Cant check your ability to create project"
)
end
def
repo_name
if
path
==
"gitosis-admin"
errors
.
add
(
:path
,
" like 'gitosis-admin' is not allowed"
)
end
end
def
valid_repo?
repo
rescue
...
...
app/models/snippet.rb
View file @
49cbcade
class
Snippet
<
ActiveRecord
::
Base
include
Utils
::
Colorize
belongs_to
:project
belongs_to
:author
,
:class_name
=>
"User"
has_many
:notes
,
:as
=>
:noteable
...
...
@@ -28,6 +30,10 @@ class Snippet < ActiveRecord::Base
".js"
,
".sh"
,
".coffee"
,
".yml"
,
".md"
]
end
def
colorize
system_colorize
(
content
,
file_name
)
end
end
# == Schema Information
#
...
...
app/views/commits/_commits.html.haml
View file @
49cbcade
...
...
@@ -15,8 +15,8 @@
=
link_to
"Browse Code"
,
tree_project_path
(
@project
,
:commit_id
=>
commit
.
id
),
:class
=>
"lite_button"
,
:style
=>
"float:right"
=
link_to
truncate
(
commit
.
id
.
to_s
,
:length
=>
16
),
project_commit_path
(
@project
,
:id
=>
commit
.
id
),
:class
=>
"lite_button"
,
:style
=>
"width:120px;float:right"
%span
%span
[
#{
commit
.
author
}
]
%span
.author
=
commit
.
author
=
time_ago_in_words
(
commit
.
committed_date
)
ago
=
more_commits_link
if
@commits
.
size
>
99
app/views/commits/_diff.html.haml
View file @
49cbcade
-
require
"utils"
.file_stats
-
@commit
.
diffs
.
each
do
|
diff
|
-
if
diff
.
deleted_file
%span
.removed_file
%a
{
:href
=>
"##{diff.a_path}"
}
=
diff
.
a_path
=
image_tag
"blueprint_delete.png"
-
elsif
diff
.
renamed_file
%span
.moved_file
%a
{
:href
=>
"##{diff.b_path}"
}
=
diff
.
a_path
=
"->"
=
diff
.
b_path
=
image_tag
"blueprint_notice.png"
-
elsif
diff
.
new_file
%span
.new_file
%a
{
:href
=>
"##{diff.b_path}"
}
=
diff
.
b_path
=
image_tag
"blueprint_add.png"
-
else
%span
.edit_file
%a
{
:href
=>
"##{diff.b_path}"
}
=
diff
.
b_path
=
image_tag
"blueprint_info.png"
.file_stats
=
render
"commits/diff_head"
-
@commit
.
diffs
.
each
do
|
diff
|
-
next
if
diff
.
diff
.
empty?
-
file
=
(
@commit
.
tree
/
diff
.
b_path
)
...
...
@@ -32,27 +9,15 @@
-
if
diff
.
deleted_file
%strong
{
:id
=>
"#{diff.b_path}"
}=
diff
.
a_path
-
else
=
link_to
tree_file_project_path
(
@project
,
@commit
.
id
,
diff
.
b_path
)
do
%strong
{
:id
=>
"#{diff.b_path}"
}=
diff
.
b_path
%br
/
.diff_file_content
-
if
file
.
mime_type
=~
/application|text/
&&
!
Utils
.
binary?
(
file
.
data
)
-
lines_arr
=
diff
.
diff
.
lines
.
to_a
-
line_old
=
lines_arr
[
2
].
match
(
/-(\d)/
)[
0
].
to_i
.
abs
rescue
0
-
line_new
=
lines_arr
[
2
].
match
(
/\+(\d)/
)[
0
].
to_i
.
abs
rescue
0
-
lines
=
lines_arr
[
3
..-
1
].
join
-
lines
.
each_line
do
|
line
|
=
diff_line
(
line
,
line_new
,
line_old
)
-
if
line
[
0
]
==
"+"
-
line_new
+=
1
-
elsif
-
line
[
0
]
==
"-"
-
line_old
+=
1
-
else
-
line_new
+=
1
-
line_old
+=
1
-
elsif
file
.
mime_type
=~
/image/
-
if
file
.
text?
=
render
:partial
=>
"commits/text_file"
,
:locals
=>
{
:diff
=>
diff
}
-
elsif
file
.
image?
.diff_file_content_image
%img
{
:src
=>
"data:
image/jpeg
;base64,#{Base64.encode64(file.data)}"
}
%img
{
:src
=>
"data:
#{file.mime_type}
;base64,#{Base64.encode64(file.data)}"
}
-
else
%p
%center
No preview for this file type
app/views/commits/_diff_head.html.haml
0 → 100644
View file @
49cbcade
-
@commit
.
diffs
.
each
do
|
diff
|
-
if
diff
.
deleted_file
%span
.removed_file
%a
{
:href
=>
"##{diff.a_path}"
}
=
diff
.
a_path
=
image_tag
"blueprint_delete.png"
-
elsif
diff
.
renamed_file
%span
.moved_file
%a
{
:href
=>
"##{diff.b_path}"
}
=
diff
.
a_path
=
"->"
=
diff
.
b_path
=
image_tag
"blueprint_notice.png"
-
elsif
diff
.
new_file
%span
.new_file
%a
{
:href
=>
"##{diff.b_path}"
}
=
diff
.
b_path
=
image_tag
"blueprint_add.png"
-
else
%span
.edit_file
%a
{
:href
=>
"##{diff.b_path}"
}
=
diff
.
b_path
=
image_tag
"blueprint_info.png"
app/views/commits/_text_file.html.haml
0 → 100644
View file @
49cbcade
-
lines_arr
=
diff
.
diff
.
lines
.
to_a
-
line_old
=
lines_arr
[
2
].
match
(
/-(\d)/
)[
0
].
to_i
.
abs
rescue
0
-
line_new
=
lines_arr
[
2
].
match
(
/\+(\d)/
)[
0
].
to_i
.
abs
rescue
0
-
lines
=
lines_arr
[
3
..-
1
].
join
-
lines
.
each_line
do
|
line
|
=
diff_line
(
line
,
line_new
,
line_old
)
-
if
line
[
0
]
==
"+"
-
line_new
+=
1
-
elsif
-
line
[
0
]
==
"-"
-
line_old
+=
1
-
else
-
line_new
+=
1
-
line_old
+=
1
app/views/commits/show.js.haml
View file @
49cbcade
:plain
-#
:plain
$("#side-commit-preview").remove();
var side = $("<div id='side-commit-preview'></div>");
side.html("#{escape_javascript(render "commits/show")}");
$("##{dom_id(@project)}").parent().append(side);
$("##{dom_id(@project)}").addClass("span-14");
:plain
$("#notes-list").html("
#{
escape_javascript
(
render
(
:partial
=>
'notes/notes_list'
))
}
");
app/views/notes/_form.html.haml
View file @
49cbcade
...
...
@@ -12,9 +12,9 @@
=
f
.
label
:note
%cite
(255 symbols only)
%br
=
f
.
text_area
:note
,
:style
=>
"width:97%;height:100px"
,
:size
=>
255
=
f
.
text_area
:note
,
:size
=>
255
%div
%div
.attach_holder
=
f
.
label
:attachment
%cite
(less than 10 MB)
%br
...
...
app/views/notes/_notes.html.haml
View file @
49cbcade
%ul
#notes-list
=
render
"notes/notes_list"
-
if
controller
.
action_name
==
"wall"
%ul
#notes-list
=
render
"notes/notes_list"
%br
%br
-
if
can?
current_user
,
:write_note
,
@project
-
else
%ul
#notes-list
=
render
"notes/notes_list"
%br
%br
-
if
can?
current_user
,
:write_note
,
@project
=
render
"notes/form"
:javascript
...
...
@@ -23,7 +26,3 @@
$
(
function
(){
var
int
=
self
.
setInterval
(
"
updatePage()
"
,
20000
);
});
function
updatePage
(){
$
.
ajax
({
type
:
"
GET
"
,
url
:
location
.
href
,
dataType
:
"
script
"
});
}
app/views/notes/_show.html.haml
View file @
49cbcade
%li
{
:id
=>
dom_id
(
note
)}
%div
.note_author
=
image_tag
gravatar_icon
(
note
.
author
.
email
),
:class
=>
"left"
,
:width
=>
40
,
:style
=>
"padding-right:5px;"
%div
.note_content
%div
.note_content
.left
=
simple_format
(
html_escape
(
note
.
note
))
-
if
note
.
attachment
.
url
Attachment:
=
link_to
note
.
attachment_identifier
,
note
.
attachment
.
url
=
link_to
note
.
attachment_identifier
,
note
.
attachment
.
url
,
:target
=>
"_blank"
%br
%span
%span
[
#{
note
.
author
.
name
}
]
%span
.author
=
note
.
author
.
name
%cite
.ago
=
time_ago_in_words
(
note
.
updated_at
)
ago
%br
...
...
app/views/notes/create.js.haml
View file @
49cbcade
-
if
@note
.
valid?
:plain
$("#new_note .errors").remove();
$("#notes-list").append("
#{
escape_javascript
(
render
(
:partial
=>
'show'
,
:locals
=>
{
:note
=>
@note
}
))
}
"
);
updatePage(
);
$('#note_note').val("");
-
else
:plain
...
...
app/views/projects/_recent_commits.html.haml
View file @
49cbcade
...
...
@@ -9,8 +9,8 @@
=
link_to
truncate_commit_message
(
commit
,
60
),
project_commit_path
(
@project
,
:id
=>
commit
.
id
)
%span
%span
[
#{
commit
.
author
}
]
%span
.author
=
commit
.
author
.
name
.
force_encoding
(
"UTF-8"
)
%cite
=
time_ago_in_words
(
commit
.
committed_date
)
ago
...
...
app/views/projects/_recent_messages.html.haml
View file @
49cbcade
...
...
@@ -46,12 +46,6 @@
Attachment:
=
link_to
note
.
attachment_identifier
,
note
.
attachment
.
url
%br
-#%span
%span
[ #{note.author.name} ]
%cite
= time_ago_in_words(note.created_at)
ago
%br
.append-bottom
...
...
app/views/projects/_top_menu.html.haml
View file @
49cbcade
...
...
@@ -5,7 +5,7 @@
%span
=
link_to
"Tree"
,
tree_project_path
(
@project
),
:class
=>
current_page?
(
:controller
=>
"projects"
,
:action
=>
"tree"
,
:id
=>
@project
)
?
"current"
:
nil
%span
=
link_to
"Commits"
,
project_commits_path
(
@project
),
:class
=>
current_page?
(
:controller
=>
"commits"
,
:action
=>
"index"
,
:project_id
=>
@project
)
?
"current"
:
nil
%span
=
link_to
team_project_path
(
@project
),
:class
=>
current_page?
(
:controller
=>
"projects"
,
:action
=>
"team"
,
:id
=>
@project
)
?
"current"
:
nil
do
=
link_to
team_project_path
(
@project
),
:class
=>
(
current_page?
(
:controller
=>
"projects"
,
:action
=>
"team"
,
:id
=>
@project
)
||
controller
.
controller_name
==
"team_members"
)
?
"current"
:
nil
do
Team
-
if
@project
.
users_projects
.
count
>
0
%span
{
:class
=>
"top_menu_count"
}=
@project
.
users_projects
.
count
...
...
app/views/projects/_tree_file.html.haml
View file @
49cbcade
-
require
"utils"
:css
.view_file
.view_file_header
%strong
...
...
@@ -6,14 +6,13 @@
=
link_to
"raw"
,
blob_project_path
(
@project
,
:commit_id
=>
@commit
.
id
,
:path
=>
params
[
:path
]
),
:class
=>
"right"
,
:target
=>
"_blank"
=
link_to
"history"
,
project_commits_path
(
@project
,
:path
=>
params
[
:path
]),
:class
=>
"right"
,
:style
=>
"margin-right:10px;"
%br
/
-
if
file
.
mime_type
=~
/application|text/
&&
!
Utils
.
binary?
(
file
.
data
)
-
if
file
.
text?
.view_file_content
-
ft
=
handle_file_type
(
file
.
name
,
file
.
mime_type
)
:erb
<%=
raw
Albino
.
colorize
(
content
,
ft
,
:html
,
'utf-8'
,
"linenos=True"
)
%>
-
elsif
file
.
mime_type
=~
/image/
<%=
raw
file
.
colorize
%>
-
elsif
file
.
image?
.view_file_content_image
%img
{
:src
=>
"data:
image/jpeg
;base64,#{Base64.encode64(file.data)}"
}
%img
{
:src
=>
"data:
#{file.mime_type}
;base64,#{Base64.encode64(file.data)}"
}
-
else
%p
%center
No preview for this file type
...
...
app/views/projects/empty.html.erb
View file @
49cbcade
<%
bash_lexer
=
Pygments
::
Lexer
[
:bash
]
%>
<div
class=
""
>
<div
class=
"git-empty"
>
<h2>
Git global setup:
</h2>
...
...
@@ -6,7 +7,7 @@ git config --global user.name "#{current_user.name}"
git config --global user.email "
#{
current_user
.
email
}
"
eos
%>
<%=
raw
Albino
.
colorize
(
setup_str
,
:bash
)
%>
<%=
raw
bash_lexer
.
highlight
(
setup_str
)
%>
<br
/>
<br
/>
<h2>
Next steps:
</h2>
...
...
@@ -21,7 +22,7 @@ git remote add origin #{@project.url_to_repo}
git push -u origin master
eos
%>
<%=
raw
Albino
.
colorize
(
repo_setup_str
,
:bash
)
%>
<%=
raw
bash_lexer
.
highlight
(
repo_setup_str
)
%>
<br
/><br
/>
<h2>
Existing Git Repo?
</h2>
...
...
@@ -31,7 +32,7 @@ git remote add origin #{@project.url_to_repo}
git push -u origin master
eos
%>
<%=
raw
Albino
.
colorize
(
exist_repo_setup_str
,
:bash
)
%>
<%=
raw
bash_lexer
.
highlight
(
exist_repo_setup_str
)
%>
<br
/><br
/>
<h2>
Remove this project?
</h2>
...
...
app/views/projects/show.html.haml
View file @
49cbcade
%div
%h2
.left
Recent h
istory
%h2
.left
H
istory
.right
=
form_tag
project_path
(
@project
),
:method
=>
:get
do
.span-2
=
radio_button_tag
:view
,
"day"
,
(
params
[
:view
]
||
"day"
)
==
"day"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"day_view"
=
radio_button_tag
:view
,
"recent"
,
(
params
[
:view
]
||
"recent"
)
==
"recent"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"recent_view"
=
label_tag
"recent_view"
,
"Recent"
.span-2
=
radio_button_tag
:view
,
"day"
,
params
[
:view
]
==
"day"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"day_view"
=
label_tag
"day_view"
,
"Today"
.span-2
=
radio_button_tag
:view
,
"week"
,
params
[
:view
]
==
"week"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"week_view"
...
...
app/views/projects/wall.html.haml
View file @
49cbcade
%div
.wall_page
-
if
can?
current_user
,
:write_note
,
@project
=
render
"notes/form"
.right
=
form_tag
wall_project_path
(
@project
),
:method
=>
:get
do
.span-2
=
radio_button_tag
:view
,
"recent"
,
(
params
[
:view
]
||
"recent"
)
==
"recent"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"recent_view"
=
label_tag
"recent_view"
,
"Recent"
.span-2
=
radio_button_tag
:view
,
"day"
,
params
[
:view
]
==
"day"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"day_view"
=
label_tag
"day_view"
,
"Today"
.span-2
=
radio_button_tag
:view
,
"week"
,
params
[
:view
]
==
"week"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"week_view"
=
label_tag
"week_view"
,
"Week"
.span-2
=
radio_button_tag
:view
,
"all"
,
params
[
:view
]
==
"all"
,
:onclick
=>
"this.form.submit()"
,
:id
=>
"all_view"
=
label_tag
"all_view"
,
"All"
.clear
%br
%hr
=
render
"notes/notes"
:javascript
$
(
function
(){
$
(
"
#note_note
"
).
live
(
"
click
"
,
function
(){
$
(
this
).
css
(
"
height
"
,
"
100px
"
);
$
(
'
.attach_holder
'
).
show
();
});
});
app/views/snippets/show.html.haml
View file @
49cbcade
...
...
@@ -7,9 +7,8 @@
=
@snippet
.
file_name
%br
/
.view_file_content
-
ft
=
handle_file_type
(
@snippet
.
file_name
)
:erb
<%=
raw
Albino
.
colorize
(
@snippet
.
content
,
ft
,
:html
,
'utf-8'
,
"linenos=True"
)
%>
<%=
raw
@snippet
.
colorize
%>
-
if
can?
(
current_user
,
:admin_snippet
,
@project
)
||
@snippet
.
author
==
current_user
=
link_to
'Edit'
,
edit_project_snippet_path
(
@project
,
@snippet
),
:class
=>
"lbutton positive"
...
...
app/views/team_members/_show.html.haml
View file @
49cbcade
-
user
=
member
.
user
%tr
{
:id
=>
dom_id
(
member
)}
%td
=
image_tag
gravatar_icon
(
user
.
email
),
:class
=>
"left"
,
:width
=>
40
,
:style
=>
"padding:0 5px;"
=
truncate
user
.
name
,
:lenght
=>
16
=
link_to
image_tag
(
gravatar_icon
(
user
.
email
),
:class
=>
"left"
,
:width
=>
40
,
:style
=>
"padding:0 5px;"
),
project_team_member_path
(
@project
,
member
)
=
link_to
truncate
(
user
.
name
,
:lenght
=>
16
),
project_team_member_path
(
@project
,
member
)
%td
=
truncate
user
.
email
,
:lenght
=>
16
-
if
can?
current_user
,
:admin_project
,
@project
=
form_for
(
member
,
:as
=>
:team_member
,
:url
=>
project_team_member_path
(
@project
,
member
))
do
|
f
|
...
...
app/views/team_members/show.html.haml
0 → 100644
View file @
49cbcade
-
user
=
@team_member
.
user
.span-2
=
image_tag
gravatar_icon
(
user
.
email
),
:class
=>
"left"
,
:width
=>
60
,
:style
=>
"padding-right:5px;"
%p
%b
Name:
=
user
.
name
%p
%b
Email:
=
user
.
email
%br
-
unless
user
.
skype
.
empty?
.div
%b
Skype:
=
user
.
skype
-
unless
user
.
linkedin
.
empty?
.div
%b
LinkedIn:
=
user
.
linkedin
-
unless
user
.
twitter
.
empty?
.div
%b
Twitter:
=
user
.
twitter
config/initializers/grit_ext.rb
0 → 100644
View file @
49cbcade
require
'grit'
require
'pygments'
require
"utils"
Grit
::
Blob
.
class_eval
do
include
Utils
::
FileHelper
include
Utils
::
Colorize
end
db/fixtures/development/001_admin.rb
View file @
49cbcade
# Admin account
admin
=
User
.
create
(
:email
=>
"admin@local.host"
,
:name
=>
"Administrator"
,
...
...
@@ -9,3 +8,12 @@ admin = User.create(
admin
.
projects_limit
=
10000
admin
.
admin
=
true
admin
.
save!
if
admin
.
valid?
puts
%q[
Administrator account created:
login.........admin@local.host
password......5iveL!fe
]
end
db/fixtures/production/001_admin.rb
View file @
49cbcade
...
...
@@ -8,3 +8,12 @@ admin = User.create(
admin
.
projects_limit
=
10000
admin
.
admin
=
true
admin
.
save!
if
admin
.
valid?
puts
%q[
Administrator account created:
login.........admin@local.host
password......5iveL!fe
]
end
db/migrate/20111021101550_change_social_fields_in_users.rb
0 → 100644
View file @
49cbcade
class
ChangeSocialFieldsInUsers
<
ActiveRecord
::
Migration
def
up
remove_column
:users
,
:skype
remove_column
:users
,
:linkedin
remove_column
:users
,
:twitter
add_column
:users
,
:skype
,
:string
,
{
:null
=>
false
,
:default
=>
''
}
add_column
:users
,
:linkedin
,
:string
,
{
:null
=>
false
,
:default
=>
''
}
add_column
:users
,
:twitter
,
:string
,
{
:null
=>
false
,
:default
=>
''
}
end
def
down
end
end
db/schema.rb
View file @
49cbcade
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
:version
=>
201110
19212429
)
do
ActiveRecord
::
Schema
.
define
(
:version
=>
201110
21101550
)
do
create_table
"issues"
,
:force
=>
true
do
|
t
|
t
.
string
"title"
...
...
@@ -82,9 +82,9 @@ ActiveRecord::Schema.define(:version => 20111019212429) do
t
.
string
"name"
t
.
boolean
"admin"
,
:default
=>
false
,
:null
=>
false
t
.
integer
"projects_limit"
,
:default
=>
10
t
.
string
"skype"
t
.
string
"linkedin"
t
.
string
"twitter"
t
.
string
"skype"
,
:default
=>
""
,
:null
=>
false
t
.
string
"linkedin"
,
:default
=>
""
,
:null
=>
false
t
.
string
"twitter"
,
:default
=>
""
,
:null
=>
false
end
add_index
"users"
,
[
"email"
],
:name
=>
"index_users_on_email"
,
:unique
=>
true
...
...
install.rb
deleted
100644 → 0
View file @
f2e035bb
root_path
=
File
.
expand_path
(
File
.
dirname
(
__FILE__
))
require
File
.
join
(
root_path
,
"lib"
,
"color"
)
include
Color
#
# ruby ./update.rb development # or test or production (default)
#
envs
=
[
"production"
,
"test"
,
"development"
]
env
=
if
envs
.
include?
(
ARGV
[
0
])
ARGV
[
0
]
else
"production"
end
puts
green
" == Install for ENV=
#{
env
}
..."
# bundle install
`bundle install`
# migrate db
`bundle exec rake db:create RAILS_ENV=
#{
env
}
`
`bundle exec rake db:schema:load RAILS_ENV=
#{
env
}
`
`bundle exec rake db:seed_fu RAILS_ENV=
#{
env
}
`
puts
green
%q[
Administrator account created:
login.........admin@local.host
password......5iveL!fe
]
puts
green
" == Done! Now you can start server"
lib/utils.rb
View file @
49cbcade
module
Utils
def
self
.
binary?
(
string
)
module
FileHelper
def
binary?
(
string
)
string
.
each_byte
do
|
x
|
x
.
nonzero?
or
return
true
end
false
end
def
image?
mime_type
=~
/image/
end
def
text?
mime_type
=~
/application|text/
&&
!
binary?
(
data
)
end
end
module
Colorize
def
colorize
system_colorize
(
data
,
name
)
end
def
system_colorize
(
data
,
file_name
)
ft
=
handle_file_type
(
file_name
)
Pygments
.
highlight
(
data
,
:lexer
=>
ft
,
:options
=>
{
:encoding
=>
'utf-8'
,
:linenos
=>
'True'
})
end
def
handle_file_type
(
file_name
,
mime_type
=
nil
)
if
file_name
=~
/(\.rb|\.ru|\.rake|Rakefile|\.gemspec|\.rbx|Gemfile)$/
:ruby
elsif
file_name
=~
/\.py$/
:python
elsif
file_name
=~
/(\.pl|\.scala|\.c|\.cpp|\.java|\.haml|\.html|\.sass|\.scss|\.xml|\.php|\.erb)$/
$1
[
1
..-
1
].
to_sym
elsif
file_name
=~
/\.js$/
:javascript
elsif
file_name
=~
/\.sh$/
:bash
elsif
file_name
=~
/\.coffee$/
:coffeescript
elsif
file_name
=~
/\.yml$/
:yaml
elsif
file_name
=~
/\.md$/
:minid
else
:text
end
end
end
end
spec/models/project_spec.rb
View file @
49cbcade
...
...
@@ -4,11 +4,15 @@ describe Project do
describe
"Associations"
do
it
{
should
have_many
(
:users
)
}
it
{
should
have_many
(
:users_projects
)
}
it
{
should
have_many
(
:issues
)
}
it
{
should
have_many
(
:notes
)
}
it
{
should
have_many
(
:snippets
)
}
end
describe
"Validation"
do
it
{
should
validate_presence_of
(
:name
)
}
it
{
should
validate_presence_of
(
:path
)
}
it
{
should
validate_presence_of
(
:code
)
}
end
describe
"Respond to"
do
...
...
@@ -31,6 +35,11 @@ describe Project do
it
{
should
respond_to
(
:commit
)
}
end
it
"should not allow 'gitosis-admin' as repo name"
do
should
allow_value
(
"blah"
).
for
(
:path
)
should_not
allow_value
(
"gitosis-admin"
).
for
(
:path
)
end
it
"should return valid url to repo"
do
project
=
Project
.
new
(
:path
=>
"somewhere"
)
project
.
url_to_repo
.
should
==
"git@localhost:somewhere.git"
...
...
spec/requests/projects_spec.rb
View file @
49cbcade
...
...
@@ -73,7 +73,7 @@ describe "Projects" do
end
it
"should beahave like dashboard"
do
page
.
should
have_content
(
"
Recent h
istory"
)
page
.
should
have_content
(
"
H
istory"
)
end
end
...
...
spec/requests/team_members_spec.rb
View file @
49cbcade
...
...
@@ -7,6 +7,15 @@ describe "TeamMembers" do
@project
.
add_access
(
@user
,
:read
,
:admin
)
end
describe
"View profile"
do
it
"should be available"
do
visit
(
team_project_path
(
@project
))
find
(
:xpath
,
"//table[@id='team-table']//a[1]"
).
click
page
.
should
have_content
@user
.
skype
page
.
should_not
have_content
'Twitter'
end
end
describe
"New Team member"
,
:js
=>
true
do
before
do
@user_1
=
Factory
:user
...
...
spec/support/login.rb
View file @
49cbcade
...
...
@@ -3,7 +3,8 @@ module LoginMacros
@user
=
User
.
create
(
:email
=>
"user
#{
User
.
count
}
@mail.com"
,
:name
=>
"John Smith"
,
:password
=>
"123456"
,
:password_confirmation
=>
"123456"
)
:password_confirmation
=>
"123456"
,
:skype
=>
'user_skype'
)
if
role
==
:admin
@user
.
admin
=
true
...
...
update.rb
deleted
100644 → 0
View file @
f2e035bb
root_path
=
File
.
expand_path
(
File
.
dirname
(
__FILE__
))
require
File
.
join
(
root_path
,
"lib"
,
"color"
)
include
Color
def
version
File
.
read
(
"VERSION"
)
end
#
# ruby ./update.rb development # or test or production (default)
#
envs
=
[
"production"
,
"test"
,
"development"
]
env
=
if
envs
.
include?
(
ARGV
[
0
])
ARGV
[
0
]
else
"production"
end
puts
yellow
"== RAILS ENV |
#{
env
}
"
current_version
=
version
puts
yellow
"Your version is
#{
current_version
}
"
puts
yellow
"Check for new version: $ git pull origin"
`git pull origin`
# pull from origin
# latest version
if
version
==
current_version
puts
yellow
"You have a latest version"
else
puts
green
"Update to
#{
version
}
"
`bundle install`
# migrate db
if
env
==
"development"
`bundle exec rake db:migrate RAILS_ENV=development`
`bundle exec rake db:migrate RAILS_ENV=test`
else
`bundle exec rake db:migrate RAILS_ENV=
#{
env
}
`
end
puts
green
"== Done! Now you can start/restart server"
end
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