1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-06 17:41:00 +00:00

Add Instapaper integration

This commit is contained in:
Frédéric Guillot 2017-12-02 21:12:03 -08:00
parent 6f5350a497
commit ae62e543d3
19 changed files with 191 additions and 51 deletions

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-12-02 19:31:37.021832102 -0800 PST m=+0.006773228
// 2017-12-02 21:11:24.016429412 -0800 PST m=+0.007603260
package static

File diff suppressed because one or more lines are too long

View file

@ -105,6 +105,7 @@ input[type="text"]:focus {
.panel {
background: #333;
border-color: #555;
color: #9b9b9b;
}
/* Counter */

View file

@ -223,7 +223,7 @@ input[type="text"]:focus {
}
input[type="checkbox"] {
margin-bottom: 10px;
margin-bottom: 15px;
}
::-moz-placeholder,
@ -239,6 +239,12 @@ input[type="checkbox"] {
margin-bottom: 15px;
}
.form-section {
border-left: 2px dotted #ddd;
padding-left: 20px;
margin-left: 10px;
}
/* Buttons */
a.button {
text-decoration: none;

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-12-02 19:31:37.026479459 -0800 PST m=+0.011420585
// 2017-12-02 21:11:24.018743922 -0800 PST m=+0.009917770
package static

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-12-02 19:31:37.041375649 -0800 PST m=+0.026316775
// 2017-12-02 21:11:24.027142168 -0800 PST m=+0.018316016
package template

View file

@ -29,19 +29,34 @@
{{ end }}
<h3>Pinboard</h3>
<label>
<input type="checkbox" name="pinboard_enabled" value="1" {{ if .form.PinboardEnabled }}checked{{ end }}> {{ t "Enable Pinboard" }}
</label>
<div class="form-section">
<label>
<input type="checkbox" name="pinboard_enabled" value="1" {{ if .form.PinboardEnabled }}checked{{ end }}> {{ t "Enable Pinboard" }}
</label>
<label for="form-pinboard-token">{{ t "Pinboard API Token" }}</label>
<input type="password" name="pinboard_token" id="form-pinboard-token" value="{{ .form.PinboardToken }}">
<label for="form-pinboard-token">{{ t "Pinboard API Token" }}</label>
<input type="password" name="pinboard_token" id="form-pinboard-token" value="{{ .form.PinboardToken }}">
<label for="form-pinboard-tags">{{ t "Pinboard Tags" }}</label>
<input type="text" name="pinboard_tags" id="form-pinboard-tags" value="{{ .form.PinboardTags }}">
<label for="form-pinboard-tags">{{ t "Pinboard Tags" }}</label>
<input type="text" name="pinboard_tags" id="form-pinboard-tags" value="{{ .form.PinboardTags }}">
<label>
<input type="checkbox" name="pinboard_mark_as_unread" value="1" {{ if .form.PinboardMarkAsUnread }}checked{{ end }}> {{ t "Mark bookmark as unread" }}
</label>
<label>
<input type="checkbox" name="pinboard_mark_as_unread" value="1" {{ if .form.PinboardMarkAsUnread }}checked{{ end }}> {{ t "Mark bookmark as unread" }}
</label>
</div>
<h3>Instapaper</h3>
<div class="form-section">
<label>
<input type="checkbox" name="instapaper_enabled" value="1" {{ if .form.InstapaperEnabled }}checked{{ end }}> {{ t "Enable Instapaper" }}
</label>
<label for="form-instapaper-username">{{ t "Instapaper Username" }}</label>
<input type="text" name="instapaper_username" id="form-instapaper-username" value="{{ .form.InstapaperUsername }}">
<label for="form-instapaper-password">{{ t "Instapaper Password" }}</label>
<input type="password" name="instapaper_password" id="form-instapaper-password" value="{{ .form.InstapaperPassword }}">
</div>
<div class="buttons">
<button type="submit" class="button button-primary" data-label-loading="{{ t "Loading..." }}">{{ t "Update" }}</button>

View file

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-12-02 19:31:37.027317932 -0800 PST m=+0.012259058
// 2017-12-02 21:11:24.019569008 -0800 PST m=+0.010742856
package template
@ -812,19 +812,34 @@ var templateViewsMap = map[string]string{
{{ end }}
<h3>Pinboard</h3>
<label>
<input type="checkbox" name="pinboard_enabled" value="1" {{ if .form.PinboardEnabled }}checked{{ end }}> {{ t "Enable Pinboard" }}
</label>
<div class="form-section">
<label>
<input type="checkbox" name="pinboard_enabled" value="1" {{ if .form.PinboardEnabled }}checked{{ end }}> {{ t "Enable Pinboard" }}
</label>
<label for="form-pinboard-token">{{ t "Pinboard API Token" }}</label>
<input type="password" name="pinboard_token" id="form-pinboard-token" value="{{ .form.PinboardToken }}">
<label for="form-pinboard-token">{{ t "Pinboard API Token" }}</label>
<input type="password" name="pinboard_token" id="form-pinboard-token" value="{{ .form.PinboardToken }}">
<label for="form-pinboard-tags">{{ t "Pinboard Tags" }}</label>
<input type="text" name="pinboard_tags" id="form-pinboard-tags" value="{{ .form.PinboardTags }}">
<label for="form-pinboard-tags">{{ t "Pinboard Tags" }}</label>
<input type="text" name="pinboard_tags" id="form-pinboard-tags" value="{{ .form.PinboardTags }}">
<label>
<input type="checkbox" name="pinboard_mark_as_unread" value="1" {{ if .form.PinboardMarkAsUnread }}checked{{ end }}> {{ t "Mark bookmark as unread" }}
</label>
<label>
<input type="checkbox" name="pinboard_mark_as_unread" value="1" {{ if .form.PinboardMarkAsUnread }}checked{{ end }}> {{ t "Mark bookmark as unread" }}
</label>
</div>
<h3>Instapaper</h3>
<div class="form-section">
<label>
<input type="checkbox" name="instapaper_enabled" value="1" {{ if .form.InstapaperEnabled }}checked{{ end }}> {{ t "Enable Instapaper" }}
</label>
<label for="form-instapaper-username">{{ t "Instapaper Username" }}</label>
<input type="text" name="instapaper_username" id="form-instapaper-username" value="{{ .form.InstapaperUsername }}">
<label for="form-instapaper-password">{{ t "Instapaper Password" }}</label>
<input type="password" name="instapaper_password" id="form-instapaper-password" value="{{ .form.InstapaperPassword }}">
</div>
<div class="buttons">
<button type="submit" class="button button-primary" data-label-loading="{{ t "Loading..." }}">{{ t "Update" }}</button>
@ -1145,7 +1160,7 @@ var templateViewsMapChecksums = map[string]string{
"feeds": "c22af39b42ba9ca69ea0914ca789303ec2c5b484abcd4eaa49016e365381257c",
"history": "9a67599a5d8d67ef958e3f07da339b749f42892667547c9e60a54477e8d32a56",
"import": "73b5112e20bfd232bf73334544186ea419505936bc237d481517a8622901878f",
"integrations": "e3cb653bf3d45fada18b64c53860fcae18a9a3f18162d42c56b290cd1aaa4e18",
"integrations": "4e51fabe73b4ee2c2268f77dbbf7987c2a176c5a5714ea29ac31986928f22b8a",
"login": "04f3ce79bfa5753f69e0d956c2a8999c0da549c7925634a3e8134975da0b0e0f",
"sessions": "878dbe8f8ea783b44130c495814179519fa5c3aa2666ac87508f94d58dd008bf",
"settings": "ea2505b9d0a6d6bb594dba87a92079de19baa6d494f0651693a7685489fb7de9",

View file

@ -6,9 +6,8 @@ package controller
import (
"errors"
"log"
"github.com/miniflux/miniflux2/integration/pinboard"
"github.com/miniflux/miniflux2/integration"
"github.com/miniflux/miniflux2/model"
"github.com/miniflux/miniflux2/server/core"
"github.com/miniflux/miniflux2/server/ui/form"
@ -36,6 +35,9 @@ func (c *Controller) ShowIntegrations(ctx *core.Context, request *core.Request,
PinboardToken: integration.PinboardToken,
PinboardTags: integration.PinboardTags,
PinboardMarkAsUnread: integration.PinboardMarkAsUnread,
InstapaperEnabled: integration.InstapaperEnabled,
InstapaperUsername: integration.InstapaperUsername,
InstapaperPassword: integration.InstapaperPassword,
},
}))
}
@ -85,20 +87,14 @@ func (c *Controller) SaveEntry(ctx *core.Context, request *core.Request, respons
return
}
integration, err := c.store.Integration(user.ID)
settings, err := c.store.Integration(user.ID)
if err != nil {
response.JSON().ServerError(err)
return
}
go func() {
if integration.PinboardEnabled {
client := pinboard.NewClient(integration.PinboardToken)
err := client.AddBookmark(entry.URL, entry.Title, integration.PinboardTags, integration.PinboardMarkAsUnread)
if err != nil {
log.Println("[Pinboard]", err)
}
}
integration.SendEntry(entry, settings)
}()
response.JSON().Created(map[string]string{"message": "saved"})

View file

@ -16,6 +16,9 @@ type IntegrationForm struct {
PinboardToken string
PinboardTags string
PinboardMarkAsUnread bool
InstapaperEnabled bool
InstapaperUsername string
InstapaperPassword string
}
// Merge copy form values to the model.
@ -24,6 +27,9 @@ func (i IntegrationForm) Merge(integration *model.Integration) {
integration.PinboardToken = i.PinboardToken
integration.PinboardTags = i.PinboardTags
integration.PinboardMarkAsUnread = i.PinboardMarkAsUnread
integration.InstapaperEnabled = i.InstapaperEnabled
integration.InstapaperUsername = i.InstapaperUsername
integration.InstapaperPassword = i.InstapaperPassword
}
// NewIntegrationForm returns a new AuthForm.
@ -33,5 +39,8 @@ func NewIntegrationForm(r *http.Request) *IntegrationForm {
PinboardToken: r.FormValue("pinboard_token"),
PinboardTags: r.FormValue("pinboard_tags"),
PinboardMarkAsUnread: r.FormValue("pinboard_mark_as_unread") == "1",
InstapaperEnabled: r.FormValue("instapaper_enabled") == "1",
InstapaperUsername: r.FormValue("instapaper_username"),
InstapaperPassword: r.FormValue("instapaper_password"),
}
}