Commit 72610769 authored by 罗超's avatar 罗超

2

parent 95d22c35
......@@ -119,6 +119,8 @@
provide
} from "vue";
import Explain from './explain.vue'
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = false;
export default {
components: {
Explain
......@@ -151,15 +153,18 @@
let data = reactive({
current: '', //用户选择
isShowExplain: false,
})
let methods = {
choice(x) {
data.current = x.Name;
if (data.current !== props.item.Answer) {
methods.play('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/audio/false.mp3')
setTimeout(() => {
data.isShowExplain = true
}, 800)
} else {
methods.play('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/audio/true.mp3')
setTimeout(() => {
emit('next',1)
}, 500)
......@@ -168,6 +173,10 @@
todo() {
emit('next')
data.isShowExplain = false
},
play(url) {
innerAudioContext.src =url
innerAudioContext.play()
}
}
onMounted(() => {
......
......@@ -99,6 +99,8 @@
import {ref,reactive,toRefs,toRef,getCurrentInstance,watch,computed,onMounted,provide} from "vue";
import mypone from './myp-one.vue'
import Explain from './explain.vue'
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = false;
export default {
components: {
mypone,
......@@ -146,11 +148,13 @@
}
if(data.test==props.item.Answer||props.item.Answer.indexOf(data.test)>-1){
data.type=1
methods.play('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/audio/true.mp3')
setTimeout(()=>{
emit('next',1)
},500)
}else{
data.type=2
methods.play('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/audio/false.mp3')
setTimeout(()=>{
data.isShowExplain=true
},500)
......@@ -162,6 +166,10 @@
todo(){
emit('next')
data.isShowExplain = false
},
play(url) {
innerAudioContext.src =url
innerAudioContext.play()
}
}
onMounted(()=>{
......
......@@ -63,7 +63,8 @@
<view class="wordDuration" style="visibility: hidden;">
预计用时10分钟
</view>
<view class="wordBtn"
<view class="wordBtn" v-if="(pageData.Words.NextWord==0||!pageData.Words.NextWord)&&(pageData.Words.ReviewWord==0||!pageData.Words.ReviewWord)"> 暂无新词</view>
<view class="wordBtn" v-else
@click="jumpPage(`/pages/word/word?CourseId=${pageData.Words.CourseId||0}&&ChapterId=${pageData.Words.NextCourseNo||0}&&ReviewChapterId=${pageData.Words.ReviewCourseNo||0}&&ClassId=${pageData.Words.ClassId||0}`)">
开始学习
</view>
......
<style scoped>
.studyindex{
.studyindex {
width: 100%;
height: 100vh;
background: #F5F5F5;
overflow-y: auto;
}
.row{
display: flex;align-items: center;
.row {
display: flex;
align-items: center;
}
::-webkit-scrollbar {display:none}
::-webkit-scrollbar {
display: none
}
.page-title {
font-size: 44rpx;
font-weight: bold;
color: #0f1b35;
}
.curriculum{
.curriculum {
width: 100%;
}
.box{
.box {
padding: 100rpx 0rpx 50rpx;
}
.box-top{
.box-top {
width: 100%;
}
.box_t{
.box_t {
padding: 18px;
}
.box_tb{
.box_tb {
height: 388rpx;
background: #FFFFFF;
border-radius: 12px;
padding: 15px;
}
.box_tb_c{
.box_tb_c {
width: 50%;
display: flex;
flex-direction: column;
align-items: center;
padding: 46rpx;
}
.box_tb_c span{
.box_tb_c span {
font-size: 12px;
color: #666666;
}
.box_tb_c text{
.box_tb_c text {
font-size: 22rpx;
color: #111111;
font-weight: bold;
}
.box_tb_b{
.box_tb_b {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 5px;
}
.box_tb_b .btn{
.box_tb_b .btn {
width: 130rpx;
height: 50rpx;
display: flex;
......@@ -68,7 +84,8 @@
color: #FFFFFF;
margin-top: 7px;
}
.box_review{
.box_review {
background: #EBEBEB;
padding: 36rpx;
margin-top: 10px;
......@@ -76,7 +93,8 @@
height: 660rpx;
}
.box_review_date_item{
.box_review_date_item {
width: calc((100vw - 67rpx)/7);
display: flex;
flex-direction: column;
......@@ -89,12 +107,14 @@
}
.box_review_date_item2{
.box_review_date_item2 {
background: #4C50E7;
color: #FFF;
font-weight: bold;
}
.box_review_sp{
.box_review_sp {
width: calc(100vw - 67rpx);
height: 420rpx;
border-radius: 12px;
......@@ -106,7 +126,8 @@
/* left: 18px; */
top: 248rpx;
}
.box_review_box{
.box_review_box {
background: #000000;
display: flex;
align-items: center;
......@@ -116,30 +137,38 @@
height: 100%;
border-radius: 12px;
}
.box_review_swiper{
.box_review_swiper {
width: calc(100vw - 36px - 10px);
height: 380rpx;
}
.myVideo{
.myVideo {
width: 100%;
height: 100%;
border-radius: 12px;
}
.examination{
.examination {
margin-top: 25px;
}
.examination-box{
.examination-box {
background: #FFF;
margin: 10px 0;
}
.examination-box-c{
.examination-box-c {
height: 180rpx;
background: #F9F9F9;
overflow-x:scroll;width:100%;white-space:nowrap;
overflow-x: scroll;
width: 100%;
white-space: nowrap;
}
.examination-boxb{
.examination-boxb {
width: 200rpx;
/* height: 100%; */
display: inline-block;
......@@ -147,7 +176,8 @@
box-sizing: border-box;
/* border-right: 1px solid #E2E2E2; */
}
.shuxian{
.shuxian {
width: 2rpx;
height: 100%;
display: inline-block;
......@@ -156,7 +186,8 @@
}
.shuxianbox{
.shuxianbox {
display: flex;
flex-direction: column;
align-items: center;
......@@ -165,7 +196,8 @@
color: #8F8F92;
height: 100%;
}
.examination-box-c-item{
.examination-box-c-item {
display: flex;
flex-direction: column;
align-items: center;
......@@ -174,24 +206,27 @@
color: #8F8F92;
height: 100%;
}
.examination-box-c-item .item_o{
.examination-box-c-item .item_o {
color: #A3A3A3;
}
.examination-box-c-item .item_t{
.examination-box-c-item .item_t {
color: #A3A3A3;
font-size: 19px;
font-weight: bold;
margin:8rpx 0;
margin: 8rpx 0;
}
.examination-box-btnbox{
.examination-box-btnbox {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.examination-btn{
.examination-btn {
width: 150rpx;
height: 60rpx;
border-radius: 30rpx;
......@@ -204,6 +239,7 @@
color: #FFF;
margin: 20px 0;
}
.status-blue {
color: #00acf9;
}
......@@ -219,14 +255,14 @@
.status-red {
color: #ff3816;
}
.reviewcenter{
.reviewcenter {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 100rpx;
}
</style>
<template>
<view class="studyindex">
......@@ -248,7 +284,7 @@
<view class="box_tb">
<view class="row" style="justify-content: space-between;">
<view class="row" style="color: #111111;font-size: 28rpx;font-weight: bold;">
<view >单词练习 </view>
<view>单词练习 </view>
<view style="margin-left: 5px;">{{InfoData.TotalScore}}</view>
</view>
<view style="font-size: 22rpx;color: #4C50E7;" @click="gourl()">所有单词</view>
......@@ -264,33 +300,43 @@
<view class="box_tb_c">
<span>需要复习</span>
<view class="row" style="align-items: flex-end;">
<text style="font-size: 78rpx;font-style: italic">{{InfoData.Words.ReviewWord}}</text>
<text
style="font-size: 78rpx;font-style: italic">{{InfoData.Words.ReviewWord}}</text>
<text style="margin-left: 5px;margin-bottom: 10px;"></text>
</view>
</view>
</view>
<view class="box_tb_b">
<view style="font-size: 22rpx;color: #999999;visibility: hidden;">预计用时10分钟</view>
<view class="btn" @click="jumpStudyPage()">立即学习</view>
<view class="btn"
v-if="(InfoData.Words.NextWord==0||!InfoData.Words.NextWord)&&(InfoData.Words.ReviewWord==0||!InfoData.Words.ReviewWord)">
暂无新词</view>
<view class="btn" @click="jumpStudyPage()" v-else>立即学习</view>
</view>
</view>
</view>
<view class="box_review" v-if='InfoData' :style="{height:InfoData.Review && InfoData.Review.length>0?'660rpx':'300rpx'}">
<view class="box_review" v-if='InfoData'
:style="{height:InfoData.Review && InfoData.Review.length>0?'660rpx':'300rpx'}">
<view class="row" style="justify-content: space-between;height: 50rpx;">
<view class="row" style="color: #111111;font-size: 28rpx;font-weight: bold;">
<view >课程回顾 </view>
<view>课程回顾 </view>
<view style="font-size: 20rpx;color: #999999;">(最近7天课程)</view>
</view>
<view style="font-size: 22rpx;color: #4C50E7;" @click="gourl()">所有课程</view>
</view>
<view class="reviewcenter" v-if='InfoData.Review && InfoData.Review.length==0'>
<view style="font-size: 26rpx;font-family: PingFang SC;font-weight: bold;color: #111111;">暂无课程</view>
<view style="font-size: 20rpx;font-family: PingFang SC;font-weight: 400;color: #888888;margin-top: 10px;">购买课程后可回顾</view>
<view style="font-size: 26rpx;font-family: PingFang SC;font-weight: bold;color: #111111;">暂无课程
</view>
<view
style="font-size: 20rpx;font-family: PingFang SC;font-weight: 400;color: #888888;margin-top: 10px;">
购买课程后可回顾</view>
</view>
<view class="box_review_date row" style="margin-top: 40rpx;" v-if='InfoData.Review && InfoData.Review.length>0'>
<view class="box_review_date row" style="margin-top: 40rpx;"
v-if='InfoData.Review && InfoData.Review.length>0'>
<view v-for="(x,y) in InfoData.Review" :key='y'>
<view :class="{'box_review_date_item2':current==y}" class="box_review_date_item" @click="goreview(x,y)">
<view :class="{'box_review_date_item2':current==y}" class="box_review_date_item"
@click="goreview(x,y)">
<text>{{getdate(x,1)}}</text>
<text style="font-size: 22rpx;margin-top: 5px;">{{getdate(x,2)}}</text>
</view>
......@@ -299,14 +345,16 @@
</view>
<view class="box_review_sp" v-if='InfoData.Review && InfoData.Review.length>0'>
<view class="box_review_box" v-if="loading">
<van-loading size="24px" vertical color="#FFF"text-color="#FFF">加载中...</van-loading>
<van-loading size="24px" vertical color="#FFF" text-color="#FFF">加载中...</van-loading>
</view>
<view class="box_review_box" v-if="!loading">
<view v-if="InfoData.Review[current].videolist.length==0">暂无回顾视频...</view>
<template v-if="InfoData.Review[current].videolist.length>0">
<swiper class="box_review_swiper" @change="swiperChange">
<swiper-item style="width: 100%;height: 100%;" v-for="(item, index) in InfoData.Review[current].videolist" :key="index">
<video class="myVideo" :id="'Video'+current+'-'+index" :src="item.URL" controls @error="spcuowu"></video>
<swiper-item style="width: 100%;height: 100%;"
v-for="(item, index) in InfoData.Review[current].videolist" :key="index">
<video class="myVideo" :id="'Video'+current+'-'+index" :src="item.URL" controls
@error="spcuowu"></video>
</swiper-item>
</swiper>
</template>
......@@ -324,7 +372,9 @@
<view style="font-size: 28rpx;color: #4C50E7;" @click="gourlkaoshilist()">更多考试</view>
</view>
</view>
<view class="reviewcenter" style="height: 300rpx;margin-top: 0;align-items: center;justify-content: center;" v-if="InfoData.ExamList.length==0">
<view class="reviewcenter"
style="height: 300rpx;margin-top: 0;align-items: center;justify-content: center;"
v-if="InfoData.ExamList.length==0">
<view style="font-size: 26rpx;
font-family: PingFang SC;
font-weight: bold;
......@@ -336,18 +386,19 @@
color: #999999;">参与考试后可查看</view>
</view>
<view v-if="InfoData.ExamList.length>0">
<view v-for="(x,y) in InfoData.ExamList" :key='y' >
<view v-for="(x,y) in InfoData.ExamList" :key='y'>
<view class="examination-box">
<view style="padding: 20px;">
<view style="font-size: 36rpx;font-weight: bold;color: #111111;">{{x.PaperName}}</view>
<view style="font-size: 36rpx;font-weight: bold;color: #111111;">{{x.PaperName}}
</view>
<view style="font-size: 24rpx;font-weight: 500;color: #999999;margin-top: 9px;">
测评次数:<text v-if="x.ExamStatus==1||x.ExamStatus==2||x.ExamStatus==4">0</text>
<text v-if="x.ExamStatus==3||x.ExamStatus==5">1</text>
</view>
</view>
<view >
<view>
<view class="examination-box-c">
<div class='examination-boxb' >
<div class='examination-boxb'>
<view class="examination-box-c-item">
<text class="item_o">我的排名</text>
<text class="item_t">#{{x.MyRank}}</text>
......@@ -357,13 +408,14 @@
</div>
<!-- 这个竖线不知道咋回事弄不出来 如果有好的方案麻烦改下 -->
<view class="shuxian">
<view class="examination-box-c-item" style="border-left: 1px solid #E2E2E2;">
<view class="examination-box-c-item"
style="border-left: 1px solid #E2E2E2;">
<text class="item_o"></text>
<text class="item_t" ></text>
<text class="item_t"></text>
<text class="" style="opacity: 0;height: 34rpx;">.</text>
</view>
</view>
<div class='examination-boxb' >
<div class='examination-boxb'>
<view class="examination-box-c-item">
<text class="item_o">我的得分</text>
<text class="item_t">{{x.TotalScore}}</text>
......@@ -371,14 +423,15 @@
</view>
</div>
<view class="shuxian">
<view class="examination-box-c-item" style="border-left: 1px solid #E2E2E2;">
<view class="examination-box-c-item"
style="border-left: 1px solid #E2E2E2;">
<text class="item_o"></text>
<text class="item_t" ></text>
<text class="item_t"></text>
<text class="" style="opacity: 0;height: 34rpx;">.</text>
</view>
</view>
<!-- ExamStatus 1未开始 2已开始 3已考试 4缺考 5已阅卷 -->
<div class='examination-boxb' >
<div class='examination-boxb'>
<view class="examination-box-c-item">
<text class="item_o">考试状态</text>
<text class="" style="opacity: 0;height: 34rpx;">.</text>
......@@ -392,13 +445,14 @@
</view>
</div>
<view class="shuxian">
<view class="examination-box-c-item" style="border-left: 1px solid #E2E2E2;">
<view class="examination-box-c-item"
style="border-left: 1px solid #E2E2E2;">
<text class="item_o"></text>
<text class="item_t" ></text>
<text class="item_t"></text>
<text class="" style="opacity: 0;height: 34rpx;">.</text>
</view>
</view>
<div class='examination-boxb' >
<div class='examination-boxb'>
<view class="examination-box-c-item">
<text class="item_o">我的耗时</text>
<text class="item_t">{{getTimems(x.ExamSecondTime) }}</text>
......@@ -406,13 +460,14 @@
</view>
</div>
<view class="shuxian">
<view class="examination-box-c-item" style="border-left: 1px solid #E2E2E2;">
<view class="examination-box-c-item"
style="border-left: 1px solid #E2E2E2;">
<text class="item_o"></text>
<text class="item_t" ></text>
<text class="item_t"></text>
<text class="" style="opacity: 0;height: 34rpx;">.</text>
</view>
</view>
<div class='examination-boxb' >
<div class='examination-boxb'>
<view class="examination-box-c-item">
<text class="item_o">最高得分</text>
<text class="item_t">{{x.MaxScore}}</text>
......@@ -440,7 +495,17 @@
import indexNo from './components/indexNo.vue'
import carousel from './components/vear-carousel/vear-carousel.vue'
import bottom from '../../components/bottom.vue'
import {ref,reactive,toRefs,toRef,getCurrentInstance,watch,computed,onMounted,provide,} from "vue";
import {
ref,
reactive,
toRefs,
toRef,
getCurrentInstance,
watch,
computed,
onMounted,
provide,
} from "vue";
export default {
components: {
indexNo,
......@@ -452,17 +517,17 @@
proxy
} = getCurrentInstance();
let data = reactive({
CourseList:[],//课程列表
CourseList: [], //课程列表
statusBarHeight: 0,
CourseInfoMsg:{
ClassId:0,
GuestId:0,
CourseId:0
CourseInfoMsg: {
ClassId: 0,
GuestId: 0,
CourseId: 0
},
InfoData:null,
current:0,
loading:false,//获取视频加载中
checkIndex:0
InfoData: null,
current: 0,
loading: false, //获取视频加载中
checkIndex: 0
})
let methods = {
getCourseList() {
......@@ -470,7 +535,7 @@
if (res.Code == 1) {
data.CourseList = res.Data
if(data.CourseList.length>0){
if (data.CourseList.length > 0) {
data.CourseInfoMsg.ClassId = data.CourseList[0].ClassId;
data.CourseInfoMsg.GuestId = data.CourseList[0].GuestId;
data.CourseInfoMsg.CourseId = data.CourseList[0].CourseId;
......@@ -480,13 +545,13 @@
})
},
getCourseInfo() {//详情
getCourseInfo() { //详情
proxy.$request("/AppletIndex/GetMyStudyCourseInfo", data.CourseInfoMsg).then(res => {
if (res.Code == 1) {
data.InfoData = res.Data
if(res.Data && res.Data.Review.length>0){
data.InfoData.Review.forEach(x=>{
if (res.Data && res.Data.Review.length > 0) {
data.InfoData.Review.forEach(x => {
x.videolist = []
})
that.getvideo()
......@@ -495,60 +560,64 @@
})
},
spcuowu(e){
console.log(e,'视频错误')
spcuowu(e) {
console.log(e, '视频错误')
},
selectedBanner(index){//切换轮播图的时候 调取接口
selectedBanner(index) { //切换轮播图的时候 调取接口
data.checkIndex = index;
data.CourseInfoMsg.ClassId = data.CourseList[index].ClassId;
that.getCourseInfo()
},
goreview(x,y){//回顾选择
that.swiperChange()//让当前页面的视频暂停
goreview(x, y) { //回顾选择
that.swiperChange() //让当前页面的视频暂停
data.current = y;
that.getvideo()
},
getvideo(){
if(data.InfoData.Review[data.current].videolist.length==0){
getvideo() {
if (data.InfoData.Review[data.current].videolist.length == 0) {
let datalist = data.InfoData.Review[data.current].List
if(datalist.length>0){
if (datalist.length > 0) {
data.loading = true
datalist.forEach((x,y)=>{
that.getvideoId(x,y)
datalist.forEach((x, y) => {
that.getvideoId(x, y)
})
}
}
},
getvideoId(x,y) {//获取视频id
getvideoId(x, y) { //获取视频id
if(x.VideoUrl){//判断是否有视频id
proxy.$request("/Video/GetVideoPlayAuth", {strVid:x.VideoUrl}).then(res => {
if (x.VideoUrl) { //判断是否有视频id
proxy.$request("/Video/GetVideoPlayAuth", {
strVid: x.VideoUrl
}).then(res => {
if (res.Code == 1) {
that.getvideourl(res.Data,y)
that.getvideourl(res.Data, y)
}
})
}else{
} else {
data.loading = false
}
},
async getvideourl(x,y) {//获取视频地址
async getvideourl(x, y) { //获取视频地址
proxy.$request("/Video/GetPlayInfo", {strVid:x.VideoMeta.VideoId}).then(res => {
if (res.Code == 1) {//地址赋值
proxy.$request("/Video/GetPlayInfo", {
strVid: x.VideoMeta.VideoId
}).then(res => {
if (res.Code == 1) { //地址赋值
data.InfoData.Review[data.current].videolist.push(res.Data)
if(y+1 == data.InfoData.Review[data.current].List.length){
if (y + 1 == data.InfoData.Review[data.current].List.length) {
data.loading = false
}
}
})
},
swiperChange(){//当前选择视频全部暂停
swiperChange() { //当前选择视频全部暂停
let trailer = data.InfoData.Review[data.current].videolist // 获取视频列表
if(trailer.length>0){
if (trailer.length > 0) {
trailer.forEach((item, index) => {
if(item.URL != null && item.URL != ''){
let temp = 'Video'+data.current+'-'+index;
if (item.URL != null && item.URL != '') {
let temp = 'Video' + data.current + '-' + index;
// 暂停其他视频
uni.createVideoContext(temp, this).pause()
}
......@@ -556,19 +625,20 @@
}
},
gourl(){//学习列表
gourl() { //学习列表
let ClassId = data.CourseList[data.checkIndex].ClassId;
let CourseId = data.CourseList[data.checkIndex].CourseId;
let CourseName = data.CourseList[data.checkIndex].CourseName;
let TotalHours = data.CourseList[data.checkIndex].TotalHours;
uni.navigateTo({
url:'/pages/study/courseList?ClassId='+ClassId+'&CourseId='+CourseId+'&CourseName='+CourseName+'&TotalHours='+TotalHours
url: '/pages/study/courseList?ClassId=' + ClassId + '&CourseId=' + CourseId +
'&CourseName=' + CourseName + '&TotalHours=' + TotalHours
})
},
gourlkaoshilist(){
gourlkaoshilist() {
let indexData = uni.getStorageSync("indexData")
uni.navigateTo({
url:`/pages/exam/examPaperList?Id=${indexData.GuestId}`
url: `/pages/exam/examPaperList?Id=${indexData.GuestId}`
})
},
jumpPage(url) {
......@@ -576,13 +646,14 @@
url: url,
});
},
jumpStudyPage(){
let url = `/pages/word/word?CourseId=${data.InfoData.Words.CourseId}&&ChapterId=${data.InfoData.Words.NextCourseNo}&&ReviewChapterId=${data.InfoData.Words.ReviewCourseNo}&&ClassId=${data.InfoData.Words.ClassId}`
jumpStudyPage() {
let url =
`/pages/word/word?CourseId=${data.InfoData.Words.CourseId}&&ChapterId=${data.InfoData.Words.NextCourseNo}&&ReviewChapterId=${data.InfoData.Words.ReviewCourseNo}&&ClassId=${data.InfoData.Words.ClassId}`
uni.navigateTo({
url: url
});
},
gourlkaoshixq(item){
gourlkaoshixq(item) {
let indexData = uni.getStorageSync("indexData")
//ExamStatus 1未开始 2已开始 3已考试 4缺考 5已阅卷
if (item.ExamStatus == 5) {
......@@ -595,28 +666,29 @@
);
}
},
getdate(x,type){//获取月和天
let day = '',month='';
if(type==1){
getdate(x, type) { //获取月和天
let day = '',
month = '';
if (type == 1) {
day = x.ClassDate.split('-')[2]
return day
}else{
} else {
month = x.ClassDate.split('-')[1]
month = Number(month)+'月'
month = Number(month) + '月'
return month
}
},
getTimems(data){//获取分秒
getTimems(data) { //获取分秒
let time = Number(data)
if(time>0){
if (time > 0) {
let second = Math.floor(time % 60); // 秒
let minute = Math.floor(time % 3600 / 60); // 分
let hour = Math.floor(time / 3600); // 时
let str = '';
if (minute > 0 || hour > 0) {
if (hour > 0) {
str = hour*60+minute + '′';
}else{
str = hour * 60 + minute + '′';
} else {
str = minute + '′';
}
}
......@@ -624,13 +696,13 @@
str = str + second + '″';
}
return str
}else{
} else {
return '0″'
}
}
}
onMounted(()=>{
onMounted(() => {
data.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
})
let that = methods;
......@@ -640,12 +712,9 @@
};
},
onShow() {
if(this.$isLogin()){
this.getCourseList()//我的课程列表
if (this.$isLogin()) {
this.getCourseList() //我的课程列表
}
},
}
</script>
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