Browse Source

add exercise posts

main
Aaron Parecki 1 month ago
parent
commit
1123783131
2 changed files with 137 additions and 0 deletions
  1. +60
    -0
      controllers/controllers.php
  2. +77
    -0
      views/new-exercise.php

+ 60
- 0
controllers/controllers.php View File

@ -1085,3 +1085,63 @@ $app->post('/weight', function() use($app) {
))); )));
} }
}); });
function create_exercise(&$user, $activity, $minutes, $heartrate, $published) {
$micropub_request = array(
'type' => ['h-entry'],
'properties' => [
'workout' => [[
'type' => ['h-workout'],
'properties' => [
'activity' => [$activity],
'duration' => [[
'type' => ['h-measure'],
'properties' => [
'num' => [($minutes*60)],
'unit' => ['second']
],
]],
'heartrate' => [[
'type' => 'h-measure',
'properties' => [
'num' => [$heartrate],
'unit' => ['bpm'],
]
]]
]
]]
]
);
try {
$date = new DateTime($published);
$micropub_request['properties']['published'] = [$date->format('c')];
} catch(Exception $e) {
}
$r = micropub_post_for_user($user, $micropub_request, null, true);
return $r;
}
$app->get('/exercise', function() use($app){
if($user=require_login($app)) {
render('new-exercise', array(
'title' => 'New Exercise',
));
}
});
$app->post('/exercise', function() use($app) {
if($user=require_login($app)) {
$params = $app->request()->params();
$r = create_exercise($user, $params['activity'], $params['minutes'], $params['heartrate'], $params['published']);
$location = $r['location'];
$app->response()['Content-type'] = 'application/json';
$app->response()->body(json_encode(array(
'location' => $location,
'error' => $r['error']
)));
}
});

+ 77
- 0
views/new-exercise.php View File

@ -0,0 +1,77 @@
<div class="narrow">
<?= partial('partials/header') ?>
<div style="clear: both;" class="notice-pad">
<div class="alert alert-success hidden" id="test_success"><strong>Success! </strong><a href="" id="post_href">View your post</a></div>
<div class="alert alert-danger hidden" id="test_error"><strong>Something went wrong!</strong><br>Your Micropub endpoint indicated that something went wrong creating the post.</div>
</div>
<form style="margin-top: 20px;" id="weight_form">
<div class="form-group">
<label for="exercise_activity">Activity</label>
<select id="exercise_activity" class="form-control">
<option value="indoor-cycling">Indoor Cycling</option>
</select>
</div>
<div class="form-group">
<label for="exercise_minutes">Minutes</label>
<input type="number" id="exercise_minutes" class="form-control">
</div>
<div class="form-group">
<label for="exercise_heartrate">Avg Heart Rate</label>
<input type="number" id="exercise_heartrate" class="form-control">
</div>
<div class="form-group">
<label for="date">Date and Time</label>
<input type="text" id="date" class="form-control" value="<?= date('Y-m-d H:i:s') ?>">
</div>
<div style="float: right; margin-top: 6px;">
<button class="btn btn-success" id="btn_post">Post</button>
</div>
</form>
<div style="clear: both;"></div>
</div>
<script>
$(function(){
var d = new Date();
var tzOffset = tz_seconds_to_offset(d.getTimezoneOffset() * 60 * -1);
$("#date").val( $("#date").val() + " " + tzOffset);
$("#btn_post").click(function(){
$("#btn_post").addClass("loading disabled");
$.post("/exercise", {
activity: $("#exercise_activity").val(),
minutes: $("#exercise_minutes").val(),
heartrate: $("#exercise_heartrate").val(),
published: $("#date").val()
}, function(response){
if(response.location != false) {
$("#test_success").removeClass('hidden');
$("#test_error").addClass('hidden');
$("#post_href").attr("href", response.location);
window.location = response.location;
} else {
$("#test_success").addClass('hidden');
$("#test_error").removeClass('hidden');
if(response.error_details) {
$("#test_error").text(response.error_details);
}
$("#btn_post").removeClass("loading disabled");
}
});
return false;
});
});
</script>

Loading…
Cancel
Save