From 81fda6e1c853a95be4c1a89c3464054bd4be3f0b Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Thu, 16 Apr 2020 16:21:21 +0800 Subject: [PATCH] add a preferred_url option --- README.md | 3 +++ src/sn.rs | 14 ++++++++++++-- src/utils.rs | 5 ++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 172b9a0..d2baa82 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ This is the main configuration file. The file will be compiled statically into t "plugin_identifier": "com.example.change.this.to.whatever.you.like", "posts_per_page": 5, "cache_maxage": 86400, + "preferred_url": "", "redirects": { "/foo": "/bar", ... @@ -90,6 +91,8 @@ This is the main configuration file. The file will be compiled statically into t `plugin_identifier`: Used in Standard Notes to distinguish plugins. +`preferred_url`: OPTIONAL. The preferred URL to use for the options "Open Post" and "Open Blog" (and for these options ONLY) in the Standard Notes Actions menu. Must NOT include a trailing `/`. This is useful if you publish your blog at `https://your_domain.com` but use a `workers.dev` domain for your Standard Notes plugin address. + `redirects`: OPTIONAL. A map of URLs where the key will be mapped to the value by Paprika using 301 redirects. This is mainly useful for migration from another blogging platform. `cache_maxage`: OPTIONAL. A value in seconds determining how long the browser should cache static resources from the blog. If omitted, the default value is a week. diff --git a/src/sn.rs b/src/sn.rs index 8fef95f..8670ad0 100644 --- a/src/sn.rs +++ b/src/sn.rs @@ -30,6 +30,7 @@ async fn get_actions(_req: Request, url: Url) -> MyResult { verify_secret!(url, params); let origin = url.origin(); + let preferred_url = crate::CONFIG.preferred_url.clone().unwrap_or(origin.clone()); let mut actions = vec![]; // Show different options depending on whether the post already exists @@ -63,10 +64,10 @@ async fn get_actions(_req: Request, url: Url) -> MyResult { content_types: vec![ContentType::Note], access_type: Some(AccessType::Decrypted) }); - + actions.push(Action { label: "Open Post".into(), - url: format!("{}/{}/", origin, post.unwrap().url), + url: format!("{}/{}/", preferred_url, post.unwrap().url), verb: Verb::Show, context: Context::Item, content_types: vec![ContentType::Note], @@ -74,6 +75,15 @@ async fn get_actions(_req: Request, url: Url) -> MyResult { }); } + actions.push(Action { + label: "Open Blog".into(), + url: preferred_url.clone(), + verb: Verb::Show, + context: Context::Item, + content_types: vec![ContentType::Note], + access_type: None + }); + let info = ActionsExtension { identifier: CONFIG.plugin_identifier.clone(), name: CONFIG.title.clone(), diff --git a/src/utils.rs b/src/utils.rs index 5552e3b..3d73252 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -164,7 +164,10 @@ pub struct Config { // UNLIKE in article headers pub redirects: Option>, // Additional remote resource proxy whitelist - pub extra_remote_proxy_whitelist: Option> + pub extra_remote_proxy_whitelist: Option>, + // Preferred URL of the blog for "Open Post" and "Open Blog" options in SN + // Must NOT include the trailing "/" + pub preferred_url: Option } fn default_maxage() -> u64 {