support sending RSVPs to events in the feed

This commit is contained in:
Kyle Mahan 2016-03-08 15:23:53 -08:00
parent 2786ab4770
commit b3d2be2a2b
8 changed files with 57 additions and 20 deletions

View file

@ -19,7 +19,11 @@ def publish():
'access_token': flask_login.current_user.access_token,
}
if action == 'like':
if action.startswith('rsvp-'):
data['in-reply-to'] = target
data['content'] = content
data['rsvp'] = action.split('-', 1)[-1]
elif action == 'like':
data['like-of'] = target
elif action == 'repost':
data['repost-of'] = target

View file

@ -39,20 +39,30 @@ $(function(){
function submitMicropubForm(evt) {
evt.preventDefault();
var form = $(this).closest('form');
var button = this;
var form = $(button).closest('form');
var replyArea = form.parent();
var endpoint = form.attr('action');
var responseArea = $('.micropub-response', replyArea);
var formData = form.serializeArray();
formData.push({name: this.name, value: this.value});
formData.push({name: button.name, value: button.value});
$.post(
form.attr('action'),
endpoint,
formData,
function(result) {
if (Math.floor(result.code / 100) == 2) {
responseArea.html('<a target="_blank" href="' + result.location + '">Success!</a>');
$(".micropub-form textarea").val("");
$("textarea", form).val("");
if (button.value === 'rsvp-yes') {
$(".rsvps", form).html('✓ Going');
} else if (button.value === 'rsvp-maybe') {
$(".rsvps", form).html('? Interested');
} else if (button.value === 'rsvp-no') {
$(".rsvps", form).html('✗ Not Going');
}
} else {
responseArea.html('Failure');
}

View file

@ -498,14 +498,17 @@ button {
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; }
vertical-align: middle;
border: 0; }
.micropub-form button.small {
width: 24px;
height: 24px;
padding: 4px;
line-height: 1; }
.micropub-form .rsvps {
text-align: center; }
.syndication-toggle {
display: inline-block; }

File diff suppressed because one or more lines are too long

View file

@ -206,13 +206,20 @@ button {
}
button {
height: 24px;width: 24px;
padding: 4px;
background-color: #eee;
border-radius: 3px;
border: 0;
line-height: 1;
vertical-align: middle;
border: 0;
&.small {
width: 24px;
height: 24px;
padding: 4px;
line-height: 1;
}
}
.rsvps {
text-align: center;
}
}

View file

@ -534,6 +534,10 @@ def hentry_to_entry(hentry, feed, backfill, now):
if value:
entry.set_property(prop, value)
# set a flag for events so we can show RSVP buttons
if hentry.get('type') == 'event':
entry.set_property('event', True)
# does it look like a jam?
plain = hentry.get('content-plain')
if plain and JAM_RE.match(plain):

View file

@ -4,11 +4,20 @@
{% if reply_method == 'micropub' and current_user.micropub_endpoint %}
<form class="micropub-form" action="{{ url_for('api.publish') }}" method="POST">
<input type="hidden" name="target" value="{{ entry.permalink }}"/>
{% if entry.get_property('event') %}
<div class="rsvps">
<button type="submit" name="action" value="rsvp-yes">Going</button>
<button type="submit" name="action" value="rsvp-maybe">Interested</button>
<button type="submit" name="action" value="rsvp-no">Not Going</button>
</div>
{% endif %}
<div>
<textarea class="content" name="content"></textarea>
<button type="submit" name="action" value="reply"><i class="fa fa-reply"></i></button>
<button type="submit" name="action" value="repost"><i class="fa fa-retweet"></i></button>
<button type="submit" name="action" value="like"><i class="fa fa-star"></i></button>
<button type="submit" name="action" value="reply" class="small"><i class="fa fa-reply"></i></button>
<button type="submit" name="action" value="repost" class="small"><i class="fa fa-retweet"></i></button>
<button type="submit" name="action" value="like" class="small"><i class="fa fa-star"></i></button>
</div>
<div class="syndication-toggles">
{% for target in current_user.get_setting('syndicate-to', []) %}

View file

@ -4,7 +4,7 @@
{% if ws_topic %}
<script>var WS_TOPIC = "{{ ws_topic }}";</script>
{% endif %}
<script src="{{url_for('static', filename='feed.js', version='2015-12-24')}}"></script>
<script src="{{url_for('static', filename='feed.js', version='2016-03-08')}}"></script>
{% if current_user and current_user.settings
and current_user.settings.get('reply-method') == 'indie-config' %}