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
Jérome Perrin
gitlab-ce
Commits
1ffb4b98
Commit
1ffb4b98
authored
Oct 28, 2011
by
gitlabhq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
new design/layout started. projects page
parent
3fa770dd
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
605 additions
and
43 deletions
+605
-43
app/assets/images/.directory
app/assets/images/.directory
+1
-1
app/assets/images/bg-header.png
app/assets/images/bg-header.png
+0
-0
app/assets/images/images.png
app/assets/images/images.png
+0
-0
app/assets/images/login-logo.png
app/assets/images/login-logo.png
+0
-0
app/assets/javascripts/modernizr-2.0.6.min.js
app/assets/javascripts/modernizr-2.0.6.min.js
+4
-0
app/assets/stylesheets/projects.css.scss
app/assets/stylesheets/projects.css.scss
+3
-3
app/assets/stylesheets/style.scss
app/assets/stylesheets/style.scss
+521
-0
app/views/layouts/_head_panel.html.erb
app/views/layouts/_head_panel.html.erb
+29
-10
app/views/layouts/_page_title.html.haml
app/views/layouts/_page_title.html.haml
+6
-0
app/views/layouts/application.html.haml
app/views/layouts/application.html.haml
+19
-15
app/views/projects/_tile.html.haml
app/views/projects/_tile.html.haml
+15
-14
app/views/projects/index.html.haml
app/views/projects/index.html.haml
+7
-0
No files found.
app/assets/images/.directory
View file @
1ffb4b98
[Dolphin]
[Dolphin]
ShowPreview=true
ShowPreview=true
Timestamp=2011,
9,14,20,34,18
Timestamp=2011,
10,28,13,16,25
Version=2
Version=2
app/assets/images/bg-header.png
0 → 100644
View file @
1ffb4b98
212 Bytes
app/assets/images/images.png
0 → 100644
View file @
1ffb4b98
6.32 KB
app/assets/images/login-logo.png
0 → 100644
View file @
1ffb4b98
1.4 KB
app/assets/javascripts/modernizr-2.0.6.min.js
0 → 100755
View file @
1ffb4b98
/* Modernizr 2.0.6 | MIT & BSD
* Contains: All core tests, html5shiv, yepnope, respond.js. Get your own custom build at www.modernizr.com/download/
*/
;
window
.
Modernizr
=
function
(
a
,
b
,
c
){
function
I
(){
e
.
input
=
function
(
a
){
for
(
var
b
=
0
,
c
=
a
.
length
;
b
<
c
;
b
++
)
t
[
a
[
b
]]
=
a
[
b
]
in
l
;
return
t
}(
"
autocomplete autofocus list placeholder max min multiple pattern required step
"
.
split
(
"
"
)),
e
.
inputtypes
=
function
(
a
){
for
(
var
d
=
0
,
e
,
f
,
h
,
i
=
a
.
length
;
d
<
i
;
d
++
)
l
.
setAttribute
(
"
type
"
,
f
=
a
[
d
]),
e
=
l
.
type
!==
"
text
"
,
e
&&
(
l
.
value
=
m
,
l
.
style
.
cssText
=
"
position:absolute;visibility:hidden;
"
,
/^range$/
.
test
(
f
)
&&
l
.
style
.
WebkitAppearance
!==
c
?(
g
.
appendChild
(
l
),
h
=
b
.
defaultView
,
e
=
h
.
getComputedStyle
&&
h
.
getComputedStyle
(
l
,
null
).
WebkitAppearance
!==
"
textfield
"
&&
l
.
offsetHeight
!==
0
,
g
.
removeChild
(
l
)):
/^
(
search|tel
)
$/
.
test
(
f
)
||
(
/^
(
url|email
)
$/
.
test
(
f
)?
e
=
l
.
checkValidity
&&
l
.
checkValidity
()
===!
1
:
/^color$/
.
test
(
f
)?(
g
.
appendChild
(
l
),
g
.
offsetWidth
,
e
=
l
.
value
!=
m
,
g
.
removeChild
(
l
)):
e
=
l
.
value
!=
m
)),
s
[
a
[
d
]]
=!!
e
;
return
s
}(
"
search tel url email datetime date month week time datetime-local number range color
"
.
split
(
"
"
))}
function
G
(
a
,
b
){
var
c
=
a
.
charAt
(
0
).
toUpperCase
()
+
a
.
substr
(
1
),
d
=
(
a
+
"
"
+
p
.
join
(
c
+
"
"
)
+
c
).
split
(
"
"
);
return
F
(
d
,
b
)}
function
F
(
a
,
b
){
for
(
var
d
in
a
)
if
(
k
[
a
[
d
]]
!==
c
)
return
b
==
"
pfx
"
?
a
[
d
]:
!
0
;
return
!
1
}
function
E
(
a
,
b
){
return
!!~
(
""
+
a
).
indexOf
(
b
)}
function
D
(
a
,
b
){
return
typeof
a
===
b
}
function
C
(
a
,
b
){
return
B
(
o
.
join
(
a
+
"
;
"
)
+
(
b
||
""
))}
function
B
(
a
){
k
.
cssText
=
a
}
var
d
=
"
2.0.6
"
,
e
=
{},
f
=!
0
,
g
=
b
.
documentElement
,
h
=
b
.
head
||
b
.
getElementsByTagName
(
"
head
"
)[
0
],
i
=
"
modernizr
"
,
j
=
b
.
createElement
(
i
),
k
=
j
.
style
,
l
=
b
.
createElement
(
"
input
"
),
m
=
"
:)
"
,
n
=
Object
.
prototype
.
toString
,
o
=
"
-webkit- -moz- -o- -ms- -khtml-
"
.
split
(
"
"
),
p
=
"
Webkit Moz O ms Khtml
"
.
split
(
"
"
),
q
=
{
svg
:
"
http://www.w3.org/2000/svg
"
},
r
=
{},
s
=
{},
t
=
{},
u
=
[],
v
=
function
(
a
,
c
,
d
,
e
){
var
f
,
h
,
j
,
k
=
b
.
createElement
(
"
div
"
);
if
(
parseInt
(
d
,
10
))
while
(
d
--
)
j
=
b
.
createElement
(
"
div
"
),
j
.
id
=
e
?
e
[
d
]:
i
+
(
d
+
1
),
k
.
appendChild
(
j
);
f
=
[
"
­
"
,
"
<style>
"
,
a
,
"
</style>
"
].
join
(
""
),
k
.
id
=
i
,
k
.
innerHTML
+=
f
,
g
.
appendChild
(
k
),
h
=
c
(
k
,
a
),
k
.
parentNode
.
removeChild
(
k
);
return
!!
h
},
w
=
function
(
b
){
if
(
a
.
matchMedia
)
return
matchMedia
(
b
).
matches
;
var
c
;
v
(
"
@media
"
+
b
+
"
{ #
"
+
i
+
"
{ position: absolute; } }
"
,
function
(
b
){
c
=
(
a
.
getComputedStyle
?
getComputedStyle
(
b
,
null
):
b
.
currentStyle
).
position
==
"
absolute
"
});
return
c
},
x
=
function
(){
function
d
(
d
,
e
){
e
=
e
||
b
.
createElement
(
a
[
d
]
||
"
div
"
),
d
=
"
on
"
+
d
;
var
f
=
d
in
e
;
f
||
(
e
.
setAttribute
||
(
e
=
b
.
createElement
(
"
div
"
)),
e
.
setAttribute
&&
e
.
removeAttribute
&&
(
e
.
setAttribute
(
d
,
""
),
f
=
D
(
e
[
d
],
"
function
"
),
D
(
e
[
d
],
c
)
||
(
e
[
d
]
=
c
),
e
.
removeAttribute
(
d
))),
e
=
null
;
return
f
}
var
a
=
{
select
:
"
input
"
,
change
:
"
input
"
,
submit
:
"
form
"
,
reset
:
"
form
"
,
error
:
"
img
"
,
load
:
"
img
"
,
abort
:
"
img
"
};
return
d
}(),
y
,
z
=
{}.
hasOwnProperty
,
A
;
!
D
(
z
,
c
)
&&!
D
(
z
.
call
,
c
)?
A
=
function
(
a
,
b
){
return
z
.
call
(
a
,
b
)}:
A
=
function
(
a
,
b
){
return
b
in
a
&&
D
(
a
.
constructor
.
prototype
[
b
],
c
)};
var
H
=
function
(
c
,
d
){
var
f
=
c
.
join
(
""
),
g
=
d
.
length
;
v
(
f
,
function
(
c
,
d
){
var
f
=
b
.
styleSheets
[
b
.
styleSheets
.
length
-
1
],
h
=
f
.
cssRules
&&
f
.
cssRules
[
0
]?
f
.
cssRules
[
0
].
cssText
:
f
.
cssText
||
""
,
i
=
c
.
childNodes
,
j
=
{};
while
(
g
--
)
j
[
i
[
g
].
id
]
=
i
[
g
];
e
.
touch
=
"
ontouchstart
"
in
a
||
j
.
touch
.
offsetTop
===
9
,
e
.
csstransforms3d
=
j
.
csstransforms3d
.
offsetLeft
===
9
,
e
.
generatedcontent
=
j
.
generatedcontent
.
offsetHeight
>=
1
,
e
.
fontface
=
/src/i
.
test
(
h
)
&&
h
.
indexOf
(
d
.
split
(
"
"
)[
0
])
===
0
},
g
,
d
)}([
'
@font-face {font-family:"font";src:url("https://")}
'
,[
"
@media (
"
,
o
.
join
(
"
touch-enabled),(
"
),
i
,
"
)
"
,
"
{#touch{top:9px;position:absolute}}
"
].
join
(
""
),[
"
@media (
"
,
o
.
join
(
"
transform-3d),(
"
),
i
,
"
)
"
,
"
{#csstransforms3d{left:9px;position:absolute}}
"
].
join
(
""
),[
'
#generatedcontent:after{content:"
'
,
m
,
'
";visibility:hidden}
'
].
join
(
""
)],[
"
fontface
"
,
"
touch
"
,
"
csstransforms3d
"
,
"
generatedcontent
"
]);
r
.
flexbox
=
function
(){
function
c
(
a
,
b
,
c
,
d
){
a
.
style
.
cssText
=
o
.
join
(
b
+
"
:
"
+
c
+
"
;
"
)
+
(
d
||
""
)}
function
a
(
a
,
b
,
c
,
d
){
b
+=
"
:
"
,
a
.
style
.
cssText
=
(
b
+
o
.
join
(
c
+
"
;
"
+
b
)).
slice
(
0
,
-
b
.
length
)
+
(
d
||
""
)}
var
d
=
b
.
createElement
(
"
div
"
),
e
=
b
.
createElement
(
"
div
"
);
a
(
d
,
"
display
"
,
"
box
"
,
"
width:42px;padding:0;
"
),
c
(
e
,
"
box-flex
"
,
"
1
"
,
"
width:10px;
"
),
d
.
appendChild
(
e
),
g
.
appendChild
(
d
);
var
f
=
e
.
offsetWidth
===
42
;
d
.
removeChild
(
e
),
g
.
removeChild
(
d
);
return
f
},
r
.
canvas
=
function
(){
var
a
=
b
.
createElement
(
"
canvas
"
);
return
!!
a
.
getContext
&&!!
a
.
getContext
(
"
2d
"
)},
r
.
canvastext
=
function
(){
return
!!
e
.
canvas
&&!!
D
(
b
.
createElement
(
"
canvas
"
).
getContext
(
"
2d
"
).
fillText
,
"
function
"
)},
r
.
webgl
=
function
(){
return
!!
a
.
WebGLRenderingContext
},
r
.
touch
=
function
(){
return
e
.
touch
},
r
.
geolocation
=
function
(){
return
!!
navigator
.
geolocation
},
r
.
postmessage
=
function
(){
return
!!
a
.
postMessage
},
r
.
websqldatabase
=
function
(){
var
b
=!!
a
.
openDatabase
;
return
b
},
r
.
indexedDB
=
function
(){
for
(
var
b
=-
1
,
c
=
p
.
length
;
++
b
<
c
;)
if
(
a
[
p
[
b
].
toLowerCase
()
+
"
IndexedDB
"
])
return
!
0
;
return
!!
a
.
indexedDB
},
r
.
hashchange
=
function
(){
return
x
(
"
hashchange
"
,
a
)
&&
(
b
.
documentMode
===
c
||
b
.
documentMode
>
7
)},
r
.
history
=
function
(){
return
!!
a
.
history
&&!!
history
.
pushState
},
r
.
draganddrop
=
function
(){
return
x
(
"
dragstart
"
)
&&
x
(
"
drop
"
)},
r
.
websockets
=
function
(){
for
(
var
b
=-
1
,
c
=
p
.
length
;
++
b
<
c
;)
if
(
a
[
p
[
b
]
+
"
WebSocket
"
])
return
!
0
;
return
"
WebSocket
"
in
a
},
r
.
rgba
=
function
(){
B
(
"
background-color:rgba(150,255,150,.5)
"
);
return
E
(
k
.
backgroundColor
,
"
rgba
"
)},
r
.
hsla
=
function
(){
B
(
"
background-color:hsla(120,40%,100%,.5)
"
);
return
E
(
k
.
backgroundColor
,
"
rgba
"
)
||
E
(
k
.
backgroundColor
,
"
hsla
"
)},
r
.
multiplebgs
=
function
(){
B
(
"
background:url(https://),url(https://),red url(https://)
"
);
return
/
(
url
\s
*
\(
.*
?){3}
/
.
test
(
k
.
background
)},
r
.
backgroundsize
=
function
(){
return
G
(
"
backgroundSize
"
)},
r
.
borderimage
=
function
(){
return
G
(
"
borderImage
"
)},
r
.
borderradius
=
function
(){
return
G
(
"
borderRadius
"
)},
r
.
boxshadow
=
function
(){
return
G
(
"
boxShadow
"
)},
r
.
textshadow
=
function
(){
return
b
.
createElement
(
"
div
"
).
style
.
textShadow
===
""
},
r
.
opacity
=
function
(){
C
(
"
opacity:.55
"
);
return
/^0.55$/
.
test
(
k
.
opacity
)},
r
.
cssanimations
=
function
(){
return
G
(
"
animationName
"
)},
r
.
csscolumns
=
function
(){
return
G
(
"
columnCount
"
)},
r
.
cssgradients
=
function
(){
var
a
=
"
background-image:
"
,
b
=
"
gradient(linear,left top,right bottom,from(#9f9),to(white));
"
,
c
=
"
linear-gradient(left top,#9f9, white);
"
;
B
((
a
+
o
.
join
(
b
+
a
)
+
o
.
join
(
c
+
a
)).
slice
(
0
,
-
a
.
length
));
return
E
(
k
.
backgroundImage
,
"
gradient
"
)},
r
.
cssreflections
=
function
(){
return
G
(
"
boxReflect
"
)},
r
.
csstransforms
=
function
(){
return
!!
F
([
"
transformProperty
"
,
"
WebkitTransform
"
,
"
MozTransform
"
,
"
OTransform
"
,
"
msTransform
"
])},
r
.
csstransforms3d
=
function
(){
var
a
=!!
F
([
"
perspectiveProperty
"
,
"
WebkitPerspective
"
,
"
MozPerspective
"
,
"
OPerspective
"
,
"
msPerspective
"
]);
a
&&
"
webkitPerspective
"
in
g
.
style
&&
(
a
=
e
.
csstransforms3d
);
return
a
},
r
.
csstransitions
=
function
(){
return
G
(
"
transitionProperty
"
)},
r
.
fontface
=
function
(){
return
e
.
fontface
},
r
.
generatedcontent
=
function
(){
return
e
.
generatedcontent
},
r
.
video
=
function
(){
var
a
=
b
.
createElement
(
"
video
"
),
c
=!
1
;
try
{
if
(
c
=!!
a
.
canPlayType
){
c
=
new
Boolean
(
c
),
c
.
ogg
=
a
.
canPlayType
(
'
video/ogg; codecs="theora"
'
);
var
d
=
'
video/mp4; codecs="avc1.42E01E
'
;
c
.
h264
=
a
.
canPlayType
(
d
+
'
"
'
)
||
a
.
canPlayType
(
d
+
'
, mp4a.40.2"
'
),
c
.
webm
=
a
.
canPlayType
(
'
video/webm; codecs="vp8, vorbis"
'
)}}
catch
(
e
){}
return
c
},
r
.
audio
=
function
(){
var
a
=
b
.
createElement
(
"
audio
"
),
c
=!
1
;
try
{
if
(
c
=!!
a
.
canPlayType
)
c
=
new
Boolean
(
c
),
c
.
ogg
=
a
.
canPlayType
(
'
audio/ogg; codecs="vorbis"
'
),
c
.
mp3
=
a
.
canPlayType
(
"
audio/mpeg;
"
),
c
.
wav
=
a
.
canPlayType
(
'
audio/wav; codecs="1"
'
),
c
.
m4a
=
a
.
canPlayType
(
"
audio/x-m4a;
"
)
||
a
.
canPlayType
(
"
audio/aac;
"
)}
catch
(
d
){}
return
c
},
r
.
localstorage
=
function
(){
try
{
return
!!
localStorage
.
getItem
}
catch
(
a
){
return
!
1
}},
r
.
sessionstorage
=
function
(){
try
{
return
!!
sessionStorage
.
getItem
}
catch
(
a
){
return
!
1
}},
r
.
webworkers
=
function
(){
return
!!
a
.
Worker
},
r
.
applicationcache
=
function
(){
return
!!
a
.
applicationCache
},
r
.
svg
=
function
(){
return
!!
b
.
createElementNS
&&!!
b
.
createElementNS
(
q
.
svg
,
"
svg
"
).
createSVGRect
},
r
.
inlinesvg
=
function
(){
var
a
=
b
.
createElement
(
"
div
"
);
a
.
innerHTML
=
"
<svg/>
"
;
return
(
a
.
firstChild
&&
a
.
firstChild
.
namespaceURI
)
==
q
.
svg
},
r
.
smil
=
function
(){
return
!!
b
.
createElementNS
&&
/SVG/
.
test
(
n
.
call
(
b
.
createElementNS
(
q
.
svg
,
"
animate
"
)))},
r
.
svgclippaths
=
function
(){
return
!!
b
.
createElementNS
&&
/SVG/
.
test
(
n
.
call
(
b
.
createElementNS
(
q
.
svg
,
"
clipPath
"
)))};
for
(
var
J
in
r
)
A
(
r
,
J
)
&&
(
y
=
J
.
toLowerCase
(),
e
[
y
]
=
r
[
J
](),
u
.
push
((
e
[
y
]?
""
:
"
no-
"
)
+
y
));
e
.
input
||
I
(),
e
.
addTest
=
function
(
a
,
b
){
if
(
typeof
a
==
"
object
"
)
for
(
var
d
in
a
)
A
(
a
,
d
)
&&
e
.
addTest
(
d
,
a
[
d
]);
else
{
a
=
a
.
toLowerCase
();
if
(
e
[
a
]
!==
c
)
return
;
b
=
typeof
b
==
"
boolean
"
?
b
:
!!
b
(),
g
.
className
+=
"
"
+
(
b
?
""
:
"
no-
"
)
+
a
,
e
[
a
]
=
b
}
return
e
},
B
(
""
),
j
=
l
=
null
,
a
.
attachEvent
&&
function
(){
var
a
=
b
.
createElement
(
"
div
"
);
a
.
innerHTML
=
"
<elem></elem>
"
;
return
a
.
childNodes
.
length
!==
1
}()
&&
function
(
a
,
b
){
function
s
(
a
){
var
b
=-
1
;
while
(
++
b
<
g
)
a
.
createElement
(
f
[
b
])}
a
.
iepp
=
a
.
iepp
||
{};
var
d
=
a
.
iepp
,
e
=
d
.
html5elements
||
"
abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video
"
,
f
=
e
.
split
(
"
|
"
),
g
=
f
.
length
,
h
=
new
RegExp
(
"
(^|
\\
s)(
"
+
e
+
"
)
"
,
"
gi
"
),
i
=
new
RegExp
(
"
<(/*)(
"
+
e
+
"
)
"
,
"
gi
"
),
j
=
/^
\s
*
[\{\}]\s
*$/
,
k
=
new
RegExp
(
"
(^|[^
\\
n]*?
\\
s)(
"
+
e
+
"
)([^
\\
n]*)({[
\\
n
\\
w
\\
W]*?})
"
,
"
gi
"
),
l
=
b
.
createDocumentFragment
(),
m
=
b
.
documentElement
,
n
=
m
.
firstChild
,
o
=
b
.
createElement
(
"
body
"
),
p
=
b
.
createElement
(
"
style
"
),
q
=
/print|all/
,
r
;
d
.
getCSS
=
function
(
a
,
b
){
if
(
a
+
""
===
c
)
return
""
;
var
e
=-
1
,
f
=
a
.
length
,
g
,
h
=
[];
while
(
++
e
<
f
){
g
=
a
[
e
];
if
(
g
.
disabled
)
continue
;
b
=
g
.
media
||
b
,
q
.
test
(
b
)
&&
h
.
push
(
d
.
getCSS
(
g
.
imports
,
b
),
g
.
cssText
),
b
=
"
all
"
}
return
h
.
join
(
""
)},
d
.
parseCSS
=
function
(
a
){
var
b
=
[],
c
;
while
((
c
=
k
.
exec
(
a
))
!=
null
)
b
.
push
(((
j
.
exec
(
c
[
1
])?
"
\n
"
:
c
[
1
])
+
c
[
2
]
+
c
[
3
]).
replace
(
h
,
"
$1.iepp_$2
"
)
+
c
[
4
]);
return
b
.
join
(
"
\n
"
)},
d
.
writeHTML
=
function
(){
var
a
=-
1
;
r
=
r
||
b
.
body
;
while
(
++
a
<
g
){
var
c
=
b
.
getElementsByTagName
(
f
[
a
]),
d
=
c
.
length
,
e
=-
1
;
while
(
++
e
<
d
)
c
[
e
].
className
.
indexOf
(
"
iepp_
"
)
<
0
&&
(
c
[
e
].
className
+=
"
iepp_
"
+
f
[
a
])}
l
.
appendChild
(
r
),
m
.
appendChild
(
o
),
o
.
className
=
r
.
className
,
o
.
id
=
r
.
id
,
o
.
innerHTML
=
r
.
innerHTML
.
replace
(
i
,
"
<$1font
"
)},
d
.
_beforePrint
=
function
(){
p
.
styleSheet
.
cssText
=
d
.
parseCSS
(
d
.
getCSS
(
b
.
styleSheets
,
"
all
"
)),
d
.
writeHTML
()},
d
.
restoreHTML
=
function
(){
o
.
innerHTML
=
""
,
m
.
removeChild
(
o
),
m
.
appendChild
(
r
)},
d
.
_afterPrint
=
function
(){
d
.
restoreHTML
(),
p
.
styleSheet
.
cssText
=
""
},
s
(
b
),
s
(
l
);
d
.
disablePP
||
(
n
.
insertBefore
(
p
,
n
.
firstChild
),
p
.
media
=
"
print
"
,
p
.
className
=
"
iepp-printshim
"
,
a
.
attachEvent
(
"
onbeforeprint
"
,
d
.
_beforePrint
),
a
.
attachEvent
(
"
onafterprint
"
,
d
.
_afterPrint
))}(
a
,
b
),
e
.
_version
=
d
,
e
.
_prefixes
=
o
,
e
.
_domPrefixes
=
p
,
e
.
mq
=
w
,
e
.
hasEvent
=
x
,
e
.
testProp
=
function
(
a
){
return
F
([
a
])},
e
.
testAllProps
=
G
,
e
.
testStyles
=
v
,
e
.
prefixed
=
function
(
a
){
return
G
(
a
,
"
pfx
"
)},
g
.
className
=
g
.
className
.
replace
(
/
\b
no-js
\b
/
,
""
)
+
(
f
?
"
js
"
+
u
.
join
(
"
"
):
""
);
return
e
}(
this
,
this
.
document
),
function
(
a
,
b
){
function
u
(){
r
(
!
0
)}
a
.
respond
=
{},
respond
.
update
=
function
(){},
respond
.
mediaQueriesSupported
=
b
;
if
(
!
b
){
var
c
=
a
.
document
,
d
=
c
.
documentElement
,
e
=
[],
f
=
[],
g
=
[],
h
=
{},
i
=
30
,
j
=
c
.
getElementsByTagName
(
"
head
"
)[
0
]
||
d
,
k
=
j
.
getElementsByTagName
(
"
link
"
),
l
=
[],
m
=
function
(){
var
b
=
k
,
c
=
b
.
length
,
d
=
0
,
e
,
f
,
g
,
i
;
for
(;
d
<
c
;
d
++
)
e
=
b
[
d
],
f
=
e
.
href
,
g
=
e
.
media
,
i
=
e
.
rel
&&
e
.
rel
.
toLowerCase
()
===
"
stylesheet
"
,
!!
f
&&
i
&&!
h
[
f
]
&&
(
!
/^
([
a-zA-Z
]
+
?
:
(\/\/)?(
www
\.)?)
/
.
test
(
f
)
||
f
.
replace
(
RegExp
.
$1
,
""
).
split
(
"
/
"
)[
0
]
===
a
.
location
.
host
?
l
.
push
({
href
:
f
,
media
:
g
}):
h
[
f
]
=!
0
);
n
()},
n
=
function
(){
if
(
l
.
length
){
var
a
=
l
.
shift
();
s
(
a
.
href
,
function
(
b
){
o
(
b
,
a
.
href
,
a
.
media
),
h
[
a
.
href
]
=!
0
,
n
()})}},
o
=
function
(
a
,
b
,
c
){
var
d
=
a
.
match
(
/@media
[^\{]
+
\{([^\{\}]
+
\{[^\}\{]
+
\})
+/gi
),
g
=
d
&&
d
.
length
||
0
,
b
=
b
.
substring
(
0
,
b
.
lastIndexOf
(
"
/
"
)),
h
=
function
(
a
){
return
a
.
replace
(
/
(
url
\()[
'"
]?([^\/\)
'"
][^
:
\)
'"
]
+
)[
'"
]?(\))
/g
,
"
$1
"
+
b
+
"
$2$3
"
)},
i
=!
g
&&
c
,
j
=
0
,
k
,
l
,
m
,
n
,
o
;
b
.
length
&&
(
b
+=
"
/
"
),
i
&&
(
g
=
1
);
for
(;
j
<
g
;
j
++
){
k
=
0
,
i
?(
l
=
c
,
f
.
push
(
h
(
a
))):(
l
=
d
[
j
].
match
(
/@media
([^\{]
+
)\{([\S\s]
+
?)
$/
)
&&
RegExp
.
$1
,
f
.
push
(
RegExp
.
$2
&&
h
(
RegExp
.
$2
))),
n
=
l
.
split
(
"
,
"
),
o
=
n
.
length
;
for
(;
k
<
o
;
k
++
)
m
=
n
[
k
],
e
.
push
({
media
:
m
.
match
(
/
(
only
\s
+
)?([
a-zA-Z
]
+
)(\s
and
)?
/
)
&&
RegExp
.
$2
,
rules
:
f
.
length
-
1
,
minw
:
m
.
match
(
/
\(
min
\-
width:
[\s]
*
([\s]
*
[
0-9
]
+
)
px
[\s]
*
\)
/
)
&&
parseFloat
(
RegExp
.
$1
),
maxw
:
m
.
match
(
/
\(
max
\-
width:
[\s]
*
([\s]
*
[
0-9
]
+
)
px
[\s]
*
\)
/
)
&&
parseFloat
(
RegExp
.
$1
)})}
r
()},
p
,
q
,
r
=
function
(
a
){
var
b
=
"
clientWidth
"
,
h
=
d
[
b
],
l
=
c
.
compatMode
===
"
CSS1Compat
"
&&
h
||
c
.
body
[
b
]
||
h
,
m
=
{},
n
=
c
.
createDocumentFragment
(),
o
=
k
[
k
.
length
-
1
],
s
=
(
new
Date
).
getTime
();
if
(
a
&&
p
&&
s
-
p
<
i
)
clearTimeout
(
q
),
q
=
setTimeout
(
r
,
i
);
else
{
p
=
s
;
for
(
var
t
in
e
){
var
u
=
e
[
t
];
if
(
!
u
.
minw
&&!
u
.
maxw
||
(
!
u
.
minw
||
u
.
minw
&&
l
>=
u
.
minw
)
&&
(
!
u
.
maxw
||
u
.
maxw
&&
l
<=
u
.
maxw
))
m
[
u
.
media
]
||
(
m
[
u
.
media
]
=
[]),
m
[
u
.
media
].
push
(
f
[
u
.
rules
])}
for
(
var
t
in
g
)
g
[
t
]
&&
g
[
t
].
parentNode
===
j
&&
j
.
removeChild
(
g
[
t
]);
for
(
var
t
in
m
){
var
v
=
c
.
createElement
(
"
style
"
),
w
=
m
[
t
].
join
(
"
\n
"
);
v
.
type
=
"
text/css
"
,
v
.
media
=
t
,
v
.
styleSheet
?
v
.
styleSheet
.
cssText
=
w
:
v
.
appendChild
(
c
.
createTextNode
(
w
)),
n
.
appendChild
(
v
),
g
.
push
(
v
)}
j
.
insertBefore
(
n
,
o
.
nextSibling
)}},
s
=
function
(
a
,
b
){
var
c
=
t
();
if
(
!!
c
){
c
.
open
(
"
GET
"
,
a
,
!
0
),
c
.
onreadystatechange
=
function
(){
c
.
readyState
==
4
&&
(
c
.
status
==
200
||
c
.
status
==
304
)
&&
b
(
c
.
responseText
)};
if
(
c
.
readyState
==
4
)
return
;
c
.
send
()}},
t
=
function
(){
var
a
=!
1
,
b
=
[
function
(){
return
new
ActiveXObject
(
"
Microsoft.XMLHTTP
"
)},
function
(){
return
new
XMLHttpRequest
}],
c
=
b
.
length
;
while
(
c
--
){
try
{
a
=
b
[
c
]()}
catch
(
d
){
continue
}
break
}
return
function
(){
return
a
}}();
m
(),
respond
.
update
=
m
,
a
.
addEventListener
?
a
.
addEventListener
(
"
resize
"
,
u
,
!
1
):
a
.
attachEvent
&&
a
.
attachEvent
(
"
onresize
"
,
u
)}}(
this
,
Modernizr
.
mq
(
"
only all
"
)),
function
(
a
,
b
,
c
){
function
k
(
a
){
return
!
a
||
a
==
"
loaded
"
||
a
==
"
complete
"
}
function
j
(){
var
a
=
1
,
b
=-
1
;
while
(
p
.
length
-
++
b
)
if
(
p
[
b
].
s
&&!
(
a
=
p
[
b
].
r
))
break
;
a
&&
g
()}
function
i
(
a
){
var
c
=
b
.
createElement
(
"
script
"
),
d
;
c
.
src
=
a
.
s
,
c
.
onreadystatechange
=
c
.
onload
=
function
(){
!
d
&&
k
(
c
.
readyState
)
&&
(
d
=
1
,
j
(),
c
.
onload
=
c
.
onreadystatechange
=
null
)},
m
(
function
(){
d
||
(
d
=
1
,
j
())},
H
.
errorTimeout
),
a
.
e
?
c
.
onload
():
n
.
parentNode
.
insertBefore
(
c
,
n
)}
function
h
(
a
){
var
c
=
b
.
createElement
(
"
link
"
),
d
;
c
.
href
=
a
.
s
,
c
.
rel
=
"
stylesheet
"
,
c
.
type
=
"
text/css
"
;
if
(
!
a
.
e
&&
(
w
||
r
)){
var
e
=
function
(
a
){
m
(
function
(){
if
(
!
d
)
try
{
a
.
sheet
.
cssRules
.
length
?(
d
=
1
,
j
()):
e
(
a
)}
catch
(
b
){
b
.
code
==
1
e3
||
b
.
message
==
"
security
"
||
b
.
message
==
"
denied
"
?(
d
=
1
,
m
(
function
(){
j
()},
0
)):
e
(
a
)}},
0
)};
e
(
c
)}
else
c
.
onload
=
function
(){
d
||
(
d
=
1
,
m
(
function
(){
j
()},
0
))},
a
.
e
&&
c
.
onload
();
m
(
function
(){
d
||
(
d
=
1
,
j
())},
H
.
errorTimeout
),
!
a
.
e
&&
n
.
parentNode
.
insertBefore
(
c
,
n
)}
function
g
(){
var
a
=
p
.
shift
();
q
=
1
,
a
?
a
.
t
?
m
(
function
(){
a
.
t
==
"
c
"
?
h
(
a
):
i
(
a
)},
0
):(
a
(),
j
()):
q
=
0
}
function
f
(
a
,
c
,
d
,
e
,
f
,
h
){
function
i
(){
!
o
&&
k
(
l
.
readyState
)
&&
(
r
.
r
=
o
=
1
,
!
q
&&
j
(),
l
.
onload
=
l
.
onreadystatechange
=
null
,
m
(
function
(){
u
.
removeChild
(
l
)},
0
))}
var
l
=
b
.
createElement
(
a
),
o
=
0
,
r
=
{
t
:
d
,
s
:
c
,
e
:
h
};
l
.
src
=
l
.
data
=
c
,
!
s
&&
(
l
.
style
.
display
=
"
none
"
),
l
.
width
=
l
.
height
=
"
0
"
,
a
!=
"
object
"
&&
(
l
.
type
=
d
),
l
.
onload
=
l
.
onreadystatechange
=
i
,
a
==
"
img
"
?
l
.
onerror
=
i
:
a
==
"
script
"
&&
(
l
.
onerror
=
function
(){
r
.
e
=
r
.
r
=
1
,
g
()}),
p
.
splice
(
e
,
0
,
r
),
u
.
insertBefore
(
l
,
s
?
null
:
n
),
m
(
function
(){
o
||
(
u
.
removeChild
(
l
),
r
.
r
=
r
.
e
=
o
=
1
,
j
())},
H
.
errorTimeout
)}
function
e
(
a
,
b
,
c
){
var
d
=
b
==
"
c
"
?
z
:
y
;
q
=
0
,
b
=
b
||
"
j
"
,
C
(
a
)?
f
(
d
,
a
,
b
,
this
.
i
++
,
l
,
c
):(
p
.
splice
(
this
.
i
++
,
0
,
a
),
p
.
length
==
1
&&
g
());
return
this
}
function
d
(){
var
a
=
H
;
a
.
loader
=
{
load
:
e
,
i
:
0
};
return
a
}
var
l
=
b
.
documentElement
,
m
=
a
.
setTimeout
,
n
=
b
.
getElementsByTagName
(
"
script
"
)[
0
],
o
=
{}.
toString
,
p
=
[],
q
=
0
,
r
=
"
MozAppearance
"
in
l
.
style
,
s
=
r
&&!!
b
.
createRange
().
compareNode
,
t
=
r
&&!
s
,
u
=
s
?
l
:
n
.
parentNode
,
v
=
a
.
opera
&&
o
.
call
(
a
.
opera
)
==
"
[object Opera]
"
,
w
=
"
webkitAppearance
"
in
l
.
style
,
x
=
w
&&
"
async
"
in
b
.
createElement
(
"
script
"
),
y
=
r
?
"
object
"
:
v
||
x
?
"
img
"
:
"
script
"
,
z
=
w
?
"
img
"
:
y
,
A
=
Array
.
isArray
||
function
(
a
){
return
o
.
call
(
a
)
==
"
[object Array]
"
},
B
=
function
(
a
){
return
Object
(
a
)
===
a
},
C
=
function
(
a
){
return
typeof
a
==
"
string
"
},
D
=
function
(
a
){
return
o
.
call
(
a
)
==
"
[object Function]
"
},
E
=
[],
F
=
{},
G
,
H
;
H
=
function
(
a
){
function
f
(
a
){
var
b
=
a
.
split
(
"
!
"
),
c
=
E
.
length
,
d
=
b
.
pop
(),
e
=
b
.
length
,
f
=
{
url
:
d
,
origUrl
:
d
,
prefixes
:
b
},
g
,
h
;
for
(
h
=
0
;
h
<
e
;
h
++
)
g
=
F
[
b
[
h
]],
g
&&
(
f
=
g
(
f
));
for
(
h
=
0
;
h
<
c
;
h
++
)
f
=
E
[
h
](
f
);
return
f
}
function
e
(
a
,
b
,
e
,
g
,
h
){
var
i
=
f
(
a
),
j
=
i
.
autoCallback
;
if
(
!
i
.
bypass
){
b
&&
(
b
=
D
(
b
)?
b
:
b
[
a
]
||
b
[
g
]
||
b
[
a
.
split
(
"
/
"
).
pop
().
split
(
"
?
"
)[
0
]]);
if
(
i
.
instead
)
return
i
.
instead
(
a
,
b
,
e
,
g
,
h
);
e
.
load
(
i
.
url
,
i
.
forceCSS
||!
i
.
forceJS
&&
/css$/
.
test
(
i
.
url
)?
"
c
"
:
c
,
i
.
noexec
),(
D
(
b
)
||
D
(
j
))
&&
e
.
load
(
function
(){
d
(),
b
&&
b
(
i
.
origUrl
,
h
,
g
),
j
&&
j
(
i
.
origUrl
,
h
,
g
)})}}
function
b
(
a
,
b
){
function
c
(
a
){
if
(
C
(
a
))
e
(
a
,
h
,
b
,
0
,
d
);
else
if
(
B
(
a
))
for
(
i
in
a
)
a
.
hasOwnProperty
(
i
)
&&
e
(
a
[
i
],
h
,
b
,
i
,
d
)}
var
d
=!!
a
.
test
,
f
=
d
?
a
.
yep
:
a
.
nope
,
g
=
a
.
load
||
a
.
both
,
h
=
a
.
callback
,
i
;
c
(
f
),
c
(
g
),
a
.
complete
&&
b
.
load
(
a
.
complete
)}
var
g
,
h
,
i
=
this
.
yepnope
.
loader
;
if
(
C
(
a
))
e
(
a
,
0
,
i
,
0
);
else
if
(
A
(
a
))
for
(
g
=
0
;
g
<
a
.
length
;
g
++
)
h
=
a
[
g
],
C
(
h
)?
e
(
h
,
0
,
i
,
0
):
A
(
h
)?
H
(
h
):
B
(
h
)
&&
b
(
h
,
i
);
else
B
(
a
)
&&
b
(
a
,
i
)},
H
.
addPrefix
=
function
(
a
,
b
){
F
[
a
]
=
b
},
H
.
addFilter
=
function
(
a
){
E
.
push
(
a
)},
H
.
errorTimeout
=
1
e4
,
b
.
readyState
==
null
&&
b
.
addEventListener
&&
(
b
.
readyState
=
"
loading
"
,
b
.
addEventListener
(
"
DOMContentLoaded
"
,
G
=
function
(){
b
.
removeEventListener
(
"
DOMContentLoaded
"
,
G
,
0
),
b
.
readyState
=
"
complete
"
},
0
)),
a
.
yepnope
=
d
()}(
this
,
this
.
document
),
Modernizr
.
load
=
function
(){
yepnope
.
apply
(
window
,[].
slice
.
call
(
arguments
,
0
))};
\ No newline at end of file
app/assets/stylesheets/projects.css.scss
View file @
1ffb4b98
...
@@ -210,9 +210,9 @@ table.round-borders {
...
@@ -210,9 +210,9 @@ table.round-borders {
padding
:
20px
;
padding
:
20px
;
}
}
body
{
//
body {
background
:
#eaeaea
;
//
background: #eaeaea;
}
//
}
a
{
a
{
color
:
#111
;
color
:
#111
;
...
...
app/assets/stylesheets/style.scss
0 → 100755
View file @
1ffb4b98
/* HTML5 ✰ Boilerplate
* ==|== normalize ==========================================================
*/
article
,
aside
,
details
,
figcaption
,
figure
,
footer
,
header
,
hgroup
,
nav
,
section
{
display
:
block
;
}
audio
,
canvas
,
video
{
display
:
inline-block
;
*
display
:
inline
;
*
zoom
:
1
;
}
audio
:not
([
controls
])
{
display
:
none
;
}
[
hidden
]
{
display
:
none
;
}
html
{
font-size
:
100%
;
overflow-y
:
scroll
;
-webkit-text-size-adjust
:
100%
;
-ms-text-size-adjust
:
100%
;
}
body
{
margin
:
0
;
font-size
:
13px
;
line-height
:
1
.231
;
}
body
,
button
,
input
,
select
,
textarea
{
font-family
:
sans-serif
;
color
:
#222
;
}
::-moz-selection
{
background
:
#fe57a1
;
color
:
#fff
;
text-shadow
:
none
;
}
::selection
{
background
:
#fe57a1
;
color
:
#fff
;
text-shadow
:
none
;
}
a
{
color
:
#00e
;
}
a
:hover
{
color
:
#06e
;
}
a
:focus
{
outline
:
thin
dotted
;
}
a
:hover
,
a
:active
{
outline
:
0
;
}
abbr
[
title
]
{
border-bottom
:
1px
dotted
;
}
b
,
strong
{
font-weight
:
bold
;
}
blockquote
{
margin
:
1em
40px
;
}
dfn
{
font-style
:
italic
;
}
hr
{
display
:
block
;
height
:
1px
;
border
:
0
;
border-top
:
1px
solid
#ccc
;
margin
:
1em
0
;
padding
:
0
;
}
ins
{
background
:
#ff9
;
color
:
#000
;
text-decoration
:
none
;
}
mark
{
background
:
#ff0
;
color
:
#000
;
font-style
:
italic
;
font-weight
:
bold
;
}
pre
,
code
,
kbd
,
samp
{
font-family
:
monospace
,
monospace
;
_font-family
:
'courier new'
,
monospace
;
font-size
:
1em
;
}
pre
{
white-space
:
pre
;
white-space
:
pre-wrap
;
word-wrap
:
break-word
;
}
q
{
quotes
:
none
;
}
q
:before
,
q
:after
{
content
:
""
;
content
:
none
;
}
small
{
font-size
:
85%
;
}
sub
,
sup
{
font-size
:
75%
;
line-height
:
0
;
position
:
relative
;
vertical-align
:
baseline
;
}
sup
{
top
:
-0
.5em
;
}
sub
{
bottom
:
-0
.25em
;
}
ul
,
ol
{
margin
:
1em
0
;
padding
:
0
0
0
40px
;
}
dd
{
margin
:
0
0
0
40px
;
}
nav
ul
,
nav
ol
{
list-style
:
none
;
list-style-image
:
none
;
margin
:
0
;
padding
:
0
;
}
img
{
border
:
0
;
-ms-interpolation-mode
:
bicubic
;
vertical-align
:
middle
;
}
svg
:not
(
:root
)
{
overflow
:
hidden
;
}
figure
{
margin
:
0
;
}
form
{
margin
:
0
;
}
fieldset
{
border
:
0
;
margin
:
0
;
padding
:
0
;
}
label
{
cursor
:
pointer
;
}
legend
{
border
:
0
;
*
margin-left
:
-7px
;
padding
:
0
;
}
button
,
input
,
select
,
textarea
{
font-size
:
100%
;
margin
:
0
;
vertical-align
:
baseline
;
*
vertical-align
:
middle
;
}
button
,
input
{
line-height
:
normal
;
*
overflow
:
visible
;
}
table
button
,
table
input
{
*
overflow
:
auto
;
}
button
,
input
[
type
=
"button"
],
input
[
type
=
"reset"
],
input
[
type
=
"submit"
]
{
cursor
:
pointer
;
-webkit-appearance
:
button
;
}
input
[
type
=
"checkbox"
],
input
[
type
=
"radio"
]
{
box-sizing
:
border-box
;
}
input
[
type
=
"search"
]
{
-webkit-appearance
:
textfield
;
-moz-box-sizing
:
content-box
;
-webkit-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
input
[
type
=
"search"
]
::-webkit-search-decoration
{
-webkit-appearance
:
none
;
}
button
:
:-
moz-focus-inner
,
input
::-
moz-focus-inner
{
border
:
0
;
padding
:
0
;
}
textarea
{
overflow
:
auto
;
vertical-align
:
top
;
resize
:
vertical
;
}
input
:valid
,
textarea
:valid
{
}
input
:invalid
,
textarea
:invalid
{
background-color
:
#f0dddd
;
}
table
{
border-collapse
:
collapse
;
border-spacing
:
0
;
}
td
{
vertical-align
:
top
;
}
/* ==|== primary styles =====================================================
Author: Ricardo Rauch
========================================================================== */
/* 960gs */
/*
Variable Grid System (Fluid Version).
Learn more ~ http://www.spry-soft.com/grids/
Based on 960 Grid System - http://960.gs/ & 960 Fluid - http://www.designinfluences.com/
Licensed under GPL and MIT.
*/
/* Containers
----------------------------------------------------------------------------------------------------*/
.container_3
{
width
:
98%
;
margin-left
:
1%
;
margin-right
:
1%
;
}
/* Grid >> Global
----------------------------------------------------------------------------------------------------*/
.grid_1
,
.grid_2
,
.grid_3
{
display
:inline
;
float
:
left
;
position
:
relative
;
margin-left
:
1%
;
margin-right
:
1%
;
}
/* Grid >> Children (Alpha ~ First, Omega ~ Last)
----------------------------------------------------------------------------------------------------*/
.alpha
{
margin-left
:
0
;
}
.omega
{
margin-right
:
0
;
}
/* Grid >> 3 Columns
----------------------------------------------------------------------------------------------------*/
.container_3
.grid_1
{
width
:
31
.333%
;
}
.container_3
.grid_2
{
width
:
64
.667%
;
}
.container_3
.grid_3
{
width
:
98
.0%
;
}
/* Prefix Extra Space >> 3 Columns
----------------------------------------------------------------------------------------------------*/
.container_3
.prefix_1
{
padding-left
:
33
.333%
;
}
.container_3
.prefix_2
{
padding-left
:
66
.667%
;
}
/* Suffix Extra Space >> 3 Columns
----------------------------------------------------------------------------------------------------*/
.container_3
.suffix_1
{
padding-right
:
33
.333%
;
}
.container_3
.suffix_2
{
padding-right
:
66
.667%
;
}
/* Push Space >> 3 Columns
----------------------------------------------------------------------------------------------------*/
.container_3
.push_1
{
left
:
33
.333%
;
}
.container_3
.push_2
{
left
:
66
.667%
;
}
/* Pull Space >> 3 Columns
----------------------------------------------------------------------------------------------------*/
.container_3
.pull_1
{
left
:
-33
.333%
;
}
.container_3
.pull_2
{
left
:
-66
.667%
;
}
/* Clear Floated Elements
----------------------------------------------------------------------------------------------------*/
/* http://sonspring.com/journal/clearing-floats */
.clear
{
clear
:
both
;
display
:
block
;
overflow
:
hidden
;
visibility
:
hidden
;
width
:
0
;
height
:
0
;
}
/* http://perishablepress.com/press/2008/02/05/lessons-learned-concerning-the-clearfix-css-hack */
.clearfix
:after
{
clear
:
both
;
content
:
' '
;
display
:
block
;
font-size
:
0
;
line-height
:
0
;
visibility
:
hidden
;
width
:
0
;
height
:
0
;
}
.clearfix
{
display
:
inline-block
;
}
*
html
.clearfix
{
height
:
1%
;
}
.clearfix
{
display
:
block
;
}
/* eo 960gs*/
*
{
text-shadow
:
0
1px
0
white
}
body
{
font-size
:
12px
}
a
{
text-decoration
:
none
;
font-weight
:
bold
;
color
:
#333
}
a
:hover
{
color
:
#000
}
/* Typography */
h1
,
h2
,
h3
,
h4
,
h5
{
font-weight
:
normal
;
color
:
#666
}
/* eo Typography */
/* Forms */
input
[
type
=
"text"
]
:focus
,
input
[
type
=
"password"
]
:focus
{
outline
:
none
;
}
input
.text
{
border
:
1px
solid
#ccc
;
border-radius
:
4px
;
display
:
block
;
padding
:
10px
}
/* eo Forms */
/* Buttons */
.grey-button
{
border-radius
:
5px
;
font-size
:
12px
;
font-weight
:
bold
;
padding
:
6px
20px
;
border
:
1px
solid
#999
;
color
:
#666
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,.
3
);
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
26
,
color-stop
(
0
.076
,
#f7f7f7
)
,
to
(
#d5d5d5
));
background-image
:
-webkit-linear-gradient
(
#f7f7f7
7
.6%
,
#d5d5d5
);
background-image
:
-moz-linear-gradient
(
#f7f7f7
7
.6%
,
#d5d5d5
);
background-image
:
-o-linear-gradient
(
#f7f7f7
7
.6%
,
#d5d5d5
);
}
.button
{
padding
:
10px
20px
;
text-align
:
center
;
display
:
inline-block
;
border-radius
:
5px
;
color
:
#578E91
;
font-size
:
12px
;
text-transform
:
uppercase
;
border
:
1px
solid
#8CE2E6
;
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
34
,
color-stop
(
0
.794
,
#dbf5f6
)
,
to
(
#c5eef0
));
background-image
:
-webkit-linear-gradient
(
#dbf5f6
79
.4%
,
#c5eef0
);
background-image
:
-moz-linear-gradient
(
#dbf5f6
79
.4%
,
#c5eef0
);
background-image
:
-o-linear-gradient
(
#dbf5f6
79
.4%
,
#c5eef0
);
}
.button
:hover
{
color
:
rgba
(
0
,
0
,
0
,.
8
)}
.button.green
{
margin-right
:
0
;
}
.button.yellow
{
color
:
#908054
;
border-color
:
#DDCDA1
;
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
34
,
color-stop
(
0
.794
,
#FFEFC3
)
,
to
(
#F3E3B7
));
background-image
:
-webkit-linear-gradient
(
#FFEFC3
79
.4%
,
#F3E3B7
);
background-image
:
-moz-linear-gradient
(
#FFEFC3
79
.4%
,
#F3E3B7
);
background-image
:
-o-linear-gradient
(
#FFEFC3
79
.4%
,
#F3E3B7
);
}
/* eo Buttons */
/* UI Box */
.ui-box
{
border
:
1px
solid
#DEDFE1
;
float
:
left
;
border-radius
:
5px
}
.ui-box
h3
{
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
26
,
color-stop
(
0
.076
,
#fefefe
)
,
to
(
#F6F7F8
));
background-image
:
-webkit-linear-gradient
(
#fefefe
7
.6%
,
#F6F7F8
);
background-image
:
-moz-linear-gradient
(
#fefefe
7
.6%
,
#F6F7F8
);
background-image
:
-o-linear-gradient
(
#fefefe
7
.6%
,
#F6F7F8
);
margin
:
0
;
padding
:
1em
;
font-size
:
12px
;
font-weight
:
normal
;
font-size
:
16px
;
border-bottom
:
1px
solid
#DEDFE1
;
-webkit-border-top-left-radius
:
5px
;
-webkit-border-top-right-radius
:
5px
;
-moz-border-radius-topleft
:
5px
;
-moz-border-radius-topright
:
5px
;
border-top-left-radius
:
5px
;
border-top-right-radius
:
5px
;
}
.ui-box
h3
a
{
font-weight
:
normal
;}
.ui-box
.data
{
padding
:
.5em
1em
}
.ui-box
.buttons
{
background-color
:
#f7f8f9
;
padding
:
1em
;
-webkit-border-bottom-right-radius
:
5px
;
-webkit-border-bottom-left-radius
:
5px
;
-moz-border-radius-bottomright
:
5px
;
-moz-border-radius-bottomleft
:
5px
;
border-bottom-right-radius
:
5px
;
border-bottom-left-radius
:
5px
;
}
.ui-box
:hover
{
box-shadow
:
0
0
10px
rgba
(
0
,
0
,
0
,.
1
);
border
:
1px
solid
#ccc
;
-webkit-transition
:
all
200ms
cubic-bezier
(
0
.470
,
0
.000
,
0
.745
,
0
.715
);
-moz-transition
:
all
200ms
cubic-bezier
(
0
.470
,
0
.000
,
0
.745
,
0
.715
);
-o-transition
:
all
200ms
cubic-bezier
(
0
.470
,
0
.000
,
0
.745
,
0
.715
);
transition
:
all
200ms
cubic-bezier
(
0
.470
,
0
.000
,
0
.745
,
0
.715
);
}
/* eo UI Box */
/* Login Page */
body
.login-page
{
background-color
:
#f1f1f1
;
padding-top
:
10%
}
.login-box
{
width
:
304px
;
position
:
relative
;
border-radius
:
5px
;
margin
:
auto
;
padding
:
20px
;
background
:
white
;
box-shadow
:
rgba
(
0
,
0
,
0
,
0
.07
)
0
1px
0
,
white
0
2px
0
,
rgba
(
0
,
0
,
0
,
0
.07
)
0
3px
0
,
white
0
4px
0
,
rgba
(
0
,
0
,
0
,
0
.07
)
0
5px
0
;
}
.login-box
.login-logo
{
margin
:
10px
0
30px
0
;
display
:
block
;
}
.login-box
input
.text
{
background-color
:
#f1f1f1
;
font-size
:
16px
;
border-radius
:
0
;
padding
:
14px
10px
;
width
:
280px
}
.login-box
input
.text.top
{
-webkit-border-top-left-radius
:
5px
;
-webkit-border-top-right-radius
:
5px
;
-moz-border-radius-topleft
:
5px
;
-moz-border-radius-topright
:
5px
;
border-top-left-radius
:
5px
;
border-top-right-radius
:
5px
;
}
.login-box
input
.text.bottom
{
-webkit-border-bottom-right-radius
:
5px
;
-webkit-border-bottom-left-radius
:
5px
;
-moz-border-radius-bottomright
:
5px
;
-moz-border-radius-bottomleft
:
5px
;
border-bottom-right-radius
:
5px
;
border-bottom-left-radius
:
5px
;
border-top
:
0
;
margin-bottom
:
20px
;
}
.login-box
a
.forgot
{
float
:
right
;
padding-top
:
6px
}
/* General */
header
{
background
:
#474D57
url('bg-header.png')
repeat-x
bottom
;
overflow
:
hidden
;
padding
:
10px
2%
6px
2%
}
header
a
{
color
:
white
;
text-shadow
:
0
-1px
0
black
}
header
a
:hover
{
color
:
#f1f1f1
}
header
h1
{
width
:
65px
;
}
header
h1
.logo
{
background
:
url('images.png')
no-repeat
-3px
-6px
;
width
:
65px
;
height
:
26px
;
margin
:
5px
0
;
padding
:
0
;
float
:
left
;
text-indent
:
-1000em
;
}
header
nav
{
border-radius
:
4px
;
box-shadow
:
0
1px
2px
black
;
width
:
321px
;
margin
:
auto
;
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
30
,
color-stop
(
0
.066
,
#595d63
)
,
to
(
#31363e
));
background-image
:
-webkit-linear-gradient
(
#595d63
6
.6%
,
#31363e
);
background-image
:
-moz-linear-gradient
(
#595d63
6
.6%
,
#31363e
);
background-image
:
-o-linear-gradient
(
#595d63
6
.6%
,
#31363e
);
margin-top
:
2px
;
}
header
nav
a
{
padding
:
8px
12px
8px
34px
;
display
:
inline-block
;
color
:
#D6DADF
;
border-right
:
1px
solid
#31363E
;
position
:
relative
;
box-shadow
:
1px
0
0
rgba
(
255
,
255
,
255
,.
1
);
margin
:
0
}
header
nav
a
span
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
background
:
red
;
position
:
absolute
;
left
:
8px
;
top
:
6px
;}
header
nav
a
:last-child
{
border
:
0
;
box-shadow
:
none
}
header
nav
a
:hover
,
header
nav
a
.current
{
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
30
,
color-stop
(
0
.066
,
#595d63
)
,
to
(
#2c2f35
));
background-image
:
-webkit-linear-gradient
(
#595d63
6
.6%
,
#2c2f35
);
background-image
:
-moz-linear-gradient
(
#595d63
6
.6%
,
#202227
);
background-image
:
-o-linear-gradient
(
#595d63
6
.6%
,
#202227
);
}
header
nav
a
:active
{
box-shadow
:
0
1px
4px
rgba
(
0
,
0
,
0
,.
8
)
inset
;
}
header
nav
a
.dashboard
{
-webkit-border-top-left-radius
:
4px
;
-webkit-border-bottom-left-radius
:
4px
;
-moz-border-radius-topleft
:
4px
;
-moz-border-radius-bottomleft
:
4px
;
border-top-left-radius
:
4px
;
border-bottom-left-radius
:
4px
;
}
header
nav
a
.admin
{
-webkit-border-top-right-radius
:
4px
;
-webkit-border-bottom-right-radius
:
4px
;
-moz-border-radius-topright
:
4px
;
-moz-border-radius-bottomright
:
4px
;
border-top-right-radius
:
4px
;
border-bottom-right-radius
:
4px
;
}
header
nav
a
.dashboard
span
{
background
:
url('images.png')
no-repeat
-161px
-4px
;
width
:
20px
;
height
:
20px
;
}
header
nav
a
.admin
span
{
background
:
url('images.png')
no-repeat
-184px
-4px
;
width
:
20px
;
height
:
20px
;}
header
nav
a
.project
span
{
background
:
url('images.png')
no-repeat
-209px
-5px
;
width
:
20px
;
height
:
18px
;
top
:
7px
}
header
.login-top
{
float
:
right
;
width
:
180px
;
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
62
,
color-stop
(
0
.032
,
#464c56
)
,
to
(
#363c45
));
background-image
:
-webkit-linear-gradient
(
#464c56
3
.2%
,
#363c45
);
background-image
:
-moz-linear-gradient
(
#464c56
3
.2%
,
#363c45
);
background-image
:
-o-linear-gradient
(
#464c56
3
.2%
,
#363c45
);
padding
:
0
10px
;
height
:
44px
;
}
header
.login-top
a
{
display
:
block
;}
header
.login-top
a
.pic
{
float
:
left
;
margin-right
:
10px
;
img
{
height
:
36px
;
width
:
36px
;
border
:
1px
solid
black
}
}
header
.login-top
a
.username
{
margin-bottom
:
5px
}
header
.login-top
a
.logout
{
color
:
#ccc
}
header
{
margin-bottom
:
0
;
clear
:
both
;
}
.page-title
{
background-color
:
#f1f1f1
;
display
:
block
;
float
:
left
;
clear
:
both
;
width
:
98%
;
padding
:
0
1%
;
border-bottom
:
1px
solid
#ccc
;
box-shadow
:
0
-1px
0
white
inset
;
margin-bottom
:
1
.5em
}
.page-title
a
.grey-button
{
float
:
right
;}
/* Project Page */
.project-page
.page-title
{
margin-bottom
:
0
}
.project-page
.project-sidebar
{
width
:
220px
;
margin-right
:
1%
;
background
:
#f7f7f7
;
overflow
:
hidden
;
padding
:
20px
0
20px
2%
;
margin
:
0
}
.project-page
.project-sidebar
input
.text.git-url
{
width
:
90%
;
box-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,.
2
)
inset
;
padding
:
3%
2%
;
margin
:
0%
10%
7%
0
}
.project-page
.project-sidebar
aside
a
{
display
:
block
;
background
:
white
;
padding
:
15px
10px
;
border-bottom
:
1px
solid
#eee
}
.project-page
.project-sidebar
aside
a
:first-child
{
-webkit-border-top-left-radius
:
5px
;
-moz-border-radius-topleft
:
5px
;
border-top-left-radius
:
5px
;
}
.project-page
.project-sidebar
aside
a
:last-child
{
-webkit-border-bottom-left-radius
:
5px
;
-moz-border-radius-bottomleft
:
5px
;
border-bottom-left-radius
:
5px
;
}
.project-page
.project-sidebar
aside
a
.current
{
background-color
:
#4bb8d2
;
color
:
white
;
text-shadow
:
none
;
border-color
:
transparent
}
.project-page
.project-content
{
float
:
left
;
padding
:
20px
}
.project-page
.project-content
h2
{
margin-top
:
0
}
/* eo Project Page */
/* Projects Page */
.project-box.ui-box
.data
.repository
{
margin-bottom
:
20px
}
.project-box.ui-box
.data
.title
span
{
width
:
80px
;
text-align
:
right
;
padding-right
:
10px
;
display
:
inline-block
;
font-weight
:
bold
;}
.project-box
{
width
:
100%
;
margin-bottom
:
3em
}
.browse-code
{
margin-right
:
10px
}
/* eo Projects Page */
/* ==|== non-semantic helper classes ======================================== */
.ir
{
display
:
block
;
border
:
0
;
text-indent
:
-999em
;
overflow
:
hidden
;
background-color
:
transparent
;
background-repeat
:
no-repeat
;
text-align
:
left
;
direction
:
ltr
;
}
.ir
br
{
display
:
none
;
}
.hidden
{
display
:
none
!
important
;
visibility
:
hidden
;
}
.visuallyhidden
{
border
:
0
;
clip
:
rect
(
0
0
0
0
);
height
:
1px
;
margin
:
-1px
;
overflow
:
hidden
;
padding
:
0
;
position
:
absolute
;
width
:
1px
;
}
.visuallyhidden.focusable
:active
,
.visuallyhidden.focusable
:focus
{
clip
:
auto
;
height
:
auto
;
margin
:
0
;
overflow
:
visible
;
position
:
static
;
width
:
auto
;
}
.invisible
{
visibility
:
hidden
;
}
.clearfix
:before
,
.clearfix
:after
{
content
:
""
;
display
:
table
;
}
.clearfix
:after
{
clear
:
both
;
}
.clearfix
{
zoom
:
1
;
}
/* ==|== media queries ====================================================== */
@media
only
screen
and
(
min-width
:
480px
)
{
}
@media
only
screen
and
(
min-width
:
768px
)
{
}
/* ==|== print styles ======================================================= */
@media
print
{
*
{
background
:
transparent
!
important
;
color
:
black
!
important
;
text-shadow
:
none
!
important
;
filter
:none
!
important
;
-ms-filter
:
none
!
important
;
}
a
,
a
:visited
{
text-decoration
:
underline
;
}
a
[
href
]
:after
{
content
:
" ("
attr
(
href
)
")"
;
}
abbr
[
title
]
:after
{
content
:
" ("
attr
(
title
)
")"
;
}
.ir
a
:after
,
a
[
href
^=
"javascript:"
]
:after
,
a
[
href
^=
"#"
]
:after
{
content
:
""
;
}
pre
,
blockquote
{
border
:
1px
solid
#999
;
page-break-inside
:
avoid
;
}
thead
{
display
:
table-header-group
;
}
tr
,
img
{
page-break-inside
:
avoid
;
}
img
{
max-width
:
100%
!
important
;
}
@page
{
margin
:
0
.5cm
;
}
p
,
h2
,
h3
{
orphans
:
3
;
widows
:
3
;
}
h2
,
h3
{
page-break-after
:
avoid
;
}
}
app/views/layouts/_head_panel.html.erb
View file @
1ffb4b98
<div
id=
"header-panel"
>
<!-- Page Header -->
<header>
<h1
class=
"logo"
>
<a
href=
"/"
>
GITLAB
</a></h1>
<div
class=
"login-top"
>
<%=
link_to
profile_path
,
:class
=>
"pic"
do
%>
<%=
image_tag
gravatar_icon
(
current_user
.
email
)
%>
<%
end
%>
<%=
link_to
profile_path
,
:class
=>
"username"
do
%>
<%=
current_user
.
name
%>
<%
end
%>
<%=
link_to
'Logout'
,
destroy_user_session_path
,
:class
=>
"logout"
,
:method
=>
:delete
%>
</div>
<!-- .login-top -->
<nav>
<%=
link_to
root_path
,
:class
=>
current_page?
(
root_path
)
?
"current dashboard"
:
"dashboard"
do
%>
<span></span>
Dashboard
<%
end
%>
<%=
link_to
projects_path
,
:class
=>
current_page?
(
projects_path
)
?
"current project"
:
"project"
do
%>
<span></span>
Projects
<%
end
%>
<%=
link_to
(
admin_root_path
,
:class
=>
admin_namespace?
?
"current admin"
:
"admin"
)
do
%>
<span></span>
Admin
<%
end
if
current_user
.
is_admin?
%>
</nav>
</header>
<!-- eo Page Header -->
<div
id=
"header-panel"
style=
"display:none"
>
<div
class=
"container"
>
<div
class=
"container"
>
<div
class=
"span-24"
>
<div
class=
"span-24"
>
<div
class=
"span-10"
>
<div
class=
"span-10"
>
<%#= image_tag "git.png", :height => 40, :class => "left" %>
<%#= link_to "gitlab", root_path, :id => "logo" %>
<span
class=
"search-holder"
>
<span
class=
"search-holder"
>
<%=
text_field_tag
"search"
,
nil
,
:placeholder
=>
"Search"
%>
<%=
text_field_tag
"search"
,
nil
,
:placeholder
=>
"Search"
%>
</span>
</span>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
>
<%=
link_to
truncate
(
@project
.
name
,
:length
=>
20
),
project_path
(
@project
),
:class
=>
"current button"
if
@project
&&
!
@project
.
new_record?
%>
<%=
link_to
truncate
(
@project
.
name
,
:length
=>
20
),
project_path
(
@project
),
:class
=>
"current button"
if
@project
&&
!
@project
.
new_record?
%>
<%=
link_to
'Projects'
,
projects_path
,
:class
=>
current_page?
(
projects_path
)
?
"current button"
:
"button"
%>
<%=
link_to
(
'Admin'
,
admin_root_path
,
:class
=>
admin_namespace?
?
"current button"
:
"button"
)
if
current_user
.
is_admin?
%>
<%=
link_to
profile_path
,
:class
=>
((
controller
.
controller_name
==
"keys"
||
controller
.
controller_name
==
"profile"
)
?
"current button"
:
"button"
)
do
%>
<%=
image_tag
gravatar_icon
(
current_user
.
email
)
%>
<%=
current_user
.
name
.
split
(
" "
).
first
%>
<%
end
%>
<%=
link_to
'Logout'
,
destroy_user_session_path
,
:style
=>
"border-left: 1px solid #666;"
,
:class
=>
"button"
,
:method
=>
:delete
%>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
app/views/layouts/_page_title.html.haml
0 → 100644
View file @
1ffb4b98
-
if
content_for?
(
:page_title
)
=
yield
:page_title
-
else
.page-title
.container_3
%h1
=
controller
.
controller_name
.
capitalize
app/views/layouts/application.html.haml
View file @
1ffb4b98
...
@@ -3,10 +3,10 @@
...
@@ -3,10 +3,10 @@
%head
%head
%title
%title
GitLab
#{
" - #{@project.name}"
if
@project
&&
!
@project
.
new_record?
}
GitLab
#{
" - #{@project.name}"
if
@project
&&
!
@project
.
new_record?
}
=
stylesheet_link_tag
'blueprint/screen'
,
:media
=>
"screen, projection"
-#
= stylesheet_link_tag 'blueprint/screen', :media => "screen, projection"
=
stylesheet_link_tag
'blueprint/print'
,
:media
=>
"print"
-#
= stylesheet_link_tag 'blueprint/print', :media => "print"
=
stylesheet_link_tag
'blueprint/plugins/buttons/screen'
,
:media
=>
"screen, projection"
-#
= stylesheet_link_tag 'blueprint/plugins/buttons/screen', :media => "screen, projection"
=
stylesheet_link_tag
'blueprint/plugins/link-icons/screen'
,
:media
=>
"screen, projection"
-#
= stylesheet_link_tag 'blueprint/plugins/link-icons/screen', :media => "screen, projection"
=
stylesheet_link_tag
"application"
=
stylesheet_link_tag
"application"
=
javascript_include_tag
"application"
=
javascript_include_tag
"application"
=
csrf_meta_tags
=
csrf_meta_tags
...
@@ -15,14 +15,18 @@
...
@@ -15,14 +15,18 @@
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
#thebody
%body
#thebody
#container
=
render
:partial
=>
"layouts/flash"
=
render
:partial
=>
"layouts/flash"
-
if
user_signed_in?
-
if
user_signed_in?
=
render
:partial
=>
"layouts/head_panel"
=
render
:partial
=>
"layouts/head_panel"
.top_bar.container
=
render
:partial
=>
"layouts/page_title"
=
render
:partial
=>
"projects/top_menu"
if
@project
&&
!
@project
.
new_record?
-
if
@project
&&
!
@project
.
new_record?
=
render
:partial
=>
"projects/projects_top_menu"
if
(
controller
.
controller_name
==
"projects"
&&
[
"index"
,
"new"
,
"create"
].
include?
(
controller
.
action_name
))
&&
!
admin_namespace?
.top_bar.container
=
render
:partial
=>
"projects/top_menu"
=
render
:partial
=>
"profile/top_menu"
if
[
"keys"
,
"profile"
].
include?
(
controller
.
controller_name
)
-
if
[
"keys"
,
"profile"
].
include?
(
controller
.
controller_name
)
=
render
:partial
=>
"admin/top_menu"
if
admin_namespace?
.top_bar.container
=
render
:partial
=>
"profile/top_menu"
#content-container
.container
-
if
admin_namespace?
.span-24
.top_bar.container
=
render
:partial
=>
"admin/top_menu"
%div
{
:id
=>
"main"
,
:role
=>
"main"
,
:class
=>
"container_3"
}
#content-container
=
yield
=
yield
app/views/projects/_tile.html.haml
View file @
1ffb4b98
-
@projects
.
in_groups_of
(
3
,
false
)
do
|
projects
|
-
@projects
.
in_groups_of
(
3
,
false
)
do
|
projects
|
-
projects
.
each_with_index
do
|
project
,
i
|
-
projects
.
each_with_index
do
|
project
,
i
|
%div
{
:class
=>
"project_thumb round-borders"
,
:style
=>
i
==
2
?
""
:
"margin-right:30px;"
}
%div
.grid_1
%div
{
:class
=>
"project"
,
:url
=>
project_path
(
project
)
}
%div
{
:class
=>
"project-box ui-box ui-box-big"
,
:style
=>
i
==
2
?
""
:
"margin-right:30px;"
}
%h2
=
link_to
project_path
(
project
)
do
=
image_tag
gravatar_icon
(
project
.
name
),
:class
=>
"left"
,
:width
=>
40
,
:style
=>
"padding-right:5px;"
%h3
=
project
.
name
=
link_to
(
"/"
+
project
.
code
),
project_path
(
project
),
:style
=>
"text-decoration:none"
.data
%p
=
project
.
name
%p
.title.repository
%p
=
project
.
url_to_repo
%span
Repository:
-#%p
=
project
.
url_to_repo
Commit –
%p
.title.activity
= last_commit(project)
%span
Last Activity:
%hr
-
last_note
=
project
.
notes
.
last
=
link_to
"Browse Code"
,
tree_project_path
(
project
),
:class
=>
"lbutton"
=
last_note
?
last_note
.
created_at
.
stamp
(
"24 Aug, 2011"
)
:
"Never"
=
link_to
"Commits"
,
project_commits_path
(
project
),
:class
=>
"lbutton"
,
:style
=>
"float:right;width:80px;"
.buttons
.clear
%a
.browse-code.button.yellow
{
:href
=>
tree_project_path
(
project
)}
Browse code
%a
.commits.button.green
{
:href
=>
project_commits_path
(
project
)}
Commits
app/views/projects/index.html.haml
View file @
1ffb4b98
-
content_for
(
:page_title
)
do
.page-title
.container_3
-
if
current_user
.
can_create_project?
%a
.grey-button
{
:href
=>
new_project_path
}
Create new project
%h1
Projects
-
unless
@projects
.
empty?
-
unless
@projects
.
empty?
%div
{
:class
=>
"tile"
,
:style
=>
view_mode_style
(
"tile"
)}
%div
{
:class
=>
"tile"
,
:style
=>
view_mode_style
(
"tile"
)}
=
render
"tile"
=
render
"tile"
...
...
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