Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kityminder-core
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
吴志俊
kityminder-core
Commits
54be9b09
Commit
54be9b09
authored
Sep 05, 2014
by
techird
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fui reflact finish
parent
8661ff6b
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
692 additions
and
57 deletions
+692
-57
import.js
import.js
+1
-1
import.share.js
import.share.js
+1
-2
zh-cn.js
lang/zh-cn/zh-cn.js
+10
-2
fio
lib/fio
+1
-1
doc.js
ui/doc.js
+3
-0
default.js
ui/menu/default.js
+15
-1
menu.js
ui/menu/menu.js
+0
-2
draft.js
ui/menu/open/draft.js
+1
-1
recent.js
ui/menu/open/recent.js
+1
-1
download.js
ui/menu/save/download.js
+2
-2
create.html
ui/menu/share/create.html
+1
-0
share.js
ui/menu/share/share.js
+245
-21
view.js
ui/menu/share/view.js
+14
-18
_public.less
ui/theme/default/css/_public.less
+45
-2
_share.less
ui/theme/default/css/_share.less
+142
-0
_widgets.less
ui/theme/default/css/_widgets.less
+1
-1
default.all.css
ui/theme/default/css/default.all.css
+207
-1
default.all.css.map
ui/theme/default/css/default.all.css.map
+1
-1
icons.png
ui/theme/default/images/icons.png
+0
-0
user.js
ui/topbar/user.js
+1
-0
No files found.
import.js
View file @
54be9b09
...
...
@@ -17,7 +17,6 @@
'lib/fio/src/fio.js'
,
'lib/fio/provider/netdisk/oauth.js'
,
'lib/fio/provider/netdisk/netdisk.js'
,
'lib/fio/provider/mongoshare/mongoshare.js'
,
/* Kity 依赖库 */
'lib/kity/dist/kity.js'
,
...
...
@@ -118,6 +117,7 @@
/* UI 菜单 */
'ui/menu/menu.js'
,
'ui/menu/header.js'
,
'ui/menu/default.js'
,
/* UI 菜单 - 新建 */
'ui/menu/new/new.js'
,
...
...
import.share.js
View file @
54be9b09
...
...
@@ -60,7 +60,6 @@
'src/module/expand.js'
,
'src/module/outline.js'
,
'src/module/geometry.js'
,
'src/module/history.js'
,
'src/module/progress.js'
,
'src/module/priority.js'
,
'src/module/image.js'
,
...
...
@@ -69,7 +68,6 @@
'src/module/dragtree.js'
,
'src/module/keyboard.js'
,
'src/module/select.js'
,
'src/module/history.js'
,
'src/module/basestyle.js'
,
'src/module/font.js'
,
'src/module/zoom.js'
,
...
...
@@ -121,6 +119,7 @@
/* UI 菜单 - 分享 */
// 'ui/menu/share/share.js',
'ui/menu/share/view.js'
,
/* UI Top Bar */
// 'ui/topbar/history.js',
...
...
lang/zh-cn/zh-cn.js
View file @
54be9b09
...
...
@@ -66,7 +66,9 @@ KityMinder.LANG['zh-cn'] = {
'newheader'
:
'新建脑图'
,
'openheader'
:
'打开'
,
'saveheader'
:
'保存到'
,
'shareheader'
:
'分享我的脑图'
'draftheader'
:
'草稿箱'
,
'shareheader'
:
'分享我的脑图'
,
'downloadheader'
:
'导出到指定格式'
},
'mydocument'
:
'我的文档'
,
...
...
@@ -101,9 +103,15 @@ KityMinder.LANG['zh-cn'] = {
'email_share_description'
:
'创建指定人可见的分享,您还可以允许他们编辑'
,
'ondev'
:
'敬请期待!'
,
'create_share_failed'
:
'分享失败:{0}'
,
'remove_share_failed'
:
'删除失败:{1}'
,
'copy'
:
'复制'
,
'copied'
:
'已复制'
,
'shared_tip'
:
'当前脑图被 {0} 分享,你可以修改之后保存到自己的网盘上或再次分享'
,
'current_share'
:
'当前脑图'
,
'manage_share'
:
'我的分享'
,
'share_remove_action'
:
'不分享该脑图'
,
'share_view_action'
:
'打开分享地址'
,
'share_edit_action'
:
'编辑分享的文件'
,
'login'
:
'登录'
,
'logout'
:
'注销'
,
...
...
@@ -182,7 +190,7 @@ KityMinder.LANG['zh-cn'] = {
'lang_input_text'
:
'文本内容:'
,
'lang_input_url'
:
'链接地址:'
,
'lang_input_title'
:
'标题:'
,
'lang_input_target'
:
'是否在新窗口
打开
:'
'lang_input_target'
:
'是否在新窗口:'
},
'priority'
:
'优先级'
,
'none'
:
'无'
,
...
...
fio
@
ae1bf8e7
Subproject commit
e37fe078a7722794d47c3dd2ee99cb31a0943afc
Subproject commit
ae1bf8e7aaf22d55ed19ac888d5d33a645813de5
ui/doc.js
View file @
54be9b09
...
...
@@ -62,6 +62,9 @@ KityMinder.registerUI('doc', function(minder) {
function
save
(
doc
)
{
current
=
doc
;
doc
.
data
=
minder
.
exportJson
();
doc
.
json
=
JSON
.
stringify
(
doc
.
data
);
minder
.
getUI
(
'topbar/title'
).
setTitle
(
doc
.
title
,
true
);
ret
.
fire
(
'docsave'
,
doc
);
}
...
...
ui/menu/default.js
View file @
54be9b09
...
...
@@ -7,5 +7,19 @@
* @copyright: Baidu FEX, 2014
*/
KityMinder
.
registerUI
(
'menu/default'
,
function
(
minder
)
{
minder
.
on
(
'uiready'
,
function
()
{
var
$menu
=
minder
.
getUI
(
'menu/menu'
);
var
$open
=
minder
.
getUI
(
'menu/open/open'
);
var
$save
=
minder
.
getUI
(
'menu/save/save'
);
var
$share
=
minder
.
getUI
(
'menu/share/share'
);
$menu
.
$tabs
.
select
(
1
);
// 打开
$open
.
$tabs
.
select
(
0
);
// 最近
$save
.
$tabs
.
select
(
0
);
// 云存储
$share
.
$tabs
.
select
(
0
);
// 当前脑图
// $menu.show();
});
});
\ No newline at end of file
ui/menu/menu.js
View file @
54be9b09
...
...
@@ -81,7 +81,5 @@ KityMinder.registerUI('menu/menu', function(minder) {
ret
.
$button
=
$button
;
ret
.
$tabs
=
$tabs
;
show
();
return
ret
;
});
\ No newline at end of file
ui/menu/open/draft.js
View file @
54be9b09
...
...
@@ -37,7 +37,7 @@ KityMinder.registerUI('menu/open/draft', function(minder) {
/* 标题 */
var
$title
=
$
(
'<h2></h2>'
)
.
text
(
minder
.
getLang
(
'ui.menu.
open.draft
'
))
.
text
(
minder
.
getLang
(
'ui.menu.
draftheader
'
))
.
appendTo
(
$panel
);
var
$clear
=
$
(
'<button></button>'
)
...
...
ui/menu/open/recent.js
View file @
54be9b09
...
...
@@ -17,7 +17,7 @@ KityMinder.registerUI('menu/open/recent', function(minder) {
var
recentList
=
minder
.
getUI
(
'widget/locallist'
).
use
(
'recent'
);
/* 网盘面板 */
var
$panel
=
$
(
$open
.
createSub
(
'recent'
,
true
)).
addClass
(
'recent-file-panel'
);
var
$panel
=
$
(
$open
.
createSub
(
'recent'
)).
addClass
(
'recent-file-panel'
);
minder
.
on
(
'uiready'
,
function
()
{
minder
.
getUI
(
'topbar/user'
).
requireLogin
(
$panel
);
...
...
ui/menu/save/download.js
View file @
54be9b09
...
...
@@ -15,7 +15,7 @@ KityMinder.registerUI('menu/save/download', function(minder) {
/* 标题 */
var
$title
=
$
(
'<h2></h2>'
)
.
text
(
minder
.
getLang
(
'ui.menu.
save.download
'
))
.
text
(
minder
.
getLang
(
'ui.menu.
downloadheader
'
))
.
appendTo
(
$panel
);
var
$list
=
$
(
'<ul>'
)
...
...
@@ -55,7 +55,7 @@ KityMinder.registerUI('menu/save/download', function(minder) {
switch
(
protocol
.
dataType
)
{
case
'text'
:
return
doDownload
(
buildDataUrl
(
mineType
),
filename
,
'text'
);
return
doDownload
(
buildDataUrl
(
mineType
,
data
),
filename
,
'text'
);
case
'base64'
:
return
doDownload
(
data
,
filename
,
'base64'
);
}
...
...
ui/menu/share/create.html
View file @
54be9b09
<h2
id=
"current-share-header"
>
$lang.current_share
</h2>
<form
id=
"share-select"
>
<div
id=
"shared-tip"
></div>
<fieldset
id=
"no-share"
>
...
...
ui/menu/share/share.js
View file @
54be9b09
This diff is collapsed.
Click to expand it.
ui/menu/share/view.js
View file @
54be9b09
...
...
@@ -7,13 +7,14 @@
* @copyright: Baidu FEX, 2014
*/
KityMinder
.
registerUI
(
'menu/share/view'
,
function
(
minder
)
{
var
$menu
=
minder
.
getUI
(
'menu/menu'
);
var
$save
=
minder
.
getUI
(
'menu/save/save'
);
var
$doc
=
minder
.
getUI
(
'doc'
);
var
$save
=
minder
.
getUI
(
'menu/save'
);
var
$download
=
minder
.
getUI
(
'download'
);
function
loadShareDoc
(
results
)
{
var
user
=
results
[
0
],
$panel
=
results
[
1
];
$menu
.
$tabs
.
select
(
0
);
$save
.
$tabs
.
select
(
0
);
function
loadShareDoc
()
{
var
pattern
=
/
(?:
shareId|share_id
)
=
(\w
+
)([
&#
]
|$
)
/
;
var
match
=
pattern
.
exec
(
window
.
location
)
||
pattern
.
exec
(
document
.
referrer
);
...
...
@@ -25,7 +26,9 @@ KityMinder.registerUI('menu/share/view', function (minder) {
function
renderShareData
(
data
)
{
if
(
data
.
error
)
{
return
window
.
alert
(
data
.
error
);
window
.
alert
(
data
.
error
);
window
.
location
.
href
=
'index.html'
;
return
;
}
var
content
=
data
.
shareMinder
.
data
;
...
...
@@ -35,22 +38,13 @@ KityMinder.registerUI('menu/share/view', function (minder) {
source
:
'share'
,
content
:
content
,
protocol
:
'json'
,
saved
:
fals
e
,
saved
:
tru
e
,
ownerId
:
data
.
uid
,
ownerName
:
data
.
uname
}).
then
(
function
(
doc
)
{
if
(
user
)
{
if
(
doc
.
ownerId
==
user
.
id
)
{
}
}
// 分享着不是当前用户
if
(
doc
.
ownerId
&&
doc
.
ownerId
!=
(
user
&&
user
.
id
))
{
$
(
'#shared-tip'
,
$panel
).
text
(
minder
.
getLang
(
'ui.shared_tip'
,
doc
.
ownerName
));
}
var
$title
=
minder
.
getUI
(
'topbar/title'
);
$title
.
setTitle
(
'[分享的] '
+
$title
.
getTitle
());
});
}
...
...
@@ -75,4 +69,6 @@ KityMinder.registerUI('menu/share/view', function (minder) {
});
}
loadShareDoc
();
});
\ No newline at end of file
ui/theme/default/css/_public.less
View file @
54be9b09
...
...
@@ -14,6 +14,14 @@
tranform: @value;
}
.animation(@value) {
-webkit-animation: @value;
-moz-animation: @value;
-ms-animation: @value;
-o-animation: @value;
animation: @value;
}
.blur {
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
...
...
@@ -87,6 +95,7 @@ input[type=url] {
display: block;
.dock;
background: fadeOut(@color, 25%);
.animation(fadeIn 3s ease);
}
&:before {
...
...
@@ -103,7 +112,7 @@ input[type=url] {
margin-top: -24px;
z-index: 10;
border-radius: 100%;
-webkit-animation: rotate 1.33s ease infinite
;
.animation(rotate 1.33s ease infinite)
;
filter: none;
-webkit-filter: none;
}
...
...
@@ -128,4 +137,38 @@ input[type=url] {
@keyframes rotate {
from { transform: rotate(0); }
to { transform: rotate(360deg); }
}
\ No newline at end of file
}
@-webkit-keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@-moz-keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@-ms-keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@-webkit-keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@-moz-keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@-ms-keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
ui/theme/default/css/_share.less
View file @
54be9b09
#current-share-header {
&:before {
content: ' ';
display: block;
width: 25px;
height: 25px;
position: absolute;
left: 0;
top: 1px;
background: url(../images/icons.png) no-repeat 0 -645px;
}
}
#manage-share-header {
&:before {
content: ' ';
display: block;
width: 25px;
height: 25px;
position: absolute;
left: 0;
top: 1px;
background: url(../images/icons.png) no-repeat 0 -620px;
}
}
#manage-share-list {
margin: 0;
padding: 0;
list-style: none;
.dock(40px, 0, 0, 0);
overflow: auto;
overflow-x: hidden;
overflow-y: auto;
&:empty:after {
content: '没有分享';
display: block;
text-align: center;
font-size: 18px;
height: 50px;
line-height: 50px;
color: #CCC;
}
.share-item {
font-size: 14px;
line-height: 20px;
padding: 10px 20px 10px 40px;
cursor: default;
position: relative;
&:hover {
background-color: lighten(@tab-hover, 55%);
}
&:active {
background-color: lighten(@tab-hover, 50%);
}
.title {
display: block;
margin: 0;
font-weight: normal;
height: 20px;
line-height: 20px;
overflow: ellipse;
&:after {
content: ' ';
display: block;
position: absolute;
width: 25px;
height: 25px;
background: url(../images/icons.png) no-repeat 0 -445px;
left: 5px;
top: 10px;
}
}
.url {
display: block;
margin: 0;
margin-top: 5px;
font-size: 12px;
color: #999;
}
.ctime {
position: absolute;
right: 5px;
top: 10px;
font-size: 12px;
color: #999;
}
.view-action, .remove-action, .edit-action {
display: none;
float: right;
width: 18px;
height: 18px;
background: url(../images/icons.png) no-repeat;
position: relative;
margin-left: 5px;
left: 15px;
top: -20px;
border: 1px solid transparent;
border-radius: 2px;
text-indent: -99999px;
&:hover {
border: 1px solid #888;
box-shadow: inset 0 8px 1px rgba(255,255,255,0.3),
inset 0 0 3px rgba(0, 0, 0, 0.2);
}
&:active {
box-shadow: inset 0 7px 3px rgba(0,0,0,0.05),
inset 0 0 4px rgba(0, 0, 0, 0.3);
}
}
.view-action {
background-position: -1px -670px;
}
.remove-action {
background-position: 0 -690px;
}
.edit-action {
background-position: 0 -710px;
}
&:hover {
.view-action, .remove-action, .edit-action {
display: block;
}
}
}
}
#share-select {
margin-top: 10px;
fieldset {
border: 1px solid #f0f0f0;
margin: 0;
margin-bottom: 10px;
padding: 10px;
border-radius: 2px;
legend {
font-size: 14px;
...
...
ui/theme/default/css/_widgets.less
View file @
54be9b09
.fui-button {
.fui-button
, li
{
.transition(background-color .2s ease);
}
...
...
ui/theme/default/css/default.all.css
View file @
54be9b09
...
...
@@ -616,6 +616,11 @@ input[type=url]:focus {
bottom
:
0
;
left
:
0
;
background
:
rgba
(
128
,
130
,
140
,
0.75
);
-webkit-animation
:
fadeIn
3s
ease
;
-moz-animation
:
fadeIn
3s
ease
;
-ms-animation
:
fadeIn
3s
ease
;
-o-animation
:
fadeIn
3s
ease
;
animation
:
fadeIn
3s
ease
;
}
.loading
:before
{
content
:
' '
;
...
...
@@ -632,6 +637,10 @@ input[type=url]:focus {
z-index
:
10
;
border-radius
:
100%
;
-webkit-animation
:
rotate
1.33s
ease
infinite
;
-moz-animation
:
rotate
1.33s
ease
infinite
;
-ms-animation
:
rotate
1.33s
ease
infinite
;
-o-animation
:
rotate
1.33s
ease
infinite
;
animation
:
rotate
1.33s
ease
infinite
;
filter
:
none
;
-webkit-filter
:
none
;
}
...
...
@@ -667,6 +676,70 @@ input[type=url]:focus {
transform
:
rotate
(
360deg
);
}
}
@-webkit-keyframes
fadeIn
{
from
{
opacity
:
0
;
}
to
{
opacity
:
1
;
}
}
@-moz-keyframes
fadeIn
{
from
{
opacity
:
0
;
}
to
{
opacity
:
1
;
}
}
@-ms-keyframes
fadeIn
{
from
{
opacity
:
0
;
}
to
{
opacity
:
1
;
}
}
@keyframes
fadeIn
{
from
{
opacity
:
0
;
}
to
{
opacity
:
1
;
}
}
@-webkit-keyframes
fadeOut
{
from
{
opacity
:
1
;
}
to
{
opacity
:
0
;
}
}
@-moz-keyframes
fadeOut
{
from
{
opacity
:
1
;
}
to
{
opacity
:
0
;
}
}
@-ms-keyframes
fadeOut
{
from
{
opacity
:
1
;
}
to
{
opacity
:
0
;
}
}
@keyframes
fadeOut
{
from
{
opacity
:
1
;
}
to
{
opacity
:
0
;
}
}
.triangle
{
content
:
' '
;
display
:
block
;
...
...
@@ -678,7 +751,8 @@ input[type=url]:focus {
border-style
:
solid
;
border-color
:
transparent
;
}
.fui-button
{
.fui-button
,
li
{
-webkit-transition
:
background-color
0.2s
ease
;
-moz-transition
:
background-color
0.2s
ease
;
-ms-transition
:
background-color
0.2s
ease
;
...
...
@@ -2580,11 +2654,143 @@ ul.resource-list li {
div
.right
{
float
:
right
;
}
#current-share-header
:before
{
content
:
' '
;
display
:
block
;
width
:
25px
;
height
:
25px
;
position
:
absolute
;
left
:
0
;
top
:
1px
;
background
:
url(../images/icons.png)
no-repeat
0
-645px
;
}
#manage-share-header
:before
{
content
:
' '
;
display
:
block
;
width
:
25px
;
height
:
25px
;
position
:
absolute
;
left
:
0
;
top
:
1px
;
background
:
url(../images/icons.png)
no-repeat
0
-620px
;
}
#manage-share-list
{
margin
:
0
;
padding
:
0
;
list-style
:
none
;
position
:
absolute
;
top
:
40px
;
right
:
0
;
bottom
:
0
;
left
:
0
;
overflow
:
auto
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
}
#manage-share-list
:empty:after
{
content
:
'没有分享'
;
display
:
block
;
text-align
:
center
;
font-size
:
18px
;
height
:
50px
;
line-height
:
50px
;
color
:
#CCC
;
}
#manage-share-list
.share-item
{
font-size
:
14px
;
line-height
:
20px
;
padding
:
10px
20px
10px
40px
;
cursor
:
default
;
position
:
relative
;
}
#manage-share-list
.share-item
:hover
{
background-color
:
#f4f5f7
;
}
#manage-share-list
.share-item
:active
{
background-color
:
#e5e7ec
;
}
#manage-share-list
.share-item
.title
{
display
:
block
;
margin
:
0
;
font-weight
:
normal
;
height
:
20px
;
line-height
:
20px
;
overflow
:
ellipse
;
}
#manage-share-list
.share-item
.title
:after
{
content
:
' '
;
display
:
block
;
position
:
absolute
;
width
:
25px
;
height
:
25px
;
background
:
url(../images/icons.png)
no-repeat
0
-445px
;
left
:
5px
;
top
:
10px
;
}
#manage-share-list
.share-item
.url
{
display
:
block
;
margin
:
0
;
margin-top
:
5px
;
font-size
:
12px
;
color
:
#999
;
}
#manage-share-list
.share-item
.ctime
{
position
:
absolute
;
right
:
5px
;
top
:
10px
;
font-size
:
12px
;
color
:
#999
;
}
#manage-share-list
.share-item
.view-action
,
#manage-share-list
.share-item
.remove-action
,
#manage-share-list
.share-item
.edit-action
{
display
:
none
;
float
:
right
;
width
:
18px
;
height
:
18px
;
background
:
url(../images/icons.png)
no-repeat
;
position
:
relative
;
margin-left
:
5px
;
left
:
15px
;
top
:
-20px
;
border
:
1px
solid
transparent
;
border-radius
:
2px
;
text-indent
:
-99999px
;
}
#manage-share-list
.share-item
.view-action
:hover
,
#manage-share-list
.share-item
.remove-action
:hover
,
#manage-share-list
.share-item
.edit-action
:hover
{
border
:
1px
solid
#888
;
box-shadow
:
inset
0
8px
1px
rgba
(
255
,
255
,
255
,
0.3
),
inset
0
0
3px
rgba
(
0
,
0
,
0
,
0.2
);
}
#manage-share-list
.share-item
.view-action
:active
,
#manage-share-list
.share-item
.remove-action
:active
,
#manage-share-list
.share-item
.edit-action
:active
{
box-shadow
:
inset
0
7px
3px
rgba
(
0
,
0
,
0
,
0.05
),
inset
0
0
4px
rgba
(
0
,
0
,
0
,
0.3
);
}
#manage-share-list
.share-item
.view-action
{
background-position
:
-1px
-670px
;
}
#manage-share-list
.share-item
.remove-action
{
background-position
:
0
-690px
;
}
#manage-share-list
.share-item
.edit-action
{
background-position
:
0
-710px
;
}
#manage-share-list
.share-item
:hover
.view-action
,
#manage-share-list
.share-item
:hover
.remove-action
,
#manage-share-list
.share-item
:hover
.edit-action
{
display
:
block
;
}
#share-select
{
margin-top
:
10px
;
}
#share-select
fieldset
{
border
:
1px
solid
#f0f0f0
;
margin
:
0
;
margin-bottom
:
10px
;
padding
:
10px
;
border-radius
:
2px
;
}
#share-select
fieldset
legend
{
font-size
:
14px
;
...
...
ui/theme/default/css/default.all.css.map
View file @
54be9b09
This diff is collapsed.
Click to expand it.
ui/theme/default/images/icons.png
View replaced file @
8661ff6b
View file @
54be9b09
9.82 KB
|
W:
|
H:
11.3 KB
|
W:
|
H:
2-up
Swipe
Onion skin
ui/topbar/user.js
View file @
54be9b09
...
...
@@ -103,6 +103,7 @@ KityMinder.registerUI('topbar/user', function(minder) {
$loginButton
.
show
();
$userButton
.
hide
();
fio
.
user
.
fire
(
'logout'
);
window
.
location
.
href
=
'index.html'
;
}
function
login
()
{
...
...
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