Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wisdom-ces
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangqinghua
wisdom-ces
Commits
8009e144
Commit
8009e144
authored
Oct 15, 2018
by
wangqinghua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
color
parent
0bfe7a4d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
144 additions
and
79 deletions
+144
-79
config.xml
config.xml
+1
-1
contactList.ts
src/pages/contact/contactList/contactList.ts
+1
-1
contract-personinfo.html
...ages/contact/contract-personinfo/contract-personinfo.html
+42
-6
contract-personinfo.ts
src/pages/contact/contract-personinfo/contract-personinfo.ts
+30
-3
myActivityList.html
src/pages/mine/myActivityList/myActivityList.html
+9
-10
personInfo.html
src/pages/person/personInfo/personInfo.html
+3
-1
personInfo.ts
src/pages/person/personInfo/personInfo.ts
+56
-55
list.ts
src/pages/surveyManage/list/list.ts
+2
-2
No files found.
config.xml
View file @
8009e144
<?xml version='1.0' encoding='utf-8'?>
<?xml version='1.0' encoding='utf-8'?>
<widget
id=
"io.ionic.starter"
version=
"1.1.
7
"
xmlns=
"http://www.w3.org/ns/widgets"
xmlns:cdv=
"http://cordova.apache.org/ns/1.0"
>
<widget
id=
"io.ionic.starter"
version=
"1.1.
8
"
xmlns=
"http://www.w3.org/ns/widgets"
xmlns:cdv=
"http://cordova.apache.org/ns/1.0"
>
<name>
智汇19号
</name>
<name>
智汇19号
</name>
<description>
An awesome Ionic/Cordova app.
</description>
<description>
An awesome Ionic/Cordova app.
</description>
<author
email=
"hi@ionicframework"
href=
"http://ionicframework.com/"
>
Ionic Framework Team
</author>
<author
email=
"hi@ionicframework"
href=
"http://ionicframework.com/"
>
Ionic Framework Team
</author>
...
...
src/pages/contact/contactList/contactList.ts
View file @
8009e144
...
@@ -121,7 +121,7 @@ export class ContactListPage {
...
@@ -121,7 +121,7 @@ export class ContactListPage {
}
}
//跳转联系人信息页面
//跳转联系人信息页面
contactPersonInfo
(
contactPerson
){
contactPersonInfo
(
contactPerson
){
this
.
navCtrl
.
push
(
"ContractPersoninfoPage"
,{
"id"
:
contactPerson
.
id
});
this
.
navCtrl
.
push
(
"ContractPersoninfoPage"
,{
"id"
:
contactPerson
.
id
,
orgName
:
this
.
orgName
});
}
}
// search(){
// search(){
...
...
src/pages/contact/contract-personinfo/contract-personinfo.html
View file @
8009e144
...
@@ -25,10 +25,10 @@
...
@@ -25,10 +25,10 @@
<div
class=
"info-item"
>
<div
class=
"info-item"
>
<span
class=
"info-span"
>
头像
</span>
<span
class=
"info-span"
>
头像
</span>
<div
class=
"info-item-content"
>
<div
class=
"info-item-content"
>
<ng-container
*
ngIf=
"contactPersonInfo?.picUrl != ''"
>
<ng-container
*
ngIf=
"contactPersonInfo?.picUrl
&& contactPersonInfo?.picUrl
!= ''"
>
<img
src=
"{{picture+contactPersonInfo.picUrl}}"
class=
"
slide-image
"
(
click
)="
go
(
item
)"
>
<img
src=
"{{picture+contactPersonInfo.picUrl}}"
class=
"
contact-img
"
(
click
)="
go
(
item
)"
>
</ng-container>
</ng-container>
<ng-container
*
ngIf=
"contactPersonInfo?.picUrl == ''"
>
<ng-container
*
ngIf=
"
!contactPersonInfo?.picUrl ||
contactPersonInfo?.picUrl == ''"
>
<img
src=
"./assets/imgs/head.png"
class=
"contact-img"
>
<img
src=
"./assets/imgs/head.png"
class=
"contact-img"
>
</ng-container>
</ng-container>
</div>
</div>
...
@@ -67,7 +67,19 @@
...
@@ -67,7 +67,19 @@
<span
class=
"info-span"
>
房间号
</span>
<span
class=
"info-span"
>
房间号
</span>
<div
class=
"info-item-content"
>
<div
class=
"info-item-content"
>
<ng-container
*
ngIf=
"role == 1 || role == 2 || role == 3"
>
<ng-container
*
ngIf=
"role == 1 && orgName == nowOrgName"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
abbreviation
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
</label>
</ng-container>
<ng-container
*
ngIf=
"role == 2 && orgName == nowOrgName"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
abbreviation
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
</label>
</ng-container>
<ng-container
*
ngIf=
"role == 3"
>
<label
(
click
)="
editFun
()"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
abbreviation
"
>
<input
type=
"text"
[(
ngModel
)]="
abbreviation
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
...
@@ -83,7 +95,19 @@
...
@@ -83,7 +95,19 @@
<div
class=
"info-item"
>
<div
class=
"info-item"
>
<span
class=
"info-span"
>
座机
</span>
<span
class=
"info-span"
>
座机
</span>
<div
class=
"info-item-content"
>
<div
class=
"info-item-content"
>
<ng-container
*
ngIf=
"role == 1 || role == 2 || role == 3"
>
<ng-container
*
ngIf=
"role == 1 && orgName == nowOrgName"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
telephone
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
</label>
</ng-container>
<ng-container
*
ngIf=
"role == 2 && orgName == nowOrgName"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
telephone
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
</label>
</ng-container>
<ng-container
*
ngIf=
"role == 3"
>
<label
(
click
)="
editFun
()"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
telephone
"
>
<input
type=
"text"
[(
ngModel
)]="
telephone
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
...
@@ -101,8 +125,20 @@
...
@@ -101,8 +125,20 @@
<div
class=
"info-item"
>
<div
class=
"info-item"
>
<span
class=
"info-span"
>
邮箱
</span>
<span
class=
"info-span"
>
邮箱
</span>
<div
class=
"info-item-content"
>
<div
class=
"info-item-content"
>
<ng-container
*
ngIf=
"role == 1 && orgName == nowOrgName"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
email
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
</label>
</ng-container>
<ng-container
*
ngIf=
"role == 2 && orgName == nowOrgName"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
email
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
</label>
</ng-container>
<ng-container
*
ngIf=
"role ==
1 || role == 2 || role ==
3"
>
<ng-container
*
ngIf=
"role == 3"
>
<label
(
click
)="
editFun
()"
>
<label
(
click
)="
editFun
()"
>
<input
type=
"text"
[(
ngModel
)]="
email
"
>
<input
type=
"text"
[(
ngModel
)]="
email
"
>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
<ion-icon
ios=
"ios-create-outline"
md=
"md-create-outline"
></ion-icon>
...
...
src/pages/contact/contract-personinfo/contract-personinfo.ts
View file @
8009e144
...
@@ -2,7 +2,7 @@ import {Component} from '@angular/core';
...
@@ -2,7 +2,7 @@ import {Component} from '@angular/core';
import
{
IonicPage
,
NavController
,
NavParams
}
from
'ionic-angular'
;
import
{
IonicPage
,
NavController
,
NavParams
}
from
'ionic-angular'
;
import
{
Response
}
from
'@angular/http'
;
import
{
Response
}
from
'@angular/http'
;
import
{
AppGlobal
,
AppService
}
from
'../../../service/appHttpService'
;
import
{
AppGlobal
,
AppService
}
from
'../../../service/appHttpService'
;
import
{
Storage
}
from
"@ionic/storage"
;
import
{
ContactListPage
}
from
'../contactList/contactList'
;
import
{
ContactListPage
}
from
'../contactList/contactList'
;
import
{
MyBlockPage
}
from
"../my-block/my-block"
;
import
{
MyBlockPage
}
from
"../my-block/my-block"
;
...
@@ -22,6 +22,9 @@ export class ContractPersoninfoPage {
...
@@ -22,6 +22,9 @@ export class ContractPersoninfoPage {
id
;
id
;
picture
:
string
=
AppGlobal
.
picture
;
picture
:
string
=
AppGlobal
.
picture
;
user
;
//登录人信息
orgName
;
//登录人部门
edit
=
false
;
edit
=
false
;
email
;
email
;
abbreviation
;
abbreviation
;
...
@@ -29,16 +32,40 @@ export class ContractPersoninfoPage {
...
@@ -29,16 +32,40 @@ export class ContractPersoninfoPage {
isContact
;
isContact
;
role
;
//权限
role
;
//权限
nowOrgName
;
constructor
(
public
navCtrl
:
NavController
,
constructor
(
public
navCtrl
:
NavController
,
public
navParams
:
NavParams
,
public
navParams
:
NavParams
,
public
appService
:
AppService
)
{
public
appService
:
AppService
,
public
storage
:
Storage
)
{
}
}
ionViewDid
Load
()
{
ionViewDid
Enter
()
{
this
.
id
=
this
.
navParams
.
get
(
"id"
);
this
.
id
=
this
.
navParams
.
get
(
"id"
);
this
.
nowOrgName
=
this
.
navParams
.
get
(
"orgName"
);
this
.
getPersonInfo
();
this
.
getPersonInfo
();
this
.
getRole
();
this
.
getRole
();
this
.
user
=
this
.
storage
.
get
(
"user"
).
then
((
value
)
=>
{
this
.
user
=
value
;
console
.
log
(
this
.
user
);
console
.
log
(
"id1:"
+
this
.
user
.
id
);
this
.
getOrgName
(
this
.
user
.
id
,
result
=>
{
let
data
=
result
;
this
.
orgName
=
data
[
"orgName"
];
});
});
}
//获取当前登录人部门
getOrgName
(
id
,
callback
?):
any
{
this
.
appService
.
ObserverHttpPost
(
"/wisdomgroup/app/getOrgName"
,
{
"userid"
:
id
})
.
toPromise
()
.
then
(
res
=>
{
var
data
=
res
.
json
();
callback
(
data
==
null
?
"[]"
:
data
);
})
.
catch
(
error
=>
{
});
}
}
//获取权限
//获取权限
...
...
src/pages/mine/myActivityList/myActivityList.html
View file @
8009e144
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
<div
class=
"item"
(
click
)="
goConfirmActivity
(
item
)"
>
<div
class=
"item"
(
click
)="
goConfirmActivity
(
item
)"
>
<div
class=
"item-header"
>
<div
class=
"item-header"
>
<div
class=
"item-header-style"
>
<div
class=
"item-header-style"
>
<!-- <ion-icon name="md-contact" class="icon"></ion-icon> -->
<img
src=
"./assets/imgs/icon-tj.png"
class=
"icon"
*
ngIf=
"item.activity.activityType==1"
>
<img
src=
"./assets/imgs/icon-tj.png"
class=
"icon"
*
ngIf=
"item.activity.activityType==1"
>
<img
src=
"./assets/imgs/icon-ly.png"
class=
"icon"
*
ngIf=
"item.activity.activityType==2"
>
<img
src=
"./assets/imgs/icon-ly.png"
class=
"icon"
*
ngIf=
"item.activity.activityType==2"
>
<img
src=
"./assets/imgs/icon-px.png"
class=
"icon"
*
ngIf=
"item.activity.activityType==3"
>
<img
src=
"./assets/imgs/icon-px.png"
class=
"icon"
*
ngIf=
"item.activity.activityType==3"
>
...
@@ -37,34 +36,34 @@
...
@@ -37,34 +36,34 @@
<div
class=
"content-box"
>
<div
class=
"content-box"
>
<div
class=
"content-item-box"
>
<div
class=
"content-item-box"
>
<label
class=
"left-title"
>
选择批次
:
</label>
<label
class=
"left-title"
>
批次名称
:
</label>
<div
class=
"data"
>
{{item.batch?.batchName}}
</div>
<div
class=
"data"
>
{{item.batch?.batchName}}
</div>
</div>
</div>
<div
class=
"content-item-box"
>
<div
class=
"content-item-box"
>
<label
class=
"left-title"
>
截止
日期:
</label>
<label
class=
"left-title"
>
出行
日期:
</label>
<div
class=
"data"
>
<div
class=
"data"
>
{{item.batch?.batch
End
Date}}
{{item.batch?.batch
Go
Date}}
</div>
</div>
</div>
</div>
<div
class=
"content-item-box"
>
<div
class=
"content-item-box"
>
<label
class=
"left-title"
>
联络人员
:
</label>
<label
class=
"left-title"
>
活动地点
:
</label>
<div
class=
"data"
>
<div
class=
"data"
>
{{item.batch?.
liamand
}}
{{item.batch?.
batchAddress
}}
</div>
</div>
</div>
</div>
<div
class=
"content-item-box"
>
<div
class=
"content-item-box"
>
<label
class=
"left-title"
>
联络电话
:
</label>
<label
class=
"left-title"
>
报名截止
:
</label>
<div
class=
"data"
>
<div
class=
"data"
>
{{item.batch?.
liamantel
}}
{{item.batch?.
batchEndDate
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
>
<button
disabled
class=
"cancel"
*
ngIf=
"item.orderstate == 1 && !item.showParticipantBtn"
(
click
)="
sureCancelOrder
(
item
.
orderid
);$
event
.
stopPropagation
();"
>
取消订单
</button>
<button
disabled
class=
"cancel"
*
ngIf=
"item.orderstate == 1 && !item.showParticipantBtn"
(
click
)="
sureCancelOrder
(
item
.
orderid
);$
event
.
stopPropagation
();"
>
取消订单
</button>
<button
disabled
class=
"reselection"
*
ngIf=
"item.orderstate == 1 && !item.showParticipantBtn"
(
click
)="
reelectBatch
(
item
);$
event
.
stopPropagation
();"
>
修改订单
</button>
<button
disabled
class=
"reselection"
*
ngIf=
"item.orderstate == 1 && !item.showParticipantBtn"
(
click
)="
reelectBatch
(
item
);$
event
.
stopPropagation
();"
>
修改订单
</button>
<button
disabled
class=
"cancel"
*
ngIf=
"item.orderstate == 1 && item.showParticipantBtn"
(
click
)="
joinPeople
(
item
);$
event
.
stopPropagation
();"
>
参与人员
</button>
<button
disabled
class=
"cancel"
*
ngIf=
"item.orderstate == 1 && item.showParticipantBtn"
(
click
)="
joinPeople
(
item
);$
event
.
stopPropagation
();"
>
已报名
</button>
<button
disabled
class=
"cancel"
*
ngIf=
"item.orderstate == 2"
(
click
)="
joinPeople
(
item
);$
event
.
stopPropagation
();"
>
参与人员
</button>
<button
disabled
class=
"cancel"
*
ngIf=
"item.orderstate == 2"
(
click
)="
joinPeople
(
item
);$
event
.
stopPropagation
();"
>
已报名
</button>
<button
disabled
class=
"reselection"
*
ngIf=
"item.orderstate == 2"
(
click
)="
evaluation
(
item
);$
event
.
stopPropagation
();"
>
确认评价
</button>
<button
disabled
class=
"reselection"
*
ngIf=
"item.orderstate == 2"
(
click
)="
evaluation
(
item
);$
event
.
stopPropagation
();"
>
确认评价
</button>
<button
disabled
class=
"reselection"
*
ngIf=
"item.orderstate == 3||item.orderstate == 4"
>
查看详情
</button>
<button
disabled
class=
"reselection"
*
ngIf=
"item.orderstate == 3||item.orderstate == 4"
>
查看详情
</button>
...
...
src/pages/person/personInfo/personInfo.html
View file @
8009e144
...
@@ -13,7 +13,9 @@
...
@@ -13,7 +13,9 @@
<div
class=
"info-item"
>
<div
class=
"info-item"
>
<span
class=
"info-span"
>
头像
</span>
<span
class=
"info-span"
>
头像
</span>
<div
class=
"photo-box"
>
<div
class=
"photo-box"
>
<img
src=
"./assets/imgs/head.png"
class=
"img"
>
<img
*
ngIf=
"user.userDetail?.user?.picUrl == ''"
src=
"./assets/imgs/head.png"
class=
"img"
>
<img
*
ngIf=
"user.userDetail?.user?.picUrl != ''"
src=
"{{picture+user.userDetail?.user?.picUrl}}"
class=
"img"
>
</div>
</div>
</div>
</div>
</ion-item>
</ion-item>
...
...
src/pages/person/personInfo/personInfo.ts
View file @
8009e144
import
{
Component
}
from
'@angular/core'
;
import
{
Component
}
from
'@angular/core'
;
import
{
IonicPage
,
NavController
,
ToastController
}
from
'ionic-angular'
;
import
{
IonicPage
,
NavController
,
ToastController
}
from
'ionic-angular'
;
import
{
ModifyPasswordPage
}
from
"../../modifyPassword/modifyPassword"
;
import
{
ModifyPasswordPage
}
from
"../../modifyPassword/modifyPassword"
;
import
{
Storage
}
from
'@ionic/storage'
;
import
{
Storage
}
from
'@ionic/storage'
;
import
{
AppService
}
from
"../../../service/appHttpService"
;
import
{
AppGlobal
,
AppService
}
from
"../../../service/appHttpService"
;
import
{
EditPersonInfoPage
}
from
'../editPersonInfo/editPersonInfo'
;
import
{
EditPersonInfoPage
}
from
'../editPersonInfo/editPersonInfo'
;
@
IonicPage
()
@
IonicPage
()
@
Component
({
@
Component
({
selector
:
'page-personInfo'
,
selector
:
'page-personInfo'
,
templateUrl
:
'personInfo.html'
templateUrl
:
'personInfo.html'
})
})
export
class
PersonInfoPage
{
export
class
PersonInfoPage
{
orgName
=
''
;
orgName
=
''
;
user
:
any
;
user
:
any
;
gender
:
object
;
gender
:
object
;
//userInfo: object ;
//userInfo: object ;
userid
:
''
;
userid
:
''
;
constructor
(
picture
:
string
=
AppGlobal
.
picture
;
public
navCtrl
:
NavController
,
public
storage
:
Storage
,
public
appService
:
AppService
,
public
toast
:
ToastController
)
{
}
//ionViewDidLoad():void{
constructor
(
public
navCtrl
:
NavController
,
ionViewWillEnter
():
void
{
public
storage
:
Storage
,
this
.
user
=
this
.
storage
.
get
(
"user"
).
then
((
value
)
=>
{
public
appService
:
AppService
,
this
.
user
=
value
;
public
toast
:
ToastController
)
{
console
.
log
(
this
.
user
);
console
.
log
(
"id1:"
+
this
.
user
.
id
);
this
.
gender
=
this
.
user
.
userDetail
.
user
.
gender
;
console
.
log
(
"gender:"
+
this
.
gender
);
this
.
getOrgName
(
this
.
user
.
id
,
result
=>
{
let
data
=
result
;
this
.
orgName
=
data
[
"orgName"
];
});
});
}
modifyPwd
(){
}
this
.
navCtrl
.
push
(
"ModifyPasswordPage"
)
}
getOrgName
(
id
,
callback
?):
any
{
//ionViewDidLoad():void{
this
.
appService
.
ObserverHttpPost
(
"/wisdomgroup/app/getOrgName"
,{
"userid"
:
id
})
ionViewWillEnter
():
void
{
.
toPromise
()
this
.
user
=
this
.
storage
.
get
(
"user"
).
then
((
value
)
=>
{
.
then
(
res
=>
{
this
.
user
=
value
;
var
data
=
res
.
json
();
console
.
log
(
this
.
user
);
callback
(
data
==
null
?
"[]"
:
data
);
console
.
log
(
"id1:"
+
this
.
user
.
id
);
})
this
.
gender
=
this
.
user
.
userDetail
.
user
.
gender
;
.
catch
(
error
=>
{
console
.
log
(
"gender:"
+
this
.
gender
);
});
this
.
getOrgName
(
this
.
user
.
id
,
result
=>
{
}
let
data
=
result
;
this
.
orgName
=
data
[
"orgName"
];
});
});
}
//不同的code代表修改不同的数据,1房间,2座机,3邮箱
modifyPwd
()
{
edit
(
code
){
this
.
navCtrl
.
push
(
"ModifyPasswordPage"
)
this
.
navCtrl
.
push
(
"EditPersonInfoPage"
,{
code
:
code
});
}
}
getOrgName
(
id
,
callback
?):
any
{
goBack
(){
this
.
appService
.
ObserverHttpPost
(
"/wisdomgroup/app/getOrgName"
,
{
"userid"
:
id
})
this
.
navCtrl
.
popToRoot
();
.
toPromise
()
}
.
then
(
res
=>
{
var
data
=
res
.
json
();
callback
(
data
==
null
?
"[]"
:
data
);
})
.
catch
(
error
=>
{
});
}
//不同的code代表修改不同的数据,1房间,2座机,3邮箱
edit
(
code
)
{
this
.
navCtrl
.
push
(
"EditPersonInfoPage"
,
{
code
:
code
});
}
goBack
()
{
this
.
navCtrl
.
popToRoot
();
}
}
}
src/pages/surveyManage/list/list.ts
View file @
8009e144
...
@@ -112,9 +112,9 @@ export class ListPage {
...
@@ -112,9 +112,9 @@ export class ListPage {
//设为过期
//设为过期
overDue
(){
overDue
(){
this
.
appService
.
ObserverHttpGetAdd
(
'/wisdomgroup/modules/question/
submit/'
,{
id
:
this
.
temp
.
id
}
)
this
.
appService
.
ObserverHttpGetAdd
(
'/wisdomgroup/modules/question/
outdate/'
,
this
.
temp
.
id
)
.
subscribe
((
res
)
=>
{
.
subscribe
((
res
)
=>
{
console
.
log
(
res
);
this
.
selectPageMenu
(
this
.
swiperIndex
);
})
})
}
}
...
...
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