diff --git a/backend/.dockerignore b/backend/.dockerignore index d694f0d21..a0883bf4d 100644 --- a/backend/.dockerignore +++ b/backend/.dockerignore @@ -12,7 +12,6 @@ docker-compose*.yml ./*.log node_modules/ -scripts/ build/ maintenance-worker/ diff --git a/backend/Dockerfile b/backend/Dockerfile index fc15aca63..fc6c1f4b3 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -74,7 +74,7 @@ FROM code as build # yarn install RUN yarn install --production=false --frozen-lockfile --non-interactive # yarn build -RUN yarn run build +RUN /bin/sh -c "yarn run build" ################################################################################## # TEST ########################################################################### diff --git a/backend/package.json b/backend/package.json index 6d6c87cf1..eb8119a8f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -11,7 +11,7 @@ "__migrate": "migrate --compiler 'js:@babel/register' --migrations-dir ./src/db/migrations", "prod:migrate": "migrate --migrations-dir ./build/db/migrations --store ./build/db/migrate/store.js", "start": "node build/", - "build": "tsc && mkdir -p build/middleware/helpers/email/templates/ && cp -r src/middleware/helpers/email/templates/*.html build/middleware/helpers/email/templates/ && mkdir -p build/middleware/helpers/email/templates/en/ && cp -r src/middleware/helpers/email/templates/en/*.html build/middleware/helpers/email/templates/en/ && mkdir -p build/middleware/helpers/email/templates/de/ && cp -r src/middleware/helpers/email/templates/de/*.html build/middleware/helpers/email/templates/de/ && mkdir -p build/schema/types/ && cp -r src/schema/types/*.gql build/schema/types/ && mkdir -p build/schema/types/enum/ && cp -r src/schema/types/enum/*.gql build/schema/types/enum/ && mkdir -p build/schema/types/scalar/ && cp -r src/schema/types/scalar/*.gql build/schema/types/scalar/ && mkdir -p build/schema/types/type/ && cp -r src/schema/types/type/*.gql build/schema/types/type/", + "build": "tsc && ./scripts/build.copy.files.sh", "dev": "nodemon --exec ts-node src/ -e js,ts,gql", "dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/ -e js,gql", "lint": "eslint src --config .eslintrc.js", diff --git a/backend/scripts/build.copy.files.sh b/backend/scripts/build.copy.files.sh new file mode 100755 index 000000000..85022ba9b --- /dev/null +++ b/backend/scripts/build.copy.files.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# html files +mkdir -p build/middleware/helpers/email/templates/ +cp -r src/middleware/helpers/email/templates/*.html build/middleware/helpers/email/templates/ + +mkdir -p build/middleware/helpers/email/templates/en/ +cp -r src/middleware/helpers/email/templates/en/*.html build/middleware/helpers/email/templates/en/ + +mkdir -p build/middleware/helpers/email/templates/de/ +cp -r src/middleware/helpers/email/templates/de/*.html build/middleware/helpers/email/templates/de/ + +# gql files +mkdir -p build/schema/types/ +cp -r src/schema/types/*.gql build/schema/types/ + +mkdir -p build/schema/types/enum/ +cp -r src/schema/types/enum/*.gql build/schema/types/enum/ + +mkdir -p build/schema/types/scalar/ +cp -r src/schema/types/scalar/*.gql build/schema/types/scalar/ + +mkdir -p build/schema/types/type/ +cp -r src/schema/types/type/*.gql build/schema/types/type/ \ No newline at end of file diff --git a/backend/src/schema/resolvers/filter-posts.spec.js b/backend/src/schema/resolvers/filter-posts.spec.js index 0b96e001f..41fbd0ea7 100644 --- a/backend/src/schema/resolvers/filter-posts.spec.js +++ b/backend/src/schema/resolvers/filter-posts.spec.js @@ -158,7 +158,7 @@ describe('Filter Posts', () => { }) describe('order events by event start descending', () => { - it('finds the events orderd accordingly', async () => { + it('finds the events ordered accordingly', async () => { const { data: { Post: result }, } = await query({ @@ -180,7 +180,7 @@ describe('Filter Posts', () => { }) describe('order events by event start ascending', () => { - it('finds the events orderd accordingly', async () => { + it('finds the events ordered accordingly', async () => { const { data: { Post: result }, } = await query({ diff --git a/webapp/assets/_new/styles/tokens.scss b/webapp/assets/_new/styles/tokens.scss index 863e0e0b7..22e0214ff 100644 --- a/webapp/assets/_new/styles/tokens.scss +++ b/webapp/assets/_new/styles/tokens.scss @@ -90,6 +90,9 @@ $background-color-primary-inverse: rgb(241, 253, 244); $background-color-secondary: rgb(0, 142, 230); $background-color-secondary-active: rgb(10, 161, 255); $background-color-secondary-inverse: rgb(240, 249, 255); +$background-color-third: rgb(126, 82, 204); +$background-color-third-active: rgb(160, 103, 255); +$background-color-third-inverse: rgb(239, 230, 255); $background-color-success: rgb(23, 181, 63); $background-color-success-active: rgb(26, 203, 71); $background-color-success-inverse: rgb(241, 253, 244); @@ -395,3 +398,12 @@ $color-toast-orange: $color-warning; $color-toast-yellow: $color-yellow; $color-toast-blue: $color-secondary; $color-toast-green: $color-success; + +/** + * @tokens Ribbon Color + */ + +$color-ribbon-event: $background-color-third; +$color-ribbon-event-active: $background-color-third-active; +$color-ribbon-article: $background-color-secondary; +$color-ribbon-article-active: $background-color-secondary-active; \ No newline at end of file diff --git a/webapp/components/FilterMenu/CategoriesFilter.vue b/webapp/components/FilterMenu/CategoriesFilter.vue index 8b96245fd..347994c9a 100644 --- a/webapp/components/FilterMenu/CategoriesFilter.vue +++ b/webapp/components/FilterMenu/CategoriesFilter.vue @@ -12,12 +12,12 @@
  • -
    - + + diff --git a/webapp/components/FilterMenu/FilterMenu.spec.js b/webapp/components/FilterMenu/FilterMenu.spec.js index c3a3ca113..30f970b62 100644 --- a/webapp/components/FilterMenu/FilterMenu.spec.js +++ b/webapp/components/FilterMenu/FilterMenu.spec.js @@ -15,6 +15,7 @@ describe('FilterMenu.vue', () => { const getters = { 'posts/isActive': () => false, + 'posts/filteredPostTypes': () => [], 'posts/orderBy': () => 'createdAt_desc', } diff --git a/webapp/components/FilterMenu/FilterMenuComponent.vue b/webapp/components/FilterMenu/FilterMenuComponent.vue index 708c3bc7c..9a52a9b98 100644 --- a/webapp/components/FilterMenu/FilterMenuComponent.vue +++ b/webapp/components/FilterMenu/FilterMenuComponent.vue @@ -6,6 +6,10 @@ +
    +

    {{ $t('filter-menu.eventsBy') }}

    + +

    {{ $t('filter-menu.order-by') }}

    @@ -14,6 +18,8 @@ diff --git a/webapp/components/FilterMenu/HeaderButton.vue b/webapp/components/FilterMenu/HeaderButton.vue index 780e29ade..dfacff43f 100644 --- a/webapp/components/FilterMenu/HeaderButton.vue +++ b/webapp/components/FilterMenu/HeaderButton.vue @@ -44,13 +44,12 @@ export default { diff --git a/webapp/locales/de.json b/webapp/locales/de.json index ff42de141..1b57fb0dc 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -272,7 +272,9 @@ "myFriends": "Nutzer denen ich folge", "myGroups": "Aus meinen Gruppen", "myTopics": "Meine Themen", - "noFilter": "Beiträge filtern" + "noFilter": "Inhalt filtern", + "onlyArticles": "Nur Beiträge", + "onlyEvents": "Nur Veranstaltungen" }, "filterMyGroups": "Beiträge in meinen Gruppen", "inappropriatePicture": "Dieses Bild kann für einige Menschen unangemessen sein.", @@ -378,31 +380,53 @@ }, "filter-menu": { "all": "Alle", - "article": "Artikel", + "article": "Beitrag", "categories": "Themen", + "creationDate": "Erstellungszeitpunkt", "deleteFilter": "Filter löschen", "emotions": "Emotionen", - "events": "Veranstaltungen", + "ended": { + "all": { + "hint": "Zeige alle, auch beendete", + "label": "Alle" + }, + "onlyEnded": { + "hint": "Zeige nur noch nicht beendete", + "label": "Nicht beendete" + } + }, + "event": "Veranstaltung", + "eventsBy": "Veranstaltungen – zeige ...", + "eventsEnded": "Beendet", "filter-by": "Filtern nach ...", "following": "Nutzer denen ich folge", "languages": "Sprachen", "my-groups": "Meinen Gruppen", "order": { + "last": { + "hint": "Sortiere die Letzten nach vorn", + "label": "Letzte zuerst" + }, "newest": { "hint": "Sortiere die Neuesten nach vorn", "label": "Neueste zuerst" }, + "next": { + "hint": "Sortiere die Nächsten nach vorn", + "label": "Nächste zuerst" + }, "oldest": { "hint": "Sortiere die Ältesten nach vorn", "label": "Älteste zuerst" } }, "order-by": "Sortieren nach ...", - "post-type": "Beitrags-Typ", + "post-type": "Inhaltstyp", "save": { "error": "Themen konnten nicht gespeichert werden!", "success": "Themen gespeichert!" - } + }, + "startDate": "Anfangszeitpunkt" }, "followButton": { "follow": "Folgen", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index 875da5358..4021c053a 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -272,7 +272,9 @@ "myFriends": "Users I follow", "myGroups": "By my groups", "myTopics": "My topics", - "noFilter": "Filter posts" + "noFilter": "Filter content", + "onlyArticles": "Only articles", + "onlyEvents": "Only events" }, "filterMyGroups": "Contributions in my groups", "inappropriatePicture": "This image may be inappropriate for some people.", @@ -380,29 +382,51 @@ "all": "All", "article": "Article", "categories": "Topics", + "creationDate": "Creation date", "deleteFilter": "Delete filter", "emotions": "Emotions", - "events": "Events", + "ended": { + "all": { + "hint": "Show all, also ended", + "label": "All" + }, + "onlyEnded": { + "hint": "Show only not ended", + "label": "Not ended" + } + }, + "event": "Event", + "eventsBy": "Events – show ...", + "eventsEnded": "Ended", "filter-by": "Filter by ...", "following": "Users I follow", "languages": "Languages", "my-groups": "My groups", "order": { + "last": { + "hint": "Sort posts by the last first", + "label": "Last first" + }, "newest": { "hint": "Sort posts by the newest first", "label": "Newest first" }, + "next": { + "hint": "Sort posts by the next first", + "label": "Next first" + }, "oldest": { "hint": "Sort posts by the oldest first", "label": "Oldest first" } }, "order-by": "Order by ...", - "post-type": "Post type", + "post-type": "Content type", "save": { "error": "Failed saving topic settings!", "success": "Topics saved!" - } + }, + "startDate": "Start date" }, "followButton": { "follow": "Follow", @@ -717,7 +741,7 @@ "unpin": "Unpin post", "unpinnedSuccessfully": "Post unpinned successfully!" }, - "name": "Post", + "name": "Article", "pinned": "Announcement", "takeAction": { "name": "Take action" diff --git a/webapp/pages/index.spec.js b/webapp/pages/index.spec.js index 8e55fada1..c16560a84 100644 --- a/webapp/pages/index.spec.js +++ b/webapp/pages/index.spec.js @@ -28,6 +28,10 @@ describe('PostIndex', () => { store = new Vuex.Store({ getters: { 'posts/filter': () => ({}), + 'posts/filteredPostTypes': () => [], + 'posts/articleSetInPostTypeFilter': () => false, + 'posts/eventSetInPostTypeFilter': () => false, + 'posts/eventsEnded': () => '', 'posts/orderBy': () => 'createdAt_desc', 'auth/user': () => { return { id: 'u23' } diff --git a/webapp/pages/index.vue b/webapp/pages/index.vue index 591da3300..7b5c4a903 100644 --- a/webapp/pages/index.vue +++ b/webapp/pages/index.vue @@ -25,6 +25,7 @@ + + + +
    -
    +
    @@ -120,6 +137,7 @@