diff --git a/.vscode/settings.json b/.vscode/settings.json index 2091e5e03..8565bda8e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,5 +8,4 @@ } ], "editor.formatOnSave": false, - "eslint.autoFixOnSave": true } diff --git a/backend/package.json b/backend/package.json index 5bc0d79ec..0cc8d3666 100644 --- a/backend/package.json +++ b/backend/package.json @@ -67,19 +67,19 @@ "metascraper-author": "^5.8.12", "metascraper-clearbit-logo": "^5.3.0", "metascraper-date": "^5.8.12", - "metascraper-description": "^5.8.10", - "metascraper-image": "^5.8.10", + "metascraper-description": "^5.8.12", + "metascraper-image": "^5.8.12", "metascraper-lang": "^5.8.10", "metascraper-lang-detector": "^4.10.2", "metascraper-logo": "^5.8.12", "metascraper-publisher": "^5.8.7", "metascraper-soundcloud": "^5.8.12", - "metascraper-title": "^5.8.10", + "metascraper-title": "^5.8.12", "metascraper-url": "^5.8.7", "metascraper-video": "^5.8.12", "metascraper-youtube": "^5.8.12", "minimatch": "^3.0.4", - "mustache": "^3.1.0", + "mustache": "^3.2.0", "neo4j-driver": "~1.7.6", "neo4j-graphql-js": "^2.10.2", "neode": "^0.3.6", @@ -97,13 +97,13 @@ "xregexp": "^4.2.4" }, "devDependencies": { - "@babel/cli": "~7.7.5", + "@babel/cli": "~7.7.7", "@babel/core": "~7.7.5", - "@babel/node": "~7.7.4", + "@babel/node": "~7.7.7", "@babel/plugin-proposal-throw-expressions": "^7.7.4", "@babel/preset-env": "~7.7.6", "@babel/register": "~7.7.0", - "apollo-server-testing": "~2.9.13", + "apollo-server-testing": "~2.9.14", "babel-core": "~7.0.0-0", "babel-eslint": "~10.0.3", "babel-jest": "~24.9.0", diff --git a/backend/src/models/Post.js b/backend/src/models/Post.js index 18dc0e464..bd6eda2e4 100644 --- a/backend/src/models/Post.js +++ b/backend/src/models/Post.js @@ -39,5 +39,6 @@ module.exports = { default: () => new Date().toISOString(), }, language: { type: 'string', allow: [null] }, + imageBlurred: { type: 'boolean', default: false }, imageAspectRatio: { type: 'float', default: 1.0 }, } diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index 6ae3a81d9..47223faea 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -341,6 +341,7 @@ export default { 'language', 'pinnedAt', 'pinned', + 'imageBlurred', 'imageAspectRatio', ], hasMany: { diff --git a/backend/src/schema/types/type/Post.gql b/backend/src/schema/types/type/Post.gql index 0f1817971..2e4358b3e 100644 --- a/backend/src/schema/types/type/Post.gql +++ b/backend/src/schema/types/type/Post.gql @@ -82,6 +82,7 @@ input _PostFilter { emotions_none: _PostEMOTEDFilter emotions_single: _PostEMOTEDFilter emotions_every: _PostEMOTEDFilter + imageBlurred: Boolean } enum _PostOrdering { @@ -127,6 +128,7 @@ type Post { createdAt: String updatedAt: String language: String + imageBlurred: Boolean pinnedAt: String @cypher( statement: "MATCH (this)<-[pinned:PINNED]-(:User) WHERE NOT this.deleted = true AND NOT this.disabled = true RETURN pinned.createdAt" ) @@ -140,7 +142,6 @@ type Post { LIMIT 10 """ ) - tags: [Tag]! @relation(name: "TAGGED", direction: "OUT") categories: [Category]! @relation(name: "CATEGORIZED", direction: "OUT") @@ -183,6 +184,7 @@ type Mutation { language: String categoryIds: [ID] contentExcerpt: String + imageBlurred: Boolean imageAspectRatio: Float ): Post UpdatePost( @@ -196,6 +198,7 @@ type Mutation { visibility: Visibility language: String categoryIds: [ID] + imageBlurred: Boolean imageAspectRatio: Float ): Post DeletePost(id: ID!): Post @@ -217,6 +220,7 @@ type Query { createdAt: String updatedAt: String language: String + imageBlurred: Boolean first: Int offset: Int orderBy: [_PostOrdering] diff --git a/backend/src/seed/factories/posts.js b/backend/src/seed/factories/posts.js index 2443619ae..d1a46d71b 100644 --- a/backend/src/seed/factories/posts.js +++ b/backend/src/seed/factories/posts.js @@ -19,6 +19,7 @@ export default function create() { visibility: 'public', deleted: false, categoryIds: [], + imageBlurred: false, imageAspectRatio: 1.333, } args = { diff --git a/backend/src/seed/seed-db.js b/backend/src/seed/seed-db.js index 475a7b54f..4178169bb 100644 --- a/backend/src/seed/seed-db.js +++ b/backend/src/seed/seed-db.js @@ -352,6 +352,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] language: sample(languages), image: faker.image.unsplash.food(300, 169), categoryIds: ['cat16'], + imageBlurred: true, imageAspectRatio: 300 / 169, }), factory.create('Post', { @@ -398,6 +399,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] author: dewey, id: 'p10', categoryIds: ['cat10'], + imageBlurred: true, }), factory.create('Post', { author: louie, @@ -444,6 +446,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] $title: String! $content: String! $categoryIds: [ID] + $imageBlurred: Boolean $imageAspectRatio: Float ) { CreatePost( @@ -451,6 +454,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] title: $title content: $content categoryIds: $categoryIds + imageBlurred: $imageBlurred imageAspectRatio: $imageAspectRatio ) { id diff --git a/backend/yarn.lock b/backend/yarn.lock index 34d3372f2..076df4e61 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -33,10 +33,10 @@ resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.24.tgz#3ce939cb127fb8aaa3ffc1e90dff9b8af9f2e3dc" integrity sha512-8GqG48m1XqyXh4mIZrtB5xOhUwSsh1WsrrsaZQOEYYql3YN9DEu9OOSg0ILzXHZo/h2Q74777YE4YzlArQzQEQ== -"@babel/cli@~7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.7.5.tgz#25702cc65418efc06989af3727897b9f4c8690b6" - integrity sha512-y2YrMGXM3NUyu1Myg0pxg+Lx6g8XhEyvLHYNRwTBV6fDek3H7Io6b7N/LXscLs4HWn4HxMdy7f2rM1rTMp2mFg== +"@babel/cli@~7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.7.7.tgz#56849acbf81d1a970dd3d1b3097c8ebf5da3f534" + integrity sha512-XQw5KyCZyu/M8/0rYiZyuwbgIQNzOrJzs9dDLX+MieSgBwTLvTj4QVbLmxJACAIvQIDT7PtyHN2sC48EOWTgaA== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" @@ -279,17 +279,18 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/node@~7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.7.4.tgz#de1cc9c67b335a19e4f71208554779bc63719f5a" - integrity sha512-Vhhq2kK+BpsR2tW35zP8yOJZ7ONMVBwCD9fmNeRTU3MNNpcJDrrtVP5NK8ZX4nQAs0GSq6ky8noyn6MCVgL08g== +"@babel/node@~7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.7.7.tgz#10c488ca36da07670be0131679c4e22f9d7795d4" + integrity sha512-QWWbQ6AyDffz6mA2mF0jixb/3IyRlqWgz5JNa2F6kSYe4vhPEytwuGmanx0NQJxBufDjffm/jYPuIfKfAyVzuA== dependencies: - "@babel/register" "^7.7.4" + "@babel/register" "^7.7.7" commander "^2.8.1" core-js "^3.2.1" lodash "^4.17.13" node-environment-flags "^1.0.5" regenerator-runtime "^0.13.3" + resolve "^1.13.1" v8flags "^3.1.1" "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5": @@ -704,10 +705,10 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/register@^7.7.4", "@babel/register@~7.7.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.7.4.tgz#45a4956471a9df3b012b747f5781cc084ee8f128" - integrity sha512-/fmONZqL6ZMl9KJUYajetCrID6m0xmL4odX7v+Xvoxcv0DdbP/oO0TWIeLUCHqczQ6L6njDMqmqHFy2cp3FFsA== +"@babel/register@^7.7.7", "@babel/register@~7.7.0": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.7.7.tgz#46910c4d1926b9c6096421b23d1f9e159c1dcee1" + integrity sha512-S2mv9a5dc2pcpg/ConlKZx/6wXaEwHeqfo7x/QbXsdCAZm+WJC1ekVvL1TVxNsedTs5y/gG63MhJTEsmwmjtiA== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.13" @@ -1812,12 +1813,12 @@ apollo-server-plugin-base@^0.6.9: dependencies: apollo-server-types "^0.2.9" -apollo-server-testing@~2.9.13: - version "2.9.13" - resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.9.13.tgz#7a4efc0eb01d7297716f089121c7440a620bb640" - integrity sha512-c1xl4g5KhMfPpL5xdzxPJLY53+yK/kMAWxIASthRrOSZNgStTe7pCAJ06Nk3NB8M5GwfJK3cJiVkLfZRSt9+jQ== +apollo-server-testing@~2.9.14: + version "2.9.14" + resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.9.14.tgz#3b442a22b109c7ef7758bc1749dc0ab9923eb605" + integrity sha512-An9T0kUpqPOJnuoqGRIbx/c5iy/WRyZnVrfbCjQ0ux9n1reAoMzhmIdDDCIkl8+tu4UfTcjuNl4af5WRY6Lakw== dependencies: - apollo-server-core "^2.9.13" + apollo-server-core "^2.9.14" apollo-server-types@^0.2.9: version "0.2.9" @@ -5834,19 +5835,19 @@ metascraper-date@^5.8.12: dependencies: "@metascraper/helpers" "^5.8.12" -metascraper-description@^5.8.10: - version "5.8.10" - resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.8.10.tgz#1b69f59fa76263fcd2c15f8ce73052b81900177a" - integrity sha512-0stYkl5OPpM0yM6Dl3WcXxLjl2gY5k77E4seeHOqHAUx1EKXNgrSrtO0I3PX9p6vcxP+WBtK6zlqHYU4qAMlSA== +metascraper-description@^5.8.12: + version "5.8.12" + resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.8.12.tgz#fa6d5a0f8f050ad19b6205529af68c6e6ed1ca2f" + integrity sha512-KEB5+urIcdqZGbLx/JULw3sjuzlfkagoEnTsOfZSCj5J6hUKpFHA5B44o9gNtNCm9miR5gfbYtbFP1XCnYji+Q== dependencies: - "@metascraper/helpers" "^5.8.10" + "@metascraper/helpers" "^5.8.12" -metascraper-image@^5.8.10: - version "5.8.10" - resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.8.10.tgz#fe21811ca88eef13e64812462fb5a21ee48933dc" - integrity sha512-WOPnTupaDEl58iZp0M6kFlUcRSRQFSPWATPUi3AeW31VJM2sepxmJlqc5qVFTen/Lm+kI23firrvEg5N8tFUVA== +metascraper-image@^5.8.12: + version "5.8.12" + resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.8.12.tgz#a4b9c1cef08e86a1c5c36c0c6e132cad409a3d0b" + integrity sha512-mxzCYEKFknEG4MrRkk3KHN/LxqVnvRFwKOrfNHeRdXWSOI7ANM9SGe+5tYuXrNsONhXfMZp32PJswVqAlWsSLA== dependencies: - "@metascraper/helpers" "^5.8.10" + "@metascraper/helpers" "^5.8.12" metascraper-lang-detector@^4.10.2: version "4.10.2" @@ -5886,12 +5887,12 @@ metascraper-soundcloud@^5.8.12: "@metascraper/helpers" "^5.8.12" tldts "~5.6.2" -metascraper-title@^5.8.10: - version "5.8.10" - resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-5.8.10.tgz#c25dc8e8ad7073c18c8d25db0b855f62d3d986bd" - integrity sha512-CauBJmLYtS+AZ9KJfnfJHp/tzUTo9yup56P/7aaOBcfVA5PWg3xdI1lVXJegmiTsBCyDEzWRVJ41f/ZlMjbAsg== +metascraper-title@^5.8.12: + version "5.8.12" + resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-5.8.12.tgz#1d57da4d0dd4566e622170630ba9b65fe26a4536" + integrity sha512-JJzJIp6O+BVFdxnYiz4lUGtzqeDLAxE5dz/Z0kj8iwJl6z/szdYTeFuI4Sc872GxN14xAgxNe1LJs2gAlZuHsg== dependencies: - "@metascraper/helpers" "^5.8.10" + "@metascraper/helpers" "^5.8.12" lodash "~4.17.15" metascraper-url@^5.8.7: @@ -6077,10 +6078,10 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mustache@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.1.0.tgz#9fba26e7aefc5709f07ff585abb7e0abced6c372" - integrity sha512-3Bxq1R5LBZp7fbFPZzFe5WN4s0q3+gxZaZuZVY+QctYJiCiVgXHOTIC0/HgZuOPFt/6BQcx5u0H2CUOxT/RoGQ== +mustache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.2.0.tgz#1c68e0bf77817a92e8a9216e35c53bbb342345f6" + integrity sha512-n5de2nQ1g2iz3PO9cmq/ZZx3W7glqjf0kavThtqfuNlZRllgU2a2Q0jWoQy3BloT5A6no7sjCTHBVn1rEKjx1Q== mute-stream@0.0.8: version "0.0.8" @@ -7311,10 +7312,10 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.5.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.5.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" + integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== dependencies: path-parse "^1.0.6" diff --git a/package.json b/package.json index be33a23c8..51d1993ac 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "version": "auto-changelog -p" }, "devDependencies": { - "@babel/core": "^7.7.5", - "@babel/preset-env": "^7.7.6", + "@babel/core": "^7.7.7", + "@babel/preset-env": "^7.7.7", "@babel/register": "^7.7.4", "auto-changelog": "^1.16.2", "bcryptjs": "^2.4.3", diff --git a/webapp/Dockerfile b/webapp/Dockerfile index 91f19a486..a20ca4111 100644 --- a/webapp/Dockerfile +++ b/webapp/Dockerfile @@ -1,4 +1,4 @@ -FROM node:13.3.0-alpine as base +FROM node:13.4.0-alpine as base LABEL Description="Web Frontend of the Social Network Human-Connection.org" Vendor="Human-Connection gGmbH" Version="0.0.1" Maintainer="Human-Connection gGmbH (developer@human-connection.org)" EXPOSE 3000 diff --git a/webapp/Dockerfile.maintenance b/webapp/Dockerfile.maintenance index adcaca13a..2efec964b 100644 --- a/webapp/Dockerfile.maintenance +++ b/webapp/Dockerfile.maintenance @@ -1,4 +1,4 @@ -FROM node:13.3.0-alpine as build +FROM node:13.4.0-alpine as build LABEL Description="Maintenance page of the Social Network Human-Connection.org" Vendor="Human-Connection gGmbH" Version="0.0.1" Maintainer="Human-Connection gGmbH (developer@human-connection.org)" EXPOSE 3000 diff --git a/webapp/components/ContributionForm/ContributionForm.spec.js b/webapp/components/ContributionForm/ContributionForm.spec.js index 8c50f30b6..2f0f2e30d 100644 --- a/webapp/components/ContributionForm/ContributionForm.spec.js +++ b/webapp/components/ContributionForm/ContributionForm.spec.js @@ -200,6 +200,7 @@ describe('ContributionForm.vue', () => { imageUpload: null, imageAspectRatio: null, image: null, + imageBlurred: false, }, } postTitleInput = wrapper.find('.ds-input') diff --git a/webapp/components/ContributionForm/ContributionForm.vue b/webapp/components/ContributionForm/ContributionForm.vue index fd54d4948..8370c0385 100644 --- a/webapp/components/ContributionForm/ContributionForm.vue +++ b/webapp/components/ContributionForm/ContributionForm.vue @@ -16,6 +16,7 @@ + +
+ + +

+ + {{ $t('contribution.inappropriatePictureText') }} + + +

+
+ @@ -86,6 +103,7 @@ +
this.contribution.language === o.value) : null form.categoryIds = this.categoryIds(this.contribution.categories) + form.blurImage = this.contribution.imageBlurred } + return { form, formSchema: { @@ -173,6 +195,7 @@ export default { }, }, language: { required: true }, + blurImage: { required: false }, }, languageOptions, id, @@ -182,6 +205,7 @@ export default { contentMin: 3, hashtags: [], showDeleteButton: this.contribution ? this.contribution.image : false, + elem: null, } }, computed: { @@ -202,6 +226,7 @@ export default { teaserImage, imageAspectRatio, categoryIds, + blurImage, } = this.form this.loading = true this.$apollo @@ -215,6 +240,7 @@ export default { language, image, imageUpload: teaserImage, + imageBlurred: blurImage, imageAspectRatio, }, }) @@ -285,29 +311,36 @@ export default { } - diff --git a/webapp/components/TeaserImage/TeaserImage.vue b/webapp/components/TeaserImage/TeaserImage.vue index 9a203fc9c..d5913665b 100644 --- a/webapp/components/TeaserImage/TeaserImage.vue +++ b/webapp/components/TeaserImage/TeaserImage.vue @@ -141,7 +141,7 @@ export default {