From 91579e56ddf7abc67c96626096205ec1a61657e8 Mon Sep 17 00:00:00 2001
From: lesion
Date: Mon, 4 Mar 2019 02:15:22 +0100
Subject: [PATCH] element ui usage
---
app/controller/bot.js | 18 ++--
app/mail.js | 2 +-
client/package.json | 2 +-
client/src/App.vue | 39 ++++---
client/src/assets/main.css | 14 +++
client/src/components/Admin.vue | 55 +++++-----
client/src/components/Event.vue | 17 +--
client/src/components/EventDetail.vue | 68 ++++++------
client/src/components/Export.vue | 53 +++++-----
client/src/components/Home.vue | 5 +-
client/src/components/Login.vue | 27 ++---
client/src/components/Settings.vue | 2 +-
client/src/components/newEvent.vue | 144 ++++++++++++--------------
client/src/locale/it.js | 10 +-
client/yarn.lock | 28 ++---
views/feed/rss.pug | 4 +-
16 files changed, 241 insertions(+), 247 deletions(-)
diff --git a/app/controller/bot.js b/app/controller/bot.js
index eaed5dac..885a91d2 100644
--- a/app/controller/bot.js
+++ b/app/controller/bot.js
@@ -43,23 +43,23 @@ ${event.description} - ${event.tags.map(t => '#' + t.tag).join(' ')} ${config.ba
if (!replyid) return
// const event = await Event.findOne({ where: { activitypub_id: replyid } })
// if (!event) {
- // check for comment..
- // const comment = await Comment.findOne( {where: { }})
+ // check for comment..
+ // const comment = await Comment.findOne( {where: { }})
// }
// const comment = await Comment.create({activitypub_id: msg.data.last_status.id, text: msg.data.last_status.content, author: msg.data.accounts[0].username })
// event.addComment(comment)
// console.log(event)
// const comment = await Comment.findOne( { where: {activitypub_id: msg.data.in_reply_to}} )
// console.log('dentro message ', data)
-
+
// add comment to specified event
// let comment
- //if (!event) {
- //const comment = await Comment.findOne({where: {activitypub_id: req.body.id}, include: Event})
- //event = comment.event
- //}
- //const comment = new Comment(req.body)
- //event.addComment(comment)
+ // if (!event) {
+ // const comment = await Comment.findOne({where: {activitypub_id: req.body.id}, include: Event})
+ // event = comment.event
+ // }
+ // const comment = new Comment(req.body)
+ // event.addComment(comment)
},
error (err) {
console.log('error ', err)
diff --git a/app/mail.js b/app/mail.js
index 0a776279..c02dc611 100644
--- a/app/mail.js
+++ b/app/mail.js
@@ -14,7 +14,7 @@ const mail = {
}
},
message: {
- from: `${config.title} <${config.admin}>`
+ from: `${config.title} <${config.smtp.auth.user}>`
},
send: true,
i18n: {},
diff --git a/client/package.json b/client/package.json
index 31e18429..91fff9e9 100644
--- a/client/package.json
+++ b/client/package.json
@@ -10,7 +10,7 @@
"dependencies": {
"axios": "^0.18.0",
"bootstrap-vue": "^2.0.0-rc.13",
- "element-ui": "^2.6.0",
+ "element-ui": "^2.6.1",
"mastodon-api": "^1.3.0",
"moment": "^2.23.0",
"node-sass": "^4.11.0",
diff --git a/client/src/App.vue b/client/src/App.vue
index d0a06d67..4ca5811d 100644
--- a/client/src/App.vue
+++ b/client/src/App.vue
@@ -2,30 +2,27 @@
#app
b-navbar(type="dark" variant="dark" toggleable='lg')
b-navbar-toggle(target='nav_collapse')
+ b-navbar-brand(to='/')
b-collapse#nav_collapse(is-nav)
- b-navbar-nav(v-if='logged')
- b-nav-item(to='/new_event' v-b-tooltip :title='$t("Add Event")' )
- b-nav-item(to='/settings' v-b-tooltip :title='$t("Settings")')
- b-nav-item(v-if='user.is_admin' to='/admin' v-b-tooltip :title='$t("Admin")')
- b-nav-item(to='/export' v-b-tooltip :title='$t("Export")')
- b-nav-item(variant='danger' @click='logout' v-b-tooltip :title='$t("Logout")')
- b-navbar-nav(v-else)
- b-nav-item(to='/login' v-b-tooltip :title='$t("Login")' ) Login
- b-nav-item(to='/register' v-b-tooltip :title='$t("Register")' ) Register
- b-navbar-nav.ml-auto
- b-navbar-brand(to='/')
+ b-navbar-nav
+ b-nav-item(v-if='!logged' to='/login' v-b-tooltip :title='$t("Login")') {{$t('User')}}
+ //- b-nav-item(v-if='!logged' to='/register' v-b-tooltip :title='$t("Register")' )
+ b-nav-item(v-if='logged' to='/new_event' v-b-tooltip :title='$t("Add Event")' )
+ b-nav-item(v-if='logged' to='/settings' v-b-tooltip :title='$t("Settings")')
+ b-nav-item(v-if='user.is_admin' to='/admin' v-b-tooltip :title='$t("Admin")')
+ b-nav-item(to='/export' v-b-tooltip :title='$t("Export")')
+ b-nav-item(v-if='logged' variant='danger' @click='logout' v-b-tooltip :title='$t("Logout")')
b-navbar-nav#search.ml-auto
- b-nav-item
+ b-nav-item
b-nav-form
- typeahead.ml-1.mt-1(v-model='filters_places'
- textField='name' valueField='name'
- updateOnMatchOnly
- :data='places' multiple placeholder='Luogo')
- b-nav-form
- typeahead.ml-1.mt-1(v-model='filters_tags'
- updateOnMatchOnly
- textField='tag' valueField='tag'
- :data='tags' multiple placeholder='Tags')
+ el-select.mr-1(v-model='filters_places' multiple filterable collapse-tags
+ default-first-option :placeholder='$t("Where")')
+ el-option(v-for='place in places' :value='place.name'
+ :label='place.name' :key='place.id')
+ el-select(v-model='filters_tags' multiple filterable collapse-tags
+ default-first-option :placeholder='$t("Tags")')
+ el-option(v-for='tag in tags' :key='tag.tag'
+ :label='tag.tag' :value='tag.tag')
Home
transition(name="fade" mode="out-in")
router-view(name='modal')
diff --git a/client/src/assets/main.css b/client/src/assets/main.css
index fead2671..672dc25a 100644
--- a/client/src/assets/main.css
+++ b/client/src/assets/main.css
@@ -9,4 +9,18 @@ pre {
white-space: pre-line;
font-family: unset;
font-size: 1em;
+}
+
+.el-tag {
+ color: white;
+ font-size: 15px;
+ font-family: Lato;
+}
+
+.el-tag--info {
+ color: #909399
+}
+
+.el-tag:hover {
+ cursor: pointer;
}
\ No newline at end of file
diff --git a/client/src/components/Admin.vue b/client/src/components/Admin.vue
index 6db50099..486f4449 100644
--- a/client/src/components/Admin.vue
+++ b/client/src/components/Admin.vue
@@ -1,47 +1,48 @@
- b-modal(hide-footer hide-header
- @hide='$router.replace("/")' size='lg' :visible='true')
- h4.text-center Admin
- b-tabs(pills)
-
- b-tab.pt-1
- template(slot='title')
+ el-dialog(@close='$router.replace("/")' :title='$t("Admin")' center width='900px' :visible='true')
+ el-tabs
+ el-tab-pane.pt-1
+ template(slot='label')
v-icon(name='users')
- span {{$t('Users')}}
+ span.ml-1 {{$t('Users')}}
b-table(:items='users' :fields='userFields' striped small hover
:per-page='5' :current-page='userPage')
template(slot='action' slot-scope='data')
- b-button.mr-1(:variant='data.item.is_active?"warning":"success"' @click='toggle(data.item)') {{data.item.is_active?$t('Deactivate'):$t('Activate')}}
- b-button(:variant='data.item.is_admin?"danger":"warning"' @click='toggleAdmin(data.item)') {{data.item.is_admin?$t('Remove Admin'):$t('Admin')}}
+ el-button.mr-1(size='mini' :type='data.item.is_active?"warning":"success"' @click='toggle(data.item)') {{data.item.is_active?$t('Deactivate'):$t('Activate')}}
+ el-button(size='mini' :type='data.item.is_admin?"danger":"warning"' @click='toggleAdmin(data.item)') {{data.item.is_admin?$t('Remove Admin'):$t('Admin')}}
b-pagination(:per-page='5' v-model='userPage' :total-rows='users.length')
- b-tab.pt-1
- template(slot='title')
+ el-tab-pane.pt-1
+ template(slot='label')
v-icon(name='map-marker-alt')
- span {{$t('Places')}}
+ span.ml-1 {{$t('Places')}}
p You can change place's name or address
- b-form.mb-2(inline)
- b-input.mr-1(:placeholder='$t("Name")' v-model='place.name')
- b-input.mr-1(:placeholder='$t("Address")' v-model='place.address')
- b-button(variant='primary' @click='savePlace') {{$t('Save')}}
+ el-form.mb-2(:inline='true' label-width='120px')
+ el-form-item(:label="$t('Name')")
+ el-input.mr-1(:placeholder='$t("Name")' v-model='place.name')
+ el-form-item(:label="$t('Address')")
+ el-input.mr-1(:placeholder='$t("Address")' v-model='place.address')
+ el-button(variant='primary' @click='savePlace') {{$t('Save')}}
b-table(selectable :items='places' :fields='placeFields' striped hover
small selectedVariant='success' primary-key='id'
select-mode="single" @row-selected='placeSelected'
:per-page='5' :current-page='placePage')
b-pagination(:per-page='5' v-model='placePage' :total-rows='places.length')
- b-tab.pt-1
- template(slot='title')
+
+ el-tab-pane.pt-1
+ template(slot='label')
v-icon(name='tag')
span {{$t('Tags')}}
p You can choose colors of your tags
- b-table(:items='tags' :fields='tagFields'
- striped small hover :per-page='10' :current-page='tagPage')
- template(slot='tag' slot-scope='data')
- b-badge(:style='{backgroundColor: data.item.color}') {{data.item.tag}}
- template(slot='color' slot-scope='data')
- el-color-picker(v-model='data.item.color' @change='updateColor(data.item)')
+ el-table(:data='tags' striped small hover :per-page='10' :current-page='tagPage')
+ el-table-column(label='Tag')
+ template(slot-scope='data')
+ el-tag(:color='data.row.color' size='mini') {{data.row.tag}}
+ el-table-column(label='Color')
+ template(slot-scope='data')
+ el-color-picker(v-model='data.row.color' @change='updateColor(data.row)')
b-pagination(:per-page='10' v-model='tagPage' :total-rows='tags.length')
- b-tab.pt-1
- template(slot='title')
+ el-tab-pane.pt-1
+ template(slot='label')
v-icon(name='tools')
span {{$t('Settings')}}
diff --git a/client/src/components/Event.vue b/client/src/components/Event.vue
index 0ca74601..f7b73152 100644
--- a/client/src/components/Event.vue
+++ b/client/src/components/Event.vue
@@ -6,8 +6,8 @@
div {{event.start_datetime|datetime}}
span {{event.place.name}}
br
- b-badge(:style='{backgroundColor: tag.color}' v-for='tag in event.tags' href='#'
- @click.stop='addSearchTag(tag)') {{tag.tag}}
+ el-tag.mr-1(:color='tag.color' v-for='tag in event.tags'
+ size='mini' @click.stop='addSearchTag(tag)') {{tag.tag}}
diff --git a/client/src/components/Export.vue b/client/src/components/Export.vue
index 35f2146f..5595ef3f 100644
--- a/client/src/components/Export.vue
+++ b/client/src/components/Export.vue
@@ -1,38 +1,32 @@
- b-modal(hide-footer hide-header
- @hide='$router.replace("/")' size='lg' :visible='true' v-if='type')
- h3.text-center Export
+ el-dialog(@close='$router.replace("/")' :title='$t("Export")' :visible='true' center width='600px')
p {{$t('export_intro')}}
li(v-if='filters.tags.length') {{$t('Tags')}}:
- b-badge.ml-1(:style='{backgroundColor: tag.color}' v-for='tag in filters.tags') {{tag}}
+ el-tag.ml-1(color='#409EFF' size='mini' v-for='tag in filters.tags') {{tag}}
li(v-if='filters.places.length') {{$t('Places')}}:
- b-badge.ml-1(v-for='place in filters.places') {{place}}
- b-tabs(pills vertical)
- b-tab.pt-1(title='feed rss' :active="type === 'feed'" @click='type="feed"')
- p(v-html='$t(`export_feed_explanation`)')
- b-input-group.mb-2(v-if='showLink')
- b-form-input( v-model='link' autocomplete='off')
- b-input-group-append
- b-button(variant="success" v-clipboard:copy="link") Copy
+ el-tag.ml-1(color='#409EFF' size='mini' v-for='place in filters.places') {{place}}
+ el-tabs.mt-2(tabPosition='left' v-model='type')
+ el-tab-pane.pt-1(label='feed rss' name='feed')
+ span(v-html='$t(`export_feed_explanation`)')
+ el-input(v-model='link')
+ el-button(slot='append' plain type="primary" icon='el-icon-document' v-clipboard:copy="link") {{$t("Copy")}}
- b-tab.pt-1(title='ics/ical' :active="type === 'ics'" @click='type="ics"')
+ el-tab-pane.pt-1(label='ics/ical' name='ics')
p(v-html='$t(`export_ical_explanation`)')
- b-input-group.mb-2(v-if='showLink')
- b-form-input( v-model='link' autocomplete='off')
- b-input-group-append
- b-button(variant="success" v-clipboard:copy="link") Copy
-
- b-tab.pt-1(title='email' :active="type === 'email'" @click='type="email"')
+ el-input(v-model='link')
+ el-button(slot='append' plain type="primary" icon='el-icon-document' v-clipboard:copy="link") {{$t("Copy")}}
+
+ el-tab-pane.pt-1(label='email' name='email')
p(v-html='$t(`export_email_explanation`)')
b-form
el-switch(v-model='mail.sendOnInsert' :active-text="$t('notify_on_insert')")
br
- el-switch(v-model='mail.reminder' :active-text="$t('send_reminder')")
- b-form-input.mt-1(v-model='mail.mail' :placeholder="$t('Insert your address')")
- b-button.mt-1.float-right(variant='success' @click='activate_email') {{$t('Send')}}
+ el-switch.mt-2(v-model='mail.reminder' :active-text="$t('send_reminder')")
+ el-input.mt-2(v-model='mail.mail' :placeholder="$t('Insert your address')")
+ el-button.mt-2.float-right(type='success' @click='activate_email') {{$t('Send')}}
- b-tab.pt-1(title='list' :active="type === 'list'" @click='type="list"')
+ el-tab-pane.pt-1(label='list' name='list')
p(v-html='$t(`export_list_explanation`)')
b-card.mb-1(no-body header='Eventi')
b-list-group#list(flush)
@@ -44,13 +38,16 @@
strong.mb-1 {{event.title}}
br
small.float-right {{event.place.name}}
- b-badge.float-left.ml-1(:style='{backgroundColor: tag.color}' v-for='tag in event.tags') {{tag.tag}}
- b-form-textarea(v-model='script')
+ el-tag.mr-1(:color='tag.color' size='mini' v-for='tag in event.tags') {{tag.tag}}
+ el-input.mb-1(type='textarea' v-model='script')
+ el-button.float-right(plain type="primary" icon='el-icon-document' v-clipboard:copy="script") Copy
- b-tab.pt-1(title='calendar' :active="type === 'calendar'" @click='type="calendar"')
+
+ el-tab-pane.pt-1(label='calendar' name='calendar')
p(v-html='$t(`export_calendar_explanation`)')
- Calendar
- b-form-textarea(v-model='script')
+ Calendar.mb-1
+ el-input.mb-1(type='textarea' v-model='script')
+ el-button.float-right(plain type="primary" icon='el-icon-document' v-clipboard:copy="script") Copy
-
-
+
\ No newline at end of file
diff --git a/client/src/locale/it.js b/client/src/locale/it.js
index 43f08222..a2bdff3d 100644
--- a/client/src/locale/it.js
+++ b/client/src/locale/it.js
@@ -12,13 +12,13 @@ const it = {
description_explanation: 'Descrivi l\'evento, dajene di copia/incolla',
date_explanation: 'Seleziona il giorno',
dates_explanation: 'Seleziona i giorni',
- time_start_explanation: 'Inserisci un orario di inizio',
- time_end_explanation: 'Puoi inserire un orario di fine',
+ time_start_explanation: 'Orario di inizio',
+ time_end_explanation: 'Orario di fine',
media_explanation: 'Se vuoi puoi mettere una locandina/manifesto',
tag_explanation: 'Puoi inserire un tag (es. concerto, corteo)',
export_intro: `Contrariamente alle piattaforme del capitalismo, che fanno di tutto per tenere
i dati e gli utenti al loro interno, crediamo che le informazioni, come le persone,
- debbano essere libere. Per questo puoi rimanere aggiornata sugli eventi che vuoi, come meglio credi, senza necessariamente passare da qui.`,
+ debbano essere libere. Per questo puoi rimanere aggiornata sugli eventi che vuoi, come meglio credi, senza necessariamente passare da questo sito.`,
export_feed_explanation: `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.
@@ -41,6 +41,7 @@ const it = {
Login: 'Entra',
SignIn: 'Registrati',
Cancel: 'Annulla',
+ Copy: 'Copia',
Next: 'Continua',
Prev: 'Indietro',
Username: 'Utente',
@@ -68,7 +69,8 @@ const it = {
registration_email: `Ciao, la tua registrazione sarà confermata nei prossimi giorni. Riceverai una conferma non temere.`,
register_explanation: `I movimenti hanno bisogno di organizzarsi e autofinanziarsi.
Questo è un dono per voi, non possiamo più vedervi usare le piattaforme del capitalismo. Solo 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.`
+ carne e sangue, scrivici quindi due righe per farci capire che eventi vorresti pubblicare.`,
+ login_explanation: ``
}
export default it
diff --git a/client/yarn.lock b/client/yarn.lock
index 5c9861b7..877bcffc 100644
--- a/client/yarn.lock
+++ b/client/yarn.lock
@@ -10,33 +10,33 @@
"@babel/highlight" "^7.0.0"
"@babel/core@^7.0.0":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687"
- integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b"
+ integrity sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.2.2"
+ "@babel/generator" "^7.3.4"
"@babel/helpers" "^7.2.0"
- "@babel/parser" "^7.2.2"
+ "@babel/parser" "^7.3.4"
"@babel/template" "^7.2.2"
- "@babel/traverse" "^7.2.2"
- "@babel/types" "^7.2.2"
+ "@babel/traverse" "^7.3.4"
+ "@babel/types" "^7.3.4"
convert-source-map "^1.1.0"
debug "^4.1.0"
json5 "^2.1.0"
- lodash "^4.17.10"
+ lodash "^4.17.11"
resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/generator@^7.2.2":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc"
- integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==
+"@babel/generator@^7.3.4":
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e"
+ integrity sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==
dependencies:
- "@babel/types" "^7.2.2"
+ "@babel/types" "^7.3.4"
jsesc "^2.5.1"
- lodash "^4.17.10"
+ lodash "^4.17.11"
source-map "^0.5.0"
trim-right "^1.0.1"
diff --git a/views/feed/rss.pug b/views/feed/rss.pug
index a2d335bd..1528be4b 100644
--- a/views/feed/rss.pug
+++ b/views/feed/rss.pug
@@ -17,7 +17,7 @@ rss(version='2.0', xmlns:atom='
- | !{event.description}
+ | !{event.description}
| ]]>
- pubDate= new Date(event.start_datetime).toUTCString()
+ pubDate= new Date(event.createdAt).toUTCString()
guid(isPermaLink='false') #{config.baseurl}/event/#{event.id}
\ No newline at end of file