mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
fix user edit; add edit user link to profile page for admins; fix user name link
This commit is contained in:
parent
ef49a81b3e
commit
4c3b752748
6 changed files with 28 additions and 11 deletions
|
@ -3,13 +3,14 @@ import { DocumentContainer } from "meteor/utilities:react-list-container";
|
|||
import Users from 'meteor/nova:users';
|
||||
|
||||
const UsersAccount = (props, context) => {
|
||||
const params = props.params.slug ? props.params : {_id: context.currentUser._id};
|
||||
const terms = props.params.slug ? {"telescope.slug": props.params.slug} : {_id: context.currentUser._id};
|
||||
return (
|
||||
<DocumentContainer
|
||||
collection={Users}
|
||||
publication="users.single"
|
||||
selector={params}
|
||||
terms={params}
|
||||
selector={terms}
|
||||
terms={terms}
|
||||
documentPropName="user"
|
||||
component={Telescope.components.UsersEdit}
|
||||
/>
|
||||
)
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
import React, { PropTypes, Component } from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { FormattedMessage, intlShape } from 'react-intl';
|
||||
import { Row, Col } from 'react-bootstrap';
|
||||
import NovaForm from "meteor/nova:forms";
|
||||
//import { Messages } from "meteor/nova:core";
|
||||
import Users from 'meteor/nova:users';
|
||||
|
||||
const UsersEdit = ({document, currentUser}, context) => {
|
||||
const UsersEdit = (props, context) => {
|
||||
|
||||
const user = props.user;
|
||||
const currentUser = props.currentUser;
|
||||
|
||||
const user = document;
|
||||
//const label = `Edit profile for ${Users.getDisplayName(user)}`;
|
||||
|
||||
return (
|
||||
|
@ -20,7 +22,7 @@ const UsersEdit = ({document, currentUser}, context) => {
|
|||
document={user}
|
||||
methodName="users.edit"
|
||||
successCallback={(user)=>{
|
||||
context.messages.flash("User updated.", "success");
|
||||
context.messages.flash(this.context.intl.formatMessage({id: "users.edit_success"}, {name: Users.getUsername(user)}), 'success')
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
@ -30,12 +32,13 @@ const UsersEdit = ({document, currentUser}, context) => {
|
|||
|
||||
|
||||
UsersEdit.propTypes = {
|
||||
document: React.PropTypes.object.isRequired,
|
||||
user: React.PropTypes.object.isRequired,
|
||||
currentUser: React.PropTypes.object.isRequired
|
||||
};
|
||||
|
||||
UsersEdit.contextTypes = {
|
||||
messages: React.PropTypes.object
|
||||
messages: React.PropTypes.object,
|
||||
intl: intlShape
|
||||
};
|
||||
|
||||
UsersEdit.displayName = "UsersEdit";
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import React, { PropTypes, Component } from 'react';
|
||||
import Users from 'meteor/nova:users';
|
||||
import { Link } from 'react-router';
|
||||
|
||||
const UsersName = ({user}) => <a className="users-name" href={Users.getProfileUrl(user)}>{Users.getDisplayName(user)}</a>
|
||||
const UsersName = ({user}) => <Link className="users-name" to={Users.getProfileUrl(user)}>{Users.getDisplayName(user)}</Link>
|
||||
|
||||
UsersName.propTypes = {
|
||||
user: React.PropTypes.object.isRequired,
|
||||
|
|
|
@ -3,6 +3,7 @@ import { FormattedMessage } from 'react-intl';
|
|||
import { ListContainer } from "meteor/utilities:react-list-container";
|
||||
import Posts from "meteor/nova:posts";
|
||||
import Users from 'meteor/nova:users';
|
||||
import { Link } from 'react-router';
|
||||
|
||||
const UsersProfile = ({user, currentUser}) => {
|
||||
|
||||
|
@ -19,6 +20,7 @@ const UsersProfile = ({user, currentUser}) => {
|
|||
<ul>
|
||||
{twitterName ? <li><a href={"http://twitter.com/" + twitterName}>@{twitterName}</a></li> : null }
|
||||
{user.telescope.website ? <li><a href={user.telescope.website}>{user.telescope.website}</a></li> : null }
|
||||
{Users.is.admin(currentUser) ? <li><Link to={Users.getEditUrl(user)}><FormattedMessage id="users.edit_account"/></Link></li> : null}
|
||||
</ul>
|
||||
<h3><FormattedMessage id="users.posts"/></h3>
|
||||
<ListContainer
|
||||
|
|
|
@ -81,6 +81,7 @@ class Tags extends Component {
|
|||
suggestions={this.state.suggestions}
|
||||
handleDelete={this.handleDelete}
|
||||
handleAddition={this.handleAddition}
|
||||
minQueryLength={1}
|
||||
classNames={{
|
||||
// tags: 'tagsClass',
|
||||
// tagInput: 'form-control'
|
||||
|
|
|
@ -75,6 +75,16 @@ Users.getProfileUrl = function (user, isAbsolute) {
|
|||
};
|
||||
Users.helpers({getProfileUrl: function (isAbsolute) {return Users.getProfileUrl(this, isAbsolute);}});
|
||||
|
||||
/**
|
||||
* @summary Get a user's account edit URL
|
||||
* @param {Object} user (note: we only actually need either the _id or slug properties)
|
||||
* @param {Boolean} isAbsolute
|
||||
*/
|
||||
Users.getEditUrl = function (user, isAbsolute) {
|
||||
return `${Users.getProfileUrl(user, isAbsolute)}/edit`;
|
||||
};
|
||||
Users.helpers({getEditUrl: function (isAbsolute) {return Users.getEditUrl(this, isAbsolute);}});
|
||||
|
||||
/**
|
||||
* @summary Get a user's Twitter name
|
||||
* @param {Object} user
|
||||
|
@ -157,7 +167,6 @@ Users.userProfileCompleteById = function (userId) {return Users.userProfileCompl
|
|||
Users.getSetting = function (user, settingName, defaultValue) {
|
||||
user = user || Meteor.user();
|
||||
defaultValue = defaultValue || null;
|
||||
|
||||
// all settings should be in the user.telescope namespace, so add "telescope." if needed
|
||||
settingName = settingName.slice(0,10) === "telescope." ? settingName : "telescope." + settingName;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue