From e1afd1aeb2a5ce5faa5410c2ddab9b640ff393ec Mon Sep 17 00:00:00 2001
From: lesion
Date: Sat, 27 Jul 2019 13:05:02 +0200
Subject: [PATCH] cleaning *1000 unix timestamp
---
components/Event.vue | 2 +-
components/List.vue | 4 +-
locales/en.js | 208 +++++++++++++++++++++++++++++++-
locales/it.js | 4 +-
nuxt.config.js | 6 +-
pages/embed/list.vue | 13 +-
pages/event/_id.vue | 9 +-
plugins/filters.js | 4 +-
server/api/controller/event.js | 13 +-
server/api/controller/export.js | 4 +-
store/index.js | 8 +-
11 files changed, 238 insertions(+), 37 deletions(-)
diff --git a/components/Event.vue b/components/Event.vue
index d180fc59..fd26e63f 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -52,7 +52,7 @@ export default {
},
link () {
if (this.event.recurrent) {
- return `${this.event.id}_${this.event.start_datetime/1000}`
+ return `${this.event.id}_${this.event.start_datetime}`
}
return this.event.id
}
diff --git a/components/List.vue b/components/List.vue
index 958701b5..c8b7457d 100644
--- a/components/List.vue
+++ b/components/List.vue
@@ -1,6 +1,6 @@
div#list
- el-divider {{title}}
+ el-divider(v-if='title') {{title}}
el-timeline
el-timeline-item(
v-for='event in events'
@@ -26,7 +26,7 @@ export default {
methods: {
link (event) {
if (event.recurrent) {
- return `${event.id}_${event.start_datetime/1000}`
+ return `${event.id}_${event.start_datetime}`
}
return event.id
}
diff --git a/locales/en.js b/locales/en.js
index 54a2ed95..c0575f43 100644
--- a/locales/en.js
+++ b/locales/en.js
@@ -1,3 +1,207 @@
-module.exports = {
- "registration_email": "registration_email"
+export default {
+ common: {
+ add_event: 'Add event',
+ next: 'Next',
+ export: 'Export',
+ send: 'Send',
+ where: 'Where',
+ address: 'Address',
+ when: 'When',
+ what: 'What',
+ media: 'Media',
+ login: 'Login',
+ email: 'Email',
+ password: 'Password',
+ register: 'Register',
+ description: 'Description',
+ remove: 'Remove',
+ hide: 'Hide',
+ search: 'Search',
+ edit: 'Edit',
+ info: 'Info',
+ confirm: 'Confirm',
+ admin: 'Admin',
+ users: 'Users',
+ events: 'Events',
+ places: 'Places',
+ settings: 'Options',
+ actions: 'Actions',
+ deactivate: 'Disable',
+ remove_admin: 'Remove admin',
+ activate: 'Activate',
+ save: 'Save',
+ preview: 'Preview',
+ logout: 'Logout',
+ share: 'Share',
+ name: 'Name',
+ associate: 'Associate',
+ edit_event: 'Edit event',
+ related: 'Related',
+ add: 'Add',
+ logout_ok: 'Logged out',
+ copy: 'Copy',
+ recover_password: 'Recover password',
+ new_password: 'New password',
+ new_user: 'New user',
+ ok: 'Ok',
+ cancel: 'Cancel',
+ enable: 'Enable',
+ disable: 'Disable',
+ me: 'You',
+ password_updated: 'Password updated!'
+ },
+
+ login: {
+ description: `By logging in you can publish new events.`,
+ check_email: 'Check your mailbox (spam too)',
+ not_registered: 'Aren\'t registered',
+ forgot_password: 'Forgot the password?',
+ error: 'Error: ',
+ insert_email: 'Insert your email',
+ ok: 'Logged in'
+ },
+
+ recover: {
+ not_valid_code: 'Something goes wrong...'
+ },
+
+ export: {
+ intro: ``,
+ email_description: ``,
+ insert_your_address: 'Insert your email address.',
+ feed_description: `
+ Per seguire gli aggiornamenti da computer o smartphone senza la necessità di aprire periodicamente il sito, il metodo consigliato è quello dei Feed RSS.
+
+ Con i feed rss utilizzi un'apposita applicazione per ricevere aggiornamenti dai siti che più ti interessano. È un buon metodo per seguire anche molti siti in modo molto rapido, senza necessità di creare un account o altre complicazioni.
+
+ Se hai Android, ti consigliamo Flym o Feeder
+ Per iPhone/iPad puoi usare Feed4U
+ Per il computer fisso/portatile consigliamo Feedbro, da installare all'interno di Firefox o di Chrome e compatibile con tutti i principali sistemi operativi.
+
+ Aggiungendo questo link al tuo lettore di feed, rimarrai aggiornata.`,
+ ical_description: `I computer e gli smartphone sono comunemente attrezzati con un'applicazione per gestire un calendario. A questi programmi solitamente è possibile far importare un calendario remoto.`,
+ list_description: `Se hai un sito web e vuoi mostrare una lista di eventi, puoi usare il seguente codice`
+ },
+
+ register: {
+ description: `I movimenti hanno bisogno di organizzarsi e autofinanziarsi.
Questo è un dono per voi, usatelo solo per eventi non commerciali e ovviamente antifascisti, antisessisti, antirazzisti.
+
Prima di poter pubblicare dobbiamo approvare l'account, considera che dietro questo sito ci sono delle persone di
+ carne e sangue, scrivici quindi due righe per farci capire che eventi vorresti pubblicare.`,
+ error: 'Errore: ',
+ admin_complete: 'Sei il primo utente e quindi sei amministratore!',
+ complete: 'Confermeremo la registrazione quanto prima.',
+ request: 'Richiesta di registrazione',
+ registration_email: `Ciao,
+ ci è arrivata una richiesta di registrazione su gancio, la confermeremo quanto prima.`
+ },
+
+ event: {
+ anon: 'Anon',
+ anon_description: `Puoi inserire un evento senza registrarti o fare il login,
+ ma in questo caso dovrai aspettare che qualcuno lo legga confermando che si
+ tratta di un evento adatto a questo spazio, delegando questa scelta. Inoltre non sarà possibile modificarlo.
+ Puoi invece fare il login o registrarti,
+ altrimenti vai avanti e riceverai una risposta il prima possibile. `,
+ same_day: 'Same day',
+ what_description: 'Event\' name',
+ description_description: 'Description',
+ tag_description: 'Tag...',
+ media_description: 'Puoi aggiungere un volantino',
+ added: 'Evento aggiunto',
+ added_anon: 'Evento aggiunto, verrà confermato quanto prima.',
+ where_description: `Dov'è il gancio? Se il posto non è presente, scrivilo e premi invio. `,
+ confirmed: 'Evento confermato',
+ not_found: 'Evento non trovato',
+ remove_confirmation: `Sicura di voler eliminare questo evento?`,
+ recurrent: `Ricorrente`,
+ recurrent_description: 'Scegli la frequenza e seleziona i giorni',
+ multidate_description: 'Un festival o una tre giorni? Scegli quando comincia e quando finisce.',
+ multidate: 'Più giorni',
+ normal: 'Normale',
+ normal_description: 'Scegli il giorno.',
+ recurrent_1w_days: 'Ogni {days}',
+ recurrent_2w_days: 'Un {days} ogni due',
+ recurrent_1m_days: '|Il giorno {days} di ogni mese|I giorni {days} di ogni mese',
+ recurrent_2m_days: '|Il giorno {days} ogni due mesi|I giorni {days} ogni due mesi',
+ recurrent_1m_ordinal: 'Il {n} {days} di ogni mese',
+ recurrent_2m_ordinal: '|Il {n} {days} un mese sì e uno no|Il {n} {days} un mese sì e uno no',
+ due: 'alle',
+ from: 'Dalle',
+ image_too_big: 'Immagine troppo grande! Massimo 4M'
+ },
+
+ admin: {
+ mastodon_instance: 'Istanza',
+ mastodon_description: 'Puoi associare un account mastodon a questa istanza di gancio, ogni evento verrà pubblicato lì.',
+ place_description: `Nel caso in cui un luogo sia errato o cambi indirizzo, puoi modificarlo.
Considera che tutti gli eventi associati a questo luogo cambieranno indirizzo (anche quelli passati!)`,
+ event_confirm_description: 'Puoi confermare qui gli eventi inseriti da utenti anonimi',
+ delete_user: 'Elimina',
+ remove_admin: 'Rimuovi admin',
+ delete_user_confirm: 'Sicura di rimuovere questo utente?',
+ user_remove_ok: 'Utente eliminato',
+ user_create_ok: 'Utente creato',
+ allow_registration_description : 'Vuoi abilitare la registrazione?',
+ allow_anon_event: 'Si possono inserire eventi anonimi (previa conferma)?',
+ allow_comments: 'Abilita commenti',
+ allow_recurrent_event: 'Abilita eventi fissi',
+ recurrent_event_visible: 'Appuntamenti fissi visibili di default',
+ federation: 'Federazione / ActivityPub'
+ },
+
+ auth: {
+ not_confirmed: 'Non abbiamo ancora confermato questa mail...',
+ fail: 'Autenticazione fallita. Sicura la password è giusta? E la mail?'
+ },
+
+ settings: {
+ change_password: 'Cambia password',
+ password_updated: 'Password modificata',
+ danger_section: 'Sezione pericolosa',
+ remove_account: 'Premendo il seguente tasto il tuo utente verrà eliminato. Gli eventi da te pubblicati invece no.',
+ remove_account_confirm: 'Stai per eliminare definitivamente il tuo account',
+ },
+
+ err: {
+ register_error: 'Errore nella registrazione'
+ },
+
+ ordinal: {
+ 1: 'primo',
+ 2: 'secondo',
+ 3: 'terzo',
+ 4: 'quarto',
+ 5: 'quinto',
+ [-1]: 'ultimo',
+ },
+
+ about: `
+
+ Gancio e' un progetto dell'underscore hacklab e uno dei
+ servizi di cisti.org.
+
+ Cos'è gancio?
+ Uno strumento di condivisione di eventi per comunità radicali.
+ Dentro gancio puoi trovare e inserire eventi.
+ Gancio, come tutto cisti.org è uno strumento
+ antisessista, antirazzista, antifascista e anticapitalista, riflettici quando
+ pubblichi un evento.
+
+ Ok, ma cosa vuol dire gancio?
+
+ Se vieni a Torino e dici: "ehi, ci diamo un gancio alle 8?" nessuno si presenterà con i guantoni per fare a mazzate.
+ Darsi un gancio vuol dire beccarsi alle ore X in un posto Y.
+
+
+ - a che ora è il gancio in radio per andare al presidio?
+ - non so ma domani non posso venire, ho gia' un gancio per caricare il bar.
+
+
+
+ Contatti
+
+ Hai scritto una nuova interfaccia per gancio? Vuoi aprire un nuovo nodo di gancio nella tua città?
+ C'è qualcosa che vorresti migliorare? Per contribuire i sorgenti sono liberi e disponibili
+ qui. Aiuti e suggerimenti sono sempre benvenuti, puoi scriverci
+ su underscore chicciola autistici.org
+ `
}
diff --git a/locales/it.js b/locales/it.js
index 802681ce..57c9eac7 100644
--- a/locales/it.js
+++ b/locales/it.js
@@ -107,9 +107,7 @@ export default {
what_description: 'Nome evento',
description_description: 'Descrizione, dajene di copia/incolla',
tag_description: 'Tag...',
- media_description: 'Puoi aggiungere un volantino',
- time_start_description: 'Comincia alle',
- time_end_description: 'Se vuoi puoi specificare un orario di fine.',
+ media_description: 'Puoi aggiungere un volantino (opzionale)',
added: 'Evento aggiunto',
added_anon: 'Evento aggiunto, verrà confermato quanto prima.',
where_description: `Dov'è il gancio? Se il posto non è presente, scrivilo e premi invio. `,
diff --git a/nuxt.config.js b/nuxt.config.js
index 9413cb37..5ea13383 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -93,9 +93,9 @@ module.exports = {
// }
// },
transpile: [/^element-ui/, /^vue-awesome/],
- // splitChunks: {
- // layouts: true
- // },
+ splitChunks: {
+ layouts: true
+ },
cache: true,
}
}
diff --git a/pages/embed/list.vue b/pages/embed/list.vue
index 25dc2e57..5c2175d7 100644
--- a/pages/embed/list.vue
+++ b/pages/embed/list.vue
@@ -10,10 +10,15 @@ import get from 'lodash/get'
export default {
layout: 'iframe',
components: { List },
- async asyncData ({ $axios, req, res }) {
- const title = get(req, 'query.title')
- const tags = req && req.query && req.query.tags
- const places = req && req.query && req.query.places
+ data () {
+ return {
+ title : ''
+ }
+ },
+ async asyncData ({ query, $axios }) {
+ const title = query.title
+ const tags = query.tags
+ const places = query.places
const now = new Date()
let params = []
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 69333c92..14c65fc8 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -102,9 +102,8 @@ export default {
try {
const [ id, start_datetime ] = params.id.split('_')
const event = await $axios.$get(`/event/${id}`)
- event.start_datetime = start_datetime ? start_datetime*1000 : event.start_datetime*1000
- event.end_datetime = event.end_datetime*1000
- // event.start_datetime = start_datetime ? start_datetime*1000 : event.start
+ event.start_datetime = start_datetime ? start_datetime : event.start_datetime
+ event.end_datetime = event.end_datetime
return { event, id }
} catch(e) {
error({ statusCode: 404, message: 'Event not found'})
@@ -121,7 +120,7 @@ export default {
})
if (!event) return false
if (event.recurrent) {
- return `${event.id}_${event.start_datetime/1000}`
+ return `${event.id}_${event.start_datetime}`
}
return event.id
},
@@ -133,7 +132,7 @@ export default {
})
if (!event) return false
if (event.recurrent) {
- return `${event.id}_${event.start_datetime/1000}`
+ return `${event.id}_${event.start_datetime}`
}
return event.id
},
diff --git a/plugins/filters.js b/plugins/filters.js
index 3440bfbd..56f7ec63 100644
--- a/plugins/filters.js
+++ b/plugins/filters.js
@@ -21,8 +21,8 @@ export default ({ app, store }) => {
moment.locale(store.state.locale)
//{start,end}_datetime are unix timestamp
- const start = moment(event.start_datetime)
- const end = moment(event.end_datetime)
+ const start = moment.unix(event.start_datetime)
+ const end = moment.unix(event.end_datetime)
const normal = `${start.format('dddd, D MMMM (HH:mm-')}${end.format('HH:mm)')}`
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index e6af71fd..1863c9f5 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -100,9 +100,6 @@ const eventController = {
order: [ [Comment, 'id', 'DESC'] ]
})
- // event.start_datetime = event.start_datetime*1000
- // event.end_datetime = event.end_datetime*1000
-
if (event && (event.is_visible || is_admin)) {
res.json(event)
} else {
@@ -217,8 +214,6 @@ const eventController = {
})
events = events.map(e => e.get()).map(e => {
- e.start_datetime = e.start_datetime*1000
- e.end_datetime = e.end_datetime*1000
e.tags = e.tags.map(t => t.tag)
return e
})
@@ -230,8 +225,8 @@ const eventController = {
if (!recurrent.frequency) return false
let cursor = moment(start).startOf('week')
- const start_date = moment(e.start_datetime)
- const duration = moment(e.end_datetime).diff(start_date, 's')
+ const start_date = moment.unix(e.start_datetime)
+ const duration = moment.unix(e.end_datetime).diff(start_date, 's')
const frequency = recurrent.frequency
const days = recurrent.days
const type = recurrent.type
@@ -274,8 +269,8 @@ const eventController = {
cursor.day(d-1)
}
if (cursor.isAfter(dueTo) || cursor.isBefore(start)) return
- e.start_datetime = cursor.unix()*1000
- e.end_datetime = e.start_datetime+(duration*1000)// cursor.clone().hour(end_datetime.hour()).minute(end_datetime.minute()).unix()*1000
+ e.start_datetime = cursor.unix()
+ e.end_datetime = e.start_datetime+duration
events.push( Object.assign({}, e) )
})
if (cursor.isAfter(dueTo)) break
diff --git a/server/api/controller/export.js b/server/api/controller/export.js
index 8c9c54df..63738c54 100644
--- a/server/api/controller/export.js
+++ b/server/api/controller/export.js
@@ -50,8 +50,8 @@ const exportController = {
ics(res, events) {
const eventsMap = events.map(e => {
- const tmpStart = moment(e.start_datetime)
- const tmpEnd = moment(e.end_datetime)
+ const tmpStart = moment.unix(e.start_datetime)
+ const tmpEnd = moment.unix(e.end_datetime)
const start = [tmpStart.year(), tmpStart.month() + 1, tmpStart.date(), tmpStart.hour(), tmpStart.minute()]
const end = [tmpEnd.year(), tmpEnd.month() + 1, tmpEnd.date(), tmpEnd.hour(), tmpEnd.minute()]
return {
diff --git a/store/index.js b/store/index.js
index 7700851b..186b7a00 100644
--- a/store/index.js
+++ b/store/index.js
@@ -86,12 +86,12 @@ export const mutations = {
setEvents(state, events) {
// set`past` and `newDay` flags to event
let lastDay = null
- state.events = events.map((e) => {
- const currentDay = moment(e.start_datetime).date()
+ state.events = events.map(e => {
+ const currentDay = moment.unix(e.start_datetime).date()
e.newDay = (!lastDay || lastDay !== currentDay) && currentDay
lastDay = currentDay
- const end_datetime = e.end_datetime || e.start_datetime+3600000*2
- const past = ((moment().unix()*1000) - end_datetime) > 0
+ const end_datetime = e.end_datetime || e.start_datetime+3600*2
+ const past = ((moment().unix()) - end_datetime) > 0
e.past = !!past
return e
})