Commit graph

219 commits

Author SHA1 Message Date
Magnus Hoff
5ea9dbef71 Add BSD-3-Clause to list of licenses 2017-11-02 15:16:16 +01:00
Magnus Hoff
faec67c797 Include and serve relevant software licenses 2017-11-02 14:48:22 +01:00
Magnus Hoff
63b9715550 Add a bare bones _about page. #10 2017-11-01 15:38:50 +01:00
Magnus Hoff
78bd53e640 Machine readable branding.
Include project name and version in Server header and generator meta tag
2017-11-01 13:17:58 +01:00
Magnus Hoff
833c96b58d Make use of .default_value in clap 2017-11-01 11:58:11 +01:00
Magnus Hoff
548555c45e Populate clap with information from Cargo.toml 2017-11-01 11:44:49 +01:00
Magnus Hoff
59b9e77d47 Rudimentary support for comparing revisions of articles
For issue #21
2017-10-30 16:35:21 +01:00
Magnus Hoff
a6f707b911 Allow configuration of bind address 2017-10-30 14:59:39 +01:00
Magnus Hoff
b6d3cbf2c6 Improve regression resistance with named consts 2017-10-30 14:40:49 +01:00
Magnus Hoff
3dd4927281 Forbid empty titles in application layer 2017-10-30 13:20:40 +01:00
Magnus Hoff
975661048e Refactor to reuse TemporaryRedirectResource instead of ArticleRedirectResource 2017-10-30 12:56:28 +01:00
Magnus Hoff
1bdc21039b Refactor generation of links from slugs
This fixes a bug where the cancel-link on the front page would be to "" rather than "."
2017-10-30 12:42:53 +01:00
Magnus Hoff
4ca748f180 Optionally show authors in _changes based on --trust-identity command line argument.
This fixes #19
2017-10-30 11:44:36 +01:00
Magnus Hoff
ef4a3e689b More properly fix --trust-identity command line option 2017-10-30 11:33:05 +01:00
Magnus Hoff
245ecaa969 Prefer dashes in command line options 2017-10-30 11:04:01 +01:00
Magnus Hoff
5b37a41632 Support editing articles without JavaScript 2017-10-30 11:01:37 +01:00
Magnus Hoff
c86f24a665 Use branch of pulldown-cmark to achieve proper html handling 2017-10-28 14:26:01 +02:00
Magnus Hoff
b81137ad25 Prev and next-links for search result. "More"-link for instant search 2017-10-25 16:34:21 +02:00
Magnus Hoff
74b8040d39 Refactor CSS for search results. Add support for keyboard control to full search results page 2017-10-25 16:02:30 +02:00
Magnus Hoff
056f1ddf72 Implement interactive search 2017-10-25 13:24:42 +02:00
Magnus Hoff
2cdbd7c7f5 Use content type negotiation (the Accept header) to serve different formats from the _search endpoint 2017-10-25 11:39:19 +02:00
Magnus Hoff
9336fbf3cd Expand search api 2017-10-24 22:16:10 +02:00
Magnus Hoff
59c11897b2 Tweak FTS query
Attempt to smartly use NEAR searches and prefix searches depending on input. This is hopefully a good idea
2017-10-24 21:54:27 +02:00
Magnus Hoff
8104430701 Refactor 2017-10-24 21:23:18 +02:00
Magnus Hoff
a07f47c0f7 Implement quoting for the FTS search syntax of SQLite
This makes search queries safe for user input
2017-10-24 21:21:02 +02:00
Magnus Hoff
1bb1df8cf0 Add a first approximation of full text search. Issue #8 2017-10-24 16:48:16 +02:00
Magnus Hoff
628f3501a2 Remove pointless self-link 2017-10-24 12:59:37 +02:00
Magnus Hoff
5fc11abcfd Add text to _changes explaining the query. Add links to variants of the query 2017-10-24 12:49:19 +02:00
Magnus Hoff
3fb3139d28 Tweak links to _changes feed 2017-10-24 12:27:39 +02:00
Magnus Hoff
d67cc668a2 Update links from _changes to point to historical revisions of articles.
This fixes #14.

Also: Add links to _changes filtered by author for authors in the _changes feed
2017-10-24 11:04:37 +02:00
Magnus Hoff
ffccc5722c Add view of historical article revisions 2017-10-24 11:03:09 +02:00
Magnus Hoff
db0c2ef7f7 Finish refactoring, reducing some cloning 2017-10-24 09:19:01 +02:00
Magnus Hoff
a270963824 Fix handling of empty result sets in _changes 2017-10-23 16:13:18 +02:00
Magnus Hoff
f097313e53 Add links in footer to article and author history 2017-10-23 16:10:19 +02:00
Magnus Hoff
d7d555d4d5 Implement support for filtering searches by author 2017-10-23 15:56:27 +02:00
Magnus Hoff
dd22bcde98 Add support for filtering _changes by article_id 2017-10-23 15:48:41 +02:00
Magnus Hoff
955254335d Make page size/limit for _changes configurable.
Refactor handling of query args and building of links. This paves the way for more query args
2017-10-23 15:32:52 +02:00
Magnus Hoff
0f1e1f65ed Factor out pagination resolver from ChangesResource and call it ChangesLookup 2017-10-22 14:36:05 +02:00
Magnus Hoff
b3ffcb916b Redirect after-pagination queries to the corresponding before-queries
This normalizes the URLs, avoiding duplicate URLs for a sublist
2017-10-22 13:38:13 +02:00
Magnus Hoff
7a63fdca0e Refactor ChangesResource to handle pagination only in terms of before 2017-10-22 13:16:29 +02:00
Magnus Hoff
50b86db597 Internally reformulate all pagination queries as before-queries
This fixes the pagination links so they only show up when relevant
2017-10-22 13:07:50 +02:00
Magnus Hoff
6c36e3cb49 Add links to newest and oldest changes 2017-10-22 12:41:42 +02:00
Magnus Hoff
d918d614b4 Refactor pagination 2017-10-20 20:48:43 +02:00
Magnus Hoff
29c4180496 Make it an error to specify both before and after for pagination 2017-10-20 20:48:43 +02:00
Magnus Hoff
0dacad5a3e Refactor handling of pagination query arguments 2017-10-20 20:48:43 +02:00
Magnus Hoff
a42010a1f8 Verify that the user attempts to create a new article 2017-10-19 13:46:22 +02:00
Magnus Hoff
700cf42eb0 Improve footer when article does not exist 2017-10-19 13:39:03 +02:00
Magnus Hoff
904bfd2a0b Restructure footer.
Less irrelevant information. Refactor rendering of "last updated"
2017-10-19 13:26:54 +02:00
Magnus Hoff
f923b5b6c0 Display author name in articles and _changes. This fixes #6 2017-10-18 16:53:27 +02:00
Magnus Hoff
d22ac6ef84 Only trust the X-Identity header when it is specified on the command line 2017-10-18 16:46:55 +02:00
Magnus Hoff
c85715c969 Start tracking authors for edits. #6 2017-10-18 16:33:21 +02:00
Magnus Hoff
94b3966e46 Rudimentary pagination for _changes 2017-10-15 23:15:12 +02:00
Magnus Hoff
8b2e601a46 Cleanup 2017-10-15 17:31:11 +02:00
Magnus Hoff
6d3d48c56e Parse query args for pagination in /_changes 2017-10-15 17:22:38 +02:00
Magnus Hoff
4f9cf4d15e Refactor assets routing 2017-10-15 16:49:55 +02:00
Magnus Hoff
c0521b5703 Refactor routing 2017-10-15 16:34:27 +02:00
Magnus Hoff
f40b6ce70d Refactor routing 2017-10-15 14:26:22 +02:00
Magnus Hoff
4756441064 Refactor path splitting in router 2017-10-14 15:13:03 +02:00
Magnus Hoff
73df2edc1a More humane timedate formatting in footer 2017-10-13 16:31:31 +02:00
Magnus Hoff
b5bcd66011 Introduce base href 2017-10-13 16:05:22 +02:00
Magnus Hoff
f2de8111c9 Structure template folder
Move errors to their own folder
2017-10-13 15:36:22 +02:00
Magnus Hoff
d1a3814286 Collect Resource types in a module 2017-10-13 15:21:23 +02:00
Magnus Hoff
2cb80e2bac Add sitemap. This fixes #3 2017-10-13 15:06:16 +02:00
Magnus Hoff
4ed28f99f3 Enable table extension for markdown, for issue #4 2017-10-12 14:56:43 +02:00
Magnus Hoff
1aeba7b2e3 Simplify _changes list 2017-10-03 22:31:27 +02:00
Magnus Hoff
f22ffc112a Add basic /_changes page 2017-10-03 10:37:18 +02:00
Magnus Hoff
370cbd0c24 Add default implementations for dispatch methods in Resource trait 2017-10-03 10:36:21 +02:00
Magnus Hoff
2a5f98d43e Slightly less mindless copying 2017-10-02 21:47:21 +02:00
Magnus Hoff
b21a7ccda4 Don't try to handle fragment in router.
It is strictly a client-side mechanism
2017-10-02 21:35:52 +02:00
Magnus Hoff
cdcdf8e72f Refactor server-side initiated edit mode.
Implement support for opening articles for editing without javascript
2017-10-02 21:30:31 +02:00
Magnus Hoff
02dd55df39 Cleanup 2017-10-02 17:11:18 +02:00
Magnus Hoff
1d485798eb Implement /_new, for creating new articles without making up a URL first 2017-10-02 17:08:59 +02:00
Magnus Hoff
ce1bbee22c Sort some lists of things lexicographically 2017-10-01 23:26:57 +02:00
Magnus Hoff
7562961093 Percent decode path segments of URL 2017-10-01 23:24:16 +02:00
Magnus Hoff
dc4a136336 Cleanup 2017-10-01 22:35:06 +02:00
Magnus Hoff
cd784e34c3 Bugletfixes 2017-09-21 12:11:08 +02:00
Magnus Hoff
9d0ca63aa9 When inventing a title from a slug, add some capitalization 2017-09-21 11:42:09 +02:00
Magnus Hoff
ad4addfc8c Implement support for inserting new articles 2017-09-21 11:38:52 +02:00
Magnus Hoff
0a3cb53a66 Add NewArticleResource
Serve placeholder page for non-existing articles.
Redirect user-generated slugs to canonical slugs.
2017-09-21 10:58:54 +02:00
Magnus Hoff
01dafa7d37 Special case front page so it never gets a non-empty slug 2017-09-21 10:23:30 +02:00
Magnus Hoff
3feed530ff Implement support for editing page title 2017-09-21 10:09:57 +02:00
Magnus Hoff
631e76324b Cleanup. Make use of .first() and .optional() from Diesel 2017-09-20 23:40:07 +02:00
Magnus Hoff
debf44623c Automatically generate slugs for articles based on title 2017-09-20 23:31:25 +02:00
Magnus Hoff
e1d823d22e Implement lookup and redirect of articles by slugs 2017-09-20 11:54:26 +02:00
Magnus Hoff
ada70b7671 Cleanup 2017-09-17 15:43:31 +02:00
Magnus Hoff
bb334df128 Cleanup based on new version of Diesel 2017-09-17 12:19:48 +02:00
Magnus Hoff
88eda46d95 Remove all usage of futures::BoxFuture, which is deprecated 2017-09-17 12:08:42 +02:00
Magnus Hoff
551cc22383 Remove all calls to Future::boxed(), which is deprecated 2017-09-17 11:45:35 +02:00
Magnus Hoff
16efa068d8 Introduce splitting on /-es in URLs 2017-09-17 11:27:50 +02:00
Magnus Hoff
573195d09c Code splitting 2017-09-15 17:28:23 +02:00
Magnus Hoff
7391b2db26 Cleanup 2017-09-15 15:09:51 +02:00
Magnus Hoff
5ab609886b Make a note of license for font 2017-09-15 15:07:22 +02:00
Magnus Hoff
51fe78abce Serve header font 2017-09-15 15:03:00 +02:00
Magnus Hoff
53c4ff1b5c Extract CSS and JS from templates and serve as static assets 2017-09-15 14:54:47 +02:00
Magnus Hoff
320ec98d65 Take CPU pool as dependency for State 2017-09-10 12:29:33 +02:00
Magnus Hoff
6fb1062376 Execute State functions in thread pool 2017-09-08 16:21:24 +02:00
Magnus Hoff
b3e7552c16 Make State-functons return Future-s 2017-09-08 15:58:15 +02:00
Magnus Hoff
50b9ebf59e Make State::update_article return a Future.
In preparation for threading
2017-09-08 15:37:58 +02:00
Magnus Hoff
db4f18807d Simplify by removing genericity.
Nothing to be generic over
2017-09-08 14:46:18 +02:00
Magnus Hoff
6f94b2f960 Silence some warnings 2017-09-08 14:43:47 +02:00
Magnus Hoff
1a5b39b3a1 Implement editing 2017-09-05 17:07:57 +02:00
Magnus Hoff
60a87d1898 Introduce db connection pool. Derive Clone for State 2017-09-05 15:19:37 +02:00
Magnus Hoff
5a859e5c33 Dispatch PUT to ArticleResource 2017-09-05 12:05:56 +02:00
Magnus Hoff
84b97efa9d Treat HTML in markdown source as text to be escaped for output 2017-09-03 21:33:04 +02:00
Magnus Hoff
2177cd7504 Start implementing editor 2017-09-02 15:32:59 +02:00
Magnus Hoff
405b203bc7 Some layout and styling 2017-09-02 15:26:28 +02:00
Magnus Hoff
94758adaf4 Make Resource::get consume self, for copyless futures 2017-09-01 12:32:30 +02:00
Magnus Hoff
76302353e1 HTTP handling refactoring.
Refactor to lookup/route and resource abstractions.

Bake in futures/async support.

Implement more of the HTTP standard.
2017-08-25 23:57:06 +02:00
Magnus Hoff
62812c2ddf Print helpful message on startup 2017-08-22 16:40:18 +02:00
Magnus Hoff
df63c25646 Run migrations on start, not on every connection 2017-08-22 09:37:40 +02:00
Johannes Hoff
e997c0f952 Read articles from the actual DB 2017-08-20 23:44:52 +02:00
Magnus Hoff
d9c3bf1191 Templates for error messages 2017-08-20 22:39:52 +02:00
Magnus Hoff
4a37a91ece Split layout out from rendering responses 2017-08-20 22:34:26 +02:00
Magnus Hoff
35e7bad7d2 Simple rendering of stubbed article 2017-08-20 22:17:16 +02:00
Johannes Hoff
139a5b51b6 Propage database connections; dispatch requests 2017-08-20 21:59:16 +02:00
Magnus Hoff
9eb48f7ddc Trivial HTTP response 2017-08-20 20:46:08 +02:00
Magnus Hoff
aae43917e2 Introduce core_main 2017-08-20 20:40:08 +02:00
Johannes Hoff
bc76506ebc Add a web server 2017-08-20 20:24:10 +02:00
Magnus Hoff
3abc3cd68a Skeleton with clap and sqlite database 2017-08-19 22:48:51 +02:00