- {group.name}
+ {getLocalizedName(group, locale)}
|
@@ -161,7 +163,8 @@ SisIntegrationContainer.propTypes = {
currentUserId: PropTypes.string,
loadData: PropTypes.func.isRequired,
sisGroups: PropTypes.func.isRequired,
- links: PropTypes.object
+ links: PropTypes.object,
+ intl: PropTypes.shape({ locale: PropTypes.string.isRequired }).isRequired
};
export default withLinks(
@@ -179,5 +182,5 @@ export default withLinks(
loadData: loggedInUserId =>
SisIntegrationContainer.loadData(dispatch, loggedInUserId)
})
- )(SisIntegrationContainer)
+ )(injectIntl(SisIntegrationContainer))
);
diff --git a/src/containers/SisSupervisorGroupsContainer/SisSupervisorGroupsContainer.js b/src/containers/SisSupervisorGroupsContainer/SisSupervisorGroupsContainer.js
index 620930f2d..219bf26b7 100644
--- a/src/containers/SisSupervisorGroupsContainer/SisSupervisorGroupsContainer.js
+++ b/src/containers/SisSupervisorGroupsContainer/SisSupervisorGroupsContainer.js
@@ -22,6 +22,7 @@ import { loggedInUserIdSelector } from '../../redux/selectors/auth';
import ResourceRenderer from '../../components/helpers/ResourceRenderer';
import SisCreateGroupForm from '../../components/forms/SisCreateGroupForm';
import SisBindGroupForm from '../../components/forms/SisBindGroupForm';
+import { getLocalizedName } from '../../helpers/getLocalizedData';
import withLinks from '../../hoc/withLinks';
import './SisSupervisorGroupsContainer.css';
@@ -189,7 +190,10 @@ class SisSupervisorGroupsContainer extends Component {
{course.groups.map((group, i) =>
- {group.name}
+ {getLocalizedName(
+ group,
+ locale
+ )}
|
diff --git a/src/pages/Assignment/Assignment.js b/src/pages/Assignment/Assignment.js
index d588ca906..d25c00f06 100644
--- a/src/pages/Assignment/Assignment.js
+++ b/src/pages/Assignment/Assignment.js
@@ -35,7 +35,7 @@ import { runtimeEnvironmentSelector } from '../../redux/selectors/runtimeEnviron
import Page from '../../components/layout/Page';
import ResourceRenderer from '../../components/helpers/ResourceRenderer';
-import LocalizedExerciseName from '../../components/helpers/LocalizedExerciseName';
+import { LocalizedExerciseName } from '../../components/helpers/LocalizedNames';
import UsersNameContainer from '../../containers/UsersNameContainer';
import { ResubmitAllSolutionsContainer } from '../../containers/ResubmitSolutionContainer';
import HierarchyLineContainer from '../../containers/HierarchyLineContainer';
diff --git a/src/pages/Dashboard/Dashboard.js b/src/pages/Dashboard/Dashboard.js
index 56e719d2e..167113ca7 100644
--- a/src/pages/Dashboard/Dashboard.js
+++ b/src/pages/Dashboard/Dashboard.js
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
-import { FormattedMessage } from 'react-intl';
+import { FormattedMessage, injectIntl } from 'react-intl';
import { Row, Col } from 'react-bootstrap';
import Button from '../../components/widgets/FlatButton';
import { Link } from 'react-router';
@@ -16,6 +16,7 @@ import UsersNameContainer from '../../containers/UsersNameContainer';
import StudentsListContainer from '../../containers/StudentsListContainer';
import AssignmentsTable from '../../components/Assignments/Assignment/AssignmentsTable';
import UsersStats from '../../components/Users/UsersStats';
+import GroupsName from '../../components/Groups/GroupsName';
import { fetchAssignmentsForGroup } from '../../redux/modules/assignments';
import { fetchUserIfNeeded } from '../../redux/modules/users';
import {
@@ -46,6 +47,7 @@ import { getJsData } from '../../redux/helpers/resourceManager';
import SisIntegrationContainer from '../../containers/SisIntegrationContainer';
import SisSupervisorGroupsContainer from '../../containers/SisSupervisorGroupsContainer';
+import { getLocalizedName } from '../../helpers/getLocalizedData';
import withLinks from '../../hoc/withLinks';
class Dashboard extends Component {
@@ -106,7 +108,8 @@ class Dashboard extends Component {
usersStatistics,
allGroups,
isAdmin,
- links: { GROUP_URI_FACTORY }
+ links: { GROUP_URI_FACTORY },
+ intl: { locale }
} = this.props;
return (
@@ -206,7 +209,9 @@ class Dashboard extends Component {
loading={
-
+
}
@@ -224,7 +229,7 @@ class Dashboard extends Component {
}
collapsable
noPadding
isOpen
@@ -287,7 +292,7 @@ class Dashboard extends Component {
>
{statistics =>
}
collapsable
noPadding
isOpen
@@ -339,7 +344,8 @@ Dashboard.propTypes = {
usersStatistics: PropTypes.func.isRequired,
allGroups: PropTypes.array,
isAdmin: PropTypes.bool,
- links: PropTypes.object
+ links: PropTypes.object,
+ intl: PropTypes.shape({ locale: PropTypes.string.isRequired }).isRequired
};
export default withLinks(
@@ -370,5 +376,5 @@ export default withLinks(
loadAsync: loggedInUserId =>
Dashboard.loadAsync(params, dispatch, loggedInUserId)
})
- )(Dashboard)
+ )(injectIntl(Dashboard))
);
diff --git a/src/pages/EditExercise/EditExercise.js b/src/pages/EditExercise/EditExercise.js
index 16381e4fc..8e54ddd5d 100644
--- a/src/pages/EditExercise/EditExercise.js
+++ b/src/pages/EditExercise/EditExercise.js
@@ -12,7 +12,7 @@ import Box from '../../components/widgets/Box';
import EditExerciseForm from '../../components/forms/EditExerciseForm';
import AdditionalExerciseFilesTableContainer from '../../containers/AdditionalExerciseFilesTableContainer';
import DeleteExerciseButtonContainer from '../../containers/DeleteExerciseButtonContainer';
-import LocalizedExerciseName from '../../components/helpers/LocalizedExerciseName';
+import { LocalizedExerciseName } from '../../components/helpers/LocalizedNames';
import {
fetchExerciseIfNeeded,
diff --git a/src/pages/EditExerciseConfig/EditExerciseConfig.js b/src/pages/EditExerciseConfig/EditExerciseConfig.js
index 4eaaecc5f..ae2514f1d 100644
--- a/src/pages/EditExerciseConfig/EditExerciseConfig.js
+++ b/src/pages/EditExerciseConfig/EditExerciseConfig.js
@@ -9,7 +9,7 @@ import { getFormValues } from 'redux-form';
import Page from '../../components/layout/Page';
import Box from '../../components/widgets/Box';
import ResourceRenderer from '../../components/helpers/ResourceRenderer';
-import LocalizedExerciseName from '../../components/helpers/LocalizedExerciseName';
+import { LocalizedExerciseName } from '../../components/helpers/LocalizedNames';
import EditExerciseConfigForm from '../../components/forms/EditExerciseConfigForm/EditExerciseConfigForm';
import EditEnvironmentConfigForm from '../../components/forms/EditEnvironmentConfigForm';
diff --git a/src/pages/EditGroup/EditGroup.js b/src/pages/EditGroup/EditGroup.js
index 19a5f7751..d8e71c7a8 100644
--- a/src/pages/EditGroup/EditGroup.js
+++ b/src/pages/EditGroup/EditGroup.js
@@ -5,13 +5,13 @@ import { FormattedMessage } from 'react-intl';
import { HelpBlock } from 'react-bootstrap';
import { connect } from 'react-redux';
import { push } from 'react-router-redux';
-import { reset } from 'redux-form';
+import { reset, getFormValues } from 'redux-form';
import Page from '../../components/layout/Page';
import EditGroupForm from '../../components/forms/EditGroupForm';
-import DeleteGroupButtonContainer
- from '../../containers/DeleteGroupButtonContainer';
+import DeleteGroupButtonContainer from '../../containers/DeleteGroupButtonContainer';
import Box from '../../components/widgets/Box';
+import { LocalizedGroupName } from '../../components/helpers/LocalizedNames';
import { fetchGroupIfNeeded, editGroup } from '../../redux/modules/groups';
import { groupSelector } from '../../redux/selectors/groups';
@@ -40,13 +40,14 @@ class EditGroup extends Component {
group,
links: { GROUP_URI_FACTORY },
editGroup,
+ formValues,
push
} = this.props;
return (
group.name}
+ title={group => }
description={
- {group => (
+ {group =>
0)
+ (group.childGroups && group.childGroups.length > 0)
}
onDeleted={() =>
push(GROUP_URI_FACTORY(group.parentGroupId))}
@@ -114,8 +116,7 @@ class EditGroup extends Component {
-
- )}
+ }
);
}
@@ -130,7 +131,8 @@ EditGroup.propTypes = {
}).isRequired,
group: ImmutablePropTypes.map,
editGroup: PropTypes.func.isRequired,
- push: PropTypes.func.isRequired
+ push: PropTypes.func.isRequired,
+ formValues: PropTypes.object
};
export default withLinks(
@@ -141,7 +143,8 @@ export default withLinks(
return {
group: selectGroup(state),
userId,
- isStudentOf: groupId => isSupervisorOf(userId, groupId)(state)
+ isStudentOf: groupId => isSupervisorOf(userId, groupId)(state),
+ formValues: getFormValues('editGroup')(state)
};
},
(dispatch, { params: { groupId } }) => ({
diff --git a/src/pages/Exercise/Exercise.js b/src/pages/Exercise/Exercise.js
index e93a7a573..ebc1b32dd 100644
--- a/src/pages/Exercise/Exercise.js
+++ b/src/pages/Exercise/Exercise.js
@@ -17,7 +17,7 @@ import Page from '../../components/layout/Page';
import ExerciseDetail from '../../components/Exercises/ExerciseDetail';
import LocalizedTexts from '../../components/helpers/LocalizedTexts';
import ResourceRenderer from '../../components/helpers/ResourceRenderer';
-import LocalizedExerciseName from '../../components/helpers/LocalizedExerciseName';
+import { LocalizedExerciseName } from '../../components/helpers/LocalizedNames';
import GroupsList from '../../components/Groups/GroupsList';
import ReferenceSolutionsList from '../../components/Exercises/ReferenceSolutionsList';
import SubmitSolutionContainer from '../../containers/SubmitSolutionContainer';
diff --git a/src/pages/Group/Group.js b/src/pages/Group/Group.js
index 25da87fda..94f671b29 100644
--- a/src/pages/Group/Group.js
+++ b/src/pages/Group/Group.js
@@ -5,7 +5,7 @@ import { connect } from 'react-redux';
import { push } from 'react-router-redux';
import { LinkContainer } from 'react-router-bootstrap';
import Button from '../../components/widgets/FlatButton';
-import { FormattedMessage } from 'react-intl';
+import { FormattedMessage, injectIntl } from 'react-intl';
import { List, Map } from 'immutable';
import Page from '../../components/layout/Page';
@@ -19,6 +19,7 @@ import SupervisorsView from '../../components/Groups/SupervisorsView';
import StudentsView from '../../components/Groups/StudentsView';
import HierarchyLine from '../../components/Groups/HierarchyLine';
import { EditIcon } from '../../components/icons';
+import { LocalizedGroupName } from '../../components/helpers/LocalizedNames';
import { isReady, getJsData } from '../../redux/helpers/resourceManager';
import {
@@ -61,6 +62,7 @@ import { getStatuses } from '../../redux/selectors/stats';
import { fetchInstanceIfNeeded } from '../../redux/modules/instances';
import { instanceSelector } from '../../redux/selectors/instances';
+import { getLocalizedName } from '../../helpers/getLocalizedData';
import withLinks from '../../hoc/withLinks';
class Group extends Component {
@@ -123,7 +125,7 @@ class Group extends Component {
}
getBreadcrumbs = () => {
- const { group, instance } = this.props;
+ const { group, instance, intl: { locale } } = this.props;
const breadcrumbs = [
{
resource: instance,
@@ -138,7 +140,7 @@ class Group extends Component {
resource: group,
iconName: 'group',
breadcrumb: data => ({
- text: data.name
+ text: getLocalizedName(data, locale)
})
}
];
@@ -188,7 +190,7 @@ class Group extends Component {
return (
group.name}
+ title={group => }
description={
({
push: url => dispatch(push(url))
});
-export default withLinks(connect(mapStateToProps, mapDispatchToProps)(Group));
+export default withLinks(
+ connect(mapStateToProps, mapDispatchToProps)(injectIntl(Group))
+);
diff --git a/src/pages/Instance/Instance.js b/src/pages/Instance/Instance.js
index 767f94223..d1a888f02 100644
--- a/src/pages/Instance/Instance.js
+++ b/src/pages/Instance/Instance.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
+import { getFormValues } from 'redux-form';
import { FormattedMessage } from 'react-intl';
import { Row, Col } from 'react-bootstrap';
import Button from '../../components/widgets/FlatButton';
@@ -11,7 +12,7 @@ import Page from '../../components/layout/Page';
import InstanceDetail from '../../components/Instances/InstanceDetail';
import LicencesTableContainer from '../../containers/LicencesTableContainer';
import AddLicenceFormContainer from '../../containers/AddLicenceFormContainer';
-import CreateGroupForm from '../../components/forms/CreateGroupForm';
+import EditGroupForm from '../../components/forms/EditGroupForm';
import { EditIcon } from '../../components/icons';
import { fetchInstanceIfNeeded } from '../../redux/modules/instances';
@@ -52,6 +53,7 @@ class Instance extends Component {
createGroup,
isAdmin,
isSuperAdmin,
+ formValues,
links: { ADMIN_EDIT_INSTANCE_URI_FACTORY }
} = this.props;
@@ -106,9 +108,14 @@ class Instance extends Component {
{(isSuperAdmin || isAdmin) &&
-
@@ -133,7 +140,8 @@ Instance.propTypes = {
createGroup: PropTypes.func.isRequired,
isAdmin: PropTypes.bool.isRequired,
isSuperAdmin: PropTypes.bool.isRequired,
- links: PropTypes.object.isRequired
+ links: PropTypes.object.isRequired,
+ formValues: PropTypes.object
};
export default withLinks(
@@ -144,7 +152,8 @@ export default withLinks(
instance: instanceSelector(state, instanceId),
groups: publicGroupsSelectors(state),
isAdmin: isAdminOfInstance(userId, instanceId)(state),
- isSuperAdmin: isSuperAdmin(userId)(state)
+ isSuperAdmin: isSuperAdmin(userId)(state),
+ formValues: getFormValues('editGroup')(state)
};
},
(dispatch, { params: { instanceId } }) => ({
diff --git a/src/pages/Submission/Submission.js b/src/pages/Submission/Submission.js
index 2b0e0309a..0ff6a4b71 100644
--- a/src/pages/Submission/Submission.js
+++ b/src/pages/Submission/Submission.js
@@ -5,7 +5,7 @@ import { FormattedMessage } from 'react-intl';
import Page from '../../components/layout/Page';
import ResourceRenderer from '../../components/helpers/ResourceRenderer';
-import LocalizedExerciseName from '../../components/helpers/LocalizedExerciseName';
+import { LocalizedExerciseName } from '../../components/helpers/LocalizedNames';
import SubmissionDetail, {
FailedSubmissionDetail
} from '../../components/Submissions/SubmissionDetail';
diff --git a/src/pages/User/User.js b/src/pages/User/User.js
index 4b458b9d2..a691a169d 100644
--- a/src/pages/User/User.js
+++ b/src/pages/User/User.js
@@ -16,6 +16,7 @@ import ResourceRenderer from '../../components/helpers/ResourceRenderer';
import UsersNameContainer from '../../containers/UsersNameContainer';
import AssignmentsTable from '../../components/Assignments/Assignment/AssignmentsTable';
import UsersStats from '../../components/Users/UsersStats';
+import GroupsName from '../../components/Groups/GroupsName';
import { fetchAssignmentsForGroup } from '../../redux/modules/assignments';
import { fetchUserIfNeeded } from '../../redux/modules/users';
import { fetchProfileIfNeeded } from '../../redux/modules/publicProfiles';
@@ -144,7 +145,9 @@ class User extends Component {
loading={
-
+ }
+ />
}
@@ -162,7 +165,7 @@ class User extends Component {
}
collapsable
noPadding
isOpen
| |