eliminate a click when replying and liking via micropub

This commit is contained in:
Kyle Mahan 2015-02-15 17:36:41 -08:00
parent de4f099f31
commit 7f1cb56911
8 changed files with 171 additions and 131 deletions

View file

@ -1,9 +1,46 @@
import flask
import flask.ext.login as flask_login
import requests
api = flask.Blueprint('api', __name__)
@api.route('/publish', methods=['POST'])
def publish():
action = flask.request.form.get('action')
target = flask.request.form.get('target')
content = flask.request.form.get('content')
syndicate_to = flask.request.form.getlist('syndicate-to[]')
data = {
'h': 'entry',
'syndicate-to[]': syndicate_to,
}
if action == 'like':
data['like-of'] = target
else:
data['in-reply-to'] = target
data['content'] = content
resp = requests.post(
flask_login.current_user.micropub_endpoint, data=data, headers={
'Authorization': 'Bearer {}'.format(
flask_login.current_user.access_token),
})
return flask.jsonify({
'code': resp.status_code,
'content': resp.text,
'content-type': resp.headers.get('content-type'),
'location': resp.headers.get('location'),
})
@api.route('/_forward', methods=['GET', 'POST'])
def forward_request():
if flask.request.method == 'GET':

View file

@ -33,14 +33,12 @@ $(function(){
var responseArea = $('.micropub-response', replyArea);
$.post(
'/_forward',
'_url=' + encodeURIComponent(endpoint) + '&' + form.serialize(),
form.attr('action'),
form.serialize(),
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();
$(".micropub-form textarea").val("");
} else {
responseArea.html('Failure');
}
@ -59,7 +57,11 @@ $(function(){
$(".show-reply-form").off('click').click(clickShowReplyForm);
$(".show-like-form").off('click').click(clickShowLikeForm);
$(".like-form, .reply-form").off('submit').submit(submitMicropubForm);
$(".micropub-form").off('submit').submit(submitMicropubForm);
$(".micropub-form .content").focus(function (){
$(this).animate({ height: "4em" }, 200);
});
}

View file

@ -433,8 +433,48 @@ textarea, input[type="text"], input[type="url"] {
textarea.input-75, input[type="text"].input-75, input[type="url"].input-75 {
width: 73%; }
.micropub-form .content {
height: 1em;
width: calc(100% - 1.4em - 48px);
padding: 3px;
margin: 0;
vertical-align: middle; }
.micropub-form button {
height: 24px;
width: 24px;
padding: 4px;
background-color: #eee;
border-radius: 3px;
border: 0;
line-height: 1;
vertical-align: middle; }
.syndication-toggle {
display: inline-block;
margin-top: 0.25em; }
.syndication-toggle input {
display: none; }
.syndication-toggle label {
display: inline-block;
vertical-align: middle;
height: 16px;
width: 16px;
padding: 4px;
border-radius: 3px;
background-color: #eee;
margin: 0;
color: #666;
cursor: pointer; }
.syndication-toggle label img {
max-height: 16px;
max-width: 16px; }
.syndication-toggle input:checked + label {
background-color: #337AB7;
color: #fff; }
.reply-area {
text-align: center; }
text-align: center;
margin-top: 0.5em; }
.reply-area .reply-link {
display: inline-block;
padding: 0.2em;
@ -446,38 +486,6 @@ textarea, input[type="text"], input[type="url"] {
min-width: 50px;
text-align: center; }
button {
padding: 0.25em; }
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;

View file

@ -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"

View file

@ -118,8 +118,64 @@ textarea, input[type="text"], input[type="url"] {
}
}
.micropub-form {
.content {
height: 1em;
width: calc(100% - 1.4em - 48px);
padding: 3px;
margin: 0;
vertical-align: middle;
}
button {
height: 24px;width: 24px;
padding: 4px;
background-color: #eee;
border-radius: 3px;
border: 0;
line-height: 1;
vertical-align: middle;
}
}
.syndication-toggle {
display: inline-block;
margin-top: 0.25em;
input {
display: none;
}
label {
display: inline-block;
vertical-align: middle;
height: 16px;
width: 16px;
padding: 4px;
border-radius: 3px;
background-color: #eee;
margin: 0;
color: #666;
cursor: pointer;
img {
max-height: 16px;
max-width: 16px;
}
}
input:checked + label {
background-color: #337AB7;
color: #fff;
}
}
.reply-area {
text-align: center;
margin-top: 0.5em;
.reply-link {
display: inline-block;
padding: 0.2em;
@ -131,52 +187,8 @@ textarea, input[type="text"], input[type="url"] {
min-width: 50px;
text-align: center;
}
.like-form, .reply-form {
}
}
button {
padding: 0.25em;
}
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 {

View file

@ -3,47 +3,22 @@
{% 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 }}"/>
{% 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 class="micropub-form" action="{{ url_for('api.publish') }}" method="POST">
<input type="hidden" name="target" value="{{ entry.permalink }}"/>
<div>
<textarea class="content" name="content"></textarea>
<button type="submit" name="action" value="reply" class="fa fa-reply"></button>
<button type="submit" name="action" value="like" class="fa fa-star"></button>
</div>
<div>
{% for target in current_user.get_setting('syndicate-to', []) %}
<div class="syndication-toggle">
<input id="sc-{{entry.id}}-{{loop.index}}" type="checkbox" name="syndicate-to[]" value="{{ target }}"/>
<label for="sc-{{entry.id}}-{{loop.index}}"><img src="{{ target | favicon_for_url }}" /></label>
</div>
{% endfor %}
</div>
</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>
</form>
<div class="micropub-response">
</div>

View file

@ -4,13 +4,14 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Woodwind</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='logo.png') }}"/>
<link rel="apple-touch-icon" href="{{ url_for('static', filename='logo.png') }}"/>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
<link rel="shortcut icon" href="{{ url_for('static', filename='logo.png') }}"/>
<link rel="apple-touch-icon" href="{{ url_for('static', filename='logo.png') }}"/>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"/>
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
{% block head %}{% endblock %}
</head>
<body>

View file

@ -315,7 +315,7 @@ def find_possible_feeds(origin):
elif content_type == 'text/html':
# if text/html, then parse and look for h-entries
hfeed = mf2util.interpret_feed(
mf2py.Parser(doc=resp.text).to_dict(), origin)
mf2py.Parser(doc=resp.text).to_dict(), origin)
if hfeed.get('entries'):
feeds.append({
'origin': origin,
@ -344,6 +344,12 @@ def prettify_url(url):
return parsed.netloc
@views.app_template_filter()
def favicon_for_url(url):
parsed = urllib.parse.urlparse(url)
return 'http://www.google.com/s2/favicons?domain={}'.format(parsed.netloc)
@views.app_template_filter()
def add_preview(content):
"""If a post ends with the URL of a known media source (youtube,
@ -387,7 +393,6 @@ def add_preview(content):
return content
@views.app_template_global()
def url_for_other_page(page):
"""http://flask.pocoo.org/snippets/44/#URL+Generation+Helper