OSDN Git Service

fix to work /my/sidebar correctly
authorhylom <hylom@users.sourceforge.jp>
Tue, 21 Nov 2017 10:28:56 +0000 (19:28 +0900)
committerhylom <hylom@users.sourceforge.jp>
Tue, 21 Nov 2017 10:28:56 +0000 (19:28 +0900)
src/newslash_web/lib/Newslash/Web.pm
src/newslash_web/lib/Newslash/Web/Controller/API/SidebarItem.pm [new file with mode: 0644]
src/newslash_web/public/js/user-sidebar.js
src/newslash_web/t/api/box.t

index a6e6ed8..09643ec 100644 (file)
@@ -282,6 +282,8 @@ sub startup {
     my $api = $r->under('/api/v1');
     $api->post('/login')->to('API::Login#login');
 
+    $api->get('/sidebar/item')->to('API::SidebarItem#get', seclev => 1);
+
     $api->get('/comment')->to('API::Comment#get');
     $api->post('/comment')->to('API::Comment#post', captcha_check => 1, csrf_check_id => 'comment');
 
diff --git a/src/newslash_web/lib/Newslash/Web/Controller/API/SidebarItem.pm b/src/newslash_web/lib/Newslash/Web/Controller/API/SidebarItem.pm
new file mode 100644 (file)
index 0000000..78aa808
--- /dev/null
@@ -0,0 +1,20 @@
+package Newslash::Web::Controller::API::SidebarItem;
+use Mojo::Base 'Newslash::Web::Controller';
+
+sub get {
+    my $c = shift;
+    my $boxes = $c->app->model('boxes');
+    my $items = $boxes->select;
+
+    if (!defined $items) {
+        $c->rendered(500);
+        $c->render(json => {error => 1, message => $boxes->last_error});
+        return;
+    }
+
+    $c->render(json => {items => $items});
+    return;
+}
+
+
+1;
index ad5a7f2..0e0fcc4 100644 (file)
@@ -10,7 +10,7 @@ userSidebar.run = function run (params) {
     user_id: params.user_id,
     message: "",
     urls: {
-      get: '/api/v1/sidebars',
+      get: '/api/v1/sidebar/item',
       save: '/api/v1/user',
       user: '/api/v1/user?type=sidebar',
     },
index 4772f3d..9029b6f 100644 (file)
@@ -86,6 +86,16 @@ subtest 'create/select/update/delete/exports boxes' => sub {
       ->json_has('/item/query_params')
       ->json_has('/item/template');
 
+    $t->get_ok("/api/v1/sidebar/item")
+      ->status_is(200)
+      ->json_has('/items')
+      ->json_has('/items/0/id')
+      ->json_has('/items/0/name')
+      ->json_has('/items/0/comment')
+      ->json_has('/items/0/model')
+      ->json_has('/items/0/query_params')
+      ->json_has('/items/0/template');
+
     # export
     unlink("/var/tmp/boxes.json");
     $t->get_ok("/api/v1/admin/repository/export?target=boxes")