Commit 28061a9a authored by wangqinghua's avatar wangqinghua

日历

parent 7f93de48
...@@ -89,6 +89,7 @@ ...@@ -89,6 +89,7 @@
<plugin name="cordova-plugin-geolocation" spec="^4.0.1"> <plugin name="cordova-plugin-geolocation" spec="^4.0.1">
<variable name="GEOLOCATION_USAGE_DESCRIPTION" value="To locate you" /> <variable name="GEOLOCATION_USAGE_DESCRIPTION" value="To locate you" />
</plugin> </plugin>
<plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
<engine name="ios" spec="4.5.5" /> <engine name="ios" spec="4.5.5" />
<engine name="browser" spec="5.0.4" /> <engine name="browser" spec="5.0.4" />
<engine name="android" spec="7.0.0" /> <engine name="android" spec="7.0.0" />
......
...@@ -42,6 +42,9 @@ ...@@ -42,6 +42,9 @@
}, },
"cordova-hot-code-push-plugin": { "cordova-hot-code-push-plugin": {
"PACKAGE_NAME": "io.ionic.starter" "PACKAGE_NAME": "io.ionic.starter"
},
"cordova-plugin-statusbar": {
"PACKAGE_NAME": "io.ionic.starter"
} }
}, },
"dependent_plugins": {} "dependent_plugins": {}
......
import { Component,ViewChild } from '@angular/core'; import {Component, ViewChild} from '@angular/core';
import {Platform, AlertController, Content} from 'ionic-angular'; import {Platform, AlertController, Content} from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar'; import {StatusBar} from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen'; import {SplashScreen} from '@ionic-native/splash-screen';
import { Storage } from "@ionic/storage"; import {Storage} from "@ionic/storage";
import { LoginPage } from '../pages/login/login'; import {LoginPage} from '../pages/login/login';
import { AppVersion } from '@ionic-native/app-version'; import {AppVersion} from '@ionic-native/app-version';
import { AppUpdateService } from '../service/appUpdateService'; import {AppUpdateService} from '../service/appUpdateService';
import { Keyboard } from '@ionic-native/keyboard'; import {Keyboard} from '@ionic-native/keyboard';
import { Badge } from '@ionic-native/badge'; import {Badge} from '@ionic-native/badge';
import {Response} from "@angular/http"; import {Response} from "@angular/http";
import {TabsPage} from "../pages/tabs/tabs"; import {TabsPage} from "../pages/tabs/tabs";
import { Geolocation } from "@ionic-native/geolocation"; import {Geolocation} from "@ionic-native/geolocation";
import {AppService} from "../service/appHttpService"; import {AppService} from "../service/appHttpService";
@Component({ @Component({
templateUrl: 'app.html' templateUrl: 'app.html'
}) })
...@@ -21,23 +22,27 @@ export class MyApp { ...@@ -21,23 +22,27 @@ export class MyApp {
rootPage; rootPage;
user; user;
constructor(platform: Platform, constructor(platform: Platform,
statusBar: StatusBar, public statusBar: StatusBar,
splashScreen: SplashScreen, public splashScreen: SplashScreen,
alertCtrl: AlertController, alertCtrl: AlertController,
keyboard:Keyboard, keyboard: Keyboard,
appUpdateService: AppUpdateService, appUpdateService: AppUpdateService,
appVersion: AppVersion, appVersion: AppVersion,
private geolocation: Geolocation, private geolocation: Geolocation,
badge:Badge, badge: Badge,
// public navCtrl: NavController, // public navCtrl: NavController,
public storage: Storage, public storage: Storage,
public appService: AppService public appService: AppService) {
) {
platform.ready().then(() => { platform.ready().then(() => {
statusBar.styleDefault(); this.splashScreen.hide();
splashScreen.hide(); this.statusBar.show();
this.statusBar.overlaysWebView(false);
this.statusBar.backgroundColorByHexString('#19b5ff');
this.statusBar.styleLightContent();
//检测是否需要更新 //检测是否需要更新
appVersion.getVersionNumber().then((version: string) => { appVersion.getVersionNumber().then((version: string) => {
appUpdateService.compariVersion().subscribe(res => { appUpdateService.compariVersion().subscribe(res => {
...@@ -54,16 +59,13 @@ export class MyApp { ...@@ -54,16 +59,13 @@ export class MyApp {
}); });
this.loadLogin(); this.loadLogin();
} }
loadLogin(){ loadLogin() {
this.storage.get("userLoginInfo").then((value)=>{ this.storage.get("userLoginInfo").then((value) => {
if(value!=null && value != ''){ if (value != null && value != '') {
this.user = value; this.user = value;
this.appService.ObserverHttpPost("/wisdomgroup/app/loginpost", this.user) this.appService.ObserverHttpPost("/wisdomgroup/app/loginpost", this.user)
.subscribe((res: Response) => { .subscribe((res: Response) => {
...@@ -72,7 +74,7 @@ export class MyApp { ...@@ -72,7 +74,7 @@ export class MyApp {
//将当前登录用户存进缓存,便于后期逻辑操作 //将当前登录用户存进缓存,便于后期逻辑操作
this.storage.set('user', data.data); this.storage.set('user', data.data);
this.user.userid = data.data.id; this.user.userid = data.data.id;
this.storage.set('userLoginInfo',this.user); this.storage.set('userLoginInfo', this.user);
// return this.navCtrl.setRoot(TabsPage, { "user": this.user }); // return this.navCtrl.setRoot(TabsPage, { "user": this.user });
this.rootPage = TabsPage; this.rootPage = TabsPage;
} else { } else {
...@@ -86,7 +88,7 @@ export class MyApp { ...@@ -86,7 +88,7 @@ export class MyApp {
} }
); );
} }
else{ else {
this.rootPage = LoginPage; this.rootPage = LoginPage;
} }
}); });
......
...@@ -11,20 +11,21 @@ p{ ...@@ -11,20 +11,21 @@ p{
padding-left: 10px; padding-left: 10px;
} }
.list-ios .item-block .item-inner { .list-ios .item-block .item-inner {
border-bottom: 0.55px solid #dadada; border-bottom: 1px solid #dadada;
} }
.list-ios > .item-block:last-child, .list-ios > .item-block:last-child,
.list-ios > .item-block:first-child{ .list-ios > .item-block:first-child{
border: none; border: none;
} }
.list-ios > .item-block:last-child, .list-ios > .item-wrapper:last-child .item-block{ .list-ios > .item-block:last-child, .list-ios > .item-wrapper:last-child .item-block{
border-bottom: 0.55px solid #dadada; border-bottom: 1px solid #dadada;
} }
.back-button-icon-ios{ .back-button-icon-ios{
line-height: 20px; line-height: 20px;
font-size: 3rem; font-size: 3rem;
color:#fff;
} }
.bgc-e7e8ed{ .bgc-e7e8ed{
background-color: #e7e8ed; background-color: #e7e8ed;
...@@ -129,3 +130,27 @@ ion-icon { ...@@ -129,3 +130,27 @@ ion-icon {
.border-none{ .border-none{
border: none !important; border: none !important;
} }
//tabs
.tabs-ios .tabbar{
border-top: 1px solid #eeeeee;
background-color: #f7f7f7;
}
//导航栏
.toolbar-title-ios{
color: #ffffff;
font-weight: 400;
}
.toolbar-background-ios{
background-color: #19b5ff;
}
.header-ios .toolbar-ios:last-child .toolbar-background-ios{
border-bottom: 1px solid #e5e5e5;
}
.space{
background-color: #ebedf2;
height: 10px;
}
\ No newline at end of file
...@@ -97,6 +97,6 @@ page-order-edit { ...@@ -97,6 +97,6 @@ page-order-edit {
width: 2rem; width: 2rem;
} }
.item-ios.item-block .item-inner { .item-ios.item-block .item-inner {
border-bottom: 0.55px solid #c8c7cc; border-bottom: 1px solid #c8c7cc;
} }
} }
...@@ -64,7 +64,7 @@ page-block-list { ...@@ -64,7 +64,7 @@ page-block-list {
box-sizing: border-box; box-sizing: border-box;
} }
.list-ios .item-block .item-inner { .list-ios .item-block .item-inner {
border-bottom: 0.55px solid #dadada; border-bottom: 1px solid #eeeeee;
} }
.search{ .search{
float: right; float: right;
......
...@@ -7,7 +7,7 @@ page-contactList { ...@@ -7,7 +7,7 @@ page-contactList {
box-sizing: border-box; box-sizing: border-box;
} }
.list-ios .item-block .item-inner { .list-ios .item-block .item-inner {
border-bottom: 0.55px solid #dadada; border-bottom: 1px solid #eeeeee;
} }
.search{ .search{
float: right; float: right;
......
...@@ -7,7 +7,7 @@ page-contract-personinfo { ...@@ -7,7 +7,7 @@ page-contract-personinfo {
box-sizing: border-box; box-sizing: border-box;
} }
.list-ios .item-block .item-inner { .list-ios .item-block .item-inner {
border-bottom: 0.55px solid #c8c7cc; border-bottom: 1px solid #c8c7cc;
} }
.content{ .content{
background-color: #f5f5f5; background-color: #f5f5f5;
......
...@@ -7,7 +7,7 @@ page-person-list { ...@@ -7,7 +7,7 @@ page-person-list {
box-sizing: border-box; box-sizing: border-box;
} }
.list-ios .item-block .item-inner { .list-ios .item-block .item-inner {
border-bottom: 0.55px solid #c8c7cc; border-bottom: 1px solid #c8c7cc;
} }
.search{ .search{
float: right; float: right;
......
<ion-header> <ion-header>
<!--<ion-toolbar>-->
<!--<div class="searchToolBar">-->
<!--<button ion-button clear small navPop style="padding: 0;">-->
<!--<img class="back-btn" src="./assets/imgs/back.png" />-->
<!--</button>-->
<!--<div class="search-header">-->
<!--<ion-input type="text" placeholder="按姓名搜索" [(ngModel)]="searchValue" (ionChange)="searchUser()"></ion-input>-->
<!--<ion-icon name="close" class="clear" (click)="clearValue()"></ion-icon>-->
<!--</div>-->
<!--</div>-->
<!--</ion-toolbar>-->
<ion-navbar> <ion-navbar>
<ion-navbar> <ion-navbar>
<div class="search-header"> <div class="search-header">
...@@ -26,8 +15,7 @@ ...@@ -26,8 +15,7 @@
<ion-list> <ion-list>
<ion-item *ngFor="let contactPerson of contactPersons" (click)="contactPersonInfo(contactPerson)"> <ion-item *ngFor="let contactPerson of contactPersons" (click)="contactPersonInfo(contactPerson)">
<div class="contact-box"> <div class="contact-box">
<img src="./assets/imgs/man.png" class="contact-img" *ngIf="contactPerson.gender =='1'||contactPerson.gender==null"> <img src="./assets/imgs/head.png" class="contact-img">
<img src="./assets/imgs/woman.png" class="contact-img" *ngIf="contactPerson.gender =='0'">
<div class="contact-box-right"> <div class="contact-box-right">
<div> <div>
......
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular'; import { IonicPageModule } from 'ionic-angular';
import { SearchPage } from '../search/search'; import { SearchPage } from './search';
@NgModule({ @NgModule({
declarations: [ declarations: [
......
page-search { page-search {
ion-input, ion-textarea{
color: #fff;
}
.header-ios .toolbar-ios:last-child .toolbar-background-ios{
border: none;
}
.searchToolBar{ .searchToolBar{
display: flex; display: flex;
flex-direction: row; flex-direction: row;
...@@ -17,7 +22,6 @@ page-search { ...@@ -17,7 +22,6 @@ page-search {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px solid #cccccc;
width: 100%; width: 100%;
margin-left: 5px; margin-left: 5px;
} }
...@@ -116,5 +120,9 @@ page-search { ...@@ -116,5 +120,9 @@ page-search {
width: 30px; width: 30px;
height: 30px; height: 30px;
} }
.text-input::-webkit-input-placeholder{
color:#fff;
}
} }
import { Component} from '@angular/core'; 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 { AppService } from '../../service/appHttpService'; import { AppService } from '../../../service/appHttpService';
@IonicPage() @IonicPage()
@Component({ @Component({
...@@ -40,36 +40,44 @@ export class SearchPage { ...@@ -40,36 +40,44 @@ export class SearchPage {
searchUser(){ searchUser(){
console.log("searchValue:"+this.searchValue); console.log("searchValue:"+this.searchValue);
let nameval = encodeURIComponent(this.searchValue) ; // let nameval = encodeURIComponent(this.searchValue) ;
this.appService.ObserverHttpPost("/wisdomgroup/app/getUserByName",{"name":nameval,"orgId":this.orgId}) // this.appService.ObserverHttpPost("/wisdomgroup/app/getUserByName",{"name":nameval,"orgId":this.orgId})
.subscribe((res: Response) => { // .subscribe((res: Response) => {
let data = res.json(); // let data = res.json();
this.contactPersons = data; // this.contactPersons = data;
if(this.orgId !=null && this.orgId !=''){ // if(this.orgId !=null && this.orgId !=''){
//同组织部门下 // //同组织部门下
this.contactPersons.forEach(element => { // this.contactPersons.forEach(element => {
element["orgName"] = this.orgName; // element["orgName"] = this.orgName;
element["hasgeneralpersonsflag"] = false; // element["hasgeneralpersonsflag"] = false;
}); // });
}else{ // }else{
this.contactPersons.forEach(element => { // this.contactPersons.forEach(element => {
this.getOrgName(element["id"],result=>{ // this.getOrgName(element["id"],result=>{
element["orgName"] = result["orgName"]; // element["orgName"] = result["orgName"];
element["hasgeneralpersonsflag"] = false; // element["hasgeneralpersonsflag"] = false;
}); // });
}); // });
} // }
}, error => { // }, error => {
this.appService.alert('网络异常!'); // this.appService.alert('网络异常!');
} // }
); // );
const data = {
name:this.searchValue,
pageNumber:1,
pageSize:100,
};
this.appService.ObserverHttpNoForm('/wisdomgroup/app/getUserByName',data)
.subscribe((res)=>{
this.contactPersons = res.json().list;
})
} }
//跳转联系人信息页面 //跳转联系人信息页面
contactPersonInfo(contactPerson){ contactPersonInfo(contactPerson){
console.log("contactPerson:"+JSON.stringify(contactPerson)); this.navCtrl.push("ContractPersoninfoPage",{"id":contactPerson.id});
this.navCtrl.push("ContractPersoninfoPage",{"contactPerson":contactPerson});
} }
//根据用户id获取部门信息 //根据用户id获取部门信息
......
...@@ -37,9 +37,7 @@ ...@@ -37,9 +37,7 @@
<ion-item *ngFor="let item of items"> <ion-item *ngFor="let item of items">
<div class="group"> <div class="group">
<div class="inner-group"> <div class="inner-group">
<!-- <img src="{{img}}" class="person-photo"> --> <img src="./assets/imgs/head.png" class="img">
<img src="./assets/imgs/woman.png" *ngIf="item.user?.gender == 0" class="img">
<img src="./assets/imgs/man.png" *ngIf="item.user?.gender == null || item.user?.gender == '1'" class="img">
<p class="person-name">{{item.user?.name}}</p> <p class="person-name">{{item.user?.name}}</p>
<p>&nbsp;&nbsp;&nbsp;{{item.user?.mobile}}</p> <p>&nbsp;&nbsp;&nbsp;{{item.user?.mobile}}</p>
......
...@@ -338,7 +338,7 @@ page-myReport { ...@@ -338,7 +338,7 @@ page-myReport {
} }
.item-ios{ .item-ios{
margin-top: 1rem; margin-top: 10px;
} }
.list-ios .item-block .item-inner{ .list-ios .item-block .item-inner{
border: none; border: none;
......
...@@ -3,7 +3,7 @@ page-my-survey { ...@@ -3,7 +3,7 @@ page-my-survey {
border: none; border: none;
} }
.content-button{ .content-button{
border-top: 0.55px solid #c8c7cc; border-top: 1px solid #c8c7cc;
} }
.look{ .look{
background-color: #fcb164; background-color: #fcb164;
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
<ion-item> <ion-item>
<div class="info-item"> <div class="info-item">
<span class="info-span">头像</span> <span class="info-span">头像</span>
<img src="./assets/imgs/woman.png" *ngIf="gender == 0" class="img"> <img src="./assets/imgs/head.png" class="img">
<img src="./assets/imgs/man.png" *ngIf="gender == null || gender == '1'" class="img">
</div> </div>
</ion-item> </ion-item>
<ion-item> <ion-item>
......
...@@ -13,9 +13,7 @@ ...@@ -13,9 +13,7 @@
<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/woman.png" *ngIf="gender == 0" class="img"> <img src="./assets/imgs/head.png" class="img">
<img src="./assets/imgs/man.png" *ngIf="gender == null || gender == '1'" class="img">
<!-- <ion-icon name="ios-arrow-forward" class="icon-more"></ion-icon> -->
</div> </div>
</div> </div>
</ion-item> </ion-item>
......
...@@ -28,8 +28,7 @@ ...@@ -28,8 +28,7 @@
<ion-item *ngFor="let item of items"> <ion-item *ngFor="let item of items">
<div class="group"> <div class="group">
<div class="inner-group"> <div class="inner-group">
<img *ngIf="item.gender === 1" src="./assets/imgs/man.png" class="person-photo"> <img src="./assets/imgs/head.png" class="person-photo">
<img *ngIf="item.gender === 0" src="./assets/imgs/woman.png" class="person-photo">
<div class="item-box"> <div class="item-box">
<p class="person-name">{{item.name}} <p class="person-name">{{item.name}}
<ion-icon class="person-sex-male" *ngIf="item.gender === 1" name="male"></ion-icon> <ion-icon class="person-sex-male" *ngIf="item.gender === 1" name="male"></ion-icon>
......
...@@ -89,7 +89,7 @@ page-list { ...@@ -89,7 +89,7 @@ page-list {
text-align: center; text-align: center;
padding: 12px 0; padding: 12px 0;
background-color: #f8f8f8; background-color: #f8f8f8;
border-bottom: 1px solid #dadada; border-bottom: 1px solid #eeeeee;
box-shadow: 0px -2px 5px #bbb; box-shadow: 0px -2px 5px #bbb;
} }
.btn1{ .btn1{
......
<ion-header> <ion-header>
<ion-toolbar> <ion-toolbar>
<ion-title text-center>通讯录</ion-title> <ion-title text-center>通讯录</ion-title>
<img class="search" (click)="search()" src="./assets/imgs/search.png"/> <ion-buttons end>
<button ion-button (click)="search()" class="search">
<ion-icon ios="ios-search" md="md-search"></ion-icon>
</button>
</ion-buttons>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
......
...@@ -26,10 +26,9 @@ page-contact { ...@@ -26,10 +26,9 @@ page-contact {
top:-2px; top:-2px;
} }
.search{ .search{
width: 18px; color: #fff;
height: 18px; font-size: 2rem;
float: right; margin-right: 10px;
margin-right: 15px;
} }
.common{ .common{
...@@ -83,12 +82,12 @@ page-contact { ...@@ -83,12 +82,12 @@ page-contact {
} }
.item-border{ .item-border{
border-bottom: 1px solid #dadada; border-bottom: 1px solid #eeeeee;
padding-bottom: 10px; padding-bottom: 10px;
margin: 15px 0px 0px; margin: 15px 0px 0px;
padding-left: 15px; padding-left: 15px;
.contact-img{ .contact-img{
width: 3rem; width: 3.5rem;
margin-right: 1rem; margin-right: 1rem;
} }
} }
......
...@@ -4,7 +4,7 @@ import {Response} from '@angular/http'; ...@@ -4,7 +4,7 @@ import {Response} from '@angular/http';
import {Storage} from '@ionic/storage'; import {Storage} from '@ionic/storage';
import {AppService} from '../../../service/appHttpService'; import {AppService} from '../../../service/appHttpService';
import {SearchPage} from '../../search/search'; import {SearchPage} from '../../contact/search/search';
import {ContactListPage} from '../../contact/contactList/contactList'; import {ContactListPage} from '../../contact/contactList/contactList';
import {AddBlockPage} from "../../contact/add-block/add-block"; import {AddBlockPage} from "../../contact/add-block/add-block";
import {BlockListPage} from "../../contact/block-list/block-list"; import {BlockListPage} from "../../contact/block-list/block-list";
......
...@@ -7,13 +7,13 @@ ...@@ -7,13 +7,13 @@
<ion-slides #slides *ngIf="slidersItems.length>0" pager autoplay="2000" loop=true> <ion-slides #slides *ngIf="slidersItems.length>0" pager autoplay="2000" loop=true>
<ion-slide *ngFor="let item of slidersItems"> <ion-slide *ngFor="let item of slidersItems">
<div style="height:135px;width: 100%;position: relative"> <div style="height:160px;width: 100%;position: relative">
<img src="{{picture+item.pictureId}}" class="slide-image" (click)="go(item)"> <img src="{{picture+item.pictureId}}" class="slide-image" (click)="go(item)">
<p class="slides-title">{{item.title}}</p> <p class="slides-title">{{item.title}}</p>
</div> </div>
</ion-slide> </ion-slide>
</ion-slides> </ion-slides>
<div class="item2"> <div class="item2" style="padding: 0px;">
<div class="item2-2"> <div class="item2-2">
<div class="card" (click)="goActivity()"> <div class="card" (click)="goActivity()">
<img src="./assets/imgs/home/icon-bm.png" alt=""> <img src="./assets/imgs/home/icon-bm.png" alt="">
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="item3"> <div class="item3" style="padding-top: 0px;">
<div class="item3-2" (click)="gotoNotice()"> <div class="item3-2" (click)="gotoNotice()">
<div class="card3" style="width: 15%;"> <div class="card3" style="width: 15%;">
<span class="img-tips"></span> <span class="img-tips"></span>
......
page-home { page-home {
ion-slides{ ion-slides{
width: 100%; width: 100%;
height: 135px; height: 160px;
} }
.slide-image{ .slide-image{
width: 100%; width: 100%;
height: 135px; height: 160px;
} }
.swiper-container{ .swiper-container{
height: 135px; height: 160px;
width: 100%; width: 100%;
} }
...@@ -114,7 +114,7 @@ page-home { ...@@ -114,7 +114,7 @@ page-home {
box-sizing: border-box; box-sizing: border-box;
padding:3px; padding:3px;
position: relative; position: relative;
font-size: 1rem; font-size: 1.1rem;
} }
.img-tips{ .img-tips{
position: absolute; position: absolute;
......
...@@ -7,8 +7,7 @@ ...@@ -7,8 +7,7 @@
<div class="mine-header" (click)="personInfo()"> <div class="mine-header" (click)="personInfo()">
<div class="mine-header-box"> <div class="mine-header-box">
<div class="mine-header-left"> <div class="mine-header-left">
<img src="./assets/imgs/woman.png" *ngIf="gender == 0" class="head-photo"> <img src="./assets/imgs/head.png" class="head-photo">
<img src="./assets/imgs/man.png" *ngIf="gender == null || gender == '1'" class="head-photo">
</div> </div>
<div class="mine-header-right"> <div class="mine-header-right">
<h2 class="name">{{user?.userName}}</h2> <h2 class="name">{{user?.userName}}</h2>
......
...@@ -48,7 +48,7 @@ page-version { ...@@ -48,7 +48,7 @@ page-version {
margin-top: 20px; margin-top: 20px;
} }
.list-ios .item-block .item-inner { .list-ios .item-block .item-inner {
border-bottom: 0.55px solid #c8c7cc; border-bottom: 1px solid #c8c7cc;
} }
.red-span{ .red-span{
background-color: red; background-color: red;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment