-
- View Email Source
-
+
Edit
+
+ View Email Source
+
+
@@ -350,6 +359,7 @@ import GroupSelect from './GroupSelect'
import MessageMap from './MessageMap'
import ModMessageMicroVolunteering from './ModMessageMicroVolunteering'
import twem from '~/assets/js/twem'
+import SpinButton from '~/components/SpinButton'
const Highlighter = () => import('vue-highlight-words')
const OurFilePond = () => import('~/components/OurFilePond')
@@ -378,7 +388,8 @@ export default {
MessageReplyInfo,
MessageUserInfo,
MessageHistory,
- Highlighter
+ Highlighter,
+ SpinButton
},
mixins: [keywords],
props: {
@@ -622,6 +633,13 @@ export default {
},
duplicates() {
return this.checkHistory(true)
+ },
+ memberGroupIds() {
+ return this.message &&
+ this.message.fromuser &&
+ this.message.fromuser.memberof
+ ? this.message.fromuser.memberof.map(g => g.id)
+ : []
}
},
watch: {
@@ -880,6 +898,11 @@ export default {
this.$store.dispatch('messages/fetch', {
id: this.message.id
})
+ },
+ backToPending() {
+ this.$store.dispatch('messages/backToPending', {
+ id: this.message.id
+ })
}
}
}
diff --git a/components/ModMissingTwitter.vue b/components/ModMissingTwitter.vue
deleted file mode 100644
index 7fb13a42d..000000000
--- a/components/ModMissingTwitter.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
- {{ invalid.length }} Twitter {{ invalid.length | pluralize(['account has', 'accounts have']) }} become unlinked.
-
- Click to view
-
-
-
-
-
- Twitter account {{ inv.account.name }}
- for group
- {{ inv.group.namedisplay }}
-
- is locked
-
-
- is invalid
-
-
-
- Relink
-
-
-
-
-
-
- {{ notlinked.length | pluralize(['community needs', 'communities need'], { includeNumber: true }) }} to be linked to a Twitter account.
-
- Click to view
-
-
-
-
Communities can be linked to a Twitter account, to get extra publicity. Some of your groups aren't.
-
Please click to go to the Settings page where you can link from the Social Media section.
-
-
- {{ inv.group.namedisplay }}
-
-
-
-
-
-
-
diff --git a/components/ModPostingHistoryModal.vue b/components/ModPostingHistoryModal.vue
index 512590eed..b2492fb99 100644
--- a/components/ModPostingHistoryModal.vue
+++ b/components/ModPostingHistoryModal.vue
@@ -8,9 +8,10 @@
no-stacking
>
-
+
There are no posts to show.
+
{{ datetimeshort(message.arrival) }}
@@ -30,6 +31,7 @@
on {{ message.groupname }}, now {{ message.outcome }}, still open
+ Pending
@@ -45,9 +47,10 @@
diff --git a/components/ModSettingsGroup.vue b/components/ModSettingsGroup.vue
index 086154be4..cb088ae0a 100644
--- a/components/ModSettingsGroup.vue
+++ b/components/ModSettingsGroup.vue
@@ -480,7 +480,7 @@
:groupid="groupid"
name="settings.spammers.replydistance"
label="Reply distance check?"
- description="When members reply to messages which are this far apart, in miles, then they may be flagged for review. Default 50, 0 to disable."
+ description="When members reply to messages which are this far apart, in miles, then they may be flagged for review. Default 100, 0 to disable."
type="number"
:step="5"
/>
@@ -641,28 +641,6 @@
-
- You can auto-tweet the subject and picture of posts to attract more people to your group.
-
-
- This group's Twitter account has been locked. Please log in to Twitter to unlock it. Then
- we'll try again to tweet. After that, you may need to link it again - if so you'll see a
- message here.
-
-
- This group is not linked to a Twitter account. Please link it to get more publicity.
-
-
-
- Link to Twitter
-
-
You can link to a group Facebook page to attract more people to your group.
@@ -737,6 +715,15 @@
toggle-checked="On TN"
toggle-unchecked="Not on TN"
/>
+
+
{{ group.groupemail }}
-
- Twitter:
-
-
- {{ group.twitter.name }}
-
-
- Invalid
-
-
- Locked
-
-
-
- None
-
Facebook: none
diff --git a/components/ModSupportListGroups.vue b/components/ModSupportListGroups.vue
index 8e3a977fe..237c090f4 100644
--- a/components/ModSupportListGroups.vue
+++ b/components/ModSupportListGroups.vue
@@ -118,6 +118,11 @@ export default {
type: 'checkbox',
renderer: this.forceBool
},
+ {
+ data: 'onlovejunk',
+ type: 'checkbox',
+ renderer: this.forceBool
+ },
{
data: 'region',
type: 'text'
diff --git a/components/ShareModal.vue b/components/ShareModal.vue
index d0d3332a2..35a1fd6b5 100644
--- a/components/ShareModal.vue
+++ b/components/ShareModal.vue
@@ -227,11 +227,6 @@ export default {
color: white;
}
-::v-deep .twitter {
- background-color: $color-twitter !important;
- color: white;
-}
-
::v-deep .whatsapp {
background-color: $color-whatsapp !important;
}
diff --git a/mobile/modtools/android/config.xml b/mobile/modtools/android/config.xml
index 644bfefeb..529872b14 100644
--- a/mobile/modtools/android/config.xml
+++ b/mobile/modtools/android/config.xml
@@ -1,5 +1,5 @@
-
+
ModTools
Tool to help moderators of Freegle groups
Chris Cant, Freegle Ltd
diff --git a/mobile/modtools/ios/config.xml b/mobile/modtools/ios/config.xml
index ad08c7077..0ee71a7b8 100644
--- a/mobile/modtools/ios/config.xml
+++ b/mobile/modtools/ios/config.xml
@@ -1,5 +1,5 @@
-
+
ModTools
Tool to help moderators of Freegle and similar groups
diff --git a/nuxt.config.js b/nuxt.config.js
index dcdf8c64b..0854564a9 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -8,7 +8,7 @@ const SENTRY_DSN = 'https://b68903e730034a4ba3b8b2358331389e@o118493.ingest.sent
const YAHOO_CLIENTID =
'dj0yJmk9N245WTRqaDd2dnA4JmQ9WVdrOWIzTlZNMU01TjJjbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PWRh'
const MOBILE_VERSION = '2.0.120'
-const MODTOOLS_VERSION = '0.3.100'
+const MODTOOLS_VERSION = '0.3.101'
require('dotenv').config()
diff --git a/package-lock.json b/package-lock.json
index ddb4504cd..4a644244e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13848,6 +13848,11 @@
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
+ "papaparse": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz",
+ "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw=="
+ },
"parallel-transform": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
diff --git a/package.json b/package.json
index 43d46c0e3..ef1cda738 100644
--- a/package.json
+++ b/package.json
@@ -82,6 +82,7 @@
"nuxt-i18n": "^5.12.7",
"nuxt-polyfill": "^1.0.3",
"nuxt-rfg-icon": "^0.6.3",
+ "papaparse": "^5.4.1",
"pluralize": "^8.0.0",
"promise-polyfill": "^8.1.3",
"promise.allsettled": "^1.0.2",
diff --git a/pages/modtools/giftaid.vue b/pages/modtools/giftaid.vue
index fca876a53..1ff8c6fe5 100644
--- a/pages/modtools/giftaid.vue
+++ b/pages/modtools/giftaid.vue
@@ -68,6 +68,35 @@
+
+
+
+ You can also paste in a CSV file of donations from Xero. The first line must be the
+ headers, which must always be:
+
+
+ Date,Amt,"Name on Xero",ID / GA from Mod Tools,email address if known,"212 Reg, 213 One off",GA?,Name & Ref on bank statement
+
+
+
+
+ {{ csvError }}
+
+
+
+
+
+
+
+
+
No gift aid to review.
@@ -75,8 +104,10 @@
+
diff --git a/plugins/dayjs.js b/plugins/dayjs.js
index 86d2e14ca..a4246fdbf 100644
--- a/plugins/dayjs.js
+++ b/plugins/dayjs.js
@@ -5,6 +5,7 @@ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'
import isBetween from 'dayjs/plugin/isBetween'
import isToday from 'dayjs/plugin/isToday'
+import customParseFormat from 'dayjs/plugin/customParseFormat'
import dayjs from 'dayjs'
@@ -15,3 +16,4 @@ dayjs.extend(isSameOrBefore)
dayjs.extend(isSameOrAfter)
dayjs.extend(isBetween)
dayjs.extend(isToday)
+dayjs.extend(customParseFormat)
diff --git a/store/chats.js b/store/chats.js
index b66f3fec5..cdaf82339 100644
--- a/store/chats.js
+++ b/store/chats.js
@@ -388,6 +388,10 @@ export const actions = {
await this.$api.chat.typing(params.chatid)
},
+ async referToSupport({ dispatch, commit }, params) {
+ await this.$api.chat.referToSupport(params.id)
+ },
+
clear({ commit }) {
commit('clear')
}
diff --git a/store/compose.js b/store/compose.js
index 7916a70ca..f773897e2 100644
--- a/store/compose.js
+++ b/store/compose.js
@@ -241,7 +241,6 @@ function markSubmitted(id, commit, me) {
}
async function backToDraft(id, dispatch, commit) {
- console.log('Back to draft', id)
await dispatch(
'messages/update',
{
diff --git a/store/group.js b/store/group.js
index 8173515c2..c51eff836 100644
--- a/store/group.js
+++ b/store/group.js
@@ -122,6 +122,8 @@ export const actions = {
lng: params.lng,
onyahoo: 0,
onhere: 1,
+ ontn: 1,
+ onlovejunk: 1,
licenserequired: 0,
showonyahoo: 0
})
diff --git a/store/messages.js b/store/messages.js
index f97fef46e..25f87e136 100644
--- a/store/messages.js
+++ b/store/messages.js
@@ -596,6 +596,16 @@ export const actions = {
}
},
removeFromCache({ commit }, params) {
+ commit('remove', {
+ id: params.id
+ })
+ },
+ async backToPending({ dispatch, commit }, params) {
+ await this.$api.message.update({
+ id: params.id,
+ action: 'BackToPending'
+ })
+
commit('remove', {
id: params.id
})