Skip to content
Snippets Groups Projects
Commit 986b4eea authored by Luc Bourdot's avatar Luc Bourdot
Browse files

Merge branch '206-publication-license-for-articles' into 'dev'

Resolve "publication license  for articles"

Closes #206

See merge request alphabet/laboite!617
parents 49b04cbe becde41c
No related branches found
No related tags found
No related merge requests found
......@@ -101,6 +101,10 @@ Articles.schema = new SimpleSchema(
type: SimpleSchema.Integer,
defaultValue: 0,
},
licence: {
type: String,
defaultValue: '',
},
},
{ clean: { removeEmptyStrings: false }, tracker: Tracker },
);
......@@ -119,6 +123,7 @@ Articles.publicFields = {
visits: 1,
tags: 1,
structure: 1,
licence: 1,
};
Articles.attachSchema(Articles.schema);
......
......@@ -500,3 +500,18 @@ Migrations.add({
Structures.rawCollection().updateMany({}, { $unset: { introduction: 1 } }, { multi: true });
},
});
Migrations.add({
version: 26,
name: 'Add licence to articles',
up: () => {
Articles.find({})
.fetch()
.forEach((article) => {
Articles.update({ _id: article._id }, { $set: { licence: '' } });
});
},
down: () => {
Articles.rawCollection().updateMany({}, { $unset: { licence: 1 } }, { multi: true });
},
});
......@@ -1321,6 +1321,15 @@
"mainText": "Do you really want to close this page ? Any unsaved changes will be lost.",
"confirm": "Confirm",
"cancel": "Cancel"
},
"licenceInfo": "For more information about licences, check the documentation on the Creative Commons website: ",
"Licences": {
"CC_BY": "Attribution",
"CC_BY-SA": "Attribution-ShareAlike",
"CC_BY-ND": "Attribution-NoDerivatives",
"CC_BY-NC": "Attribution-NonCommercial",
"CC_BY-NC-SA": "Attribution-NonCommercial-ShareAlike",
"CC_BY-NC-ND": "Attribution-NonCommercial-NoDerivatives"
}
},
"PublicArticlePage": {
......
......@@ -1323,6 +1323,15 @@
"mainText": "Souhaitez-vous réellement fermer cette page ? Toutes les modifications non enregistrées seront perdues.",
"confirm": "Confirmer",
"cancel": "Annuler"
},
"licenceInfo": "Pour plus d'informations sur les licences, consultez la documentation sur le site Creative Commons: ",
"Licences": {
"CC_BY": "Attribution",
"CC_BY-SA": "Attribution - Partage dans les Mêmes Conditions",
"CC_BY-ND": "Attribution - Pas de Modification",
"CC_BY-NC": "Attribution - Pas d’Utilisation Commerciale",
"CC_BY-NC-SA": "Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions",
"CC_BY-NC-ND": "Pas d’Utilisation Commerciale - Pas de Modification"
}
},
"PublicArticlePage": {
......
......@@ -4,12 +4,16 @@ import { Meteor } from 'meteor/meteor';
import React, { useEffect, useRef, useState } from 'react';
import PropTypes from 'prop-types';
import i18n from 'meteor/universe:i18n';
import Paper from '@mui/material/Paper';
import ReactQuill, { Quill } from 'react-quill';
import 'react-quill/dist/quill.snow.css';
import { withTracker } from 'meteor/react-meteor-data';
import FormControl from '@mui/material/FormControl';
import DeleteIcon from '@mui/icons-material/Delete';
import AssignmentIcon from '@mui/icons-material/Assignment';
import { Random } from 'meteor/random';
import MenuItem from '@mui/material/MenuItem';
import Select from '@mui/material/Select';
import ImageResize from 'quill-image-resize-module';
import { makeStyles } from 'tss-react/mui';
import TextField from '@mui/material/TextField';
......@@ -126,6 +130,11 @@ const useStyles = makeStyles()((theme, isTablet) => ({
structure: {
marginBottom: '0px',
},
licencePaper: {
padding: theme.spacing(1.5),
marginTop: 5,
marginBottom: 10,
},
}));
const emptyArticle = {
......@@ -133,6 +142,7 @@ const emptyArticle = {
slug: '',
content: '',
description: '',
licence: '',
tags: [],
};
......@@ -164,6 +174,15 @@ function EditArticlePage({
const [open, setOpen] = useState(false);
const [showUpdateStructure, setShowUpdateStructure] = useState(false);
const licences = [
['CC BY', i18n.__('pages.EditArticlePage.Licences.CC_BY')],
['CC BY-SA', i18n.__('pages.EditArticlePage.Licences.CC_BY-SA')],
['CC BY-ND', i18n.__('pages.EditArticlePage.Licences.CC_BY-ND')],
['CC BY-NC', i18n.__('pages.EditArticlePage.Licences.CC_BY-NC')],
['CC BY-NC-SA', i18n.__('pages.EditArticlePage.Licences.CC_BY-NC-SA')],
['CC BY-NC-ND', i18n.__('pages.EditArticlePage.Licences.CC_BY-NC-ND')],
];
const quillOptionsMaker = (options) => ({
modules: {
toolbar: {
......@@ -537,6 +556,10 @@ function EditArticlePage({
setData({ markdown: bool });
};
const handleLicence = (event) => {
setData({ licence: event.target.value });
};
if (!ready || (slug && !article._id && !data._id) || loading) {
return <Spinner />;
}
......@@ -583,6 +606,32 @@ function EditArticlePage({
),
}}
/>
<FormControl fullWidth>
<InputLabel id="licence-selector-label">Licence</InputLabel>
<Select
labelId="licence-selector-label"
id="licence-selector"
name="licence"
variant="outlined"
label="licence"
fullWidth
value={data.licence}
onChange={handleLicence}
>
{licences.map((lic) => (
<MenuItem value={lic[0]} key={lic[1]}>
{lic[1]}
</MenuItem>
))}
</Select>
</FormControl>
<Paper className={classes.licencePaper}>
{i18n.__('pages.EditArticlePage.licenceInfo')}{' '}
<a href="https://creativecommons.org/licenses/" target="_blank" style={{ color: 'blue' }} rel="noreferrer">
https://creativecommons.org/licenses/
</a>
</Paper>
<TextField
onChange={onUpdateField}
value={data.description}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment