From 4ad6a1d11c6623bde8aa862c4b7a379708c83c7a Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 14:00:37 +0300 Subject: [PATCH 1/7] update --- .../App/Http/Controllers/RssController.php | 10 ++++++++-- .../App/resources/views/rss/atom.blade.php | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/MicroweberPackages/App/Http/Controllers/RssController.php b/src/MicroweberPackages/App/Http/Controllers/RssController.php index 6193e8f6c3f..b580050358d 100644 --- a/src/MicroweberPackages/App/Http/Controllers/RssController.php +++ b/src/MicroweberPackages/App/Http/Controllers/RssController.php @@ -21,9 +21,15 @@ public function index(Request $request) $view = 'wordpress'; } + $lang = $request->get('lang', false); + $contentData = []; - if($request->lang && $this->isMutilangOn() && is_lang_supported($request->lang)) { - change_language_by_locale($request->lang,false); + if ($this->isMutilangOn()) { + if ($lang && is_lang_supported($lang)) { + change_language_by_locale($lang, false); + } else { + change_language_by_locale(app()->lang_helper->default_lang(), false); + } } $filter = ''; diff --git a/src/MicroweberPackages/App/resources/views/rss/atom.blade.php b/src/MicroweberPackages/App/resources/views/rss/atom.blade.php index bc6e98dc64d..c1e63f5b37b 100644 --- a/src/MicroweberPackages/App/resources/views/rss/atom.blade.php +++ b/src/MicroweberPackages/App/resources/views/rss/atom.blade.php @@ -18,7 +18,7 @@ @php if (!empty($item['categories'])) { foreach ($item['categories'] as $catItem) { - echo ''; + echo ''; } } @endphp From 03e7801e7cdfd69e7b05a14c85f17a83fef0deeb Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 14:10:16 +0300 Subject: [PATCH 2/7] Update RssControllerTest.php --- .../App/tests/RssControllerTest.php | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/MicroweberPackages/App/tests/RssControllerTest.php b/src/MicroweberPackages/App/tests/RssControllerTest.php index 28104a2fa2b..33c69ae0e16 100644 --- a/src/MicroweberPackages/App/tests/RssControllerTest.php +++ b/src/MicroweberPackages/App/tests/RssControllerTest.php @@ -24,6 +24,55 @@ public function testIndex() $this->assertTrue(is_object($rssXml)); } + public function testIndexWordpressFormat() + { + $tag = new Post(); + $tag->title = 'title-'.str_random(); + $tag->content = 'content-'.str_random(); + $tag->save(); + + $response = $this->call('GET', route('rss.index'),['format'=>'wordpress']); + $this->assertEquals(200, $response->status()); + + $rssXmlContent = $response->getContent(); + + $rssXml = simplexml_load_string($rssXmlContent); + $this->assertTrue(is_object($rssXml)); + } + + public function testIndexWithParent() + { + $tag = new Post(); + $tag->title = 'title-'.str_random(); + $tag->content = 'content-'.str_random(); + $tag->save(); + + $response = $this->call('GET', route('rss.index'),['parent_id'=>1]); + $this->assertEquals(200, $response->status()); + + $rssXmlContent = $response->getContent(); + + $rssXml = simplexml_load_string($rssXmlContent); + $this->assertTrue(is_object($rssXml)); + } + + public function testPosts() + { + $tag = new Post(); + $tag->title = 'title-'.str_random(); + $tag->content = 'content-'.str_random(); + $tag->save(); + + $response = $this->call('GET', route('rss.posts'),[]); + $this->assertEquals(200, $response->status()); + + $rssXmlContent = $response->getContent(); + + $rssXml = simplexml_load_string($rssXmlContent); + $this->assertTrue(is_object($rssXml)); + + } + public function testProducts() { $tag = new Product(); From 198d519e6ddb0df0a538c38fd0a68289a4317b05 Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 14:17:47 +0300 Subject: [PATCH 3/7] update --- .../App/Http/Controllers/RssController.php | 43 +++++++++++++++++++ .../App/resources/views/rss/posts.blade.php | 21 +++++++++ src/MicroweberPackages/App/routes/web.php | 1 + 3 files changed, 65 insertions(+) create mode 100644 src/MicroweberPackages/App/resources/views/rss/posts.blade.php diff --git a/src/MicroweberPackages/App/Http/Controllers/RssController.php b/src/MicroweberPackages/App/Http/Controllers/RssController.php index b580050358d..fea7dbd4304 100644 --- a/src/MicroweberPackages/App/Http/Controllers/RssController.php +++ b/src/MicroweberPackages/App/Http/Controllers/RssController.php @@ -74,6 +74,49 @@ public function index(Request $request) return response()->view('rss::'.$view, $data)->header('Content-Type', 'text/xml'); } + public function posts(Request $request) + { + $contentData = []; + + if($request->lang && $this->isMutilangOn() && is_lang_supported($request->lang)) { + change_language_by_locale($request->lang,false); + } + + $siteTitle = app()->option_manager->get('website_title', 'website'); + $siteDesc = app()->option_manager->get('website_description', 'website'); + + $posts = get_content('is_active=1&is_deleted=0&subtype=post&limit=2500&orderby=updated_at desc'); + + if(!empty($posts)) { + foreach($posts as $post) { + $tmp = []; + + $picture = get_picture($post['id']); + $priceData = get_product_prices($post['id'], false); + $price = !empty($priceData['price']) ? $priceData['price'] : null; + + $tmp['title'] = $post['title']; + $tmp['description'] = $post['description']; + $tmp['url'] = content_link($post['id']); + $tmp['image'] = $picture; + $tmp['price'] = $price; + + $contentData[] = $tmp; + } + } + + $data = [ + 'siteTitle' => $siteTitle, + 'siteDescription' => $siteDesc, + 'siteUrl' => mw()->url_manager->hostname(), + 'rssData' => $contentData, + ]; + + return response() + ->view('rss::posts', $data) + ->header('Content-Type', 'text/xml'); + } + public function products(Request $request) { $contentData = []; diff --git a/src/MicroweberPackages/App/resources/views/rss/posts.blade.php b/src/MicroweberPackages/App/resources/views/rss/posts.blade.php new file mode 100644 index 00000000000..bb6496e5368 --- /dev/null +++ b/src/MicroweberPackages/App/resources/views/rss/posts.blade.php @@ -0,0 +1,21 @@ +'; ?> + + + {{ $siteTitle }} + {{ $siteUrl }} + {{ $siteDescription }} + @foreach ($rssData as $item) + + {{ $item['title'] }} + {{ $item['description'] }} + @if(!empty($item['image'])) + {{ $item['image'] }} + @endif + @if(isset($item['price'])) + {{ $item['price'] }} + @endif + + @endforeach + + \ No newline at end of file diff --git a/src/MicroweberPackages/App/routes/web.php b/src/MicroweberPackages/App/routes/web.php index f1eae2deaa9..11da5fee9ab 100644 --- a/src/MicroweberPackages/App/routes/web.php +++ b/src/MicroweberPackages/App/routes/web.php @@ -211,6 +211,7 @@ function migrateLanguages() Route::any('rss', 'RssController@index')->name('rss.index'); Route::any('rss-products', 'RssController@products')->name('rss.products'); + Route::any('rss-posts', 'RssController@posts')->name('rss.posts'); Route::any('{all}', array('as' => 'all', 'uses' => 'FrontendController@index'))->where('all', '.*'); From 93a8f7c77138ee85e8c725b5a63d85051dc694e3 Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 14:29:42 +0300 Subject: [PATCH 4/7] Create ContentApiControllerTest.php --- .../tests/ContentApiControllerTest.php | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 src/MicroweberPackages/Content/tests/ContentApiControllerTest.php diff --git a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php new file mode 100644 index 00000000000..ed318235396 --- /dev/null +++ b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php @@ -0,0 +1,182 @@ +first(); + Auth::login($user); + + + $category = new Category(); + $category->title = 'New cat for my custom model'. rand(); + $category->save(); + $categoryIds[] = $category->id; + + $category = new Category(); + $category->title = 'New cat for my custom model'. rand(); + $category->save(); + $categoryIds[] = $category->id; + + $title = 'Iphone and spire 4ever! - '. rand(); + $title2 = 'Iphone and spire 4ever! 2 - '. rand(); + $contentBody = 'This is my cool content description.'; + + + $response = $this->call( + 'POST', + route('api.content.store'), + [ + 'title' => $title, + 'category_ids'=>implode(',', $categoryIds), + 'content_body' => $contentBody, + 'content' => '', + ] + ); + + $contentDataSaved = $response->getData()->data; + $this->assertEquals($contentDataSaved->title, $title); + + + + $response = $this->call( + 'PUT', + route('api.content.update', [ + 'content' => $contentDataSaved->id, + 'title' => $title2, + ]) + + ); + + $this->assertEquals(200, $response->status()); + $contentDataSaved = $response->getData()->data; + + $this->assertEquals($contentDataSaved->title, $title2); + + + $response = $this->call( + 'PUT', + route('api.content.update', [ + 'content' => $contentDataSaved->id, + 'title' => 'new title', + ]) + + ); + $this->assertEquals(200, $response->status()); + + $contentDataSaved = $response->getData()->data; + $this->assertEquals($contentDataSaved->title, 'new title'); + + + $response = $this->call( + 'PUT', + route('api.content.update', [ + 'content' => $contentDataSaved->id, + 'title' => '0', + ]) + + ); + $this->assertEquals(200, $response->status()); + + $contentDataSaved = $response->getData()->data; + $this->assertEquals($contentDataSaved->title, 0); + + + $response = $this->call( + 'PUT', + route('api.content.update', [ + 'content' => $contentDataSaved->id, + ]) + + ); + $this->assertEquals(200, $response->status()); + + $contentDataSaved = $response->getData()->data; + } + + public function testSaveContentFromController() + { + $user = User::where('is_admin','=', '1')->first(); + Auth::login($user); + + $title = 'Test add content from api ' . rand(); + $title2 = 'Test update content from api ' . rand(); + + $response = $this->call( + 'POST', + route('api.content.store'), + [ + 'title' => $title, + 'content_body' => 'Bold text', + 'content' => 'XSS ' + ] + ); + + + $this->assertEquals(201, $response->status()); + $contentData = $response->getData(); + $this->assertEquals($contentData->data->title, $title); + + $content_id = $contentData->data->id; + + + $response = $this->call( + 'GET', + route('api.content.show', + [ + 'content' => $content_id, + ]) + ); + + $contentData = $response->getData(); + + + $this->assertEquals($contentData->data->title, $title); + + + $response = $this->call( + 'PUT', + route('api.content.update', [ + 'content' => $content_id, + 'title' => $title2, + ]) + + ); + + $this->assertEquals(200, $response->status()); + + $response = $this->call( + 'GET', + route('api.content.show', + [ + 'content' => $content_id, + ]) + ); + + $contentData = $response->getData(); + + $this->assertEquals($contentData->data->title, $title2); + + + + $response = $this->call( + 'GET', + route('api.content.index', + [ + ]) + ); + + $contentData = $response->getData(); + $this->assertEquals(true,!empty($contentData->data)); + + } +} From 0cc8187394754c526c9ec5138eab2c42bee043d2 Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 15:05:35 +0300 Subject: [PATCH 5/7] update api controllers --- .../Controllers/Api/CategoryApiController.php | 6 ++-- .../Controllers/Api/ContentApiController.php | 2 +- .../tests/ContentApiControllerTest.php | 29 +++++++++++++++++++ .../Controllers/Api/MenuApiController.php | 2 +- .../Controllers/Api/OrderApiController.php | 4 +-- .../Controllers/Api/PageApiController.php | 4 +-- .../Controllers/Api/PostApiController.php | 4 +-- .../Controllers/Api/ProductApiController.php | 4 +-- .../Api/ProductVariantApiController.php | 2 +- .../Controllers/Api/UserApiController.php | 4 +-- 10 files changed, 44 insertions(+), 17 deletions(-) diff --git a/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php b/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php index d851c21cb94..cf91ce25a42 100644 --- a/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php +++ b/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php @@ -107,15 +107,13 @@ public function delete($id) } /** - * Delete resources by given ids. + * Delete resources by given ids. * * @param string $ids */ public function destroy($ids) { - $result = $this->category->destroy($ids); - return true; - // return (new JsonResource($result))->response(); + return (new JsonResource(['ids'=>$this->category->destroy($ids)])); } } diff --git a/src/MicroweberPackages/Content/Http/Controllers/Api/ContentApiController.php b/src/MicroweberPackages/Content/Http/Controllers/Api/ContentApiController.php index 5c60cbe0e6d..cc2771c19b6 100644 --- a/src/MicroweberPackages/Content/Http/Controllers/Api/ContentApiController.php +++ b/src/MicroweberPackages/Content/Http/Controllers/Api/ContentApiController.php @@ -84,7 +84,7 @@ public function delete($id) */ public function destroy($ids) { - return (new JsonResource($this->content->destroy($ids))); + return (new JsonResource(['ids'=>$this->content->destroy($ids)])); } diff --git a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php index ed318235396..8be1e4c8330 100644 --- a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php +++ b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php @@ -179,4 +179,33 @@ public function testSaveContentFromController() $this->assertEquals(true,!empty($contentData->data)); } + + public function testDeleteContentFromController() + { + $user = User::where('is_admin', '=', '1')->first(); + Auth::login($user); + + $title = 'Test add content from api ' . rand(); + + $response = $this->call( + 'POST', + route('api.content.store'), + [ + 'title' => $title, + ] + ); + + + $response = $this->call( + 'DELETE', + route('api.content.destroy', [ + 'content' => $response->getData()->data->id, + ]) + ); + +// $this->assertEquals(500, $response->status()); + $contentData = $response->getContent(); + + dd($contentData); + } } diff --git a/src/MicroweberPackages/Menu/Http/Controllers/Api/MenuApiController.php b/src/MicroweberPackages/Menu/Http/Controllers/Api/MenuApiController.php index af7b6122838..6e19680f7ea 100644 --- a/src/MicroweberPackages/Menu/Http/Controllers/Api/MenuApiController.php +++ b/src/MicroweberPackages/Menu/Http/Controllers/Api/MenuApiController.php @@ -85,6 +85,6 @@ public function delete($id) */ public function destroy($ids) { - return (new JsonResource($this->menu->destroy($ids))); + return (new JsonResource(['ids'=>$this->menu->destroy($ids)])); } } diff --git a/src/MicroweberPackages/Order/Http/Controllers/Api/OrderApiController.php b/src/MicroweberPackages/Order/Http/Controllers/Api/OrderApiController.php index 6bc59ece141..97865a48dc9 100644 --- a/src/MicroweberPackages/Order/Http/Controllers/Api/OrderApiController.php +++ b/src/MicroweberPackages/Order/Http/Controllers/Api/OrderApiController.php @@ -104,6 +104,6 @@ public function delete($id) */ public function destroy($ids) { - return $this->order->destroy($ids); + return (new JsonResource(['ids'=>$this->order->destroy($ids)])); } -} \ No newline at end of file +} diff --git a/src/MicroweberPackages/Page/Http/Controllers/Api/PageApiController.php b/src/MicroweberPackages/Page/Http/Controllers/Api/PageApiController.php index 65ccb61d874..00946886aa4 100644 --- a/src/MicroweberPackages/Page/Http/Controllers/Api/PageApiController.php +++ b/src/MicroweberPackages/Page/Http/Controllers/Api/PageApiController.php @@ -85,6 +85,6 @@ public function delete($id) */ public function destroy($ids) { - return (new JsonResource($this->page->destroy($ids))); + return (new JsonResource(['ids'=>$this->page->destroy($ids)])); } -} \ No newline at end of file +} diff --git a/src/MicroweberPackages/Post/Http/Controllers/Api/PostApiController.php b/src/MicroweberPackages/Post/Http/Controllers/Api/PostApiController.php index 702f02f038f..76bfcbba7ba 100644 --- a/src/MicroweberPackages/Post/Http/Controllers/Api/PostApiController.php +++ b/src/MicroweberPackages/Post/Http/Controllers/Api/PostApiController.php @@ -92,7 +92,7 @@ public function delete($id) */ public function destroy($ids) { - return (new JsonResource($this->post->destroy($ids))); + return (new JsonResource(['ids'=>$this->post->destroy($ids)])); } -} \ No newline at end of file +} diff --git a/src/MicroweberPackages/Product/Http/Controllers/Api/ProductApiController.php b/src/MicroweberPackages/Product/Http/Controllers/Api/ProductApiController.php index 909e80167c8..c2e09c00325 100644 --- a/src/MicroweberPackages/Product/Http/Controllers/Api/ProductApiController.php +++ b/src/MicroweberPackages/Product/Http/Controllers/Api/ProductApiController.php @@ -104,6 +104,6 @@ public function delete($id) */ public function destroy($ids) { - return $this->product->destroy($ids); + return (new JsonResource(['ids'=>$this->product->destroy($ids)])); } -} \ No newline at end of file +} diff --git a/src/MicroweberPackages/Product/Http/Controllers/Api/ProductVariantApiController.php b/src/MicroweberPackages/Product/Http/Controllers/Api/ProductVariantApiController.php index 6a8026f95a0..ad6771c9bfd 100644 --- a/src/MicroweberPackages/Product/Http/Controllers/Api/ProductVariantApiController.php +++ b/src/MicroweberPackages/Product/Http/Controllers/Api/ProductVariantApiController.php @@ -104,6 +104,6 @@ public function delete($id) */ public function destroy($ids) { - return $this->productVariant->destroy($ids); + return (new JsonResource(['ids'=>$this->productVariant->destroy($ids)])); } } diff --git a/src/MicroweberPackages/User/Http/Controllers/Api/UserApiController.php b/src/MicroweberPackages/User/Http/Controllers/Api/UserApiController.php index cdf7d845805..b535c2845d2 100644 --- a/src/MicroweberPackages/User/Http/Controllers/Api/UserApiController.php +++ b/src/MicroweberPackages/User/Http/Controllers/Api/UserApiController.php @@ -102,6 +102,6 @@ public function delete($id) */ public function destroy($ids) { - return $this->user->destroy($ids); + return (new JsonResource(['ids'=>$this->user->destroy($ids)])); } -} \ No newline at end of file +} From 64a4a1efb048bc81a95e02720c9e6e1a7a2d2aa0 Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 15:07:58 +0300 Subject: [PATCH 6/7] update --- .../Category/Http/Controllers/Api/CategoryApiController.php | 2 +- .../Content/tests/ContentApiControllerTest.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php b/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php index cf91ce25a42..c007feab305 100644 --- a/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php +++ b/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php @@ -107,7 +107,7 @@ public function delete($id) } /** - * Delete resources by given ids. + * Delete resources by given ids. * * @param string $ids */ diff --git a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php index 8be1e4c8330..9d9bf75acb0 100644 --- a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php +++ b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php @@ -203,9 +203,9 @@ public function testDeleteContentFromController() ]) ); -// $this->assertEquals(500, $response->status()); - $contentData = $response->getContent(); + $this->assertEquals(500, $response->status()); + $contentData = $response->getData()->data->ids; - dd($contentData); + $this->assertNotEmpty($contentData); } } From acce26d620373b349ffd829a53a5bd3347bfda53 Mon Sep 17 00:00:00 2001 From: Bozhidar Slaveykov Date: Thu, 28 Oct 2021 15:08:24 +0300 Subject: [PATCH 7/7] update --- .../Content/tests/ContentApiControllerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php index 9d9bf75acb0..f27c6b92cea 100644 --- a/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php +++ b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php @@ -203,7 +203,7 @@ public function testDeleteContentFromController() ]) ); - $this->assertEquals(500, $response->status()); + $this->assertEquals(200, $response->status()); $contentData = $response->getData()->data->ids; $this->assertNotEmpty($contentData);