diff --git a/src/MicroweberPackages/App/Http/Controllers/RssController.php b/src/MicroweberPackages/App/Http/Controllers/RssController.php
index 6193e8f6c3f..fea7dbd4304 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 = '';
@@ -68,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/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
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', '.*');
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();
diff --git a/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php b/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php
index d851c21cb94..c007feab305 100644
--- a/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php
+++ b/src/MicroweberPackages/Category/Http/Controllers/Api/CategoryApiController.php
@@ -113,9 +113,7 @@ public function delete($id)
*/
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
new file mode 100644
index 00000000000..f27c6b92cea
--- /dev/null
+++ b/src/MicroweberPackages/Content/tests/ContentApiControllerTest.php
@@ -0,0 +1,211 @@
+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));
+
+ }
+
+ 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(200, $response->status());
+ $contentData = $response->getData()->data->ids;
+
+ $this->assertNotEmpty($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
+}