From 9ee52cb5cd7db943d0fb11b7e5d4c8f1a65a7383 Mon Sep 17 00:00:00 2001 From: Ollie Hyde Date: Thu, 19 Mar 2026 17:17:45 +0000 Subject: [PATCH 1/9] Modified TemporalityCreateWikiWizardStep's primary button behavior and started creating the `KnowledgeEquityCreateWikiWizardStep` card Bug: T419210 --- src/components/Cards/CreateWiki.vue | 15 ++++++++- .../KnowledgeEquityCreateWikiWizardStep.vue | 11 +++++++ .../Cards/TemporalityCreateWikiWizardStep.vue | 33 +++++++++++++------ 3 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue diff --git a/src/components/Cards/CreateWiki.vue b/src/components/Cards/CreateWiki.vue index 59b4090f..f2ad7687 100644 --- a/src/components/Cards/CreateWiki.vue +++ b/src/components/Cards/CreateWiki.vue @@ -29,6 +29,17 @@ :error="error" v-model="stepThree" @previous-step="goToStep(2)" + @next-step="goToStep(4)" + @submit="createWiki" + /> + + @@ -39,13 +50,15 @@ import config from '~/config' import SiteDetailsCreateWikiWizardStep from './SiteDetailsCreateWikiWizardStep.vue' import AudienceAndPurposeWizardStep from './AudienceAndPurposeWizardStep.vue' import TemporalityCreateWikiWizardStep from './TemporalityCreateWikiWizardStep.vue' +import KnowledgeEquityCreateWikiWizardStep from './KnowledgeEquityCreateWikiWizardStep.vue' export default { name: 'CreateWiki', components: { SiteDetailsCreateWikiWizardStep, AudienceAndPurposeWizardStep, - TemporalityCreateWikiWizardStep + TemporalityCreateWikiWizardStep, + KnowledgeEquityCreateWikiWizardStep }, props: [ 'title' diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue new file mode 100644 index 00000000..c70acf60 --- /dev/null +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/Cards/TemporalityCreateWikiWizardStep.vue b/src/components/Cards/TemporalityCreateWikiWizardStep.vue index 98bffe82..8b75b3ce 100644 --- a/src/components/Cards/TemporalityCreateWikiWizardStep.vue +++ b/src/components/Cards/TemporalityCreateWikiWizardStep.vue @@ -81,9 +81,9 @@ type="button" color="primary" :disabled="inFlight" - @click="submitWholeForm" + @click="primaryBtnAction" > - Create Wiki + {{primaryBtnLabel}} @@ -98,26 +98,39 @@ export default { value: Object, error: Array }, + computed: { + primaryBtnLabel () { + if (this.value.temporality === 'permanent') { + return 'Next >' + } else { + return 'Create Wiki' + } + } + }, methods: { - previousStep () { + primaryBtnAction () { if (this.value.temporality !== 'other') { this.value.otherTemporality = undefined } - this.$emit('previous-step') + if (this.$refs.inputForm.validate() === false) { + return + } + + if (this.value.temporality === 'permanent') { + this.$emit('next-step') + } else { + this.$emit('submit') + } }, - submitWholeForm () { + previousStep () { if (this.value.temporality !== 'other') { this.value.otherTemporality = undefined } - this.$refs.inputForm.validate() - if (this.$refs.inputForm.validate() === true) { - this.$emit('submit') - } + this.$emit('previous-step') } } - } From 029ca664bb3d3f6052d182c300801db0fe82aa4e Mon Sep 17 00:00:00 2001 From: Ollie Hyde Date: Fri, 20 Mar 2026 10:55:03 +0000 Subject: [PATCH 2/9] Progress on KnowledgeEquityCreateWikiWizardStep --- src/components/Cards/CreateWiki.vue | 4 ++ .../KnowledgeEquityCreateWikiWizardStep.vue | 69 ++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/components/Cards/CreateWiki.vue b/src/components/Cards/CreateWiki.vue index f2ad7687..67db1622 100644 --- a/src/components/Cards/CreateWiki.vue +++ b/src/components/Cards/CreateWiki.vue @@ -87,6 +87,10 @@ export default { temporality: '', otherTemporality: '' }, + stepFour: { + selectedOption: '', + freeTextResponse: '' + }, hasError: false, error: [], inFlight: false, diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index c70acf60..90b9198c 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -5,7 +5,74 @@ - + +
+ We want to + + support knowledge equity + + in the Wikibase ecosystem and to understand who currently sees their Wikibase contributing towards it. + We welcome open responses and any additional feedback via our contact form + in addition to the options provided below. +
+ + + + + + + +
+ + + + < Previous + + + + Create Wiki + + + + From a8b4baf830b3ce58ffe0b51f3ba041bc392b8518 Mon Sep 17 00:00:00 2001 From: Thomas Arrow Date: Fri, 20 Mar 2026 12:00:13 +0000 Subject: [PATCH 3/9] add textarea and alert --- src/components/Cards/CreateWiki.vue | 6 +++++- .../Cards/KnowledgeEquityCreateWikiWizardStep.vue | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/Cards/CreateWiki.vue b/src/components/Cards/CreateWiki.vue index 67db1622..623b03c7 100644 --- a/src/components/Cards/CreateWiki.vue +++ b/src/components/Cards/CreateWiki.vue @@ -151,7 +151,11 @@ export default { domain: domainToSubmit, sitename: this.stepOne.sitename, username: this.stepOne.username, - profile: profileJsonString + profile: profileJsonString, + knowledgeEquityResponse: { + selectedOption: this.stepFour.selectedOption, + freeTextResponse: this.stepFour.freeTextResponse + } } ) .then(wikiDetails => this.createSuccess(wikiDetails)) diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index 90b9198c..5343d617 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -29,6 +29,18 @@ + + + Please avoid sharing any personal or sensitive information. This information will be visible to WMDE employees and external members of the review committee. + From d78b30ee0dde1d0adc20887db26037ed470a8c25 Mon Sep 17 00:00:00 2001 From: Thomas Arrow Date: Fri, 20 Mar 2026 12:11:01 +0000 Subject: [PATCH 4/9] add review committee link --- src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index 5343d617..3b6a2805 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -39,7 +39,7 @@ outlined type="warning" > - Please avoid sharing any personal or sensitive information. This information will be visible to WMDE employees and external members of the review committee. + Please avoid sharing any personal or sensitive information. This information will be visible to WMDE employees and external members of the review committee. From 016c4d7fc9eaef524637a4d4b6abf6d5a5d0f0ae Mon Sep 17 00:00:00 2001 From: Ollie Hyde Date: Fri, 20 Mar 2026 14:41:49 +0000 Subject: [PATCH 5/9] Improve the layout and styling --- .../KnowledgeEquityCreateWikiWizardStep.vue | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index 3b6a2805..62975306 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -6,11 +6,10 @@ -
+
We want to - support knowledge equity - + support knowledge equity in the Wikibase ecosystem and to understand who currently sees their Wikibase contributing towards it. We welcome open responses and any additional feedback via our contact form in addition to the options provided below. @@ -22,22 +21,27 @@ :rules="[() => !!value.selectedOption || 'Please select an option.']" > + + :rules="[() => !!(value.freeTextResponse && value.freeTextResponse.length <= 3000) || 'Text must be 3000 characters or less.' ]" + /> Please avoid sharing any personal or sensitive information. This information will be visible to WMDE employees and external members of the review committee. @@ -52,7 +56,6 @@ > < Previous - + + From f1f4cfe559fb85f218aae9c5ddabddb7fd46d636 Mon Sep 17 00:00:00 2001 From: Ollie Hyde Date: Fri, 20 Mar 2026 14:47:19 +0000 Subject: [PATCH 6/9] Make text area optional --- src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index 62975306..f437856d 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -35,7 +35,7 @@ placeholder="If you’d like, please tell us in what way(s). For example, through the knowledge it contributes and/or the people holding and sharing it." counter="3000" v-model="value.freeTextResponse" - :rules="[() => !!(value.freeTextResponse && value.freeTextResponse.length <= 3000) || 'Text must be 3000 characters or less.' ]" + :rules="[() => value.freeTextResponse.length <= 3000 || 'Text must be 3000 characters or less.' ]" /> Date: Fri, 20 Mar 2026 15:57:51 +0000 Subject: [PATCH 7/9] Fix building of createWiki request body --- src/components/Cards/CreateWiki.vue | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/components/Cards/CreateWiki.vue b/src/components/Cards/CreateWiki.vue index 623b03c7..4bbe47fc 100644 --- a/src/components/Cards/CreateWiki.vue +++ b/src/components/Cards/CreateWiki.vue @@ -136,7 +136,7 @@ export default { domainToSubmit = this.stepOne.domain } - const profileJSObject = { + const profileObject = { purpose: this.stepTwo.purpose, ...(this.stepTwo.otherPurpose && { purpose_other: this.stepTwo.otherPurpose }), ...(this.stepTwo.audience && { audience: this.stepTwo.audience }), @@ -144,20 +144,22 @@ export default { temporality: this.stepThree.temporality, ...(this.stepThree.otherTemporality && { temporality_other: this.stepThree.otherTemporality }) } - const profileJsonString = JSON.stringify(profileJSObject) - this.$api.createWiki( - { - domain: domainToSubmit, - sitename: this.stepOne.sitename, - username: this.stepOne.username, - profile: profileJsonString, - knowledgeEquityResponse: { - selectedOption: this.stepFour.selectedOption, - freeTextResponse: this.stepFour.freeTextResponse - } + const requestBody = { + domain: domainToSubmit, + sitename: this.stepOne.sitename, + username: this.stepOne.username, + profile: JSON.stringify(profileObject) + } + + if (this.stepThree.temporality === 'permanent' && this.stepFour.selectedOption) { + requestBody.knowledgeEquityResponse = { + selectedOption: this.stepFour.selectedOption, + freeTextResponse: this.stepFour.freeTextResponse } - ) + } + + this.$api.createWiki(requestBody) .then(wikiDetails => this.createSuccess(wikiDetails)) .catch(errors => this.createFail(errors)) }, From 00d26fb30ae692f556c20be047f6c53fa2a58aef Mon Sep 17 00:00:00 2001 From: Ollie Hyde Date: Fri, 20 Mar 2026 17:08:01 +0000 Subject: [PATCH 8/9] Minor code refactor for esaier parsing --- src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index f437856d..41dfe4bb 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -43,7 +43,8 @@ type="warning" icon="mdi-alert-outline" > - Please avoid sharing any personal or sensitive information. This information will be visible to WMDE employees and external members of the review committee. + Please avoid sharing any personal or sensitive information. This information will be visible to WMDE employees and external members of the + review committee. From c36cbdf32b8bed9d2f88d2a77dfc0bd561add9e8 Mon Sep 17 00:00:00 2001 From: Ollie Hyde Date: Fri, 20 Mar 2026 17:27:26 +0000 Subject: [PATCH 9/9] eslint: require trailing comma on multiline objects and arrays This is benefitial for the following reasons: * improves clarity of diffs when an item is added or removed from an object or array * reduces the chances of having merge conficts, since only the lines you are modifying are touched * simplifies adding and removing items to objects and arrays, since only the lines you are modifying must be touched --- .eslintrc.js | 1 + src/App.vue | 8 +-- src/backend/api.js | 16 +++--- src/backend/axios.js | 4 +- src/backend/index.js | 2 +- src/backend/mocks/default_handlers.js | 34 ++++++------ .../Cards/AudienceAndPurposeWizardStep.vue | 8 +-- src/components/Cards/CreateAccount.vue | 12 ++--- src/components/Cards/CreateWiki.vue | 28 +++++----- src/components/Cards/ForgottenPassword.vue | 10 ++-- .../KnowledgeEquityCreateWikiWizardStep.vue | 6 +-- src/components/Cards/Login.vue | 10 ++-- src/components/Cards/ResetPassword.vue | 10 ++-- .../Cards/SiteDetailsCreateWikiWizardStep.vue | 6 +-- .../Cards/TemporalityCreateWikiWizardStep.vue | 8 +-- src/components/Layout/Foot.vue | 2 +- src/components/Layout/Navbar.vue | 4 +- src/components/Pages/About.vue | 2 +- src/components/Pages/Complaint.vue | 8 +-- src/components/Pages/Contact.vue | 10 ++-- src/components/Pages/CreateAccount.vue | 4 +- src/components/Pages/CreateWiki.vue | 4 +- src/components/Pages/Dashboard.vue | 8 +-- .../Discovery/Components/DiscoveryCard.vue | 18 +++---- .../Discovery/Components/MasonryGrid.vue | 6 +-- src/components/Pages/Discovery/Discovery.vue | 30 +++++------ src/components/Pages/EmailVerification.vue | 8 +-- src/components/Pages/ForgottenPassword.vue | 4 +- .../Pages/Home/Components/DiscoveryCard.vue | 12 ++--- .../Pages/Home/Components/DiscoveryView.vue | 4 +- .../Home/Components/DynamicContainerView.vue | 4 +- .../Home/Components/DynamicPhotoTextView.vue | 12 ++--- .../Pages/Home/Components/HeroView.vue | 14 ++--- .../Pages/Home/Components/PhotoTextView.vue | 14 ++--- src/components/Pages/Home/Home.vue | 4 +- src/components/Pages/Login.vue | 4 +- src/components/Pages/Logout.vue | 4 +- .../Pages/ManageWiki/Cards/ConfirmDelete.vue | 8 +-- .../Pages/ManageWiki/Cards/Delete.vue | 6 +-- .../Pages/ManageWiki/Cards/Details.vue | 10 ++-- .../Pages/ManageWiki/Cards/EntityImport.vue | 12 ++--- .../Pages/ManageWiki/Cards/Logo.vue | 10 ++-- .../Pages/ManageWiki/Cards/Profile.vue | 34 ++++++------ .../Pages/ManageWiki/Cards/QuestyCaptcha.vue | 18 +++---- .../Pages/ManageWiki/Cards/Registration.vue | 8 +-- .../Pages/ManageWiki/Cards/Skin.vue | 20 +++---- .../TemporalityProfileEditWizardStep.vue | 6 +-- .../Pages/ManageWiki/Cards/Wikibase.vue | 16 +++--- .../ManageWiki/Features/EntityMapping.vue | 10 ++-- .../Pages/ManageWiki/Features/EntityTable.vue | 20 +++---- .../Pages/ManageWiki/Features/Lexeme.vue | 8 +-- .../Pages/ManageWiki/Features/Message.vue | 6 +-- .../Pages/ManageWiki/TabSettings.vue | 8 +-- .../Pages/ManageWiki/Tabs/ManageFeatures.vue | 4 +- .../Pages/ManageWiki/Tabs/ManageProfile.vue | 6 +-- .../Pages/ManageWiki/Tabs/ManageWiki.vue | 6 +-- src/components/Pages/Privacy/Privacy.vue | 2 +- src/components/Pages/ResetPassword.vue | 6 +-- src/components/Pages/TermsOfUse.vue | 2 +- src/components/Pages/User.vue | 8 +-- src/components/Util/Interval.vue | 6 +-- src/config.js | 2 +- src/config.template.js | 2 +- src/main.js | 8 +-- src/mixins/FlexboxWrapEvent.js | 6 +-- src/router/index.js | 54 +++++++++---------- src/store/auth.js | 10 ++-- src/store/index.js | 4 +- src/store/user.js | 10 ++-- src/store/wikis.js | 18 +++---- tests/e2e/.eslintrc.js | 6 +-- tests/e2e/pageobjects/discovery.page.js | 6 +-- tests/e2e/specs/discovery.spec.js | 14 ++--- 73 files changed, 361 insertions(+), 362 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 19b6f90c..41e378d0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,6 +11,7 @@ module.exports = { parser: '@babel/eslint-parser' }, rules: { + 'comma-dangle': ['error', 'always-multiline'], 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'vue/multi-word-component-names': 'warn', diff --git a/src/App.vue b/src/App.vue index 1b0eee5e..10c8317b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -24,20 +24,20 @@ export default { components: { Navbar, Foot, - Interval + Interval, }, computed: { customLayout: function () { return this.$route.meta.customLayout - } + }, }, methods: { checkVerified () { this.$api .checkVerified() .then(verified => verified && this.$store.dispatch('markAsVerified')) - } - } + }, + }, } diff --git a/src/backend/api.js b/src/backend/api.js index df8c397e..59831217 100644 --- a/src/backend/api.js +++ b/src/backend/api.js @@ -75,9 +75,9 @@ export const updateLogo = async ({ file, fileName, wikiId }) => { form, { headers: { - 'Content-Type': 'multipart/form-data' - } - } + 'Content-Type': 'multipart/form-data', + }, + }, ) } // TODO the api should get the setting from the path (so it isn't needed in the payload) @@ -93,8 +93,8 @@ export const wikiDiscovery = async ({ sort, direction, active, currentPage, resu direction: direction, is_active: active, page: currentPage, - per_page: resultsPerPage - } + per_page: resultsPerPage, + }, })).data } @@ -112,14 +112,14 @@ export const importEntities = async ({ 'Q5@2212749099', 'Q64@2215506799', 'Q42@2213635313', - 'Q3107329@2211072210' + 'Q3107329@2211072210', ], - sourceWikiUrl = 'https://www.wikidata.org' + sourceWikiUrl = 'https://www.wikidata.org', }) => { const { data: { data } } = await axios.post('/wiki/entityImport', { wiki: wikiId, entity_ids: entityIds.join(','), - source_wiki_url: sourceWikiUrl + source_wiki_url: sourceWikiUrl, }) return data } diff --git a/src/backend/axios.js b/src/backend/axios.js index 6b393205..4c866b35 100644 --- a/src/backend/axios.js +++ b/src/backend/axios.js @@ -3,8 +3,8 @@ import Axios from 'axios' const axios = Axios.create({ baseURL: '/api', headers: { - 'Content-Type': 'application/json' - } + 'Content-Type': 'application/json', + }, }) export default axios diff --git a/src/backend/index.js b/src/backend/index.js index ca361d96..dca47ecb 100644 --- a/src/backend/index.js +++ b/src/backend/index.js @@ -3,5 +3,5 @@ import axios from './axios' export { api, - axios + axios, } diff --git a/src/backend/mocks/default_handlers.js b/src/backend/mocks/default_handlers.js index 86f5f97f..75c693ab 100644 --- a/src/backend/mocks/default_handlers.js +++ b/src/backend/mocks/default_handlers.js @@ -11,7 +11,7 @@ function makeUser (email = 'test@local') { email: email, verified: true, created_at: '2020-01-01', - updated_at: '2020-01-01' + updated_at: '2020-01-01', } } @@ -25,21 +25,21 @@ const makeNewWiki = ({ domain, sitename }) => { updated_at: '2020-01-01', pivot: { user_id: user.id, - wiki_id: lastWikiId + wiki_id: lastWikiId, }, wiki_managers: [{ email: user.email, pivot: { user_id: user.id, - wiki_id: lastWikiId - } + wiki_id: lastWikiId, + }, }], wiki_db_version: { id: 101, wiki_id: lastWikiId, - version: 'mw1.33-wbs1' + version: 'mw1.33-wbs1', }, - public_settings: [] + public_settings: [], } myWikis.push(newWiki) @@ -59,12 +59,12 @@ const wikiDiscovery = (referrer, params) => { next: function () { const x = Math.sin(this.seed++) * 10000 return x - Math.floor(x) - } + }, } const names = [ 'Wikibase Name', - 'A Very Long Wikibase Name' + 'A Very Long Wikibase Name', ] let wikis = [...Array(75).keys()].map((id) => { @@ -73,12 +73,12 @@ const wikiDiscovery = (referrer, params) => { domain: id + '-wikibase.wbaas.localhost', sitename: id + ' - ' + names[id % names.length], wiki_site_stats: null, - logo_url: null + logo_url: null, } if (pseudorandom.next() >= 0.1) { wiki.wiki_site_stats = { - pages: Math.ceil(pseudorandom.next() * 250) + pages: Math.ceil(pseudorandom.next() * 250), } } @@ -125,8 +125,8 @@ const wikiDiscovery = (referrer, params) => { data: wikis.slice(start, end), meta: { last_page: Math.ceil(wikis.length / resultsPerPage), - total: wikis.length - } + total: wikis.length, + }, } } @@ -135,7 +135,7 @@ export const handlers = [ rest.post(/\/api\/auth\/login$/, (req, res, ctx) => { user = makeUser(req.body.email) return res(ctx.json({ - user + user, }), ctx.cookie('authToken', 'token_value')) }), rest.get(/\/api\/auth\/login$/, (req, res, ctx) => { @@ -145,7 +145,7 @@ export const handlers = [ } user = makeUser(req.body.email) return res(ctx.json({ - user + user, })) }), rest.delete(/\/api\/auth\/login$/, (req, res, ctx) => { @@ -157,7 +157,7 @@ export const handlers = [ return res(ctx.status(400, 'Mocked Server Error')) } return res(ctx.status(200)) - } + }, ), rest.post(/\/api\/user\/resetPassword$/, (_, res, ctx) => res(ctx.status(200))), rest.post(/\/api\/user\/sendVerifyEmail$/, (_, res, ctx) => res(ctx.json({ message: 'Already verified' }))), @@ -174,7 +174,7 @@ export const handlers = [ return res(ctx.status(400, 'Mocked recaptcha empty Error')) } return res(ctx.status(200)) - } + }, ), /* Wiki endpoints */ @@ -219,5 +219,5 @@ export const handlers = [ }), rest.get(/\/api\/wiki$/, (req, res, ctx) => { return res(ctx.json(wikiDiscovery(req.referrer, req.url.searchParams))) - }) + }), ] diff --git a/src/components/Cards/AudienceAndPurposeWizardStep.vue b/src/components/Cards/AudienceAndPurposeWizardStep.vue index e5a8bc91..dc75d3eb 100644 --- a/src/components/Cards/AudienceAndPurposeWizardStep.vue +++ b/src/components/Cards/AudienceAndPurposeWizardStep.vue @@ -120,14 +120,14 @@ export default { title: String, inFlight: Boolean, value: Object, - dismissable: Boolean + dismissable: Boolean, }, data () { return { purposeError: '', audienceError: '', purposeOtherError: '', - audienceOtherError: '' + audienceOtherError: '', } }, methods: { @@ -145,8 +145,8 @@ export default { if (this.$refs.inputForm.validate() === true) { this.$emit('next-step') } - } - } + }, + }, } diff --git a/src/components/Cards/CreateAccount.vue b/src/components/Cards/CreateAccount.vue index 552e760b..ca970f32 100644 --- a/src/components/Cards/CreateAccount.vue +++ b/src/components/Cards/CreateAccount.vue @@ -89,13 +89,13 @@ export default { name: 'CreateAccountCard', props: [ 'title', - 'buttonText' + 'buttonText', ], components: {}, computed: { isLoggedIn: function () { return this.$store.getters.isLoggedIn - } + }, }, data () { return { @@ -105,7 +105,7 @@ export default { terms: false, hasError: false, error: [], - inFlight: false + inFlight: false, } }, created () { @@ -165,7 +165,7 @@ export default { { email: this.email, password: this.password, - recaptcha: token + recaptcha: token, }) .then(success => this.createSuccessful(success)) .catch(errors => { @@ -214,8 +214,8 @@ export default { if (this.isLoggedIn) { this.$router.replace(this.$route.query.redirect || '/dashboard') } - } - } + }, + }, } diff --git a/src/components/Cards/CreateWiki.vue b/src/components/Cards/CreateWiki.vue index 4bbe47fc..7b15e0a4 100644 --- a/src/components/Cards/CreateWiki.vue +++ b/src/components/Cards/CreateWiki.vue @@ -58,15 +58,15 @@ export default { SiteDetailsCreateWikiWizardStep, AudienceAndPurposeWizardStep, TemporalityCreateWikiWizardStep, - KnowledgeEquityCreateWikiWizardStep + KnowledgeEquityCreateWikiWizardStep, }, props: [ - 'title' + 'title', ], computed: { currentUser: function () { return this.$store.getters.currentUser - } + }, }, data () { return { @@ -75,21 +75,21 @@ export default { domainRadioChoice: 'sub', subdomain: '', domain: '', - username: '' + username: '', }, stepTwo: { purpose: '', otherPurpose: '', audience: '', - otherAudience: '' + otherAudience: '', }, stepThree: { temporality: '', - otherTemporality: '' + otherTemporality: '', }, stepFour: { selectedOption: '', - freeTextResponse: '' + freeTextResponse: '', }, hasError: false, error: [], @@ -98,9 +98,9 @@ export default { CNAME_RECORD: config.CNAME_RECORD, errorMessages: { domainTaken: 'The domain has already been taken.', - domainFormat: 'The subdomain must be at least five characters long and may contain only lowercase Latin letters (a-z), digits (0-9) and hyphens (-).' + domainFormat: 'The subdomain must be at least five characters long and may contain only lowercase Latin letters (a-z), digits (0-9) and hyphens (-).', }, - step: 1 + step: 1, } }, created () { @@ -142,20 +142,20 @@ export default { ...(this.stepTwo.audience && { audience: this.stepTwo.audience }), ...(this.stepTwo.otherAudience && { audience_other: this.stepTwo.otherAudience }), temporality: this.stepThree.temporality, - ...(this.stepThree.otherTemporality && { temporality_other: this.stepThree.otherTemporality }) + ...(this.stepThree.otherTemporality && { temporality_other: this.stepThree.otherTemporality }), } const requestBody = { domain: domainToSubmit, sitename: this.stepOne.sitename, username: this.stepOne.username, - profile: JSON.stringify(profileObject) + profile: JSON.stringify(profileObject), } if (this.stepThree.temporality === 'permanent' && this.stepFour.selectedOption) { requestBody.knowledgeEquityResponse = { selectedOption: this.stepFour.selectedOption, - freeTextResponse: this.stepFour.freeTextResponse + freeTextResponse: this.stepFour.freeTextResponse, } } @@ -216,8 +216,8 @@ export default { if (!this.currentUser) { this.$router.replace(this.$route.query.redirect || '/') } - } - } + }, + }, } diff --git a/src/components/Cards/ForgottenPassword.vue b/src/components/Cards/ForgottenPassword.vue index 3f53b003..61831421 100644 --- a/src/components/Cards/ForgottenPassword.vue +++ b/src/components/Cards/ForgottenPassword.vue @@ -42,12 +42,12 @@ export default { name: 'ForgottenPasswordCard', props: [ 'title', - 'buttonText' + 'buttonText', ], data () { return { email: '', - inFlight: false + inFlight: false, } }, created () { @@ -63,7 +63,7 @@ export default { }, error: function () { return this.$store.getters.lastForgottenPasswordError - } + }, }, methods: { redirectIfLoggedIn () { @@ -81,8 +81,8 @@ export default { this.$store .dispatch('forgottenPassword', { email }) - } - } + }, + }, } diff --git a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue index 41dfe4bb..01efcb1f 100644 --- a/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue +++ b/src/components/Cards/KnowledgeEquityCreateWikiWizardStep.vue @@ -76,7 +76,7 @@ export default { title: String, inFlight: Boolean, value: Object, - error: Array + error: Array, }, methods: { previousStep () { @@ -88,8 +88,8 @@ export default { } this.$emit('submit') - } - } + }, + }, } diff --git a/src/components/Cards/Login.vue b/src/components/Cards/Login.vue index 76ea3489..2e8eddb5 100644 --- a/src/components/Cards/Login.vue +++ b/src/components/Cards/Login.vue @@ -50,14 +50,14 @@ export default { name: 'LoginCard', props: [ 'title', - 'buttonText' + 'buttonText', ], data () { return { email: '', password: '', errorMessage: '', - loggingIn: false + loggingIn: false, } }, created () { @@ -66,7 +66,7 @@ export default { computed: { isLoggedIn: function () { return this.$store.getters.isLoggedIn - } + }, }, methods: { redirectIfLoggedIn () { @@ -97,8 +97,8 @@ export default { this.loggingIn = false }) - } - } + }, + }, } diff --git a/src/components/Cards/ResetPassword.vue b/src/components/Cards/ResetPassword.vue index 47793f38..0fc654da 100644 --- a/src/components/Cards/ResetPassword.vue +++ b/src/components/Cards/ResetPassword.vue @@ -43,7 +43,7 @@ export default { 'title', 'email', 'token', - 'buttonText' + 'buttonText', ], data () { return { @@ -51,7 +51,7 @@ export default { passwordConfirmation: '', error: [], hasError: false, - inFlight: false + inFlight: false, } }, created () { @@ -60,7 +60,7 @@ export default { computed: { isLoggedIn: function () { return this.$store.getters.isLoggedIn - } + }, }, methods: { redirectIfLoggedIn () { @@ -116,8 +116,8 @@ export default { this.inFlight = false }) - } - } + }, + }, } diff --git a/src/components/Cards/SiteDetailsCreateWikiWizardStep.vue b/src/components/Cards/SiteDetailsCreateWikiWizardStep.vue index 3d9c06a5..a9905d14 100644 --- a/src/components/Cards/SiteDetailsCreateWikiWizardStep.vue +++ b/src/components/Cards/SiteDetailsCreateWikiWizardStep.vue @@ -122,14 +122,14 @@ export default { error: Array, SUBDOMAIN_SUFFIX: String, CNAME_RECORD: String, - errorMessages: Object + errorMessages: Object, }, methods: { nextStep () { if (this.$refs.inputForm.validate() === true) { this.$emit('next-step') } - } - } + }, + }, } diff --git a/src/components/Cards/TemporalityCreateWikiWizardStep.vue b/src/components/Cards/TemporalityCreateWikiWizardStep.vue index 8b75b3ce..90c22402 100644 --- a/src/components/Cards/TemporalityCreateWikiWizardStep.vue +++ b/src/components/Cards/TemporalityCreateWikiWizardStep.vue @@ -96,7 +96,7 @@ export default { title: String, inFlight: Boolean, value: Object, - error: Array + error: Array, }, computed: { primaryBtnLabel () { @@ -105,7 +105,7 @@ export default { } else { return 'Create Wiki' } - } + }, }, methods: { primaryBtnAction () { @@ -129,8 +129,8 @@ export default { } this.$emit('previous-step') - } - } + }, + }, } diff --git a/src/components/Layout/Foot.vue b/src/components/Layout/Foot.vue index 73691815..472c98d8 100644 --- a/src/components/Layout/Foot.vue +++ b/src/components/Layout/Foot.vue @@ -31,7 +31,7 @@ diff --git a/src/components/Layout/Navbar.vue b/src/components/Layout/Navbar.vue index 0f67af25..d978675d 100644 --- a/src/components/Layout/Navbar.vue +++ b/src/components/Layout/Navbar.vue @@ -67,8 +67,8 @@ export default { }, currentUser: function () { return this.$store.getters.currentUser - } - } + }, + }, } diff --git a/src/components/Pages/About.vue b/src/components/Pages/About.vue index 1aaae938..fd949aa5 100644 --- a/src/components/Pages/About.vue +++ b/src/components/Pages/About.vue @@ -19,7 +19,7 @@ export default { name: 'About', created () { window.location.href = 'https://wikiba.se/about-us/' - } + }, } diff --git a/src/components/Pages/Complaint.vue b/src/components/Pages/Complaint.vue index 9facd084..2982d792 100644 --- a/src/components/Pages/Complaint.vue +++ b/src/components/Pages/Complaint.vue @@ -104,7 +104,7 @@ export default { email: '', successMessage: false, errorMessage: false, - accepted: false + accepted: false, }), methods: { @@ -125,7 +125,7 @@ export default { url, email, message, - recaptcha + recaptcha, }) .then(success => this.createSuccessful()) .catch(errors => { @@ -170,8 +170,8 @@ export default { this.hasError = true this.error.inputName = error this.error.inputSubject = error - } - } + }, + }, } diff --git a/src/components/Pages/Contact.vue b/src/components/Pages/Contact.vue index 19587db4..b5251f4c 100644 --- a/src/components/Pages/Contact.vue +++ b/src/components/Pages/Contact.vue @@ -79,14 +79,14 @@ export default { { text: 'Feature request', value: 'feature-request' }, { text: 'Report a problem', value: 'report-a-problem' }, { text: 'Give feedback', value: 'give-feedback' }, - { text: 'Other', value: 'other' } + { text: 'Other', value: 'other' }, ], name: '', contactDetails: '', subject: '', message: '', successMessage: false, - errorMessage: false + errorMessage: false, }), methods: { closeAlert () { @@ -106,7 +106,7 @@ export default { subject: subject, contactDetails: contactDetails, message: message, - recaptcha: recaptcha + recaptcha: recaptcha, }) .then(success => this.createSuccessful()) .catch(errors => { @@ -145,8 +145,8 @@ export default { this.hasError = true this.error.inputName = error this.error.inputSubject = error - } - } + }, + }, } diff --git a/src/components/Pages/CreateAccount.vue b/src/components/Pages/CreateAccount.vue index e3563433..e473334d 100644 --- a/src/components/Pages/CreateAccount.vue +++ b/src/components/Pages/CreateAccount.vue @@ -25,11 +25,11 @@ import CreateAccountCard from '~/components/Cards/CreateAccount' export default { name: 'CreateAccount', components: { - CreateAccountCard + CreateAccountCard, }, data () { return {} - } + }, } diff --git a/src/components/Pages/CreateWiki.vue b/src/components/Pages/CreateWiki.vue index e981a0f7..f73cc515 100644 --- a/src/components/Pages/CreateWiki.vue +++ b/src/components/Pages/CreateWiki.vue @@ -16,11 +16,11 @@ import CreateWikiCard from '~/components/Cards/CreateWiki' export default { name: 'CreateWiki', components: { - CreateWikiCard + CreateWikiCard, }, data () { return {} - } + }, } diff --git a/src/components/Pages/Dashboard.vue b/src/components/Pages/Dashboard.vue index 31025bd1..0ab4f66d 100644 --- a/src/components/Pages/Dashboard.vue +++ b/src/components/Pages/Dashboard.vue @@ -59,8 +59,8 @@ export default { stats: [ 'Active Wikis: 100+', 'Edits: 1.7+ million', - 'Pages: 1.3+ million' - ] + 'Pages: 1.3+ million', + ], } }, computed: { @@ -78,11 +78,11 @@ export default { }, status: function () { return this.$store.getters.wikisStatus - } + }, }, created () { this.$store.dispatch('refreshWikis') - } + }, } diff --git a/src/components/Pages/Discovery/Components/DiscoveryCard.vue b/src/components/Pages/Discovery/Components/DiscoveryCard.vue index 7b8c0aa4..3efc9cfa 100644 --- a/src/components/Pages/Discovery/Components/DiscoveryCard.vue +++ b/src/components/Pages/Discovery/Components/DiscoveryCard.vue @@ -24,24 +24,24 @@ export default { props: { name: { type: String, - required: true + required: true, }, url: { type: URL, - required: true + required: true, }, logo: { type: URL, - required: false + required: false, }, stats: { type: Boolean, - required: true + required: true, }, pages: { type: Number, - required: false - } + required: false, + }, }, computed: { character: function () { @@ -50,13 +50,13 @@ export default { color: function () { const colors = ['red', 'blue', 'green', 'purple'] return this.logo ? 'white' : colors[Math.floor(Math.random() * colors.length)] - } + }, }, methods: { goToWiki () { window.open(this.url.href, '_blank') - } - } + }, + }, } diff --git a/src/components/Pages/Discovery/Components/MasonryGrid.vue b/src/components/Pages/Discovery/Components/MasonryGrid.vue index 0cf5e6f8..be2f11c9 100644 --- a/src/components/Pages/Discovery/Components/MasonryGrid.vue +++ b/src/components/Pages/Discovery/Components/MasonryGrid.vue @@ -9,7 +9,7 @@ export default { name: 'MasonryGrid', data () { return { - timer: null + timer: null, } }, methods: { @@ -34,7 +34,7 @@ export default { }, windowResized () { this.debounceResize(50) - } + }, }, created () { window.addEventListener('resize', this.windowResized) @@ -46,7 +46,7 @@ export default { this.$nextTick(() => { this.resizeCards() }) - } + }, } diff --git a/src/components/Pages/Discovery/Discovery.vue b/src/components/Pages/Discovery/Discovery.vue index ba44be1a..9728e523 100644 --- a/src/components/Pages/Discovery/Discovery.vue +++ b/src/components/Pages/Discovery/Discovery.vue @@ -57,30 +57,30 @@ const SortOptions = { text: 'Alphabetically ↑', value: { direction: 'asc', - sort: 'sitename' - } + sort: 'sitename', + }, }, alphaDesc: { text: 'Alphabetically ↓', value: { direction: 'desc', - sort: 'sitename' - } + sort: 'sitename', + }, }, pagesDesc: { text: 'No. of pages ↓', value: { direction: 'desc', - sort: 'pages' - } - } + sort: 'pages', + }, + }, } export default { name: 'Discovery', components: { DiscoveryCard, - MasonryGrid + MasonryGrid, }, data () { return { @@ -92,7 +92,7 @@ export default { sortValue: SortOptions.pagesDesc.value, sortOptions: Object.values(SortOptions), inputDisabled: false, - wikis: [] + wikis: [], } }, methods: { @@ -105,7 +105,7 @@ export default { direction: this.sortValue.direction, active: this.excludeEmpty ? 1 : 0, currentPage: this.currentPage, - resultsPerPage: this.resultsPerPage + resultsPerPage: this.resultsPerPage, }) this.results = response.meta.total @@ -117,7 +117,7 @@ export default { url: new URL('https://' + wiki.domain), logo: wiki.logo_url ? new URL(wiki.logo_url) : undefined, stats: !!stats, - ...(stats && { pages: stats.pages }) + ...(stats && { pages: stats.pages }), } }) } catch (error) { @@ -133,12 +133,12 @@ export default { } else { this.currentPage = 1 } - } + }, }, computed: { paginate: function () { return this.results > this.resultsPerPage - } + }, }, watch: { sortValue: function () { @@ -156,11 +156,11 @@ export default { document.documentElement.scrollIntoView({ behavior: 'smooth' }) }) }) - } + }, }, mounted () { this.update() - } + }, } diff --git a/src/components/Pages/EmailVerification.vue b/src/components/Pages/EmailVerification.vue index 0d5e6c51..07096742 100644 --- a/src/components/Pages/EmailVerification.vue +++ b/src/components/Pages/EmailVerification.vue @@ -17,7 +17,7 @@ const STATES = Object.freeze({ PENDING: { color: 'primary', message: 'Verifying...' }, EXPIRED_TOKEN: { color: 'orange', message: 'Verification token expired, or you are already verified!' }, FAILED: { color: 'red', message: 'Verification failed for unknown reason!' }, - VERIFIED: { color: '', message: 'Email verified!' } + VERIFIED: { color: '', message: 'Email verified!' }, }) export default { @@ -25,7 +25,7 @@ export default { computed: {}, data () { return { - state: this.$store.getters.currentUser.verified ? STATES.VERIFIED : STATES.PENDING + state: this.$store.getters.currentUser.verified ? STATES.VERIFIED : STATES.PENDING, } }, created () { @@ -46,8 +46,8 @@ export default { } else { this.state = STATES.FAILED } - } - } + }, + }, } diff --git a/src/components/Pages/ForgottenPassword.vue b/src/components/Pages/ForgottenPassword.vue index ea58fcde..0a71abc7 100644 --- a/src/components/Pages/ForgottenPassword.vue +++ b/src/components/Pages/ForgottenPassword.vue @@ -20,11 +20,11 @@ import ForgottenPasswordCard from '~/components/Cards/ForgottenPassword' export default { name: 'ForgottenPassword', components: { - ForgottenPasswordCard + ForgottenPasswordCard, }, data () { return {} - } + }, } diff --git a/src/components/Pages/Home/Components/DiscoveryCard.vue b/src/components/Pages/Home/Components/DiscoveryCard.vue index 43cc174d..c8c230ec 100644 --- a/src/components/Pages/Home/Components/DiscoveryCard.vue +++ b/src/components/Pages/Home/Components/DiscoveryCard.vue @@ -22,24 +22,24 @@ export default { props: { name: { type: String, - required: true + required: true, }, url: { type: String, - required: true + required: true, }, logo: { type: String, - required: false - } + required: false, + }, }, methods: { goToWiki (event) { if (event.target.tagName !== 'A') { window.open(this.url, '_blank') } - } - } + }, + }, } diff --git a/src/components/Pages/Home/Components/DiscoveryView.vue b/src/components/Pages/Home/Components/DiscoveryView.vue index b6a6b739..862ea2e9 100644 --- a/src/components/Pages/Home/Components/DiscoveryView.vue +++ b/src/components/Pages/Home/Components/DiscoveryView.vue @@ -53,8 +53,8 @@ export default { name: 'DiscoveryView', mixins: [FlexboxWrapEvent], components: { - DiscoveryCard - } + DiscoveryCard, + }, } diff --git a/src/components/Pages/Home/Components/DynamicContainerView.vue b/src/components/Pages/Home/Components/DynamicContainerView.vue index 28d0a315..47880695 100644 --- a/src/components/Pages/Home/Components/DynamicContainerView.vue +++ b/src/components/Pages/Home/Components/DynamicContainerView.vue @@ -32,8 +32,8 @@ export default { this.$nextTick(() => { this.setHeaderHeight() }) - } - } + }, + }, } diff --git a/src/components/Pages/Home/Components/DynamicPhotoTextView.vue b/src/components/Pages/Home/Components/DynamicPhotoTextView.vue index 6087ba5b..2def7738 100644 --- a/src/components/Pages/Home/Components/DynamicPhotoTextView.vue +++ b/src/components/Pages/Home/Components/DynamicPhotoTextView.vue @@ -23,21 +23,21 @@ export default { props: { sideBySide: { type: Boolean, - default: false + default: false, }, image: { type: String, - required: true + required: true, }, header: { type: String, - required: true + required: true, }, content: { type: String, - required: true - } - } + required: true, + }, + }, } diff --git a/src/components/Pages/Home/Components/HeroView.vue b/src/components/Pages/Home/Components/HeroView.vue index c2c2e8d3..5253e01a 100644 --- a/src/components/Pages/Home/Components/HeroView.vue +++ b/src/components/Pages/Home/Components/HeroView.vue @@ -22,25 +22,25 @@ export default { props: { header: { type: String, - required: true + required: true, }, content: { type: String, - required: true + required: true, }, button: { type: String, - required: true + required: true, }, target: { type: String, - required: true + required: true, }, background: { type: String, - required: true - } - } + required: true, + }, + }, } diff --git a/src/components/Pages/Home/Components/PhotoTextView.vue b/src/components/Pages/Home/Components/PhotoTextView.vue index 90484323..179ac932 100644 --- a/src/components/Pages/Home/Components/PhotoTextView.vue +++ b/src/components/Pages/Home/Components/PhotoTextView.vue @@ -22,25 +22,25 @@ export default { props: { image: { type: String, - required: true + required: true, }, header: { type: String, - required: true + required: true, }, content: { type: String, - required: true + required: true, }, button: { type: String, - required: true + required: true, }, target: { type: String, - required: true - } - } + required: true, + }, + }, } diff --git a/src/components/Pages/Home/Home.vue b/src/components/Pages/Home/Home.vue index 0f779ab7..9bb950b7 100644 --- a/src/components/Pages/Home/Home.vue +++ b/src/components/Pages/Home/Home.vue @@ -57,8 +57,8 @@ export default { DynamicContainerView, DynamicPhotoTextView, DiscoveryView, - PhotoTextView - } + PhotoTextView, + }, } diff --git a/src/components/Pages/Login.vue b/src/components/Pages/Login.vue index d35776c0..a4b3ce0c 100644 --- a/src/components/Pages/Login.vue +++ b/src/components/Pages/Login.vue @@ -25,11 +25,11 @@ import LoginCard from '~/components/Cards/Login' export default { name: 'Login', components: { - LoginCard + LoginCard, }, data () { return {} - } + }, } diff --git a/src/components/Pages/Logout.vue b/src/components/Pages/Logout.vue index c69f41e0..2b90f2ad 100644 --- a/src/components/Pages/Logout.vue +++ b/src/components/Pages/Logout.vue @@ -15,8 +15,8 @@ export default { .catch(err => { console.log(err) }) - } - } + }, + }, } diff --git a/src/components/Pages/ManageWiki/Cards/ConfirmDelete.vue b/src/components/Pages/ManageWiki/Cards/ConfirmDelete.vue index c9130573..685ad6ff 100644 --- a/src/components/Pages/ManageWiki/Cards/ConfirmDelete.vue +++ b/src/components/Pages/ManageWiki/Cards/ConfirmDelete.vue @@ -69,13 +69,13 @@ export default { name: 'ConfirmDelete', props: [ - 'wikiId' + 'wikiId', ], data () { return { open_dialog: true, checkboxReasons: [], - freeformReason: '' + freeformReason: '', } }, methods: { @@ -96,8 +96,8 @@ export default { }, close () { this.$emit('close') - } - } + }, + }, }