diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 5faa72ea..28bece5d 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -63,6 +63,12 @@ aliases: deployment: prod script: - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-prod.git HEAD:master +- &deploy-prod-manual + name: deploy to prod on Heroku + deployment: prod + trigger: manual + script: + - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-prod.git HEAD:master - &deploy-dev name: deploy to dev on Heroku deployment: dev @@ -82,6 +88,7 @@ pipelines: - step: *unittest-python - step: *cypress-test - step: *jest-test + - step: *deploy-prod-manual develop: - step: *unittest-python diff --git a/client/package-lock.json b/client/package-lock.json index d6e213e0..61db2fe7 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9130,8 +9130,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -9149,13 +9148,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9168,18 +9165,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -9282,8 +9276,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -9293,7 +9286,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -9306,20 +9298,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.2.4", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -9336,7 +9325,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -9409,8 +9397,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -9420,7 +9407,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -9496,8 +9482,7 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -9527,7 +9512,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -9545,7 +9529,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -9584,13 +9567,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.2", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -11636,8 +11617,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -11680,8 +11660,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", @@ -11692,8 +11671,7 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -11810,8 +11788,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -11823,7 +11800,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -11853,7 +11829,6 @@ "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -11872,7 +11847,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -11966,7 +11940,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -12052,8 +12025,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -12089,7 +12061,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -12109,7 +12080,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -12153,14 +12123,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/client/src/components/content-blocks/ContentComponent.vue b/client/src/components/content-blocks/ContentComponent.vue index 9f40af6e..1ab9f46f 100644 --- a/client/src/components/content-blocks/ContentComponent.vue +++ b/client/src/components/content-blocks/ContentComponent.vue @@ -38,6 +38,7 @@ import Assignment from '@/components/content-blocks/assignment/Assignment'; import Survey from '@/components/content-blocks/SurveyBlock'; import Solution from '@/components/content-blocks/Solution'; + import Instruction from '@/components/content-blocks/Instruction'; import BookmarkActions from '@/components/notes/BookmarkActions'; import {constructContentComponentBookmarkMutation} from '@/helpers/update-content-bookmark-mutation'; @@ -63,6 +64,7 @@ 'thinglink_block': ThinglinkBlock, Survey, Solution, + Instruction, Assignment, BookmarkActions }, diff --git a/client/src/components/content-blocks/Instruction.vue b/client/src/components/content-blocks/Instruction.vue new file mode 100644 index 00000000..fc1be675 --- /dev/null +++ b/client/src/components/content-blocks/Instruction.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/client/src/components/icons/BulbIcon.vue b/client/src/components/icons/BulbIcon.vue new file mode 100644 index 00000000..edd73484 --- /dev/null +++ b/client/src/components/icons/BulbIcon.vue @@ -0,0 +1,13 @@ + diff --git a/client/src/components/icons/EhbLogo.vue b/client/src/components/icons/EhbLogo.vue new file mode 100644 index 00000000..1c01c0dc --- /dev/null +++ b/client/src/components/icons/EhbLogo.vue @@ -0,0 +1,84 @@ + + + diff --git a/client/src/components/icons/HepLogo.vue b/client/src/components/icons/HepLogo.vue new file mode 100644 index 00000000..7bf58ca5 --- /dev/null +++ b/client/src/components/icons/HepLogo.vue @@ -0,0 +1,47 @@ + + + diff --git a/client/src/graphql/gql/topicQuery.gql b/client/src/graphql/gql/topicQuery.gql index e3538f3f..a477166a 100644 --- a/client/src/graphql/gql/topicQuery.gql +++ b/client/src/graphql/gql/topicQuery.gql @@ -6,6 +6,7 @@ query Topic($slug: String!){ teaser description vimeoId + instructions modules { edges { node { diff --git a/client/src/layouts/DefaultFooter.vue b/client/src/layouts/DefaultFooter.vue new file mode 100644 index 00000000..bee5b558 --- /dev/null +++ b/client/src/layouts/DefaultFooter.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/client/src/layouts/DefaultLayout.vue b/client/src/layouts/DefaultLayout.vue index 33ca3f48..15328884 100644 --- a/client/src/layouts/DefaultLayout.vue +++ b/client/src/layouts/DefaultLayout.vue @@ -1,13 +1,15 @@ @@ -15,12 +17,14 @@ import HeaderBar from '@/components/HeaderBar'; import MobileHeader from '@/components/MobileHeader'; import ProfileSidebar from '@/components/profile/ProfileSidebar'; + import DefaultFooter from '@/layouts/DefaultFooter'; export default { components: { HeaderBar, MobileHeader, - ProfileSidebar + ProfileSidebar, + DefaultFooter }, computed: { @@ -39,5 +43,4 @@ @import "@/styles/_variables.scss"; @import "@/styles/_mixins.scss"; @import "@/styles/_default-layout.scss"; - diff --git a/client/src/layouts/FullScreenLayout.vue b/client/src/layouts/FullScreenLayout.vue index 446edf75..5a3ea3fa 100644 --- a/client/src/layouts/FullScreenLayout.vue +++ b/client/src/layouts/FullScreenLayout.vue @@ -1,10 +1,10 @@ diff --git a/client/src/layouts/PublicLayout.vue b/client/src/layouts/PublicLayout.vue index ce607d70..d42d53df 100644 --- a/client/src/layouts/PublicLayout.vue +++ b/client/src/layouts/PublicLayout.vue @@ -1,8 +1,8 @@ diff --git a/client/src/layouts/SimpleFooter.vue b/client/src/layouts/SimpleFooter.vue new file mode 100644 index 00000000..7145fcf9 --- /dev/null +++ b/client/src/layouts/SimpleFooter.vue @@ -0,0 +1,34 @@ + + + diff --git a/client/src/layouts/SimpleLayout.vue b/client/src/layouts/SimpleLayout.vue index 58442114..73535a98 100644 --- a/client/src/layouts/SimpleLayout.vue +++ b/client/src/layouts/SimpleLayout.vue @@ -1,13 +1,33 @@ + + - - diff --git a/client/src/pages/survey.vue b/client/src/pages/survey.vue index 36007749..a02d8590 100644 --- a/client/src/pages/survey.vue +++ b/client/src/pages/survey.vue @@ -59,10 +59,22 @@ if (!answer.answer) { return previous } + let answerText; + if (typeof answer.answer === 'object') { + // this means the answer comes from a matrix, where the keys are the labels and the values are the respective answers + let answerObject = answer.answer; + let keysAndValues = []; + for (let prop of Object.keys(answerObject)) { + keysAndValues.push(`${prop}: ${answerObject[prop]}`); + } + answerText = keysAndValues.join(', '); + } else { + answerText = answer.answer; + } return ` ${previous}

${answer.title}

-

${answer.answer}

+

${answerText}

` }, '') } diff --git a/client/src/pages/topic.vue b/client/src/pages/topic.vue index 091686a5..0aeace11 100644 --- a/client/src/pages/topic.vue +++ b/client/src/pages/topic.vue @@ -4,9 +4,16 @@

{{topic.teaser}}

-