diff --git a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableHeaderRow.js b/src/components/Exercises/FilesTable/AttachmentFilesTableHeaderRow.js
similarity index 61%
rename from src/components/Exercises/AttachedFilesTable/AdditionalFilesTableHeaderRow.js
rename to src/components/Exercises/FilesTable/AttachmentFilesTableHeaderRow.js
index ddec80849..b26e1583a 100644
--- a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableHeaderRow.js
+++ b/src/components/Exercises/FilesTable/AttachmentFilesTableHeaderRow.js
@@ -1,33 +1,33 @@
import React from 'react';
import { FormattedMessage } from 'react-intl';
-const AdditionalFilesTableHeaderRow = () =>
+const AttachmentFilesTableHeaderRow = () =>
|
|
|
|
|
;
-export default AdditionalFilesTableHeaderRow;
+export default AttachmentFilesTableHeaderRow;
diff --git a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableRow.js b/src/components/Exercises/FilesTable/AttachmentFilesTableRow.js
similarity index 87%
rename from src/components/Exercises/AttachedFilesTable/AdditionalFilesTableRow.js
rename to src/components/Exercises/FilesTable/AttachmentFilesTableRow.js
index c21e5632b..38771bc44 100644
--- a/src/components/Exercises/AttachedFilesTable/AdditionalFilesTableRow.js
+++ b/src/components/Exercises/FilesTable/AttachmentFilesTableRow.js
@@ -7,7 +7,7 @@ import { Button } from 'react-bootstrap';
import Confirm from '../../../components/forms/Confirm';
import { DeleteIcon } from '../../../components/icons';
-const AdditionalFilesTableRow = ({
+const AttachmentFilesTableRow = ({
id,
name,
size,
@@ -39,7 +39,7 @@ const AdditionalFilesTableRow = ({
onConfirmed={() => removeFile(id)}
question={
}
@@ -48,7 +48,7 @@ const AdditionalFilesTableRow = ({
@@ -56,7 +56,7 @@ const AdditionalFilesTableRow = ({
;
-AdditionalFilesTableRow.propTypes = {
+AttachmentFilesTableRow.propTypes = {
id: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
size: PropTypes.number.isRequired,
@@ -65,4 +65,4 @@ AdditionalFilesTableRow.propTypes = {
removeFile: PropTypes.func
};
-export default withLinks(AdditionalFilesTableRow);
+export default withLinks(AttachmentFilesTableRow);
diff --git a/src/components/Exercises/AttachedFilesTable/AttachedFilesTable.js b/src/components/Exercises/FilesTable/FilesTable.js
similarity index 92%
rename from src/components/Exercises/AttachedFilesTable/AttachedFilesTable.js
rename to src/components/Exercises/FilesTable/FilesTable.js
index 9f8a362a1..404ca3cbf 100644
--- a/src/components/Exercises/AttachedFilesTable/AttachedFilesTable.js
+++ b/src/components/Exercises/FilesTable/FilesTable.js
@@ -12,10 +12,10 @@ import { SendIcon } from '../../icons';
import UploadContainer from '../../../containers/UploadContainer';
import ResourceRenderer from '../../helpers/ResourceRenderer';
-const AttachedFilesTable = ({
+const FilesTable = ({
title = (
),
@@ -47,7 +47,7 @@ const AttachedFilesTable = ({
>
{' '}
@@ -78,7 +78,7 @@ const AttachedFilesTable = ({
{' '}
}
@@ -87,7 +87,7 @@ const AttachedFilesTable = ({
;
-AttachedFilesTable.propTypes = {
+FilesTable.propTypes = {
title: PropTypes.oneOfType([
PropTypes.string,
PropTypes.shape({ type: PropTypes.oneOf([FormattedMessage]) }),
@@ -110,4 +110,4 @@ AttachedFilesTable.propTypes = {
intl: PropTypes.shape({ locale: PropTypes.string.isRequired }).isRequired
};
-export default injectIntl(AttachedFilesTable);
+export default injectIntl(FilesTable);
diff --git a/src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableHeaderRow.js b/src/components/Exercises/FilesTable/SupplementaryFilesTableHeaderRow.js
similarity index 100%
rename from src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableHeaderRow.js
rename to src/components/Exercises/FilesTable/SupplementaryFilesTableHeaderRow.js
diff --git a/src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableRow.js b/src/components/Exercises/FilesTable/SupplementaryFilesTableRow.js
similarity index 100%
rename from src/components/Exercises/AttachedFilesTable/SupplementaryFilesTableRow.js
rename to src/components/Exercises/FilesTable/SupplementaryFilesTableRow.js
diff --git a/src/components/Exercises/AttachedFilesTable/index.js b/src/components/Exercises/FilesTable/index.js
similarity index 52%
rename from src/components/Exercises/AttachedFilesTable/index.js
rename to src/components/Exercises/FilesTable/index.js
index 1aa010883..dbaafe286 100644
--- a/src/components/Exercises/AttachedFilesTable/index.js
+++ b/src/components/Exercises/FilesTable/index.js
@@ -1,4 +1,4 @@
-export default from './AttachedFilesTable';
+export default from './FilesTable';
export {
default as SupplementaryFilesTableRow
@@ -6,7 +6,7 @@ export {
export {
default as SupplementaryFilesTableHeaderRow
} from './SupplementaryFilesTableHeaderRow';
-export { default as AdditionalFilesTableRow } from './AdditionalFilesTableRow';
+export { default as AttachmentFilesTableRow } from './AttachmentFilesTableRow';
export {
- default as AdditionalFilesTableHeaderRow
-} from './AdditionalFilesTableHeaderRow';
+ default as AttachmentFilesTableHeaderRow
+} from './AttachmentFilesTableHeaderRow';
diff --git a/src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js b/src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js
deleted file mode 100644
index 510e20810..000000000
--- a/src/containers/AdditionalExerciseFilesTableContainer/AdditionalExerciseFilesTableContainer.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { connect } from 'react-redux';
-import ImmutablePropTypes from 'react-immutable-proptypes';
-import { FormattedMessage } from 'react-intl';
-
-import AttachedFilesTableContainer from '../AttachedFilesTableContainer';
-import {
- AdditionalFilesTableRow,
- AdditionalFilesTableHeaderRow
-} from '../../components/Exercises/AttachedFilesTable';
-
-import {
- fetchAdditionalExerciseFiles,
- addAdditionalExerciseFiles,
- removeAdditionalExerciseFile
-} from '../../redux/modules/additionalExerciseFiles';
-
-import { createGetAdditionalExerciseFiles } from '../../redux/selectors/additionalExerciseFiles';
-
-const AdditionalExerciseFilesTableContainer = ({
- exercise,
- additionalExerciseFiles,
- loadFiles,
- addFiles,
- removeFile
-}) =>
-
- }
- description={
-
- }
- HeaderComponent={AdditionalFilesTableHeaderRow}
- RowComponent={AdditionalFilesTableRow}
- />;
-
-AdditionalExerciseFilesTableContainer.propTypes = {
- exercise: PropTypes.shape({
- id: PropTypes.string.isRequired,
- additionalExerciseFilesIds: PropTypes.array.isRequired
- }).isRequired,
- additionalExerciseFiles: ImmutablePropTypes.map,
- loadFiles: PropTypes.func.isRequired,
- addFiles: PropTypes.func.isRequired,
- removeFile: PropTypes.func.isRequired
-};
-
-export default connect(
- (state, { exercise }) => {
- const getAdditionalExerciseFiles = createGetAdditionalExerciseFiles(
- exercise.additionalExerciseFilesIds
- );
- return {
- additionalExerciseFiles: getAdditionalExerciseFiles(state)
- };
- },
- (dispatch, { exercise }) => ({
- loadFiles: () => dispatch(fetchAdditionalExerciseFiles(exercise.id)),
- addFiles: files => dispatch(addAdditionalExerciseFiles(exercise.id, files)),
- removeFile: id => dispatch(removeAdditionalExerciseFile(exercise.id, id))
- })
-)(AdditionalExerciseFilesTableContainer);
diff --git a/src/containers/AdditionalExerciseFilesTableContainer/index.js b/src/containers/AdditionalExerciseFilesTableContainer/index.js
deleted file mode 100644
index ec2c6dabb..000000000
--- a/src/containers/AdditionalExerciseFilesTableContainer/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export default from './AdditionalExerciseFilesTableContainer';
diff --git a/src/containers/AttachedFilesTableContainer/index.js b/src/containers/AttachedFilesTableContainer/index.js
deleted file mode 100644
index db8158cff..000000000
--- a/src/containers/AttachedFilesTableContainer/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export default from './AttachedFilesTableContainer';
diff --git a/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js b/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js
new file mode 100644
index 000000000..558a40c9c
--- /dev/null
+++ b/src/containers/AttachmentFilesTableContainer/AttachmentFilesTableContainer.js
@@ -0,0 +1,75 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { connect } from 'react-redux';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import { FormattedMessage } from 'react-intl';
+
+import FilesTableContainer from '../FilesTableContainer';
+import {
+ AttachmentFilesTableRow,
+ AttachmentFilesTableHeaderRow
+} from '../../components/Exercises/FilesTable';
+
+import {
+ fetchAttachmentFiles,
+ addAttachmentFiles,
+ removeAttachmentFile
+} from '../../redux/modules/attachmentFiles';
+
+import { createGetAttachmentFiles } from '../../redux/selectors/attachmentFiles';
+
+const AttachmentFilesTableContainer = ({
+ exercise,
+ attachmentFiles,
+ loadFiles,
+ addFiles,
+ removeFile
+}) =>
+
+ }
+ description={
+
+ }
+ HeaderComponent={AttachmentFilesTableHeaderRow}
+ RowComponent={AttachmentFilesTableRow}
+ />;
+
+AttachmentFilesTableContainer.propTypes = {
+ exercise: PropTypes.shape({
+ id: PropTypes.string.isRequired,
+ attachmentFilesIds: PropTypes.array.isRequired
+ }).isRequired,
+ attachmentFiles: ImmutablePropTypes.map,
+ loadFiles: PropTypes.func.isRequired,
+ addFiles: PropTypes.func.isRequired,
+ removeFile: PropTypes.func.isRequired
+};
+
+export default connect(
+ (state, { exercise }) => {
+ const getAttachmentFiles = createGetAttachmentFiles(
+ exercise.attachmentFilesIds
+ );
+ return {
+ attachmentFiles: getAttachmentFiles(state)
+ };
+ },
+ (dispatch, { exercise }) => ({
+ loadFiles: () => dispatch(fetchAttachmentFiles(exercise.id)),
+ addFiles: files => dispatch(addAttachmentFiles(exercise.id, files)),
+ removeFile: id => dispatch(removeAttachmentFile(exercise.id, id))
+ })
+)(AttachmentFilesTableContainer);
diff --git a/src/containers/AttachmentFilesTableContainer/index.js b/src/containers/AttachmentFilesTableContainer/index.js
new file mode 100644
index 000000000..bf6a33164
--- /dev/null
+++ b/src/containers/AttachmentFilesTableContainer/index.js
@@ -0,0 +1 @@
+export default from './AttachmentFilesTableContainer';
diff --git a/src/containers/AttachedFilesTableContainer/AttachedFilesTableContainer.js b/src/containers/FilesTableContainer/FilesTableContainer.js
similarity index 73%
rename from src/containers/AttachedFilesTableContainer/AttachedFilesTableContainer.js
rename to src/containers/FilesTableContainer/FilesTableContainer.js
index 66832ff17..f3bc95119 100644
--- a/src/containers/AttachedFilesTableContainer/AttachedFilesTableContainer.js
+++ b/src/containers/FilesTableContainer/FilesTableContainer.js
@@ -4,7 +4,7 @@ import { connect } from 'react-redux';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { List } from 'immutable';
-import AttachedFilesTable from '../../components/Exercises/AttachedFilesTable';
+import FilesTable from '../../components/Exercises/FilesTable';
import { reset } from '../../redux/modules/upload';
import {
@@ -12,14 +12,14 @@ import {
createAllUploaded
} from '../../redux/selectors/upload';
-class AttachedFilesTableContainer extends Component {
+class FilesTableContainer extends Component {
componentWillMount() {
- AttachedFilesTableContainer.loadData(this.props);
+ FilesTableContainer.loadData(this.props);
}
componentWillReceiveProps(newProps) {
if (this.props.uploadId !== newProps.uploadId) {
- AttachedFilesTableContainer.loadData(newProps);
+ FilesTableContainer.loadData(newProps);
}
}
@@ -27,10 +27,10 @@ class AttachedFilesTableContainer extends Component {
loadFiles();
};
- render = () => ;
+ render = () => ;
}
-AttachedFilesTableContainer.propTypes = {
+FilesTableContainer.propTypes = {
uploadId: PropTypes.string.isRequired,
attachments: ImmutablePropTypes.map,
newFiles: ImmutablePropTypes.list,
@@ -47,4 +47,4 @@ export default connect(
(dispatch, { uploadId, addFiles }) => ({
addFiles: files => addFiles(files.toJS()).then(dispatch(reset(uploadId)))
})
-)(AttachedFilesTableContainer);
+)(FilesTableContainer);
diff --git a/src/containers/FilesTableContainer/index.js b/src/containers/FilesTableContainer/index.js
new file mode 100644
index 000000000..9dc456228
--- /dev/null
+++ b/src/containers/FilesTableContainer/index.js
@@ -0,0 +1 @@
+export default from './FilesTableContainer';
diff --git a/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js b/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js
index 99588d3b2..966785302 100644
--- a/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js
+++ b/src/containers/PipelineFilesTableContainer/PipelineFilesTableContainer.js
@@ -4,11 +4,11 @@ import { connect } from 'react-redux';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { FormattedMessage } from 'react-intl';
-import AttachedFilesTableContainer from '../AttachedFilesTableContainer';
+import FilesTableContainer from '../FilesTableContainer';
import {
SupplementaryFilesTableHeaderRow,
SupplementaryFilesTableRow
-} from '../../components/Exercises/AttachedFilesTable';
+} from '../../components/Exercises/FilesTable';
import {
fetchSupplementaryFilesForPipeline,
@@ -23,7 +23,7 @@ const PipelineFilesTableContainer = ({
loadFiles,
addFiles
}) =>
-
-
-
+
diff --git a/src/redux/modules/additionalExerciseFiles.js b/src/redux/modules/attachmentFiles.js
similarity index 61%
rename from src/redux/modules/additionalExerciseFiles.js
rename to src/redux/modules/attachmentFiles.js
index ddbfcfe52..3535c2a37 100644
--- a/src/redux/modules/additionalExerciseFiles.js
+++ b/src/redux/modules/attachmentFiles.js
@@ -6,7 +6,7 @@ import factory, {
} from '../helpers/resourceManager';
import { createApiAction } from '../middleware/apiMiddleware';
-const resourceName = 'additionalExerciseFiles';
+const resourceName = 'attachmentFiles';
const { actions, reduceActions } = factory({ resourceName });
/**
@@ -14,23 +14,23 @@ const { actions, reduceActions } = factory({ resourceName });
*/
export const actionTypes = {
- ADD_FILES: 'recodex/additionalExerciseFiles/ADD_FILES',
- ADD_FILES_PENDING: 'recodex/additionalExerciseFiles/ADD_FILES_PENDING',
- ADD_FILES_FULFILLED: 'recodex/additionalExerciseFiles/ADD_FILES_FULFILLED',
- ADD_FILES_FAILED: 'recodex/additionalExerciseFiles/ADD_FILES_REJECTED',
- REMOVE_FILE: 'recodex/additionalExerciseFiles/REMOVE_FILE',
- REMOVE_FILE_FULFILLED: 'recodex/additionalExerciseFiles/REMOVE_FILE_FULFILLED'
+ ADD_FILES: 'recodex/attachmentFiles/ADD_FILES',
+ ADD_FILES_PENDING: 'recodex/attachmentFiles/ADD_FILES_PENDING',
+ ADD_FILES_FULFILLED: 'recodex/attachmentFiles/ADD_FILES_FULFILLED',
+ ADD_FILES_FAILED: 'recodex/attachmentFiles/ADD_FILES_REJECTED',
+ REMOVE_FILE: 'recodex/attachmentFiles/REMOVE_FILE',
+ REMOVE_FILE_FULFILLED: 'recodex/attachmentFiles/REMOVE_FILE_FULFILLED'
};
-export const fetchAdditionalExerciseFiles = exerciseId =>
+export const fetchAttachmentFiles = exerciseId =>
actions.fetchMany({
- endpoint: `/exercises/${exerciseId}/additional-files`
+ endpoint: `/exercises/${exerciseId}/attachment-files`
});
-export const addAdditionalExerciseFiles = (exerciseId, files) =>
+export const addAttachmentFiles = (exerciseId, files) =>
createApiAction({
type: actionTypes.ADD_FILES,
- endpoint: `/exercises/${exerciseId}/additional-files`,
+ endpoint: `/exercises/${exerciseId}/attachment-files`,
method: 'POST',
body: {
files: files.map(uploaded => uploaded.file.id)
@@ -45,10 +45,10 @@ export const addAdditionalExerciseFiles = (exerciseId, files) =>
uploadFiles: true
});
-export const removeAdditionalExerciseFile = (exerciseId, fileId) =>
+export const removeAttachmentFile = (exerciseId, fileId) =>
createApiAction({
type: actionTypes.REMOVE_FILE,
- endpoint: `/exercises/${exerciseId}/additional-files/${fileId}`,
+ endpoint: `/exercises/${exerciseId}/attachment-files/${fileId}`,
method: 'DELETE',
meta: { exerciseId, fileId }
});
diff --git a/src/redux/modules/exercises.js b/src/redux/modules/exercises.js
index 67cbe8857..d63e088ef 100644
--- a/src/redux/modules/exercises.js
+++ b/src/redux/modules/exercises.js
@@ -5,7 +5,7 @@ import { createApiAction } from '../middleware/apiMiddleware';
import { actionTypes as supplementaryFilesActionTypes } from './supplementaryFiles';
-import { actionTypes as additionalFilesActionTypes } from './additionalExerciseFiles';
+import { actionTypes as attachmentFilesActionTypes } from './attachmentFiles';
const resourceName = 'exercises';
const { actions, reduceActions, actionTypes } = factory({ resourceName });
@@ -138,12 +138,12 @@ const reducer = handleActions(
? addFiles(state, exerciseId, files, 'supplementaryFilesIds')
: state,
- [additionalFilesActionTypes.ADD_FILES_FULFILLED]: (
+ [attachmentFilesActionTypes.ADD_FILES_FULFILLED]: (
state,
{ payload: files, meta: { exerciseId } }
) =>
state.hasIn(['resources', exerciseId])
- ? addFiles(state, exerciseId, files, 'additionalExerciseFilesIds')
+ ? addFiles(state, exerciseId, files, 'attachmentFilesIds')
: state
}),
initialState
diff --git a/src/redux/reducer.js b/src/redux/reducer.js
index 9b7185bb4..96af0b232 100644
--- a/src/redux/reducer.js
+++ b/src/redux/reducer.js
@@ -38,7 +38,7 @@ import userSwitching from './modules/userSwitching';
import runtimeEnvironments from './modules/runtimeEnvironments';
import supplementaryFiles from './modules/supplementaryFiles';
import pipelineFiles from './modules/pipelineFiles';
-import additionalExerciseFiles from './modules/additionalExerciseFiles';
+import attachmentFiles from './modules/attachmentFiles';
import referenceSolutions from './modules/referenceSolutions';
import hwGroups from './modules/hwGroups';
import sisStatus from './modules/sisStatus';
@@ -88,7 +88,7 @@ const createRecodexReducers = token => ({
referenceSolutions,
referenceSolutionEvaluations,
hwGroups,
- additionalExerciseFiles,
+ attachmentFiles,
sisStatus,
sisSubscribedGroups,
sisSupervisedCourses,
diff --git a/src/redux/selectors/additionalExerciseFiles.js b/src/redux/selectors/additionalExerciseFiles.js
deleted file mode 100644
index 3d02e19f5..000000000
--- a/src/redux/selectors/additionalExerciseFiles.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { createSelector } from 'reselect';
-import { isReady } from '../helpers/resourceManager';
-
-const getAdditionalExerciseFiles = state => state.additionalExerciseFiles;
-export const getAdditionalExerciseFile = id =>
- createSelector(getAdditionalExerciseFiles, additionalExerciseFiles =>
- additionalExerciseFiles.get(id)
- );
-
-export const additionalExerciseFilesSelector = state =>
- state.additionalExerciseFiles.get('resources');
-
-export const createGetAdditionalExerciseFiles = ids =>
- createSelector(additionalExerciseFilesSelector, additionalExerciseFiles =>
- additionalExerciseFiles
- .filter(isReady)
- .filter(file => ids.indexOf(file.getIn(['data', 'id'])) >= 0)
- );
diff --git a/src/redux/selectors/attachmentFiles.js b/src/redux/selectors/attachmentFiles.js
new file mode 100644
index 000000000..ac3e8652c
--- /dev/null
+++ b/src/redux/selectors/attachmentFiles.js
@@ -0,0 +1,18 @@
+import { createSelector } from 'reselect';
+import { isReady } from '../helpers/resourceManager';
+
+const getAttachmentFiles = state => state.attachmentFiles;
+export const getAttachmentFile = id =>
+ createSelector(getAttachmentFiles, attachmentFiles =>
+ attachmentFiles.get(id)
+ );
+
+export const attachmentFilesSelector = state =>
+ state.attachmentFiles.get('resources');
+
+export const createGetAttachmentFiles = ids =>
+ createSelector(attachmentFilesSelector, attachmentFiles =>
+ attachmentFiles
+ .filter(isReady)
+ .filter(file => ids.indexOf(file.getIn(['data', 'id'])) >= 0)
+ );