summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Parecki <aaron@parecki.com>2020-03-30 10:26:46 -0700
committerAaron Parecki <aaron@parecki.com>2020-03-30 10:26:46 -0700
commit8dec126e7dd19ebb068b1a4f42804f8c0205af9d (patch)
tree03b978cc4772db3e1819e27aa76cccd742a89488
parent3759383e91344a6e10d23d4dbd90b9eda513d79c (diff)
add channel selection to event interface
-rw-r--r--controllers/controllers.php4
-rw-r--r--controllers/micropub.php11
-rw-r--r--lib/helpers.php10
-rw-r--r--schema/migrations/0011.sql6
-rw-r--r--schema/mysql.sql1
-rw-r--r--schema/sqlite.sql1
-rw-r--r--views/event.php21
-rw-r--r--views/partials/syndication-js.php18
-rw-r--r--views/settings.php43
9 files changed, 98 insertions, 17 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php
index a4baa0f..f9fad25 100644
--- a/controllers/controllers.php
+++ b/controllers/controllers.php
@@ -182,8 +182,11 @@ $app->get('/event', function() use($app) {
if($user=require_login($app)) {
$params = $app->request()->params();
+ $channels = $user->channels ? json_decode($user->channels, true) : [];
+
render('event', array(
'title' => 'Event',
+ 'channels' => $channels,
'authorizing' => false
));
}
@@ -362,6 +365,7 @@ $app->get('/settings', function() use($app) {
'title' => 'Settings',
'user' => $user,
'syndication_targets' => json_decode($user->syndication_targets, true),
+ 'channels' => json_decode($user->channels, true),
'authorizing' => false
]);
}
diff --git a/controllers/micropub.php b/controllers/micropub.php
index 6eacd4a..cc1ca02 100644
--- a/controllers/micropub.php
+++ b/controllers/micropub.php
@@ -11,6 +11,17 @@ $app->get('/micropub/syndications', function() use($app) {
}
});
+$app->get('/micropub/channels', function() use($app) {
+ if($user=require_login($app)) {
+ $data = get_micropub_config($user, ['q'=>'config']);
+ $app->response()['Content-type'] = 'application/json';
+ $app->response()->body(json_encode(array(
+ 'channels' => $data['channels'],
+ 'response' => $data['response']
+ )));
+ }
+});
+
$app->post('/micropub/post', function() use($app) {
if($user=require_login($app)) {
$params = $app->request()->params();
diff --git a/lib/helpers.php b/lib/helpers.php
index 695ca27..48ada12 100644
--- a/lib/helpers.php
+++ b/lib/helpers.php
@@ -269,6 +269,7 @@ function parse_headers($headers) {
function get_micropub_config(&$user, $query=[]) {
$targets = [];
+ $channels = [];
$r = micropub_get($user->micropub_endpoint, $query, $user->micropub_access_token);
if($r['data'] && is_array($r['data']) && array_key_exists('syndicate-to', $r['data'])) {
@@ -295,8 +296,13 @@ function get_micropub_config(&$user, $query=[]) {
}
}
+ if($r['data'] && is_array($r['data']) && array_key_exists('channels', $r['data']) && is_array($r['data']['channels'])) {
+ $channels = $r['data']['channels'];
+ }
+
// Reset the values so they can be overwritten
$user->syndication_targets = '';
+ $user->channels = '';
$user->supported_post_types = '';
$user->supported_visibility = '';
$user->micropub_media_endpoint = '';
@@ -304,6 +310,9 @@ function get_micropub_config(&$user, $query=[]) {
if(count($targets))
$user->syndication_targets = json_encode($targets);
+ if(count($channels))
+ $user->channels = json_encode($channels);
+
$media_endpoint = false;
$supported_post_types = false;
if($r['data'] && is_array($r['data'])) {
@@ -325,6 +334,7 @@ function get_micropub_config(&$user, $query=[]) {
return [
'targets' => $targets,
+ 'channels' => $channels,
'response' => $r
];
}
diff --git a/schema/migrations/0011.sql b/schema/migrations/0011.sql
new file mode 100644
index 0000000..4b0ca61
--- /dev/null
+++ b/schema/migrations/0011.sql
@@ -0,0 +1,6 @@
+ALTER TABLE users
+DROP COLUMN flightaware_username,
+DROP COLUMN flightaware_apikey;
+
+ALTER TABLE users
+ADD COLUMN `channels` TEXT AFTER syndication_targets;
diff --git a/schema/mysql.sql b/schema/mysql.sql
index 5a91e55..0a0accb 100644
--- a/schema/mysql.sql
+++ b/schema/mysql.sql
@@ -17,6 +17,7 @@ CREATE TABLE `users` (
`last_micropub_response_date` datetime DEFAULT NULL,
`location_enabled` tinyint(4) NOT NULL DEFAULT '0',
`syndication_targets` text,
+ `channels` text,
`twitter_access_token` text,
`twitter_token_secret` text,
`twitter_username` varchar(255) DEFAULT NULL,
diff --git a/schema/sqlite.sql b/schema/sqlite.sql
index ca495cd..dd041b3 100644
--- a/schema/sqlite.sql
+++ b/schema/sqlite.sql
@@ -17,6 +17,7 @@ CREATE TABLE users (
last_micropub_response_date datetime,
location_enabled INTEGER NOT NULL default 0,
syndication_targets TEXT,
+ channels TEXT,
twitter_access_token TEXT,
twitter_token_secret TEXT,
twitter_username TEXT,
diff --git a/views/event.php b/views/event.php
index 81742d8..c485f31 100644
--- a/views/event.php
+++ b/views/event.php
@@ -44,6 +44,24 @@
<input type="text" id="note_category" value="" class="form-control">
</div>
+ <?php if($this->channels): ?>
+ <div class="form-group">
+ <label for="note_channel">Channel</label>
+ <div id="channel-container">
+ <?php
+ echo '<select class="form-control" id="note_channel">';
+ echo '<option value="none"></option>';
+ foreach($this->channels as $ch) {
+ echo '<option value="'.htmlspecialchars($ch).'" '.($ch == 'events' ? 'selected' : '').'>'
+ . htmlspecialchars($ch)
+ . '</option>';
+ }
+ echo '</select>';
+ ?>
+ </div>
+ </div>
+ <?php endif; ?>
+
<div style="float: right; margin-top: 6px;">
<button class="btn btn-success" id="btn_post">Post</button>
</div>
@@ -229,6 +247,9 @@
properties.end = event_end;
}
+ if($("#note_channel").val()) {
+ properties['p3k-channel'] = $("#note_channel").val();
+ }
$.post("/micropub/postjson", {
data: JSON.stringify({
diff --git a/views/partials/syndication-js.php b/views/partials/syndication-js.php
index 90331ba..ead1889 100644
--- a/views/partials/syndication-js.php
+++ b/views/partials/syndication-js.php
@@ -26,3 +26,21 @@ function bind_syndication_buttons() {
return false;
});
}
+
+
+function reload_channels() {
+ $.getJSON("/micropub/channels", function(data){
+ console.log(data);
+ if(data.channels) {
+ $("#channel-container").html('<select class="form-control" name="channel"></select>');
+ for(var i in data.channels) {
+ var channel = data.channels[i];
+ $("#channel-container select").append('<option value="'+htmlspecialchars(channel)+'">'+htmlspecialchars(channel)+'</option>');
+ }
+ } else {
+
+ }
+ console.log(data);
+ });
+}
+
diff --git a/views/settings.php b/views/settings.php
index 3ddbcc5..55cbd17 100644
--- a/views/settings.php
+++ b/views/settings.php
@@ -81,13 +81,37 @@
echo '</ul>';
} else {
?><div class="bs-callout bs-callout-warning">No syndication targets were found on your site.
- Your server can provide a <a href="/docs#syndication">list of supported syndication targets</a> that will appear as checkboxes here.</div><?php
+ Your server can provide a <a href="/docs/syndication">list of supported syndication targets</a> that will appear as buttons here.</div><?php
}
?>
</div>
</div>
+ <h3>Channels</h3>
+
+ <div class="form-group">
+ <label for="note_channels"><a href="javascript:reload_channels()">Reload</a></label>
+ <div id="channel-container">
+ <?php
+ if($this->channels) {
+ echo '<select class="form-control" name="channel">';
+ foreach($this->channels as $ch) {
+ echo '<option value="'.htmlspecialchars($ch).'">'
+ . htmlspecialchars($ch)
+ . '</option>';
+ }
+ echo '</select>';
+ } else {
+ ?><div class="bs-callout bs-callout-warning">No channels were found on your site.
+ Your server can provide a <a href="/docs/channels">list of channels</a> that will appear as buttons here.</div><?php
+ }
+ ?>
+ </div>
+ </div>
+
+
+
<?php if(!Config::$twitterClientID): ?>
<h3>Twitter</h3>
<p>Connecting a Twitter account will automatically "favorite" and "retweet" tweets on Twitter when you favorite and retweet a Twitter URL in Quill.</p>
@@ -185,21 +209,6 @@ $(function(){
});
-function reload_syndications() {
- $.getJSON("/micropub/syndications", function(data){
- if(data.targets) {
- $("#syndication-container").html('<ul></ul>');
- for(var i in data.targets) {
- var target = data.targets[i].target;
- var uid = data.targets[i].uid;
- var favicon = data.targets[i].favicon;
- $("#syndication-container ul").append('<li><button data-syndicate-to="'+htmlspecialchars(uid ? uid : target)+'" class="btn btn-default btn-block">'+(favicon ? '<img src="'+htmlspecialchars(favicon)+'" width="16" height="16"> ':'')+htmlspecialchars(target)+'</button></li>');
- }
- bind_syndication_buttons();
- } else {
+<?= partial('partials/syndication-js') ?>
- }
- console.log(data);
- });
-}
</script>