add repost form
This commit is contained in:
parent
5b1d595fcf
commit
9d917dca8e
2 changed files with 111 additions and 1 deletions
|
@ -127,6 +127,24 @@ $app->get('/favorite', function() use($app) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$app->get('/repost', function() use($app) {
|
||||||
|
if($user=require_login($app)) {
|
||||||
|
$params = $app->request()->params();
|
||||||
|
|
||||||
|
$url = '';
|
||||||
|
|
||||||
|
if(array_key_exists('url', $params))
|
||||||
|
$url = $params['url'];
|
||||||
|
|
||||||
|
$html = render('new-repost', array(
|
||||||
|
'title' => 'New Repost',
|
||||||
|
'url' => $url,
|
||||||
|
'token' => generate_login_token()
|
||||||
|
));
|
||||||
|
$app->response()->body($html);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$app->post('/prefs', function() use($app) {
|
$app->post('/prefs', function() use($app) {
|
||||||
if($user=require_login($app)) {
|
if($user=require_login($app)) {
|
||||||
$params = $app->request()->params();
|
$params = $app->request()->params();
|
||||||
|
@ -252,7 +270,7 @@ function create_favorite(&$user, $url) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(preg_match('/https?:\/\/(?:www\.)?twitter\.com\/[^\/]+\/status(?:es)?\/(\d+)/', $url, $match)) {
|
if($user->twitter_access_token && preg_match('/https?:\/\/(?:www\.)?twitter\.com\/[^\/]+\/status(?:es)?\/(\d+)/', $url, $match)) {
|
||||||
$tweet_id = $match[1];
|
$tweet_id = $match[1];
|
||||||
$twitter = new \TwitterOAuth\Api(Config::$twitterClientID, Config::$twitterClientSecret,
|
$twitter = new \TwitterOAuth\Api(Config::$twitterClientID, Config::$twitterClientSecret,
|
||||||
$user->twitter_access_token, $user->twitter_token_secret);
|
$user->twitter_access_token, $user->twitter_token_secret);
|
||||||
|
@ -264,6 +282,24 @@ function create_favorite(&$user, $url) {
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function create_repost(&$user, $url) {
|
||||||
|
$micropub_request = array(
|
||||||
|
'repost-of' => $url
|
||||||
|
);
|
||||||
|
$r = micropub_post_for_user($user, $micropub_request);
|
||||||
|
|
||||||
|
$tweet_id = false;
|
||||||
|
|
||||||
|
if($user->twitter_access_token && preg_match('/https?:\/\/(?:www\.)?twitter\.com\/[^\/]+\/status(?:es)?\/(\d+)/', $url, $match)) {
|
||||||
|
$tweet_id = $match[1];
|
||||||
|
$twitter = new \TwitterOAuth\Api(Config::$twitterClientID, Config::$twitterClientSecret,
|
||||||
|
$user->twitter_access_token, $user->twitter_token_secret);
|
||||||
|
$result = $twitter->post('statuses/retweet/'.$tweet_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
$app->get('/favorite.js', function() use($app) {
|
$app->get('/favorite.js', function() use($app) {
|
||||||
$app->response()->header("Content-type", "text/javascript");
|
$app->response()->header("Content-type", "text/javascript");
|
||||||
if($user=require_login($app, false)) {
|
if($user=require_login($app, false)) {
|
||||||
|
@ -300,6 +336,19 @@ $app->post('/favorite', function() use($app) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$app->post('/repost', function() use($app) {
|
||||||
|
if($user=require_login($app)) {
|
||||||
|
$params = $app->request()->params();
|
||||||
|
|
||||||
|
$r = create_repost($user, $params['url']);
|
||||||
|
|
||||||
|
$app->response()->body(json_encode(array(
|
||||||
|
'location' => $r['location'],
|
||||||
|
'error' => $r['error']
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$app->get('/micropub/syndications', function() use($app) {
|
$app->get('/micropub/syndications', function() use($app) {
|
||||||
if($user=require_login($app)) {
|
if($user=require_login($app)) {
|
||||||
$data = get_syndication_targets($user);
|
$data = get_syndication_targets($user);
|
||||||
|
|
61
views/new-repost.php
Normal file
61
views/new-repost.php
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<div class="narrow">
|
||||||
|
<?= partial('partials/header') ?>
|
||||||
|
|
||||||
|
<div style="clear: both;">
|
||||||
|
<div class="alert alert-success hidden" id="test_success"><strong>Success! We found a Location header in the response!</strong><br>Your post should be on your website now!<br><a href="" id="post_href">View your post</a></div>
|
||||||
|
<div class="alert alert-danger hidden" id="test_error"><strong>Your endpoint did not return a Location header.</strong><br>See <a href="/creating-a-micropub-endpoint">Creating a Micropub Endpoint</a> for more information.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form role="form" style="margin-top: 20px;" id="note_form">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="note_url">URL to Repost (<code>repost-of</code>)</label>
|
||||||
|
<input type="text" id="note_url" value="<?= $this->url ?>" class="form-control">
|
||||||
|
</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(){
|
||||||
|
|
||||||
|
// ctrl-s to save
|
||||||
|
$(window).on('keydown', function(e){
|
||||||
|
if(e.keyCode == 83 && e.ctrlKey){
|
||||||
|
$("#btn_post").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btn_post").click(function(){
|
||||||
|
|
||||||
|
$.post("/repost", {
|
||||||
|
url: $("#note_url").val()
|
||||||
|
}, function(data){
|
||||||
|
var response = JSON.parse(data);
|
||||||
|
|
||||||
|
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');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue