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
iv
gitlab-ce
Commits
415516b2
Commit
415516b2
authored
Nov 04, 2011
by
gitlabhq
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev'
parents
8a8fa8b0
687290a0
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
1362 additions
and
88 deletions
+1362
-88
app/assets/images/chosen-sprite.png
app/assets/images/chosen-sprite.png
+0
-0
app/assets/javascripts/chosen.jquery.js
app/assets/javascripts/chosen.jquery.js
+901
-0
app/assets/stylesheets/chosen.css
app/assets/stylesheets/chosen.css
+367
-0
app/assets/stylesheets/projects.css.scss
app/assets/stylesheets/projects.css.scss
+13
-0
app/assets/stylesheets/style.scss
app/assets/stylesheets/style.scss
+1
-1
app/controllers/application_controller.rb
app/controllers/application_controller.rb
+17
-13
app/helpers/application_helper.rb
app/helpers/application_helper.rb
+17
-0
app/models/key.rb
app/models/key.rb
+1
-1
app/views/commits/index.html.haml
app/views/commits/index.html.haml
+5
-20
app/views/layouts/_head_panel.html.erb
app/views/layouts/_head_panel.html.erb
+24
-27
app/views/layouts/admin.html.haml
app/views/layouts/admin.html.haml
+1
-2
app/views/layouts/application.html.haml
app/views/layouts/application.html.haml
+1
-2
app/views/layouts/devise.html.haml
app/views/layouts/devise.html.haml
+0
-1
app/views/layouts/profile.html.haml
app/views/layouts/profile.html.haml
+1
-2
app/views/layouts/project.html.haml
app/views/layouts/project.html.haml
+1
-2
app/views/projects/_refs.html.haml
app/views/projects/_refs.html.haml
+8
-0
app/views/projects/_tree.html.haml
app/views/projects/_tree.html.haml
+4
-17
No files found.
app/assets/images/chosen-sprite.png
0 → 100644
View file @
415516b2
396 Bytes
app/assets/javascripts/chosen.jquery.js
0 → 100644
View file @
415516b2
// Chosen, a Select Box Enhancer for jQuery and Protoype
// by Patrick Filler for Harvest, http://getharvest.com
//
// Version 0.9.5
// Full source at https://github.com/harvesthq/chosen
// Copyright (c) 2011 Harvest http://getharvest.com
// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
// This file is generated by `cake build`, do not edit it by hand.
(
function
()
{
var
SelectParser
;
SelectParser
=
(
function
()
{
function
SelectParser
()
{
this
.
options_index
=
0
;
this
.
parsed
=
[];
}
SelectParser
.
prototype
.
add_node
=
function
(
child
)
{
if
(
child
.
nodeName
===
"
OPTGROUP
"
)
{
return
this
.
add_group
(
child
);
}
else
{
return
this
.
add_option
(
child
);
}
};
SelectParser
.
prototype
.
add_group
=
function
(
group
)
{
var
group_position
,
option
,
_i
,
_len
,
_ref
,
_results
;
group_position
=
this
.
parsed
.
length
;
this
.
parsed
.
push
({
array_index
:
group_position
,
group
:
true
,
label
:
group
.
label
,
children
:
0
,
disabled
:
group
.
disabled
});
_ref
=
group
.
childNodes
;
_results
=
[];
for
(
_i
=
0
,
_len
=
_ref
.
length
;
_i
<
_len
;
_i
++
)
{
option
=
_ref
[
_i
];
_results
.
push
(
this
.
add_option
(
option
,
group_position
,
group
.
disabled
));
}
return
_results
;
};
SelectParser
.
prototype
.
add_option
=
function
(
option
,
group_position
,
group_disabled
)
{
if
(
option
.
nodeName
===
"
OPTION
"
)
{
if
(
option
.
text
!==
""
)
{
if
(
group_position
!=
null
)
{
this
.
parsed
[
group_position
].
children
+=
1
;
}
this
.
parsed
.
push
({
array_index
:
this
.
parsed
.
length
,
options_index
:
this
.
options_index
,
value
:
option
.
value
,
text
:
option
.
text
,
html
:
option
.
innerHTML
,
selected
:
option
.
selected
,
disabled
:
group_disabled
===
true
?
group_disabled
:
option
.
disabled
,
group_array_index
:
group_position
,
classes
:
option
.
className
,
style
:
option
.
style
.
cssText
});
}
else
{
this
.
parsed
.
push
({
array_index
:
this
.
parsed
.
length
,
options_index
:
this
.
options_index
,
empty
:
true
});
}
return
this
.
options_index
+=
1
;
}
};
return
SelectParser
;
})();
SelectParser
.
select_to_array
=
function
(
select
)
{
var
child
,
parser
,
_i
,
_len
,
_ref
;
parser
=
new
SelectParser
();
_ref
=
select
.
childNodes
;
for
(
_i
=
0
,
_len
=
_ref
.
length
;
_i
<
_len
;
_i
++
)
{
child
=
_ref
[
_i
];
parser
.
add_node
(
child
);
}
return
parser
.
parsed
;
};
this
.
SelectParser
=
SelectParser
;
}).
call
(
this
);
(
function
()
{
/*
Chosen source: generate output using 'cake build'
Copyright (c) 2011 by Harvest
*/
var
AbstractChosen
,
root
;
var
__bind
=
function
(
fn
,
me
){
return
function
(){
return
fn
.
apply
(
me
,
arguments
);
};
};
root
=
this
;
AbstractChosen
=
(
function
()
{
function
AbstractChosen
(
form_field
,
options
)
{
this
.
form_field
=
form_field
;
this
.
options
=
options
!=
null
?
options
:
{};
this
.
set_default_values
();
this
.
is_multiple
=
this
.
form_field
.
multiple
;
this
.
default_text_default
=
this
.
is_multiple
?
"
Select Some Options
"
:
"
Select an Option
"
;
this
.
setup
();
this
.
set_up_html
();
this
.
register_observers
();
this
.
finish_setup
();
}
AbstractChosen
.
prototype
.
set_default_values
=
function
()
{
this
.
click_test_action
=
__bind
(
function
(
evt
)
{
return
this
.
test_active_click
(
evt
);
},
this
);
this
.
activate_action
=
__bind
(
function
(
evt
)
{
return
this
.
activate_field
(
evt
);
},
this
);
this
.
active_field
=
false
;
this
.
mouse_on_container
=
false
;
this
.
results_showing
=
false
;
this
.
result_highlighted
=
null
;
this
.
result_single_selected
=
null
;
this
.
allow_single_deselect
=
(
this
.
options
.
allow_single_deselect
!=
null
)
&&
this
.
form_field
.
options
[
0
].
text
===
""
?
this
.
options
.
allow_single_deselect
:
false
;
this
.
disable_search_threshold
=
this
.
options
.
disable_search_threshold
||
0
;
this
.
choices
=
0
;
return
this
.
results_none_found
=
this
.
options
.
no_results_text
||
"
No results match
"
;
};
AbstractChosen
.
prototype
.
mouse_enter
=
function
()
{
return
this
.
mouse_on_container
=
true
;
};
AbstractChosen
.
prototype
.
mouse_leave
=
function
()
{
return
this
.
mouse_on_container
=
false
;
};
AbstractChosen
.
prototype
.
input_focus
=
function
(
evt
)
{
if
(
!
this
.
active_field
)
{
return
setTimeout
((
__bind
(
function
()
{
return
this
.
container_mousedown
();
},
this
)),
50
);
}
};
AbstractChosen
.
prototype
.
input_blur
=
function
(
evt
)
{
if
(
!
this
.
mouse_on_container
)
{
this
.
active_field
=
false
;
return
setTimeout
((
__bind
(
function
()
{
return
this
.
blur_test
();
},
this
)),
100
);
}
};
AbstractChosen
.
prototype
.
result_add_option
=
function
(
option
)
{
var
classes
,
style
;
if
(
!
option
.
disabled
)
{
option
.
dom_id
=
this
.
container_id
+
"
_o_
"
+
option
.
array_index
;
classes
=
option
.
selected
&&
this
.
is_multiple
?
[]
:
[
"
active-result
"
];
if
(
option
.
selected
)
{
classes
.
push
(
"
result-selected
"
);
}
if
(
option
.
group_array_index
!=
null
)
{
classes
.
push
(
"
group-option
"
);
}
if
(
option
.
classes
!==
""
)
{
classes
.
push
(
option
.
classes
);
}
style
=
option
.
style
.
cssText
!==
""
?
"
style=
\"
"
+
option
.
style
+
"
\"
"
:
""
;
return
'
<li id="
'
+
option
.
dom_id
+
'
" class="
'
+
classes
.
join
(
'
'
)
+
'
"
'
+
style
+
'
>
'
+
option
.
html
+
'
</li>
'
;
}
else
{
return
""
;
}
};
AbstractChosen
.
prototype
.
results_update_field
=
function
()
{
this
.
result_clear_highlight
();
this
.
result_single_selected
=
null
;
return
this
.
results_build
();
};
AbstractChosen
.
prototype
.
results_toggle
=
function
()
{
if
(
this
.
results_showing
)
{
return
this
.
results_hide
();
}
else
{
return
this
.
results_show
();
}
};
AbstractChosen
.
prototype
.
results_search
=
function
(
evt
)
{
if
(
this
.
results_showing
)
{
return
this
.
winnow_results
();
}
else
{
return
this
.
results_show
();
}
};
AbstractChosen
.
prototype
.
keyup_checker
=
function
(
evt
)
{
var
stroke
,
_ref
;
stroke
=
(
_ref
=
evt
.
which
)
!=
null
?
_ref
:
evt
.
keyCode
;
this
.
search_field_scale
();
switch
(
stroke
)
{
case
8
:
if
(
this
.
is_multiple
&&
this
.
backstroke_length
<
1
&&
this
.
choices
>
0
)
{
return
this
.
keydown_backstroke
();
}
else
if
(
!
this
.
pending_backstroke
)
{
this
.
result_clear_highlight
();
return
this
.
results_search
();
}
break
;
case
13
:
evt
.
preventDefault
();
if
(
this
.
results_showing
)
{
return
this
.
result_select
(
evt
);
}
break
;
case
27
:
if
(
this
.
results_showing
)
{
return
this
.
results_hide
();
}
break
;
case
9
:
case
38
:
case
40
:
case
16
:
case
91
:
case
17
:
break
;
default
:
return
this
.
results_search
();
}
};
AbstractChosen
.
prototype
.
generate_field_id
=
function
()
{
var
new_id
;
new_id
=
this
.
generate_random_id
();
this
.
form_field
.
id
=
new_id
;
return
new_id
;
};
AbstractChosen
.
prototype
.
generate_random_char
=
function
()
{
var
chars
,
newchar
,
rand
;
chars
=
"
0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ
"
;
rand
=
Math
.
floor
(
Math
.
random
()
*
chars
.
length
);
return
newchar
=
chars
.
substring
(
rand
,
rand
+
1
);
};
return
AbstractChosen
;
})();
root
.
AbstractChosen
=
AbstractChosen
;
}).
call
(
this
);
(
function
()
{
/*
Chosen source: generate output using 'cake build'
Copyright (c) 2011 by Harvest
*/
var
$
,
Chosen
,
get_side_border_padding
,
root
;
var
__hasProp
=
Object
.
prototype
.
hasOwnProperty
,
__extends
=
function
(
child
,
parent
)
{
for
(
var
key
in
parent
)
{
if
(
__hasProp
.
call
(
parent
,
key
))
child
[
key
]
=
parent
[
key
];
}
function
ctor
()
{
this
.
constructor
=
child
;
}
ctor
.
prototype
=
parent
.
prototype
;
child
.
prototype
=
new
ctor
;
child
.
__super__
=
parent
.
prototype
;
return
child
;
},
__bind
=
function
(
fn
,
me
){
return
function
(){
return
fn
.
apply
(
me
,
arguments
);
};
};
root
=
this
;
$
=
jQuery
;
$
.
fn
.
extend
({
chosen
:
function
(
options
)
{
if
(
$
.
browser
.
msie
&&
(
$
.
browser
.
version
===
"
6.0
"
||
$
.
browser
.
version
===
"
7.0
"
))
{
return
this
;
}
return
$
(
this
).
each
(
function
(
input_field
)
{
if
(
!
(
$
(
this
)).
hasClass
(
"
chzn-done
"
))
{
return
new
Chosen
(
this
,
options
);
}
});
}
});
Chosen
=
(
function
()
{
__extends
(
Chosen
,
AbstractChosen
);
function
Chosen
()
{
Chosen
.
__super__
.
constructor
.
apply
(
this
,
arguments
);
}
Chosen
.
prototype
.
setup
=
function
()
{
this
.
form_field_jq
=
$
(
this
.
form_field
);
return
this
.
is_rtl
=
this
.
form_field_jq
.
hasClass
(
"
chzn-rtl
"
);
};
Chosen
.
prototype
.
finish_setup
=
function
()
{
return
this
.
form_field_jq
.
addClass
(
"
chzn-done
"
);
};
Chosen
.
prototype
.
set_up_html
=
function
()
{
var
container_div
,
dd_top
,
dd_width
,
sf_width
;
this
.
container_id
=
this
.
form_field
.
id
.
length
?
this
.
form_field
.
id
.
replace
(
/
(
:|
\.)
/g
,
'
_
'
)
:
this
.
generate_field_id
();
this
.
container_id
+=
"
_chzn
"
;
this
.
f_width
=
this
.
form_field_jq
.
outerWidth
();
this
.
default_text
=
this
.
form_field_jq
.
data
(
'
placeholder
'
)
?
this
.
form_field_jq
.
data
(
'
placeholder
'
)
:
this
.
default_text_default
;
container_div
=
$
(
"
<div />
"
,
{
id
:
this
.
container_id
,
"
class
"
:
"
chzn-container
"
+
(
this
.
is_rtl
?
'
chzn-rtl
'
:
''
),
style
:
'
width:
'
+
this
.
f_width
+
'
px;
'
});
if
(
this
.
is_multiple
)
{
container_div
.
html
(
'
<ul class="chzn-choices"><li class="search-field"><input type="text" value="
'
+
this
.
default_text
+
'
" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>
'
);
}
else
{
container_div
.
html
(
'
<a href="javascript:void(0)" class="chzn-single"><span>
'
+
this
.
default_text
+
'
</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>
'
);
}
this
.
form_field_jq
.
hide
().
after
(
container_div
);
this
.
container
=
$
(
'
#
'
+
this
.
container_id
);
this
.
container
.
addClass
(
"
chzn-container-
"
+
(
this
.
is_multiple
?
"
multi
"
:
"
single
"
));
this
.
dropdown
=
this
.
container
.
find
(
'
div.chzn-drop
'
).
first
();
dd_top
=
this
.
container
.
height
();
dd_width
=
this
.
f_width
-
get_side_border_padding
(
this
.
dropdown
);
this
.
dropdown
.
css
({
"
width
"
:
dd_width
+
"
px
"
,
"
top
"
:
dd_top
+
"
px
"
});
this
.
search_field
=
this
.
container
.
find
(
'
input
'
).
first
();
this
.
search_results
=
this
.
container
.
find
(
'
ul.chzn-results
'
).
first
();
this
.
search_field_scale
();
this
.
search_no_results
=
this
.
container
.
find
(
'
li.no-results
'
).
first
();
if
(
this
.
is_multiple
)
{
this
.
search_choices
=
this
.
container
.
find
(
'
ul.chzn-choices
'
).
first
();
this
.
search_container
=
this
.
container
.
find
(
'
li.search-field
'
).
first
();
}
else
{
this
.
search_container
=
this
.
container
.
find
(
'
div.chzn-search
'
).
first
();
this
.
selected_item
=
this
.
container
.
find
(
'
.chzn-single
'
).
first
();
sf_width
=
dd_width
-
get_side_border_padding
(
this
.
search_container
)
-
get_side_border_padding
(
this
.
search_field
);
this
.
search_field
.
css
({
"
width
"
:
sf_width
+
"
px
"
});
}
this
.
results_build
();
this
.
set_tab_index
();
return
this
.
form_field_jq
.
trigger
(
"
liszt:ready
"
,
{
chosen
:
this
});
};
Chosen
.
prototype
.
register_observers
=
function
()
{
this
.
container
.
mousedown
(
__bind
(
function
(
evt
)
{
return
this
.
container_mousedown
(
evt
);
},
this
));
this
.
container
.
mouseup
(
__bind
(
function
(
evt
)
{
return
this
.
container_mouseup
(
evt
);
},
this
));
this
.
container
.
mouseenter
(
__bind
(
function
(
evt
)
{
return
this
.
mouse_enter
(
evt
);
},
this
));
this
.
container
.
mouseleave
(
__bind
(
function
(
evt
)
{
return
this
.
mouse_leave
(
evt
);
},
this
));
this
.
search_results
.
mouseup
(
__bind
(
function
(
evt
)
{
return
this
.
search_results_mouseup
(
evt
);
},
this
));
this
.
search_results
.
mouseover
(
__bind
(
function
(
evt
)
{
return
this
.
search_results_mouseover
(
evt
);
},
this
));
this
.
search_results
.
mouseout
(
__bind
(
function
(
evt
)
{
return
this
.
search_results_mouseout
(
evt
);
},
this
));
this
.
form_field_jq
.
bind
(
"
liszt:updated
"
,
__bind
(
function
(
evt
)
{
return
this
.
results_update_field
(
evt
);
},
this
));
this
.
search_field
.
blur
(
__bind
(
function
(
evt
)
{
return
this
.
input_blur
(
evt
);
},
this
));
this
.
search_field
.
keyup
(
__bind
(
function
(
evt
)
{
return
this
.
keyup_checker
(
evt
);
},
this
));
this
.
search_field
.
keydown
(
__bind
(
function
(
evt
)
{
return
this
.
keydown_checker
(
evt
);
},
this
));
if
(
this
.
is_multiple
)
{
this
.
search_choices
.
click
(
__bind
(
function
(
evt
)
{
return
this
.
choices_click
(
evt
);
},
this
));
return
this
.
search_field
.
focus
(
__bind
(
function
(
evt
)
{
return
this
.
input_focus
(
evt
);
},
this
));
}
};
Chosen
.
prototype
.
search_field_disabled
=
function
()
{
this
.
is_disabled
=
this
.
form_field_jq
[
0
].
disabled
;
if
(
this
.
is_disabled
)
{
this
.
container
.
addClass
(
'
chzn-disabled
'
);
this
.
search_field
[
0
].
disabled
=
true
;
if
(
!
this
.
is_multiple
)
{
this
.
selected_item
.
unbind
(
"
focus
"
,
this
.
activate_action
);
}
return
this
.
close_field
();
}
else
{
this
.
container
.
removeClass
(
'
chzn-disabled
'
);
this
.
search_field
[
0
].
disabled
=
false
;
if
(
!
this
.
is_multiple
)
{
return
this
.
selected_item
.
bind
(
"
focus
"
,
this
.
activate_action
);
}
}
};
Chosen
.
prototype
.
container_mousedown
=
function
(
evt
)
{
var
target_closelink
;
if
(
!
this
.
is_disabled
)
{
target_closelink
=
evt
!=
null
?
(
$
(
evt
.
target
)).
hasClass
(
"
search-choice-close
"
)
:
false
;
if
(
evt
&&
evt
.
type
===
"
mousedown
"
)
{
evt
.
stopPropagation
();
}
if
(
!
this
.
pending_destroy_click
&&
!
target_closelink
)
{
if
(
!
this
.
active_field
)
{
if
(
this
.
is_multiple
)
{
this
.
search_field
.
val
(
""
);
}
$
(
document
).
click
(
this
.
click_test_action
);
this
.
results_show
();
}
else
if
(
!
this
.
is_multiple
&&
evt
&&
(
$
(
evt
.
target
)
===
this
.
selected_item
||
$
(
evt
.
target
).
parents
(
"
a.chzn-single
"
).
length
))
{
evt
.
preventDefault
();
this
.
results_toggle
();
}
return
this
.
activate_field
();
}
else
{
return
this
.
pending_destroy_click
=
false
;
}
}
};
Chosen
.
prototype
.
container_mouseup
=
function
(
evt
)
{
if
(
evt
.
target
.
nodeName
===
"
ABBR
"
)
{
return
this
.
results_reset
(
evt
);
}
};
Chosen
.
prototype
.
blur_test
=
function
(
evt
)
{
if
(
!
this
.
active_field
&&
this
.
container
.
hasClass
(
"
chzn-container-active
"
))
{
return
this
.
close_field
();
}
};
Chosen
.
prototype
.
close_field
=
function
()
{
$
(
document
).
unbind
(
"
click
"
,
this
.
click_test_action
);
if
(
!
this
.
is_multiple
)
{
this
.
selected_item
.
attr
(
"
tabindex
"
,
this
.
search_field
.
attr
(
"
tabindex
"
));
this
.
search_field
.
attr
(
"
tabindex
"
,
-
1
);
}
this
.
active_field
=
false
;
this
.
results_hide
();
this
.
container
.
removeClass
(
"
chzn-container-active
"
);
this
.
winnow_results_clear
();
this
.
clear_backstroke
();
this
.
show_search_field_default
();
return
this
.
search_field_scale
();
};
Chosen
.
prototype
.
activate_field
=
function
()
{
if
(
!
this
.
is_multiple
&&
!
this
.
active_field
)
{
this
.
search_field
.
attr
(
"
tabindex
"
,
this
.
selected_item
.
attr
(
"
tabindex
"
));
this
.
selected_item
.
attr
(
"
tabindex
"
,
-
1
);
}
this
.
container
.
addClass
(
"
chzn-container-active
"
);
this
.
active_field
=
true
;
this
.
search_field
.
val
(
this
.
search_field
.
val
());
return
this
.
search_field
.
focus
();
};
Chosen
.
prototype
.
test_active_click
=
function
(
evt
)
{
if
(
$
(
evt
.
target
).
parents
(
'
#
'
+
this
.
container_id
).
length
)
{
return
this
.
active_field
=
true
;
}
else
{
return
this
.
close_field
();
}
};
Chosen
.
prototype
.
results_build
=
function
()
{
var
content
,
data
,
startTime
,
_i
,
_len
,
_ref
;
startTime
=
new
Date
();
this
.
parsing
=
true
;
this
.
results_data
=
root
.
SelectParser
.
select_to_array
(
this
.
form_field
);
if
(
this
.
is_multiple
&&
this
.
choices
>
0
)
{
this
.
search_choices
.
find
(
"
li.search-choice
"
).
remove
();
this
.
choices
=
0
;
}
else
if
(
!
this
.
is_multiple
)
{
this
.
selected_item
.
find
(
"
span
"
).
text
(
this
.
default_text
);
if
(
this
.
form_field
.
options
.
length
<=
this
.
disable_search_threshold
)
{
this
.
container
.
addClass
(
"
chzn-container-single-nosearch
"
);
}
else
{
this
.
container
.
removeClass
(
"
chzn-container-single-nosearch
"
);
}
}
content
=
''
;
_ref
=
this
.
results_data
;
for
(
_i
=
0
,
_len
=
_ref
.
length
;
_i
<
_len
;
_i
++
)
{
data
=
_ref
[
_i
];
if
(
data
.
group
)
{
content
+=
this
.
result_add_group
(
data
);
}
else
if
(
!
data
.
empty
)
{
content
+=
this
.
result_add_option
(
data
);
if
(
data
.
selected
&&
this
.
is_multiple
)
{
this
.
choice_build
(
data
);
}
else
if
(
data
.
selected
&&
!
this
.
is_multiple
)
{
this
.
selected_item
.
find
(
"
span
"
).
text
(
data
.
text
);
if
(
this
.
allow_single_deselect
)
{
this
.
single_deselect_control_build
();
}
}
}
}
this
.
search_field_disabled
();
this
.
show_search_field_default
();
this
.
search_field_scale
();
this
.
search_results
.
html
(
content
);
return
this
.
parsing
=
false
;
};
Chosen
.
prototype
.
result_add_group
=
function
(
group
)
{
if
(
!
group
.
disabled
)
{
group
.
dom_id
=
this
.
container_id
+
"
_g_
"
+
group
.
array_index
;
return
'
<li id="
'
+
group
.
dom_id
+
'
" class="group-result">
'
+
$
(
"
<div />
"
).
text
(
group
.
label
).
html
()
+
'
</li>
'
;
}
else
{
return
""
;
}
};
Chosen
.
prototype
.
result_do_highlight
=
function
(
el
)
{
var
high_bottom
,
high_top
,
maxHeight
,
visible_bottom
,
visible_top
;
if
(
el
.
length
)
{
this
.
result_clear_highlight
();
this
.
result_highlight
=
el
;
this
.
result_highlight
.
addClass
(
"
highlighted
"
);
maxHeight
=
parseInt
(
this
.
search_results
.
css
(
"
maxHeight
"
),
10
);
visible_top
=
this
.
search_results
.
scrollTop
();
visible_bottom
=
maxHeight
+
visible_top
;
high_top
=
this
.
result_highlight
.
position
().
top
+
this
.
search_results
.
scrollTop
();
high_bottom
=
high_top
+
this
.
result_highlight
.
outerHeight
();
if
(
high_bottom
>=
visible_bottom
)
{
return
this
.
search_results
.
scrollTop
((
high_bottom
-
maxHeight
)
>
0
?
high_bottom
-
maxHeight
:
0
);
}
else
if
(
high_top
<
visible_top
)
{
return
this
.
search_results
.
scrollTop
(
high_top
);
}
}
};
Chosen
.
prototype
.
result_clear_highlight
=
function
()
{
if
(
this
.
result_highlight
)
{
this
.
result_highlight
.
removeClass
(
"
highlighted
"
);
}
return
this
.
result_highlight
=
null
;
};
Chosen
.
prototype
.
results_show
=
function
()
{
var
dd_top
;
if
(
!
this
.
is_multiple
)
{
this
.
selected_item
.
addClass
(
"
chzn-single-with-drop
"
);
if
(
this
.
result_single_selected
)
{
this
.
result_do_highlight
(
this
.
result_single_selected
);
}
}
dd_top
=
this
.
is_multiple
?
this
.
container
.
height
()
:
this
.
container
.
height
()
-
1
;
this
.
dropdown
.
css
({
"
top
"
:
dd_top
+
"
px
"
,
"
left
"
:
0
});
this
.
results_showing
=
true
;
this
.
search_field
.
focus
();
this
.
search_field
.
val
(
this
.
search_field
.
val
());
return
this
.
winnow_results
();
};
Chosen
.
prototype
.
results_hide
=
function
()
{
if
(
!
this
.
is_multiple
)
{
this
.
selected_item
.
removeClass
(
"
chzn-single-with-drop
"
);
}
this
.
result_clear_highlight
();
this
.
dropdown
.
css
({
"
left
"
:
"
-9000px
"
});
return
this
.
results_showing
=
false
;
};
Chosen
.
prototype
.
set_tab_index
=
function
(
el
)
{
var
ti
;
if
(
this
.
form_field_jq
.
attr
(
"
tabindex
"
))
{
ti
=
this
.
form_field_jq
.
attr
(
"
tabindex
"
);
this
.
form_field_jq
.
attr
(
"
tabindex
"
,
-
1
);
if
(
this
.
is_multiple
)
{
return
this
.
search_field
.
attr
(
"
tabindex
"
,
ti
);
}
else
{
this
.
selected_item
.
attr
(
"
tabindex
"
,
ti
);
return
this
.
search_field
.
attr
(
"
tabindex
"
,
-
1
);
}
}
};
Chosen
.
prototype
.
show_search_field_default
=
function
()
{
if
(
this
.
is_multiple
&&
this
.
choices
<
1
&&
!
this
.
active_field
)
{
this
.
search_field
.
val
(
this
.
default_text
);
return
this
.
search_field
.
addClass
(
"
default
"
);
}
else
{
this
.
search_field
.
val
(
""
);
return
this
.
search_field
.
removeClass
(
"
default
"
);
}
};
Chosen
.
prototype
.
search_results_mouseup
=
function
(
evt
)
{
var
target
;
target
=
$
(
evt
.
target
).
hasClass
(
"
active-result
"
)
?
$
(
evt
.
target
)
:
$
(
evt
.
target
).
parents
(
"
.active-result
"
).
first
();
if
(
target
.
length
)
{
this
.
result_highlight
=
target
;
return
this
.
result_select
(
evt
);
}
};
Chosen
.
prototype
.
search_results_mouseover
=
function
(
evt
)
{
var
target
;
target
=
$
(
evt
.
target
).
hasClass
(
"
active-result
"
)
?
$
(
evt
.
target
)
:
$
(
evt
.
target
).
parents
(
"
.active-result
"
).
first
();
if
(
target
)
{
return
this
.
result_do_highlight
(
target
);
}
};
Chosen
.
prototype
.
search_results_mouseout
=
function
(
evt
)
{
if
(
$
(
evt
.
target
).
hasClass
(
"
active-result
"
||
$
(
evt
.
target
).
parents
(
'
.active-result
'
).
first
()))
{
return
this
.
result_clear_highlight
();
}
};
Chosen
.
prototype
.
choices_click
=
function
(
evt
)
{
evt
.
preventDefault
();
if
(
this
.
active_field
&&
!
(
$
(
evt
.
target
).
hasClass
(
"
search-choice
"
||
$
(
evt
.
target
).
parents
(
'
.search-choice
'
).
first
))
&&
!
this
.
results_showing
)
{
return
this
.
results_show
();
}
};
Chosen
.
prototype
.
choice_build
=
function
(
item
)
{
var
choice_id
,
link
;
choice_id
=
this
.
container_id
+
"
_c_
"
+
item
.
array_index
;
this
.
choices
+=
1
;
this
.
search_container
.
before
(
'
<li class="search-choice" id="
'
+
choice_id
+
'
"><span>
'
+
item
.
html
+
'
</span><a href="javascript:void(0)" class="search-choice-close" rel="
'
+
item
.
array_index
+
'
"></a></li>
'
);
link
=
$
(
'
#
'
+
choice_id
).
find
(
"
a
"
).
first
();
return
link
.
click
(
__bind
(
function
(
evt
)
{
return
this
.
choice_destroy_link_click
(
evt
);
},
this
));
};
Chosen
.
prototype
.
choice_destroy_link_click
=
function
(
evt
)
{
evt
.
preventDefault
();
if
(
!
this
.
is_disabled
)
{
this
.
pending_destroy_click
=
true
;
return
this
.
choice_destroy
(
$
(
evt
.
target
));
}
else
{
return
evt
.
stopPropagation
;
}
};
Chosen
.
prototype
.
choice_destroy
=
function
(
link
)
{
this
.
choices
-=
1
;
this
.
show_search_field_default
();
if
(
this
.
is_multiple
&&
this
.
choices
>
0
&&
this
.
search_field
.
val
().
length
<
1
)
{
this
.
results_hide
();
}
this
.
result_deselect
(
link
.
attr
(
"
rel
"
));
return
link
.
parents
(
'
li
'
).
first
().
remove
();
};
Chosen
.
prototype
.
results_reset
=
function
(
evt
)
{
this
.
form_field
.
options
[
0
].
selected
=
true
;
this
.
selected_item
.
find
(
"
span
"
).
text
(
this
.
default_text
);
this
.
show_search_field_default
();
$
(
evt
.
target
).
remove
();
this
.
form_field_jq
.
trigger
(
"
change
"
);
if
(
this
.
active_field
)
{
return
this
.
results_hide
();
}
};
Chosen
.
prototype
.
result_select
=
function
(
evt
)
{
var
high
,
high_id
,
item
,
position
;
if
(
this
.
result_highlight
)
{
high
=
this
.
result_highlight
;
high_id
=
high
.
attr
(
"
id
"
);
this
.
result_clear_highlight
();
if
(
this
.
is_multiple
)
{
this
.
result_deactivate
(
high
);
}
else
{
this
.
search_results
.
find
(
"
.result-selected
"
).
removeClass
(
"
result-selected
"
);
this
.
result_single_selected
=
high
;
}
high
.
addClass
(
"
result-selected
"
);
position
=
high_id
.
substr
(
high_id
.
lastIndexOf
(
"
_
"
)
+
1
);
item
=
this
.
results_data
[
position
];
item
.
selected
=
true
;
this
.
form_field
.
options
[
item
.
options_index
].
selected
=
true
;
if
(
this
.
is_multiple
)
{
this
.
choice_build
(
item
);
}
else
{
this
.
selected_item
.
find
(
"
span
"
).
first
().
text
(
item
.
text
);
if
(
this
.
allow_single_deselect
)
{
this
.
single_deselect_control_build
();
}
}
if
(
!
(
evt
.
metaKey
&&
this
.
is_multiple
))
{
this
.
results_hide
();
}
this
.
search_field
.
val
(
""
);
this
.
form_field_jq
.
trigger
(
"
change
"
);
return
this
.
search_field_scale
();
}
};
Chosen
.
prototype
.
result_activate
=
function
(
el
)
{
return
el
.
addClass
(
"
active-result
"
);
};
Chosen
.
prototype
.
result_deactivate
=
function
(
el
)
{
return
el
.
removeClass
(
"
active-result
"
);
};
Chosen
.
prototype
.
result_deselect
=
function
(
pos
)
{
var
result
,
result_data
;
result_data
=
this
.
results_data
[
pos
];
result_data
.
selected
=
false
;
this
.
form_field
.
options
[
result_data
.
options_index
].
selected
=
false
;
result
=
$
(
"
#
"
+
this
.
container_id
+
"
_o_
"
+
pos
);
result
.
removeClass
(
"
result-selected
"
).
addClass
(
"
active-result
"
).
show
();
this
.
result_clear_highlight
();
this
.
winnow_results
();
this
.
form_field_jq
.
trigger
(
"
change
"
);
return
this
.
search_field_scale
();
};
Chosen
.
prototype
.
single_deselect_control_build
=
function
()
{
if
(
this
.
allow_single_deselect
&&
this
.
selected_item
.
find
(
"
abbr
"
).
length
<
1
)
{
return
this
.
selected_item
.
find
(
"
span
"
).
first
().
after
(
"
<abbr class=
\"
search-choice-close
\"
></abbr>
"
);
}
};
Chosen
.
prototype
.
winnow_results
=
function
()
{
var
found
,
option
,
part
,
parts
,
regex
,
result_id
,
results
,
searchText
,
startTime
,
startpos
,
text
,
zregex
,
_i
,
_j
,
_len
,
_len2
,
_ref
;
startTime
=
new
Date
();
this
.
no_results_clear
();
results
=
0
;
searchText
=
this
.
search_field
.
val
()
===
this
.
default_text
?
""
:
$
(
'
<div/>
'
).
text
(
$
.
trim
(
this
.
search_field
.
val
())).
html
();
regex
=
new
RegExp
(
'
^
'
+
searchText
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
),
'
i
'
);
zregex
=
new
RegExp
(
searchText
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
),
'
i
'
);
_ref
=
this
.
results_data
;
for
(
_i
=
0
,
_len
=
_ref
.
length
;
_i
<
_len
;
_i
++
)
{
option
=
_ref
[
_i
];
if
(
!
option
.
disabled
&&
!
option
.
empty
)
{
if
(
option
.
group
)
{
$
(
'
#
'
+
option
.
dom_id
).
hide
();
}
else
if
(
!
(
this
.
is_multiple
&&
option
.
selected
))
{
found
=
false
;
result_id
=
option
.
dom_id
;
if
(
regex
.
test
(
option
.
html
))
{
found
=
true
;
results
+=
1
;
}
else
if
(
option
.
html
.
indexOf
(
"
"
)
>=
0
||
option
.
html
.
indexOf
(
"
[
"
)
===
0
)
{
parts
=
option
.
html
.
replace
(
/
\[
|
\]
/g
,
""
).
split
(
"
"
);
if
(
parts
.
length
)
{
for
(
_j
=
0
,
_len2
=
parts
.
length
;
_j
<
_len2
;
_j
++
)
{
part
=
parts
[
_j
];
if
(
regex
.
test
(
part
))
{
found
=
true
;
results
+=
1
;
}
}
}
}
if
(
found
)
{
if
(
searchText
.
length
)
{
startpos
=
option
.
html
.
search
(
zregex
);
text
=
option
.
html
.
substr
(
0
,
startpos
+
searchText
.
length
)
+
'
</em>
'
+
option
.
html
.
substr
(
startpos
+
searchText
.
length
);
text
=
text
.
substr
(
0
,
startpos
)
+
'
<em>
'
+
text
.
substr
(
startpos
);
}
else
{
text
=
option
.
html
;
}
if
(
$
(
"
#
"
+
result_id
).
html
!==
text
)
{
$
(
"
#
"
+
result_id
).
html
(
text
);
}
this
.
result_activate
(
$
(
"
#
"
+
result_id
));
if
(
option
.
group_array_index
!=
null
)
{
$
(
"
#
"
+
this
.
results_data
[
option
.
group_array_index
].
dom_id
).
show
();
}
}
else
{
if
(
this
.
result_highlight
&&
result_id
===
this
.
result_highlight
.
attr
(
'
id
'
))
{
this
.
result_clear_highlight
();
}
this
.
result_deactivate
(
$
(
"
#
"
+
result_id
));
}
}
}
}
if
(
results
<
1
&&
searchText
.
length
)
{
return
this
.
no_results
(
searchText
);
}
else
{
return
this
.
winnow_results_set_highlight
();
}
};
Chosen
.
prototype
.
winnow_results_clear
=
function
()
{
var
li
,
lis
,
_i
,
_len
,
_results
;
this
.
search_field
.
val
(
""
);
lis
=
this
.
search_results
.
find
(
"
li
"
);
_results
=
[];
for
(
_i
=
0
,
_len
=
lis
.
length
;
_i
<
_len
;
_i
++
)
{
li
=
lis
[
_i
];
li
=
$
(
li
);
_results
.
push
(
li
.
hasClass
(
"
group-result
"
)
?
li
.
show
()
:
!
this
.
is_multiple
||
!
li
.
hasClass
(
"
result-selected
"
)
?
this
.
result_activate
(
li
)
:
void
0
);
}
return
_results
;
};
Chosen
.
prototype
.
winnow_results_set_highlight
=
function
()
{
var
do_high
,
selected_results
;
if
(
!
this
.
result_highlight
)
{
selected_results
=
!
this
.
is_multiple
?
this
.
search_results
.
find
(
"
.result-selected.active-result
"
)
:
[];
do_high
=
selected_results
.
length
?
selected_results
.
first
()
:
this
.
search_results
.
find
(
"
.active-result
"
).
first
();
if
(
do_high
!=
null
)
{
return
this
.
result_do_highlight
(
do_high
);
}
}
};
Chosen
.
prototype
.
no_results
=
function
(
terms
)
{
var
no_results_html
;
no_results_html
=
$
(
'
<li class="no-results">
'
+
this
.
results_none_found
+
'
"<span></span>"</li>
'
);
no_results_html
.
find
(
"
span
"
).
first
().
html
(
terms
);
return
this
.
search_results
.
append
(
no_results_html
);
};
Chosen
.
prototype
.
no_results_clear
=
function
()
{
return
this
.
search_results
.
find
(
"
.no-results
"
).
remove
();
};
Chosen
.
prototype
.
keydown_arrow
=
function
()
{
var
first_active
,
next_sib
;
if
(
!
this
.
result_highlight
)
{
first_active
=
this
.
search_results
.
find
(
"
li.active-result
"
).
first
();
if
(
first_active
)
{
this
.
result_do_highlight
(
$
(
first_active
));
}
}
else
if
(
this
.
results_showing
)
{
next_sib
=
this
.
result_highlight
.
nextAll
(
"
li.active-result
"
).
first
();
if
(
next_sib
)
{
this
.
result_do_highlight
(
next_sib
);
}
}
if
(
!
this
.
results_showing
)
{
return
this
.
results_show
();
}
};
Chosen
.
prototype
.
keyup_arrow
=
function
()
{
var
prev_sibs
;
if
(
!
this
.
results_showing
&&
!
this
.
is_multiple
)
{
return
this
.
results_show
();
}
else
if
(
this
.
result_highlight
)
{
prev_sibs
=
this
.
result_highlight
.
prevAll
(
"
li.active-result
"
);
if
(
prev_sibs
.
length
)
{
return
this
.
result_do_highlight
(
prev_sibs
.
first
());
}
else
{
if
(
this
.
choices
>
0
)
{
this
.
results_hide
();
}
return
this
.
result_clear_highlight
();
}
}
};
Chosen
.
prototype
.
keydown_backstroke
=
function
()
{
if
(
this
.
pending_backstroke
)
{
this
.
choice_destroy
(
this
.
pending_backstroke
.
find
(
"
a
"
).
first
());
return
this
.
clear_backstroke
();
}
else
{
this
.
pending_backstroke
=
this
.
search_container
.
siblings
(
"
li.search-choice
"
).
last
();
return
this
.
pending_backstroke
.
addClass
(
"
search-choice-focus
"
);
}
};
Chosen
.
prototype
.
clear_backstroke
=
function
()
{
if
(
this
.
pending_backstroke
)
{
this
.
pending_backstroke
.
removeClass
(
"
search-choice-focus
"
);
}
return
this
.
pending_backstroke
=
null
;
};
Chosen
.
prototype
.
keydown_checker
=
function
(
evt
)
{
var
stroke
,
_ref
;
stroke
=
(
_ref
=
evt
.
which
)
!=
null
?
_ref
:
evt
.
keyCode
;
this
.
search_field_scale
();
if
(
stroke
!==
8
&&
this
.
pending_backstroke
)
{
this
.
clear_backstroke
();
}
switch
(
stroke
)
{
case
8
:
this
.
backstroke_length
=
this
.
search_field
.
val
().
length
;
break
;
case
9
:
if
(
this
.
results_showing
&&
!
this
.
is_multiple
)
{
this
.
result_select
(
evt
);
}
this
.
mouse_on_container
=
false
;
break
;
case
13
:
evt
.
preventDefault
();
break
;
case
38
:
evt
.
preventDefault
();
this
.
keyup_arrow
();
break
;
case
40
:
this
.
keydown_arrow
();
break
;
}
};
Chosen
.
prototype
.
search_field_scale
=
function
()
{
var
dd_top
,
div
,
h
,
style
,
style_block
,
styles
,
w
,
_i
,
_len
;
if
(
this
.
is_multiple
)
{
h
=
0
;
w
=
0
;
style_block
=
"
position:absolute; left: -1000px; top: -1000px; display:none;
"
;
styles
=
[
'
font-size
'
,
'
font-style
'
,
'
font-weight
'
,
'
font-family
'
,
'
line-height
'
,
'
text-transform
'
,
'
letter-spacing
'
];
for
(
_i
=
0
,
_len
=
styles
.
length
;
_i
<
_len
;
_i
++
)
{
style
=
styles
[
_i
];
style_block
+=
style
+
"
:
"
+
this
.
search_field
.
css
(
style
)
+
"
;
"
;
}
div
=
$
(
'
<div />
'
,
{
'
style
'
:
style_block
});
div
.
text
(
this
.
search_field
.
val
());
$
(
'
body
'
).
append
(
div
);
w
=
div
.
width
()
+
25
;
div
.
remove
();
if
(
w
>
this
.
f_width
-
10
)
{
w
=
this
.
f_width
-
10
;
}
this
.
search_field
.
css
({
'
width
'
:
w
+
'
px
'
});
dd_top
=
this
.
container
.
height
();
return
this
.
dropdown
.
css
({
"
top
"
:
dd_top
+
"
px
"
});
}
};
Chosen
.
prototype
.
generate_random_id
=
function
()
{
var
string
;
string
=
"
sel
"
+
this
.
generate_random_char
()
+
this
.
generate_random_char
()
+
this
.
generate_random_char
();
while
(
$
(
"
#
"
+
string
).
length
>
0
)
{
string
+=
this
.
generate_random_char
();
}
return
string
;
};
return
Chosen
;
})();
get_side_border_padding
=
function
(
elmt
)
{
var
side_border_padding
;
return
side_border_padding
=
elmt
.
outerWidth
()
-
elmt
.
width
();
};
root
.
get_side_border_padding
=
get_side_border_padding
;
}).
call
(
this
);
app/assets/stylesheets/chosen.css
0 → 100644
View file @
415516b2
/* @group Base */
.chzn-container
{
font-size
:
13px
;
position
:
relative
;
display
:
inline-block
;
zoom
:
1
;
*
display
:
inline
;
}
.chzn-container
.chzn-drop
{
background
:
#fff
;
border
:
1px
solid
#aaa
;
border-top
:
0
;
position
:
absolute
;
top
:
29px
;
left
:
0
;
-webkit-box-shadow
:
0
4px
5px
rgba
(
0
,
0
,
0
,
.15
);
-moz-box-shadow
:
0
4px
5px
rgba
(
0
,
0
,
0
,
.15
);
-o-box-shadow
:
0
4px
5px
rgba
(
0
,
0
,
0
,
.15
);
box-shadow
:
0
4px
5px
rgba
(
0
,
0
,
0
,
.15
);
z-index
:
999
;
}
/* @end */
/* @group Single Chosen */
.chzn-container-single
.chzn-single
{
background-color
:
#fff
;
background-image
:
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0
,
#eeeeee
),
color-stop
(
0.5
,
white
));
background-image
:
-webkit-linear-gradient
(
center
bottom
,
#eeeeee
0%
,
white
50%
);
background-image
:
-moz-linear-gradient
(
center
bottom
,
#eeeeee
0%
,
white
50%
);
background-image
:
-o-linear-gradient
(
top
,
#eeeeee
0%
,
#ffffff
50%
);
background-image
:
-ms-linear-gradient
(
top
,
#eeeeee
0%
,
#ffffff
50%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#eeeeee'
,
endColorstr
=
'#ffffff'
,
GradientType
=
0
);
background-image
:
linear-gradient
(
top
,
#eeeeee
0%
,
#ffffff
50%
);
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
border-radius
:
4px
;
-moz-background-clip
:
padding
;
-webkit-background-clip
:
padding-box
;
background-clip
:
padding-box
;
border
:
1px
solid
#aaa
;
display
:
block
;
overflow
:
hidden
;
white-space
:
nowrap
;
position
:
relative
;
height
:
26px
;
line-height
:
26px
;
padding
:
0
0
0
8px
;
color
:
#444
;
text-decoration
:
none
;
}
.chzn-container-single
.chzn-single
span
{
margin-right
:
26px
;
display
:
block
;
overflow
:
hidden
;
white-space
:
nowrap
;
-o-text-overflow
:
ellipsis
;
-ms-text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
}
.chzn-container-single
.chzn-single
abbr
{
display
:
block
;
position
:
absolute
;
right
:
26px
;
top
:
8px
;
width
:
12px
;
height
:
13px
;
font-size
:
1px
;
background
:
url(chosen-sprite.png)
right
top
no-repeat
;
}
.chzn-container-single
.chzn-single
abbr
:hover
{
background-position
:
right
-11px
;
}
.chzn-container-single
.chzn-single
div
{
-webkit-border-radius
:
0
4px
4px
0
;
-moz-border-radius
:
0
4px
4px
0
;
border-radius
:
0
4px
4px
0
;
-moz-background-clip
:
padding
;
-webkit-background-clip
:
padding-box
;
background-clip
:
padding-box
;
background
:
#ccc
;
background-image
:
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0
,
#ccc
),
color-stop
(
0.6
,
#eee
));
background-image
:
-webkit-linear-gradient
(
center
bottom
,
#ccc
0%
,
#eee
60%
);
background-image
:
-moz-linear-gradient
(
center
bottom
,
#ccc
0%
,
#eee
60%
);
background-image
:
-o-linear-gradient
(
bottom
,
#ccc
0%
,
#eee
60%
);
background-image
:
-ms-linear-gradient
(
top
,
#cccccc
0%
,
#eeeeee
60%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#cccccc'
,
endColorstr
=
'#eeeeee'
,
GradientType
=
0
);
background-image
:
linear-gradient
(
top
,
#cccccc
0%
,
#eeeeee
60%
);
border-left
:
1px
solid
#aaa
;
position
:
absolute
;
right
:
0
;
top
:
0
;
display
:
block
;
height
:
100%
;
width
:
18px
;
}
.chzn-container-single
.chzn-single
div
b
{
background
:
url('chosen-sprite.png')
no-repeat
0
1px
;
display
:
block
;
width
:
100%
;
height
:
100%
;
}
.chzn-container-single
.chzn-search
{
padding
:
3px
4px
;
position
:
relative
;
margin
:
0
;
white-space
:
nowrap
;
z-index
:
1010
;
}
.chzn-container-single
.chzn-search
input
{
background
:
#fff
url('chosen-sprite.png')
no-repeat
100%
-22px
;
background
:
url('chosen-sprite.png')
no-repeat
100%
-22px
,
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0.85
,
white
),
color-stop
(
0.99
,
#eeeeee
));
background
:
url('chosen-sprite.png')
no-repeat
100%
-22px
,
-webkit-linear-gradient
(
center
bottom
,
white
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
100%
-22px
,
-moz-linear-gradient
(
center
bottom
,
white
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
100%
-22px
,
-o-linear-gradient
(
bottom
,
white
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
100%
-22px
,
-ms-linear-gradient
(
top
,
#ffffff
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
100%
-22px
,
linear-gradient
(
top
,
#ffffff
85%
,
#eeeeee
99%
);
margin
:
1px
0
;
padding
:
4px
20px
4px
5px
;
outline
:
0
;
border
:
1px
solid
#aaa
;
font-family
:
sans-serif
;
font-size
:
1em
;
}
.chzn-container-single
.chzn-drop
{
-webkit-border-radius
:
0
0
4px
4px
;
-moz-border-radius
:
0
0
4px
4px
;
border-radius
:
0
0
4px
4px
;
-moz-background-clip
:
padding
;
-webkit-background-clip
:
padding-box
;
background-clip
:
padding-box
;
}
/* @end */
.chzn-container-single-nosearch
.chzn-search
input
{
position
:
absolute
;
left
:
-9000px
;
}
/* @group Multi Chosen */
.chzn-container-multi
.chzn-choices
{
background-color
:
#fff
;
background-image
:
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0.85
,
white
),
color-stop
(
0.99
,
#eeeeee
));
background-image
:
-webkit-linear-gradient
(
center
bottom
,
white
85%
,
#eeeeee
99%
);
background-image
:
-moz-linear-gradient
(
center
bottom
,
white
85%
,
#eeeeee
99%
);
background-image
:
-o-linear-gradient
(
bottom
,
white
85%
,
#eeeeee
99%
);
background-image
:
-ms-linear-gradient
(
top
,
#ffffff
85%
,
#eeeeee
99%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#ffffff'
,
endColorstr
=
'#eeeeee'
,
GradientType
=
0
);
background-image
:
linear-gradient
(
top
,
#ffffff
85%
,
#eeeeee
99%
);
border
:
1px
solid
#aaa
;
margin
:
0
;
padding
:
0
;
cursor
:
text
;
overflow
:
hidden
;
height
:
auto
!important
;
height
:
1%
;
position
:
relative
;
}
.chzn-container-multi
.chzn-choices
li
{
float
:
left
;
list-style
:
none
;
}
.chzn-container-multi
.chzn-choices
.search-field
{
white-space
:
nowrap
;
margin
:
0
;
padding
:
0
;
}
.chzn-container-multi
.chzn-choices
.search-field
input
{
color
:
#666
;
background
:
transparent
!important
;
border
:
0
!important
;
padding
:
5px
;
margin
:
1px
0
;
outline
:
0
;
-webkit-box-shadow
:
none
;
-moz-box-shadow
:
none
;
-o-box-shadow
:
none
;
box-shadow
:
none
;
}
.chzn-container-multi
.chzn-choices
.search-field
.default
{
color
:
#999
;
}
.chzn-container-multi
.chzn-choices
.search-choice
{
-webkit-border-radius
:
3px
;
-moz-border-radius
:
3px
;
border-radius
:
3px
;
-moz-background-clip
:
padding
;
-webkit-background-clip
:
padding-box
;
background-clip
:
padding-box
;
background-color
:
#e4e4e4
;
background-image
:
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0
,
#e4e4e4
),
color-stop
(
0.7
,
#eeeeee
));
background-image
:
-webkit-linear-gradient
(
center
bottom
,
#e4e4e4
0%
,
#eeeeee
70%
);
background-image
:
-moz-linear-gradient
(
center
bottom
,
#e4e4e4
0%
,
#eeeeee
70%
);
background-image
:
-o-linear-gradient
(
bottom
,
#e4e4e4
0%
,
#eeeeee
70%
);
background-image
:
-ms-linear-gradient
(
top
,
#e4e4e4
0%
,
#eeeeee
70%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#e4e4e4'
,
endColorstr
=
'#eeeeee'
,
GradientType
=
0
);
background-image
:
linear-gradient
(
top
,
#e4e4e4
0%
,
#eeeeee
70%
);
color
:
#333
;
border
:
1px
solid
#b4b4b4
;
line-height
:
13px
;
padding
:
3px
19px
3px
6px
;
margin
:
3px
0
3px
5px
;
position
:
relative
;
}
.chzn-container-multi
.chzn-choices
.search-choice
span
{
cursor
:
default
;
}
.chzn-container-multi
.chzn-choices
.search-choice-focus
{
background
:
#d4d4d4
;
}
.chzn-container-multi
.chzn-choices
.search-choice
.search-choice-close
{
display
:
block
;
position
:
absolute
;
right
:
3px
;
top
:
4px
;
width
:
12px
;
height
:
13px
;
font-size
:
1px
;
background
:
url(chosen-sprite.png)
right
top
no-repeat
;
}
.chzn-container-multi
.chzn-choices
.search-choice
.search-choice-close
:hover
{
background-position
:
right
-11px
;
}
.chzn-container-multi
.chzn-choices
.search-choice-focus
.search-choice-close
{
background-position
:
right
-11px
;
}
/* @end */
/* @group Results */
.chzn-container
.chzn-results
{
margin
:
0
4px
4px
0
;
max-height
:
190px
;
padding
:
0
0
0
4px
;
position
:
relative
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
}
.chzn-container-multi
.chzn-results
{
margin
:
-1px
0
0
;
padding
:
0
;
}
.chzn-container
.chzn-results
li
{
display
:
none
;
line-height
:
80%
;
padding
:
7px
7px
8px
;
margin
:
0
;
list-style
:
none
;
}
.chzn-container
.chzn-results
.active-result
{
cursor
:
pointer
;
display
:
list-item
;
}
.chzn-container
.chzn-results
.highlighted
{
background
:
#3875d7
;
color
:
#fff
;
}
.chzn-container
.chzn-results
li
em
{
background
:
#feffde
;
font-style
:
normal
;
}
.chzn-container
.chzn-results
.highlighted
em
{
background
:
transparent
;
}
.chzn-container
.chzn-results
.no-results
{
background
:
#f4f4f4
;
display
:
list-item
;
}
.chzn-container
.chzn-results
.group-result
{
cursor
:
default
;
color
:
#999
;
font-weight
:
bold
;
}
.chzn-container
.chzn-results
.group-option
{
padding-left
:
20px
;
}
.chzn-container-multi
.chzn-drop
.result-selected
{
display
:
none
;
}
/* @end */
/* @group Active */
.chzn-container-active
.chzn-single
{
-webkit-box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
-moz-box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
-o-box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
border
:
1px
solid
#5897fb
;
}
.chzn-container-active
.chzn-single-with-drop
{
border
:
1px
solid
#aaa
;
-webkit-box-shadow
:
0
1px
0
#fff
inset
;
-moz-box-shadow
:
0
1px
0
#fff
inset
;
-o-box-shadow
:
0
1px
0
#fff
inset
;
box-shadow
:
0
1px
0
#fff
inset
;
background-color
:
#eee
;
background-image
:
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0
,
white
),
color-stop
(
0.5
,
#eeeeee
));
background-image
:
-webkit-linear-gradient
(
center
bottom
,
white
0%
,
#eeeeee
50%
);
background-image
:
-moz-linear-gradient
(
center
bottom
,
white
0%
,
#eeeeee
50%
);
background-image
:
-o-linear-gradient
(
bottom
,
white
0%
,
#eeeeee
50%
);
background-image
:
-ms-linear-gradient
(
top
,
#ffffff
0%
,
#eeeeee
50%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#ffffff'
,
endColorstr
=
'#eeeeee'
,
GradientType
=
0
);
background-image
:
linear-gradient
(
top
,
#ffffff
0%
,
#eeeeee
50%
);
-webkit-border-bottom-left-radius
:
0
;
-webkit-border-bottom-right-radius
:
0
;
-moz-border-radius-bottomleft
:
0
;
-moz-border-radius-bottomright
:
0
;
border-bottom-left-radius
:
0
;
border-bottom-right-radius
:
0
;
}
.chzn-container-active
.chzn-single-with-drop
div
{
background
:
transparent
;
border-left
:
none
;
}
.chzn-container-active
.chzn-single-with-drop
div
b
{
background-position
:
-18px
1px
;
}
.chzn-container-active
.chzn-choices
{
-webkit-box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
-moz-box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
-o-box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
box-shadow
:
0
0
5px
rgba
(
0
,
0
,
0
,
.3
);
border
:
1px
solid
#5897fb
;
}
.chzn-container-active
.chzn-choices
.search-field
input
{
color
:
#111
!important
;
}
/* @end */
/* @group Disabled Support */
.chzn-disabled
{
cursor
:
default
;
opacity
:
0.5
!important
;
}
.chzn-disabled
.chzn-single
{
cursor
:
default
;
}
.chzn-disabled
.chzn-choices
.search-choice
.search-choice-close
{
cursor
:
default
;
}
/* @group Right to Left */
.chzn-rtl
{
direction
:
rtl
;
text-align
:
right
;
}
.chzn-rtl
.chzn-single
{
padding-left
:
0
;
padding-right
:
8px
;
}
.chzn-rtl
.chzn-single
span
{
margin-left
:
26px
;
margin-right
:
0
;
}
.chzn-rtl
.chzn-single
div
{
left
:
0
;
right
:
auto
;
border-left
:
none
;
border-right
:
1px
solid
#aaaaaa
;
-webkit-border-radius
:
4px
0
0
4px
;
-moz-border-radius
:
4px
0
0
4px
;
border-radius
:
4px
0
0
4px
;
}
.chzn-rtl
.chzn-choices
li
{
float
:
right
;
}
.chzn-rtl
.chzn-choices
.search-choice
{
padding
:
3px
6px
3px
19px
;
margin
:
3px
5px
3px
0
;
}
.chzn-rtl
.chzn-choices
.search-choice
.search-choice-close
{
left
:
5px
;
right
:
auto
;
background-position
:
right
top
;}
.chzn-rtl.chzn-container-single
.chzn-results
{
margin-left
:
4px
;
margin-right
:
0
;
padding-left
:
0
;
padding-right
:
4px
;
}
.chzn-rtl
.chzn-results
.group-option
{
padding-left
:
0
;
padding-right
:
20px
;
}
.chzn-rtl.chzn-container-active
.chzn-single-with-drop
div
{
border-right
:
none
;
}
.chzn-rtl
.chzn-search
input
{
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
#ffffff
;
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
-webkit-gradient
(
linear
,
left
bottom
,
left
top
,
color-stop
(
0.85
,
white
),
color-stop
(
0.99
,
#eeeeee
));
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
-webkit-linear-gradient
(
center
bottom
,
white
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
-moz-linear-gradient
(
center
bottom
,
white
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
-o-linear-gradient
(
bottom
,
white
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
-ms-linear-gradient
(
top
,
#ffffff
85%
,
#eeeeee
99%
);
background
:
url('chosen-sprite.png')
no-repeat
-38px
-22px
,
linear-gradient
(
top
,
#ffffff
85%
,
#eeeeee
99%
);
padding
:
4px
5px
4px
20px
;
}
/* @end */
app/assets/stylesheets/projects.css.scss
View file @
415516b2
...
@@ -706,3 +706,16 @@ table.highlighttable pre{
...
@@ -706,3 +706,16 @@ table.highlighttable pre{
line-height
:
16px
!
important
;
line-height
:
16px
!
important
;
font-size
:
12px
!
important
;
font-size
:
12px
!
important
;
}
}
.project-refs-form
{
span
{
background
:
none
!
important
;
position
:static
!
important
;
width
:auto
!
important
;
height
:
auto
!
important
;
}
}
.project-refs-select
{
width
:
200px
;
}
app/assets/stylesheets/style.scss
View file @
415516b2
...
@@ -292,7 +292,7 @@ body.login-page{background-color: #f1f1f1; padding-top: 10%}
...
@@ -292,7 +292,7 @@ body.login-page{background-color: #f1f1f1; padding-top: 10%}
/* General */
/* General */
#container
{
background-color
:
white
;
overflow
:
hidden
;}
#container
{
background-color
:
white
;
overflow
:
hidden
;}
/*#container{margin: auto; width: 980px; border: 1px solid rgba(0,0,0,.22); border-top: 0; box-shadow: 0 0 0px 4px rgba(0,0,0,.04)}*/
body
.collapsed
#container
{
margin
:
auto
;
width
:
980px
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,.
22
);
border-top
:
0
;
box-shadow
:
0
0
0px
4px
rgba
(
0
,
0
,
0
,.
04
)}
...
...
app/controllers/application_controller.rb
View file @
415516b2
class
ApplicationController
<
ActionController
::
Base
class
ApplicationController
<
ActionController
::
Base
before_filter
:authenticate_user!
before_filter
:authenticate_user!
before_filter
:view_style
protect_from_forgery
protect_from_forgery
helper_method
:abilities
,
:can?
helper_method
:abilities
,
:can?
...
@@ -57,20 +59,14 @@ class ApplicationController < ActionController::Base
...
@@ -57,20 +59,14 @@ class ApplicationController < ActionController::Base
end
end
def
load_refs
def
load_refs
@branch
=
unless
params
[
:branch
].
blank?
unless
params
[
:ref
].
blank?
params
[
:branch
]
@ref
=
params
[
:ref
]
else
else
nil
@branch
=
params
[
:branch
].
blank?
?
nil
:
params
[
:branch
]
end
@tag
=
params
[
:tag
].
blank?
?
nil
:
params
[
:tag
]
@tag
=
unless
params
[
:tag
].
blank?
params
[
:tag
]
else
nil
end
@ref
=
@branch
||
@tag
||
"master"
@ref
=
@branch
||
@tag
||
"master"
end
end
end
def
render_404
def
render_404
render
:file
=>
File
.
join
(
Rails
.
root
,
"public"
,
"404"
),
:layout
=>
false
,
:status
=>
"404"
render
:file
=>
File
.
join
(
Rails
.
root
,
"public"
,
"404"
),
:layout
=>
false
,
:status
=>
"404"
...
@@ -79,4 +75,12 @@ class ApplicationController < ActionController::Base
...
@@ -79,4 +75,12 @@ class ApplicationController < ActionController::Base
def
require_non_empty_project
def
require_non_empty_project
redirect_to
@project
unless
@project
.
repo_exists?
redirect_to
@project
unless
@project
.
repo_exists?
end
end
def
view_style
if
params
[
:view_style
]
==
"collapsed"
cookies
[
:view_style
]
=
"collapsed"
elsif
params
[
:view_style
]
==
"fluid"
cookies
[
:view_style
]
=
""
end
end
end
end
app/helpers/application_helper.rb
View file @
415516b2
...
@@ -4,6 +4,14 @@ module ApplicationHelper
...
@@ -4,6 +4,14 @@ module ApplicationHelper
"http://www.gravatar.com/avatar/
#{
Digest
::
MD5
.
hexdigest
(
user_email
)
}
?s=40&d=identicon"
"http://www.gravatar.com/avatar/
#{
Digest
::
MD5
.
hexdigest
(
user_email
)
}
?s=40&d=identicon"
end
end
def
body_class
(
default_class
=
nil
)
main
=
content_for
(
:body_class
).
blank?
?
default_class
:
content_for
(
:body_class
)
[
main
,
cookies
[
:view_style
]].
join
(
" "
)
end
def
commit_name
(
project
,
commit
)
def
commit_name
(
project
,
commit
)
if
project
.
commit
.
id
==
commit
.
id
if
project
.
commit
.
id
==
commit
.
id
"master"
"master"
...
@@ -32,6 +40,15 @@ module ApplicationHelper
...
@@ -32,6 +40,15 @@ module ApplicationHelper
"Never"
"Never"
end
end
def
grouped_options_refs
options
=
[
[
"Branch"
,
@repo
.
heads
.
map
(
&
:name
)
],
[
"Tag"
,
@project
.
tags
]
]
grouped_options_for_select
(
options
,
@ref
)
end
def
markdown
(
text
)
def
markdown
(
text
)
RDiscount
.
new
(
text
,
:autolink
,
:no_pseudo_protocols
,
:safelink
,
:smart
,
:filter_html
).
to_html
.
html_safe
RDiscount
.
new
(
text
,
:autolink
,
:no_pseudo_protocols
,
:safelink
,
:smart
,
:filter_html
).
to_html
.
html_safe
end
end
...
...
app/models/key.rb
View file @
415516b2
...
@@ -8,7 +8,7 @@ class Key < ActiveRecord::Base
...
@@ -8,7 +8,7 @@ class Key < ActiveRecord::Base
validates
:key
,
validates
:key
,
:presence
=>
true
,
:presence
=>
true
,
:uniqueness
=>
true
,
:uniqueness
=>
true
,
:length
=>
{
:within
=>
0
..
1
024
}
:length
=>
{
:within
=>
0
..
1
600
}
before_save
:set_identifier
before_save
:set_identifier
after_save
:update_gitosis
after_save
:update_gitosis
...
...
app/views/commits/index.html.haml
View file @
415516b2
-
content_for
(
:body_class
,
"project-page commits-page"
)
-
content_for
(
:body_class
,
"project-page commits-page"
)
.left
=
form_tag
project_commits_path
(
@project
),
:method
=>
:get
do
=
select_tag
"branch"
,
options_for_select
(
@repo
.
heads
.
map
(
&
:name
),
@branch
),
:onchange
=>
"this.form.submit();"
,
:class
=>
""
,
:prompt
=>
"Branches"
.left
=
form_tag
project_commits_path
(
@project
),
:method
=>
:get
do
=
select_tag
"tag"
,
options_for_select
(
@project
.
tags
,
@tag
),
:onchange
=>
"this.form.submit();"
,
:class
=>
""
,
:prompt
=>
"Tags"
.clear
%br
-#%a.right.button{:href => "#"} Download
-#%a.right.button{:href => "#"} Download
-#-if can? current_user, :admin_project, @project
-#-if can? current_user, :admin_project, @project
%a.right.button.blue{:href => "#"} EDIT
%a.right.button.blue{:href => "#"} EDIT
%h2
.icon
%h2
.icon
%span
%span
%a
.project-name
{
:href
=>
"#"
}
%i
.arrow
>
Project
%d
%d
%a
{
:href
=>
"#"
}
=
link_to
project_commits_path
(
@project
)
do
=
@
ref
=
@
project
.
name
-
if
params
[
:path
]
-
if
params
[
:path
]
\/
%d
%a
{
:href
=>
"#"
}=
params
[
:path
].
split
(
"/"
).
join
(
" / "
)
%a
{
:href
=>
"#"
}=
params
[
:path
].
split
(
"/"
).
join
(
" / "
)
.right
=
render
:partial
=>
"projects/refs"
,
:locals
=>
{
:destination
=>
project_commits_path
(
@project
)
}
%div
{
:id
=>
dom_id
(
@project
)}
%div
{
:id
=>
dom_id
(
@project
)}
=
render
"commits"
=
render
"commits"
app/views/layouts/_head_panel.html.erb
View file @
415516b2
<!-- Page Header -->
<!-- Page Header -->
<header>
<header>
<h1
class=
"logo"
>
<h1
class=
"logo"
>
<a
href=
"/"
>
GITLAB
</a></h1>
<a
href=
"/"
>
GITLAB
</a>
<div
class=
"login-top"
>
</h1>
<div
class=
"account-box"
>
<%=
link_to
profile_path
,
:class
=>
"pic"
do
%>
<%=
link_to
profile_path
,
:class
=>
"pic"
do
%>
<%=
image_tag
gravatar_icon
(
current_user
.
email
)
%>
<%=
image_tag
gravatar_icon
(
current_user
.
email
)
%>
<%
end
%>
<%
end
%>
<a
href=
"#"
class=
"arrow-up"
></a>
<div
class=
"account-links"
>
<%=
link_to
profile_path
,
:class
=>
"username"
do
%>
<%=
link_to
profile_path
,
:class
=>
"username"
do
%>
<%=
current_user
.
name
%>
<%#= current_user.name %>
Your profile
<%
end
%>
<%
end
%>
<%=
link_to
"Fluid layout"
,
url_for
(
:view_style
=>
'fluid'
)
if
cookies
[
:view_style
]
==
"collapsed"
%>
<%=
link_to
"Fixed layout"
,
url_for
(
:view_style
=>
'collapsed'
)
unless
cookies
[
:view_style
]
==
"collapsed"
%>
<%=
link_to
'Logout'
,
destroy_user_session_path
,
:class
=>
"logout"
,
:method
=>
:delete
%>
<%=
link_to
'Logout'
,
destroy_user_session_path
,
:class
=>
"logout"
,
:method
=>
:delete
%>
</div>
</div>
</div>
<!-- .account-box -->
<div
class=
"search"
>
<div
class=
"search"
>
<%=
text_field_tag
"search"
,
nil
,
:placeholder
=>
"Search"
,
:class
=>
"search-input"
%>
<%=
text_field_tag
"search"
,
nil
,
:placeholder
=>
"Search"
,
:class
=>
"search-input"
%>
</div>
</div>
...
@@ -26,23 +36,10 @@
...
@@ -26,23 +36,10 @@
<span></span>
Admin
<span></span>
Admin
<%
end
%>
<%
end
%>
</nav>
</nav>
</header>
</header>
<!-- eo Page Header -->
<!-- eo Page Header -->
<div
id=
"header-panel"
style=
"display:none"
>
<div
class=
"container"
>
<div
class=
"span-24"
>
<div
class=
"span-10"
>
<span
class=
"search-holder"
>
</span>
</div>
<div
class=
"right"
>
<%=
link_to
truncate
(
@project
.
name
,
:length
=>
20
),
project_path
(
@project
),
:class
=>
"current button"
if
@project
&&
!
@project
.
new_record?
%>
</div>
</div>
</div>
</div>
<%
if
current_user
%>
<%
if
current_user
%>
<%=
javascript_tag
do
%>
<%=
javascript_tag
do
%>
$(function() {
$(function() {
...
...
app/views/layouts/admin.html.haml
View file @
415516b2
...
@@ -6,11 +6,10 @@
...
@@ -6,11 +6,10 @@
=
stylesheet_link_tag
"application"
=
stylesheet_link_tag
"application"
=
javascript_include_tag
"application"
=
javascript_include_tag
"application"
=
csrf_meta_tags
=
csrf_meta_tags
%link
{
:href
=>
"/assets/favicon.png"
,
:rel
=>
"icon"
,
:type
=>
"image/png"
}
/
=
javascript_tag
do
=
javascript_tag
do
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
%body
{
:class
=>
content_for?
(
:body_class
)
?
yield
(
:body_class
)
:
'project-page'
,
:id
=>
yield
(
:boyd_id
)}
%body
{
:class
=>
body_class
(
'project-page'
)
,
:id
=>
yield
(
:boyd_id
)}
#container
#container
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/head_panel"
=
render
:partial
=>
"layouts/head_panel"
...
...
app/views/layouts/application.html.haml
View file @
415516b2
...
@@ -10,11 +10,10 @@
...
@@ -10,11 +10,10 @@
=
stylesheet_link_tag
"application"
=
stylesheet_link_tag
"application"
=
javascript_include_tag
"application"
=
javascript_include_tag
"application"
=
csrf_meta_tags
=
csrf_meta_tags
%link
{
:href
=>
"/assets/favicon.png"
,
:rel
=>
"icon"
,
:type
=>
"image/png"
}
/
=
javascript_tag
do
=
javascript_tag
do
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
%body
{
:class
=>
yield
(
:body_class
)
,
:id
=>
yield
(
:boyd_id
)}
%body
{
:class
=>
body_class
,
:id
=>
yield
(
:boyd_id
)}
#container
#container
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/head_panel"
=
render
:partial
=>
"layouts/head_panel"
...
...
app/views/layouts/devise.html.haml
View file @
415516b2
...
@@ -6,7 +6,6 @@
...
@@ -6,7 +6,6 @@
=
stylesheet_link_tag
"application"
=
stylesheet_link_tag
"application"
=
javascript_include_tag
"application"
=
javascript_include_tag
"application"
=
csrf_meta_tags
=
csrf_meta_tags
%link
{
:href
=>
"/assets/favicon.png"
,
:rel
=>
"icon"
,
:type
=>
"image/png"
}
/
=
javascript_tag
do
=
javascript_tag
do
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
...
...
app/views/layouts/profile.html.haml
View file @
415516b2
...
@@ -6,11 +6,10 @@
...
@@ -6,11 +6,10 @@
=
stylesheet_link_tag
"application"
=
stylesheet_link_tag
"application"
=
javascript_include_tag
"application"
=
javascript_include_tag
"application"
=
csrf_meta_tags
=
csrf_meta_tags
%link
{
:href
=>
"/assets/favicon.png"
,
:rel
=>
"icon"
,
:type
=>
"image/png"
}
/
=
javascript_tag
do
=
javascript_tag
do
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
%body
{
:class
=>
content_for?
(
:body_class
)
?
yield
(
:body_class
)
:
'project-page'
,
:id
=>
yield
(
:boyd_id
)}
%body
{
:class
=>
body_class
(
'project-page'
)
,
:id
=>
yield
(
:boyd_id
)}
#container
#container
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/head_panel"
=
render
:partial
=>
"layouts/head_panel"
...
...
app/views/layouts/project.html.haml
View file @
415516b2
...
@@ -6,11 +6,10 @@
...
@@ -6,11 +6,10 @@
=
stylesheet_link_tag
"application"
=
stylesheet_link_tag
"application"
=
javascript_include_tag
"application"
=
javascript_include_tag
"application"
=
csrf_meta_tags
=
csrf_meta_tags
%link
{
:href
=>
"/assets/favicon.png"
,
:rel
=>
"icon"
,
:type
=>
"image/png"
}
/
=
javascript_tag
do
=
javascript_tag
do
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_URI = "
#{
request
.
env
[
"REQUEST_URI"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
REQ_REFFER = "
#{
request
.
env
[
"HTTP_REFERER"
]
}
";
%body
{
:class
=>
content_for?
(
:body_class
)
?
yield
(
:body_class
)
:
'project-page'
,
:id
=>
yield
(
:boyd_id
)}
%body
{
:class
=>
body_class
(
'project-page'
)
,
:id
=>
yield
(
:boyd_id
)}
#container
#container
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/head_panel"
=
render
:partial
=>
"layouts/head_panel"
...
...
app/views/projects/_refs.html.haml
0 → 100644
View file @
415516b2
=
form_tag
destination
,
:method
=>
:get
,
:class
=>
"project-refs-form"
do
=
select_tag
"ref"
,
grouped_options_refs
,
:onchange
=>
"this.form.submit();"
,
:class
=>
"project-refs-select"
:javascript
$
(
function
(){
$
(
'
.project-refs-select
'
).
chosen
();
})
app/views/projects/_tree.html.haml
View file @
415516b2
.left
=
form_tag
tree_project_path
(
@project
),
:method
=>
:get
do
=
select_tag
"branch"
,
options_for_select
(
@repo
.
heads
.
map
(
&
:name
),
@branch
),
:onchange
=>
"this.form.submit();"
,
:class
=>
""
,
:prompt
=>
"Branches"
.left
=
form_tag
tree_project_path
(
@project
),
:method
=>
:get
do
=
select_tag
"tag"
,
options_for_select
(
@project
.
tags
,
@tag
),
:onchange
=>
"this.form.submit();"
,
:class
=>
""
,
:prompt
=>
"Tags"
.clear
%br
-#%a.right.button{:href => "#"} Download
-#%a.right.button{:href => "#"} Download
-#-if can? current_user, :admin_project, @project
-#-if can? current_user, :admin_project, @project
...
@@ -14,14 +5,9 @@
...
@@ -14,14 +5,9 @@
#tree-breadcrumbs
#tree-breadcrumbs
%h2
.icon
%h2
.icon
%span
%span
=
link_to
tree_project_path
(
@project
,
:path
=>
nil
,
:commit_id
=>
@commit
.
try
(
:id
)),
:remote
=>
true
,
:class
=>
'project-name'
do
%i
.arrow
>
=
@project
.
name
%d
%d
%a
{
:href
=>
"#"
}
=
link_to
tree_project_path
(
@project
,
:path
=>
nil
,
:commit_id
=>
@commit
.
try
(
:id
)),
:remote
=>
true
do
=
@ref
=
@project
.
name
-
if
params
[
:path
]
-
if
params
[
:path
]
-
part_path
=
""
-
part_path
=
""
-
params
[
:path
].
split
(
"
\/
"
).
each
do
|
part
|
-
params
[
:path
].
split
(
"
\/
"
).
each
do
|
part
|
...
@@ -30,7 +16,8 @@
...
@@ -30,7 +16,8 @@
-
part_path
=
part
-
part_path
=
part
\/
\/
=
link_to
truncate
(
part
,
:length
=>
40
),
tree_file_project_path
(
@project
,
:path
=>
part_path
,
:commit_id
=>
@commit
.
try
(
:id
),
:branch
=>
@branch
,
:tag
=>
@tag
),
:remote
=>
:true
=
link_to
truncate
(
part
,
:length
=>
40
),
tree_file_project_path
(
@project
,
:path
=>
part_path
,
:commit_id
=>
@commit
.
try
(
:id
),
:branch
=>
@branch
,
:tag
=>
@tag
),
:remote
=>
:true
.right
=
render
:partial
=>
"projects/refs"
,
:locals
=>
{
:destination
=>
tree_project_path
(
@project
)
}
.clear
.clear
#tree-content-holder
#tree-content-holder
...
...
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