From d6e03455453e83768b53dc23379680f6ef83abca Mon Sep 17 00:00:00 2001 From: Martijn van der Ven Date: Sun, 20 Oct 2019 09:30:33 +0200 Subject: [PATCH] Add new weight posting interface --- controllers/controllers.php | 45 ++++++++++++++++++++++++++++++++ schema/migrations/0011.sql | 2 ++ schema/mysql.sql | 1 + schema/sqlite.sql | 3 ++- views/dashboard.php | 3 +++ views/new-weight.php | 52 +++++++++++++++++++++++++++++++++++++ views/settings.php | 16 ++++++++++++ 7 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 schema/migrations/0011.sql create mode 100644 views/new-weight.php diff --git a/controllers/controllers.php b/controllers/controllers.php index a4baa0f..df8ddfd 100644 --- a/controllers/controllers.php +++ b/controllers/controllers.php @@ -382,6 +382,9 @@ $app->post('/settings/save', function() use($app) { $user->micropub_syndicate_field = $params['syndicate_field']; } + if(array_key_exists('weight_unit', $params) && $params['weight_unit']) + $user->weight_unit = $params['weight_unit']; + $user->save(); $app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode(array( @@ -886,3 +889,45 @@ $app->get('/airport-info', function() use($app){ $app->response()->body(json_encode($response)); } }); + +function create_weight(&$user, $weight_num, $weight_unit) { + $micropub_request = array( + 'type' => ['h-entry'], + 'properties' => [ + 'weight' => [[ + 'type' => ['h-measure'], + 'properties' => [ + 'num' => [$weight_num], + 'unit' => [$weight_unit] + ] + ]] + ] + ); + $r = micropub_post_for_user($user, $micropub_request, null, true); + + return $r; +} + +$app->get('/weight', function() use($app){ + if($user=require_login($app)) { + render('new-weight', array( + 'title' => 'New Weight', + 'unit' => $user->weight_unit + )); + } +}); + +$app->post('/weight', function() use($app) { + if($user=require_login($app)) { + $params = $app->request()->params(); + + $r = create_weight($user, $params['weight_num'], $user->weight_unit); + $location = $r['location']; + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'location' => $location, + 'error' => $r['error'] + ))); + } +}); diff --git a/schema/migrations/0011.sql b/schema/migrations/0011.sql new file mode 100644 index 0000000..763ea58 --- /dev/null +++ b/schema/migrations/0011.sql @@ -0,0 +1,2 @@ +ALTER TABLE users +ADD COLUMN `weight_unit` VARCHAR(255) DEFAULT 'kg'; diff --git a/schema/mysql.sql b/schema/mysql.sql index 5a91e55..4ee94b0 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -24,5 +24,6 @@ CREATE TABLE `users` ( `default_timezone` varchar(255) DEFAULT NULL, `supported_post_types` longtext, `supported_visibility` longtext, + `weight_unit` varchar(255) DEFAULT 'kg', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/schema/sqlite.sql b/schema/sqlite.sql index ca495cd..7f73dd8 100644 --- a/schema/sqlite.sql +++ b/schema/sqlite.sql @@ -23,5 +23,6 @@ CREATE TABLE users ( email_username TEXT, default_timezone TEXT, supported_post_types TEXT, - supported_visibility TEXT + supported_visibility TEXT, + weight_unit TEXT default 'kg' ); diff --git a/views/dashboard.php b/views/dashboard.php index 7b8af63..e2b5963 100644 --- a/views/dashboard.php +++ b/views/dashboard.php @@ -18,6 +18,9 @@ user, 'like')): ?>
  • 👍
  • + user, 'weight')): ?> +
  • ⚖️
  • + user, 'repost')): ?>
  • diff --git a/views/new-weight.php b/views/new-weight.php new file mode 100644 index 0000000..36e68ae --- /dev/null +++ b/views/new-weight.php @@ -0,0 +1,52 @@ +
    + + +
    + + +
    + +
    + +
    + + +
    + +
    + +
    +
    + +
    + +
    + diff --git a/views/settings.php b/views/settings.php index 3ddbcc5..72028c1 100644 --- a/views/settings.php +++ b/views/settings.php @@ -61,6 +61,17 @@ +

    Post Format Settings

    + + + + + + +
    Weight Unit +
    +
    +
    The unit to be used for weight posts.

    Syndication Targets

    @@ -182,6 +193,11 @@ $(function(){ }); + $("#save-weight-unit").click(function(){ + $.post("/settings/save", { + weight_unit: $("#weight-unit").val() + }); + }); });