Commit graph

157 commits

Author SHA1 Message Date
Simon Ser 8813faf71e
go fmt 2020-05-20 19:08:06 +02:00
Drew DeVault 9465f8db6d
login: set encrypted "remember me" token 2020-05-20 19:07:47 +02:00
Drew DeVault 7142da950d
alps theme: initial layout for calendar 2020-05-20 18:59:01 +02:00
Drew DeVault 50cb8bef77
alps theme: add contact edit/create 2020-05-20 17:47:52 +02:00
Drew DeVault e4e410de1e
alps theme: add contact details page 2020-05-20 17:47:52 +02:00
Simon Ser cfea0ec787
plugins/caldav: fix duplicate event after edit 2020-05-20 17:45:32 +02:00
Simon Ser 83dd3f71d6
Drop unnecessary "log" import 2020-05-20 17:19:24 +02:00
Simon Ser 4402a748f0
plugins/caldav: edit event descriptions 2020-05-20 17:08:24 +02:00
Simon Ser 7157627dcf
plugins/caldav: add route to delete event 2020-05-20 16:54:33 +02:00
Simon Ser 36f3fb9567
plugins/caldav: add link to edit event 2020-05-20 16:51:02 +02:00
Simon Ser 8589228c73
Replace IMAPMessage.TextPartName with TextPart 2020-05-20 16:25:25 +02:00
Drew DeVault 2d86413876
mailbox: show unseen message count in page title 2020-05-20 15:28:36 +02:00
fox.cpp 62910a94fb
plugins/base: Add missing nil check for getMailboxByType
Fixes panic if there is no usable Sent folder.
2020-05-18 18:35:05 +02:00
Wagner Riffel 42c5a81986
plugins/caldav: remove statements not used
Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
2020-05-18 18:32:30 +02:00
Drew DeVault aab1f866f6
mailbox: set title to "Inbox" rather than "INBOX" 2020-05-13 19:49:20 +02:00
Simon Ser ce0b0a7eeb
plugins/caldav: add form to create new events 2020-05-13 19:44:08 +02:00
Simon Ser ea12ffcc4c
plugins/caldav: fix event list URLs 2020-05-13 19:34:46 +02:00
Simon Ser 3036cc4436
plugins/base: fix mailbox unread count 2020-05-13 18:18:13 +02:00
Simon Ser 37be46c047
plugins/carddav: add route to delete a contact 2020-05-13 17:59:04 +02:00
Simon Ser ee5ce517d1
plugins/caldav: introduce helper CalendarObject type 2020-05-13 17:10:21 +02:00
Drew DeVault 3d1f278fae
Use context-appropriate title for mbox/msg view 2020-05-13 17:00:47 +02:00
Drew DeVault 1cf95af41e
Add <meta refresh> to mailbox view
This causes the mailbox to automatically reload the page every 60
seconds, without JavaScript.

This also updates the base template data to include the full URL, and
replaces the earlier "Path" field with a pre-split array of path
components, which is more immediately useful to most templates given the
limitations of string munging with text/template primitives.
2020-05-13 16:58:48 +02:00
Simon Ser 0191b73996
plugins/caldav: switch to path-based URLs
UIDs are not first-class WebDAV citizens and would require two
roundtrips for most operations.
2020-05-13 16:48:03 +02:00
Simon Ser b891a95fcf
Rename project to alps 2020-05-13 14:07:44 +02:00
Simon Ser 4cf5ad68af
plugins/base: always show INBOX first 2020-03-27 13:19:26 +01:00
Simon Ser 5af6c6adc1
plugins/base: wrap MailboxInfo and MailboxStatus
This allows us to extend these and expose helpers for templates and
plugins.
2020-03-27 10:45:43 +01:00
Simon Ser f6959346ee
plugins/base: allow redirect param to be a form param 2020-03-27 10:27:37 +01:00
Simon Ser 9b804005b4
plugins/base: add redirect param to move/delete/flag endpoints 2020-03-27 10:24:19 +01:00
Simon Ser 9eac0b453a
plugins/base: allow to specify move/flag params via query 2020-03-19 17:25:52 +01:00
Simon Ser b61e40f363
plugins/base: allow move/delete/flag operations to take multiple UIDs 2020-03-19 16:43:27 +01:00
Simon Ser fe73f2022c
plugins/base: add action param to handleSetFlags
This alows to add/remove flags instead of setting them.
2020-03-18 21:10:40 +01:00
Simon Ser a455fc8ddd
plugins/base: fix IMAMessage.PartByPath with nil path 2020-03-18 19:44:18 +01:00
Simon Ser be3ab9bdd5
plugins/base: disallow replying to text/html parts 2020-03-18 15:08:36 +01:00
Simon Ser ae8658f468
plugins/base: add route to forward messages
Only inline forwarding is supported for now.

References: https://todo.sr.ht/~sircmpwn/koushin/37
2020-03-18 15:01:15 +01:00
Simon Ser ea0626d806
plugins/carddav: check supported vCard versions 2020-02-27 12:56:06 +01:00
Simon Ser 89149b38c8
plugins/carddav: use paths instead of UIDs in URLs 2020-02-27 12:17:23 +01:00
Simon Ser 4bb0ded2d9
plugins/caldav: update go-webdav 2020-02-25 19:24:35 +01:00
Simon Ser 7de332c2bb
plugins/viewtext: linkify plaintext messages 2020-02-25 18:16:26 +01:00
Simon Ser c96903f3f1
plugins/base: replace MessageRenderData.PartPath with Part 2020-02-25 16:38:29 +01:00
Simon Ser b3f98de1da
plugins/viewhtml: add opt-in query param to load remote resources
Loading remote resources by default has privacy implications.
2020-02-25 16:13:10 +01:00
Simon Ser a8a3c82579
plugins/viewhtml: add image proxy 2020-02-25 15:45:43 +01:00
Simon Ser 8c4fd20e27
Revert "plugins/viewhtml: convert mailto links"
This reverts commit 02faf6174b.

This commit doesn't work, because it's applied to <img> tags. Making it
handle <a> tags doesn't work either because bluemonday will strip any
target="_blank" attributes, making the compose form open in the
<iframe>. Let's just revert this whole commit for now.
2020-02-25 15:37:47 +01:00
Simon Ser 02faf6174b
plugins/viewhtml: convert mailto links 2020-02-25 14:06:10 +01:00
Simon Ser 62660f8d1d
plugins/viewhtml: add support for inline Content-Id images
Closes: https://todo.sr.ht/~sircmpwn/koushin/33
2020-02-25 10:47:38 +01:00
Simon Ser 7af7d73700
plugins/base: add message URL and Content-Id helpers 2020-02-25 10:46:55 +01:00
Simon Ser c3e323161a
plugins/viewhtml: add sanitizer struct 2020-02-25 09:51:57 +01:00
Simon Ser be3c069f5d
plugins/caldav: make discovery failures non-fatal
Closes: https://todo.sr.ht/~sircmpwn/koushin/64
2020-02-19 16:35:47 +01:00
Simon Ser 778e6f9c89
plugins/carddav: add view to edit contacts 2020-02-12 21:35:18 +01:00
Simon Ser c4ff33e645
plugins/carddav: add page to create new contact 2020-02-12 21:14:18 +01:00
Simon Ser 1dc00fa023
plugins/carddav: filter contacts with EMAIL/FN set
Don't issue a CardDAV query with any filter, Google won't return any
result.
2020-02-12 17:33:08 +01:00
Simon Ser 8299617ebc
Turn message part viewers into plugins 2020-02-12 15:41:00 +01:00
Simon Ser 3a3887b358
plugins/carddav: cache addressbook home set path 2020-02-11 19:14:05 +01:00
Simon Ser 82304a78d6
plugins/caldav: add missing event.html template 2020-02-11 17:14:43 +01:00
Simon Ser 9fe20a604c
plugins/caldav: add pagination to calendar view 2020-02-05 18:57:16 +01:00
Simon Ser a1b43cc5a8
plugins/caldav: add basic event view 2020-02-05 18:39:53 +01:00
Simon Ser 5b78cdc104
plugins/caldav: new plugin
For now it can only list events for the current month.

References: https://todo.sr.ht/~sircmpwn/koushin/60
2020-02-05 18:14:26 +01:00
Simon Ser 1bd930f043
plugins/carddav: add basic contacts view 2020-02-05 14:58:56 +01:00
Simon Ser 3263a89185
plugins/carddav: accept "carddavs" and "carddav+insecure" URL schemes 2020-02-05 13:56:18 +01:00
Simon Ser ad256906e0
plugins/carddav: sanity check URL on startup 2020-02-05 13:52:52 +01:00
Simon Ser 6a6ece03e4
plugins/carddav: new plugin
A new minimal CardDAV plugin is introduced. It injects a list of e-mail
addresses in the e-mail compose view.

References: https://todo.sr.ht/~sircmpwn/koushin/7
2020-02-05 12:21:54 +01:00
Simon Ser 6ea7cd9134
plugins/base: add icons for attachments/re/fwd/starred 2020-02-05 11:58:53 +01:00
Simon Ser 651872ef7d
plugins/base/imap: disable full-text search for now
It's too slow on servers where indexes aren't enabled.

References: https://todo.sr.ht/~sircmpwn/koushin/23
2020-02-05 11:37:01 +01:00
Simon Ser 4d68400036
plugins/base: add settings page
Add a settings page where the user can change the number of messages
displayed per page.
2020-01-28 20:04:33 +01:00
Simon Ser 85c01b87a9
plugins/base: support attachments in drafts
References: https://todo.sr.ht/~sircmpwn/koushin/16
2020-01-28 12:30:07 +01:00
Simon Ser 50046b62ac
plugins/base: use BodyStructure.Walk instead of custom logic 2020-01-28 11:15:10 +01:00
Simon Ser b325933a8b
Add .editorconfig 2020-01-24 20:59:35 +01:00
Simon Ser 3384c39a17
plugins/base: delete previous draft 2020-01-24 20:27:05 +01:00
Simon Ser d31c56ec98
plugins/base: edit drafts
Note that attachments will be lost. This is a TODO.
2020-01-24 20:07:29 +01:00
Simon Ser 2e367efe58
plugins/base: add fallback if SPECIAL-USE is unsupported 2020-01-24 18:01:01 +01:00
Simon Ser bfc617b702
plugins/base: save message as draft 2020-01-24 17:49:50 +01:00
Simon Ser b58c15d121
Extract Lua infrastructure into a plugin 2020-01-20 22:04:50 +01:00
Simon Ser 01983eb7b5
Introduce PluginLoaderFunc
This allows registered plugins to execute code when loaded. This will
also allow the Lua support code to be a plugin.

Closes: https://todo.sr.ht/~sircmpwn/koushin/54
2020-01-20 21:37:28 +01:00
Simon Ser d19c17c6d5
go fmt 2020-01-20 20:27:49 +01:00
Simon Ser 589b303f9f
plugins/base: append outgoing messages to Sent mailbox
And mark original message as answered.

Closes: https://todo.sr.ht/~sircmpwn/koushin/15
2020-01-20 20:25:41 +01:00
Simon Ser 3bf17752ab
plugins/base: remove external resources URLs, sanitize CSS 2020-01-20 18:28:49 +01:00
Simon Ser a66ef1059b
Make the text/* part content a []byte 2020-01-20 16:20:16 +01:00
Simon Ser 8d248bc32f
Extract HTML sanitizer to its own file 2020-01-20 16:20:16 +01:00
Simon Ser d745f98bb7
Add polyfill for browsers not supporting srcdoc 2020-01-20 16:20:15 +01:00
Simon Ser efaf6fd444
Open e-mail links in new tab 2020-01-20 16:20:15 +01:00
Simon Ser 721c3ce3eb
Resize e-mail iframe with content 2020-01-20 16:20:15 +01:00
Simon Ser af5ffd12f9
Add support for HTML parts 2020-01-20 16:20:15 +01:00
Dejan Strbac 15a77185b4
Include flags when fetching items over IMAP 2020-01-16 13:34:10 +01:00
Simon Ser 24718f1ac4
Redirect to original URL after login 2020-01-10 17:29:37 +01:00
Simon Ser 97b314b6e7
Add Server.Reload
This only reloads templates for now. In the future it'll also reload
Lua plugins.
2020-01-08 10:52:28 +01:00
Simon Ser d36ec520aa
Fix extra comma in address list 2019-12-18 17:07:10 +01:00
Simon Ser 8c4587f477
Fix header missing from raw e-mail download 2019-12-18 16:57:53 +01:00
Simon Ser 80da410c3b
Implement paging for search 2019-12-17 16:23:51 +01:00
Simon Ser f106c1125f
Make Go plugin handlers take a *Context
Take a *Context instead of a echo.Context. This saves a type assertion
in each handler.
2019-12-17 15:19:37 +01:00
Simon Ser ca3672df2a
Add RenderData interface
This allows Go plugins to easily inject global data.
2019-12-17 15:01:15 +01:00
Simon Ser d8a875a5f7
Rename RenderData to BaseRenderData
RenderData will be used for an interface.
2019-12-17 13:27:20 +01:00
Simon Ser 38d73f5771
Use Context.FormParams 2019-12-17 13:09:25 +01:00
Simon Ser e2d70ba6ca
Linkify address lists 2019-12-17 13:02:38 +01:00
Simon Ser 0c21c501ff
Redirect / to INBOX 2019-12-17 12:44:13 +01:00
Simon Ser 2a2a48c7fa
Add a form to set message flags
References: https://todo.sr.ht/~sircmpwn/koushin/36
2019-12-17 12:42:04 +01:00
Simon Ser 3aea768cad
plugins/base: extract route registration into function 2019-12-17 11:36:08 +01:00
Simon Ser 9404be1a32
Add envelope metadata to message view 2019-12-17 11:33:23 +01:00
Simon Ser e78d2db3ea
Improve docs 2019-12-17 10:58:31 +01:00
Simon Ser a425e17b0e
Add button to delete message
Maybe we should add a confirmation step in the future.

References: https://todo.sr.ht/~sircmpwn/koushin/36
2019-12-16 17:45:20 +01:00
Simon Ser 1841609fbc
Add form to move messages
References: https://todo.sr.ht/~sircmpwn/koushin/36
2019-12-16 17:25:53 +01:00
Simon Ser 4449416357
Export IMAPMessage
This is a public type other plugins and templates may want to access.
2019-12-16 15:46:29 +01:00