|
|
@@ -3,47 +3,60 @@ |
|
|
|
<h2>Edit Profile</h2> |
|
|
|
<form @submit.prevent="handleSubmit"> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="name">Username</label> |
|
|
|
<input type="text" v-model="name" name="name" class="form-control" :class="{ 'is-invalid': submitted && !name }" /> |
|
|
|
<div v-show="submitted && !name" class="invalid-feedback">Name is required</div> |
|
|
|
<label for="name">{{messages.field_label_username}}</label> |
|
|
|
<input type="text" v-model="user.name" v-validate="'required'" name="name" class="form-control" :class="{ 'is-invalid': submitted && errors.has('name') }" /> |
|
|
|
<div v-if="submitted && errors.has('name')" class="invalid-feedback">{{ errors.first('name') }}</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label htmlFor="url">Url</label> |
|
|
|
<input type="text" v-model="url" name="url" class="form-control"/> |
|
|
|
<label htmlFor="url">{{messages.field_label_url}}</label> |
|
|
|
<input type="text" v-model="user.url" name="url" class="form-control"/> |
|
|
|
<div v-if="submitted && errors.has('url')" class="invalid-feedback">{{ errors.first('url') }}</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label htmlFor="description">Description</label> |
|
|
|
<input type="text" v-model="description" name="description" class="form-control"/> |
|
|
|
<label htmlFor="description">{{messages.field_label_bio}}</label> |
|
|
|
<input type="text" v-model="user.description" name="description" class="form-control"/> |
|
|
|
<div v-if="submitted && errors.has('description')" class="invalid-feedback">{{ errors.first('description') }}</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="admin">Admin</label> |
|
|
|
<input type="checkbox" id="admin" v-model="admin"> |
|
|
|
|
|
|
|
<div v-if="user.admin === true && currentUser.uuid !== user.uuid" class="form-group"> |
|
|
|
<label for="admin">{{messages.field_label_administrator}}</label> |
|
|
|
<input type="checkbox" id="admin" v-model="user.admin"> |
|
|
|
<div v-if="submitted && errors.has('admin')" class="invalid-feedback">{{ errors.first('admin') }}</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="suspended">Suspended</label> |
|
|
|
<input type="checkbox" id="suspended" v-model="suspended"> |
|
|
|
<div v-if="user.admin === true && currentUser.uuid === user.uuid" class="form-group"> |
|
|
|
<span>{{messages.field_label_administrator}}: {{messages['message_'+user.admin]}}</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-if="user.admin === true && currentUser.uuid !== user.uuid" class="form-group"> |
|
|
|
<label for="suspended">{{messages.field_label_suspended}}</label> |
|
|
|
<input type="checkbox" id="suspended" v-model="user.suspended"> |
|
|
|
<div v-if="submitted && errors.has('suspended')" class="invalid-feedback">{{ errors.first('suspended') }}</div> |
|
|
|
</div> |
|
|
|
<div v-if="user.admin === true && currentUser.uuid === user.uuid" class="form-group"> |
|
|
|
<span>{{messages.field_label_suspended}}: {{messages['message_'+user.suspended]}}</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div> |
|
|
|
<h3>Auto-Update Policy</h3> |
|
|
|
<h3>{{messages.field_label_auto_update_policy}}</h3> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="autoUpdatePolicy.driverUpdates">Drivers</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.driverUpdates" v-model="autoUpdatePolicy.driverUpdates"> |
|
|
|
<label for="autoUpdatePolicy.driverUpdates">{{messages.field_label_auto_update_drivers}}</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.driverUpdates" v-model="user.autoUpdatePolicy.driverUpdates"> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="autoUpdatePolicy.appUpdates">Apps</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.appUpdates" v-model="autoUpdatePolicy.appUpdates"> |
|
|
|
<label for="autoUpdatePolicy.appUpdates">{{messages.field_label_auto_update_apps}}</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.appUpdates" v-model="user.autoUpdatePolicy.appUpdates"> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="autoUpdatePolicy.dataUpdates">App Data</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.dataUpdates" v-model="autoUpdatePolicy.dataUpdates"> |
|
|
|
<label for="autoUpdatePolicy.dataUpdates">{{messages.field_label_auto_update_app_data}}</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.dataUpdates" v-model="user.autoUpdatePolicy.dataUpdates"> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<label for="autoUpdatePolicy.newStuff">New Drivers/Apps</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.newStuff" v-model="autoUpdatePolicy.newStuff"> |
|
|
|
<label for="autoUpdatePolicy.newStuff">{{messages.field_label_auto_update_new_drivers_and_apps}}</label> |
|
|
|
<input type="checkbox" id="autoUpdatePolicy.newStuff" v-model="user.autoUpdatePolicy.newStuff"> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="form-group"> |
|
|
|
<button class="btn btn-primary" :disabled="status.updating">Update</button> |
|
|
|
<button class="btn btn-primary" :disabled="status.updating">{{messages.button_label_update_profile}}</button> |
|
|
|
<img v-show="status.updating" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> |
|
|
|
</div> |
|
|
|
</form> |
|
|
@@ -53,41 +66,51 @@ |
|
|
|
<script> |
|
|
|
import { mapState, mapActions } from 'vuex' |
|
|
|
import { account } from '../_store/account.module' |
|
|
|
import { currentUser } from '../_helpers' |
|
|
|
|
|
|
|
export default { |
|
|
|
data () { |
|
|
|
if (this.$router.params && this.$router.params.uuid) { |
|
|
|
return { |
|
|
|
...this.loadUser($this.router.params.uuid), |
|
|
|
submitted: false |
|
|
|
} |
|
|
|
} |
|
|
|
return { |
|
|
|
...currentUser(), |
|
|
|
submitted: false |
|
|
|
submitted: false, |
|
|
|
user: { |
|
|
|
autoUpdatePolicy: {} |
|
|
|
} |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
...mapState('account', ['status']), |
|
|
|
...mapState('account', { |
|
|
|
currentUser: state => state.user, |
|
|
|
status: state => state.status |
|
|
|
}), |
|
|
|
...mapState('system', ['messages']) |
|
|
|
}, |
|
|
|
created () { |
|
|
|
this.user = this.currentUser; |
|
|
|
}, |
|
|
|
beforeRouteUpdate (to, from, next) { |
|
|
|
// react to route changes... |
|
|
|
console.log('this.router.params.uuid='+this.router.params.uuid); |
|
|
|
next(); |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
...mapActions('users', ['update', 'loadUser']), |
|
|
|
handleSubmit (e) { |
|
|
|
this.submitted = true; |
|
|
|
const updatedProfile = { |
|
|
|
uuid: this.uuid, |
|
|
|
name: this.name, |
|
|
|
url: this.url, |
|
|
|
description: this.description, |
|
|
|
admin: this.admin, |
|
|
|
suspended: this.suspended, |
|
|
|
autoUpdatePolicy: this.autoUpdatePolicy |
|
|
|
uuid: this.user.uuid, |
|
|
|
name: this.user.name, |
|
|
|
url: this.user.url, |
|
|
|
description: this.user.description, |
|
|
|
admin: this.user.admin, |
|
|
|
suspended: this.user.suspended, |
|
|
|
autoUpdatePolicy: this.user.autoUpdatePolicy |
|
|
|
}; |
|
|
|
if (this.name) { |
|
|
|
this.update(updatedProfile, this.messages, this.errors); |
|
|
|
} |
|
|
|
this.submitted = true; |
|
|
|
this.$validator.validate().then(valid => { |
|
|
|
if (valid) { |
|
|
|
this.update({user: updatedProfile, messages: this.messages, errors: this.errors}); |
|
|
|
} else { |
|
|
|
console.log('invalid!'); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |