add syndicate-to options to micropub submit form
This commit is contained in:
parent
32cdeaa781
commit
92f21aee03
7 changed files with 159 additions and 13 deletions
|
@ -59,6 +59,18 @@ class User(db.Model):
|
|||
def get_id(self):
|
||||
return self.domain
|
||||
|
||||
def get_setting(self, key, default=None):
|
||||
if self.settings is None:
|
||||
return default
|
||||
return self.settings.get(key, default)
|
||||
|
||||
def set_setting(self, key, value):
|
||||
if self.settings is None:
|
||||
self.settings = {}
|
||||
else:
|
||||
self.settings = dict(self.settings)
|
||||
self.settings[key] = value
|
||||
|
||||
def __eq__(self, other):
|
||||
if type(other) is type(self):
|
||||
return self.domain == other.domain
|
||||
|
|
|
@ -11,16 +11,26 @@ $(function(){
|
|||
function clickShowReplyForm(evt) {
|
||||
var a = $(this);
|
||||
evt.preventDefault();
|
||||
$(".reply-form", a.parent()).css('display', 'inherit');
|
||||
a.css('display', 'none');
|
||||
$(".like-form", a.parent()).hide();
|
||||
$(".reply-form", a.parent()).toggle();//css('display', 'inherit');
|
||||
//a.css('display', 'none');
|
||||
}
|
||||
|
||||
function clickShowLikeForm(evt) {
|
||||
var a = $(this);
|
||||
evt.preventDefault();
|
||||
$(".reply-form", a.parent()).hide();
|
||||
$(".like-form", a.parent()).toggle();
|
||||
//a.css('display', 'none');
|
||||
}
|
||||
|
||||
function submitMicropubForm(evt) {
|
||||
evt.preventDefault();
|
||||
|
||||
var form = $(this);
|
||||
var replyArea = form.parent();
|
||||
var endpoint = form.attr('action');
|
||||
var responseArea = $('.submit-response', form);
|
||||
var responseArea = $('.micropub-response', replyArea);
|
||||
|
||||
$.post(
|
||||
'/_forward',
|
||||
|
@ -28,21 +38,26 @@ $(function(){
|
|||
function(result) {
|
||||
if (Math.floor(result.code / 100) == 2) {
|
||||
responseArea.html('<a target="_blank" href="' + result.location + '">Success!</a>');
|
||||
$(".reply-form textarea").val("");
|
||||
$(".reply-form", replyArea).hide();
|
||||
$(".like-form", replyArea).hide();
|
||||
} else {
|
||||
responseArea.html('Failure');
|
||||
}
|
||||
},
|
||||
'json'
|
||||
);
|
||||
|
||||
|
||||
responseArea.html('Posting…');
|
||||
}
|
||||
|
||||
function attachListeners() {
|
||||
$(".reply-form").css('display', 'none');
|
||||
$(".show-reply-form").css('display', 'inline');
|
||||
$(".reply-form, .like-form").css('display', 'none');
|
||||
|
||||
$("#older-link").off('click').click(clickOlderLink);
|
||||
$(".show-reply-form").off('click').click(clickShowReplyForm);
|
||||
$(".show-like-form").off('click').click(clickShowLikeForm);
|
||||
|
||||
$(".like-form, .reply-form").off('submit').submit(submitMicropubForm);
|
||||
}
|
||||
|
|
|
@ -433,7 +433,7 @@ textarea, input[type="text"], input[type="url"] {
|
|||
|
||||
.reply-area {
|
||||
text-align: center; }
|
||||
.reply-area a {
|
||||
.reply-area .reply-link {
|
||||
display: inline-block;
|
||||
padding: 0.2em;
|
||||
border: 1px solid #687D77;
|
||||
|
@ -450,6 +450,32 @@ button {
|
|||
form {
|
||||
margin: 1em 0; }
|
||||
|
||||
.toggle {
|
||||
font-family: sans-serif;
|
||||
background-color: #eee;
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
padding: 0.2em 2em 0.2em 0.2em; }
|
||||
.toggle input {
|
||||
display: none; }
|
||||
.toggle label {
|
||||
font-weight: inherit;
|
||||
/* override bootstrap */
|
||||
margin: inherit;
|
||||
/* override bootstrap */
|
||||
position: relative;
|
||||
transition: transform 0.1s;
|
||||
cursor: pointer;
|
||||
background-color: #ccc;
|
||||
color: #666;
|
||||
display: inline-block;
|
||||
padding: 0.25em 1em;
|
||||
border-radius: 3.8px; }
|
||||
.toggle input:checked + label {
|
||||
background-color: #337AB7;
|
||||
color: #fff;
|
||||
transform: translateX(1.8em); }
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
article header img {
|
||||
vertical-align: text-middle;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"mappings": "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",
|
||||
"sources": ["normalize.scss","style.scss"],
|
||||
"names": [],
|
||||
"file": "style.css"
|
||||
|
|
|
@ -116,7 +116,7 @@ textarea, input[type="text"], input[type="url"] {
|
|||
|
||||
.reply-area {
|
||||
text-align: center;
|
||||
a {
|
||||
.reply-link {
|
||||
display: inline-block;
|
||||
padding: 0.2em;
|
||||
border: 1px solid $sirocco;
|
||||
|
@ -127,6 +127,9 @@ textarea, input[type="text"], input[type="url"] {
|
|||
min-width: 50px;
|
||||
text-align: center;
|
||||
}
|
||||
.like-form, .reply-form {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
|
@ -137,6 +140,39 @@ form {
|
|||
margin: 1em 0;
|
||||
}
|
||||
|
||||
|
||||
.toggle {
|
||||
font-family: sans-serif;
|
||||
background-color: #eee;
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
padding: 0.2em 2em 0.2em 0.2em;
|
||||
|
||||
input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: inherit; /* override bootstrap */
|
||||
margin: inherit; /* override bootstrap */
|
||||
position: relative;
|
||||
transition: transform 0.1s;
|
||||
cursor: pointer;
|
||||
background-color: #ccc;
|
||||
color: #666;
|
||||
display: inline-block;
|
||||
padding: 0.25em 1em;
|
||||
border-radius: 3.8px;
|
||||
}
|
||||
|
||||
input:checked + label {
|
||||
background-color: #337AB7;
|
||||
color: #fff;
|
||||
transform: translateX(1.8em);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
article {
|
||||
header {
|
||||
|
|
|
@ -2,25 +2,51 @@
|
|||
{% set replyMethod = settings.get('reply-method') %}
|
||||
|
||||
{% if replyMethod == 'micropub' and current_user.micropub_endpoint %}
|
||||
|
||||
<a class="reply-link show-like-form" href="#">Like</a>
|
||||
<a class="reply-link show-reply-form" href="#">Reply</a>
|
||||
<br/>
|
||||
|
||||
<form class="like-form" action="{{ current_user.micropub_endpoint }}" method="POST" style="display:inline">
|
||||
<input type="hidden" name="access_token" value="{{current_user.access_token}}"/>
|
||||
<input type="hidden" name="h" value="entry"/>
|
||||
<input type="hidden" name="like-of" value="{{ entry.permalink }}"/>
|
||||
<button type="submit" class="like-button">Like</button>
|
||||
<span class="submit-response"></span>
|
||||
</form>
|
||||
|
||||
<button class="show-reply-form">Reply</button>
|
||||
{% for target in current_user.get_setting('syndicate-to', []) %}
|
||||
{% set input_id = 'st-like-{}-{}'.format(entry.id, loop.index) %}
|
||||
<div class="toggle">
|
||||
<input id="{{ input_id }}" type="checkbox" name="syndicate-to[]"
|
||||
value="{{ target }}"/>
|
||||
<label for="{{ input_id }}">{{ target | prettify_url }}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<br/>
|
||||
<button type="submit" class="like-button">Like</button>
|
||||
</form>
|
||||
|
||||
<form class="reply-form" action="{{ current_user.micropub_endpoint }}" method="POST">
|
||||
<input type="hidden" name="access_token" value="{{current_user.access_token}}"/>
|
||||
<input type="hidden" name="h" value="entry"/>
|
||||
<input type="hidden" name="in-reply-to" value="{{ entry.permalink }}"/>
|
||||
<textarea name="content"></textarea>
|
||||
|
||||
{% for target in current_user.get_setting('syndicate-to', []) %}
|
||||
{% set input_id = 'st-reply-{}-{}'.format(entry.id, loop.index) %}
|
||||
<div class="toggle">
|
||||
<input id="{{ input_id }}" type="checkbox" name="syndicate-to[]"
|
||||
value="{{ target }}"/>
|
||||
<label for="{{ input_id }}">{{ target | prettify_url }}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<br/>
|
||||
|
||||
<button type="submit" class="reply-button">Reply</button>
|
||||
<span class="submit-response"></span>
|
||||
</form>
|
||||
|
||||
<div class="micropub-response">
|
||||
</div>
|
||||
|
||||
{% elif replyMethod == 'indie-config' %}
|
||||
{% for action in settings.get('indie-config-actions', []) %}
|
||||
<indie-action with="{{ entry.permalink }}" do="{{ action }}">
|
||||
|
|
|
@ -159,6 +159,7 @@ def login_callback(resp):
|
|||
user.url = resp.me
|
||||
db.session.commit()
|
||||
flask_login.login_user(user, remember=True)
|
||||
update_micropub_syndicate_to()
|
||||
return flask.redirect(resp.next_url or flask.url_for('.index'))
|
||||
|
||||
|
||||
|
@ -187,9 +188,31 @@ def micropub_callback(resp):
|
|||
user.micropub_endpoint = resp.micropub_endpoint
|
||||
user.access_token = resp.access_token
|
||||
db.session.commit()
|
||||
update_micropub_syndicate_to()
|
||||
return flask.redirect(resp.next_url or flask.url_for('.index'))
|
||||
|
||||
|
||||
@flask_login.login_required
|
||||
def update_micropub_syndicate_to():
|
||||
endpt = flask_login.current_user.micropub_endpoint
|
||||
token = flask_login.current_user.access_token
|
||||
if not endpt or not token:
|
||||
return
|
||||
resp = requests.get(endpt, params={
|
||||
'q': 'syndicate-to',
|
||||
}, headers={
|
||||
'Authorization': 'Bearer ' + token,
|
||||
})
|
||||
if resp.status_code // 100 != 2:
|
||||
flask.current_app.logger.warn(
|
||||
'Unexpected response querying micropub endpoint %s: %s',
|
||||
resp, resp.text)
|
||||
return
|
||||
syndicate_tos = urllib.parse.parse_qs(resp.text).get('syndicate-to[]', [])
|
||||
flask_login.current_user.set_setting('syndicate-to', syndicate_tos)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
@views.route('/deauthorize')
|
||||
@flask_login.login_required
|
||||
def deauthorize():
|
||||
|
@ -312,6 +335,14 @@ def find_possible_feeds(origin):
|
|||
return feeds
|
||||
|
||||
|
||||
@views.app_template_filter()
|
||||
def prettify_url(url):
|
||||
parsed = urllib.parse.urlparse(url)
|
||||
if parsed.path:
|
||||
return parsed.netloc + parsed.path
|
||||
return parsed.netloc
|
||||
|
||||
|
||||
@views.app_template_global()
|
||||
def url_for_other_page(page):
|
||||
"""http://flask.pocoo.org/snippets/44/#URL+Generation+Helper
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue