From 35a0189c31bfdb0dc7589662c03f59a3dd46cfd0 Mon Sep 17 00:00:00 2001 From: vikram chand Date: Fri, 12 Feb 2021 13:29:15 +0530 Subject: [PATCH 1/4] Added: add create page seeder --- Libraries/CmsSeeder.php | 263 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) diff --git a/Libraries/CmsSeeder.php b/Libraries/CmsSeeder.php index 039f65e..b0308e5 100644 --- a/Libraries/CmsSeeder.php +++ b/Libraries/CmsSeeder.php @@ -2,6 +2,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; +use VaahCms\Modules\Cms\Entities\Content; use VaahCms\Modules\Cms\Entities\ContentType; use WebReinvent\VaahCms\Entities\ThemeTemplate; @@ -208,7 +209,269 @@ public static function contentTypes($file_path) } } //------------------------------------------------------- + public static function pages($theme_slug, $file_path) + { + + $theme = self::getTheme($theme_slug); + + if(is_array($theme) + && isset($theme['status']) + && $theme['status'] == 'failed' + ) + { + return $theme; + } + + $list = self::getJsonData($file_path); + + if(count($list) < 1) + { + return false; + } + + $content_type = ContentType::where('slug', 'pages') + ->with(['groups.fields.type']) + ->first()->toArray(); + + if(!$content_type) + { + return false; + } + + + foreach($list as $item) + { + $template = ThemeTemplate::where('vh_theme_id', $theme->id) + ->where('slug', $item['template_slug']) + ->with(['groups.fields.type']) + ->first()->toArray(); + + if(!$template) + { + continue; + } + + $page = Content::where('slug', $item['slug']) + ->where('vh_cms_content_type_id', $content_type['id']) + ->where('vh_theme_id', $theme->id) + ->where('vh_theme_template_id', $template['id']) + ->first(); + + if(!$page) + { + $page = new Content(); + } + + $fillable = [ + 'vh_cms_content_type_id' => $content_type['id'], + 'vh_theme_id' => $theme->id, + 'vh_theme_template_id' => $template['id'], + 'name' => $item['name'], + 'slug' => $item['slug'], + 'permalink' => $item['permalink'], + 'status' => 'published', + 'is_published_at' => \Carbon::now(), + ]; + + + $page->fill($fillable); + $page->save(); + + + $content_groups = self::fillFields($content_type['groups']); + $template_groups = self::fillFields($template['groups']); + + Content::storeFormGroups($page, $content_groups); + Content::storeFormGroups($page, $template_groups); + + } + + } //------------------------------------------------------- + public static function fillFields($groups) + { + + $faker = \Faker\Factory::create(); + + if(count($groups) < 1) + { + return $groups; + } + + foreach ($groups as $g_key => $group) + { + + if(count($group['fields']) < 1) + { + continue; + } + + foreach ($group['fields'] as $key => $field) + { + + + if( + isset($field['meta']) + && is_object($field['meta']) + && isset($field['meta']->default) + ) + { + $field['content'] = $field['meta']->default; + } else{ + + switch($field['type']['slug']){ + + case 'title': + case 'text': + $field['content'] = $faker->text(50); + break; + + case 'slug': + $field['content'] = Str::slug($faker->text(50)); + break; + + case 'editor': + case 'textarea': + $field['content'] = $faker->realText(300, 3); + break; + + case 'image': + case 'media': + $field['content'] = 'https://via.placeholder.com/150'; + break; + + case 'phone-number': + $field['content'] = $faker->randomNumber(9); + break; + + case 'time': + $field['content'] = $faker->time(); + break; + + case 'date': + $field['content'] = $faker->date(); + break; + + case 'date-time': + $field['content'] = $faker->iso8601(); + break; + + case 'number': + $field['content'] = $faker->randomNumber(); + break; + + case 'boolean': + $field['content'] = $faker->boolean; + break; + + case 'uuid': + $field['content'] = Str::uuid()->toString(); + break; + + case 'email': + $field['content'] = $faker->email; + break; + + case 'currency-code': + $field['content'] = $faker->currencyCode; + break; + + case 'json': + $field['content'] = json_encode(['name' => $faker->name]); + break; + + case 'seo-meta-tags': + + $data['seo_description'] = self::fillFieldContent( + $faker->realText(200, 3),200, + 'SEO Meta Description','textarea', + 'Description of content (maximum 200 characters)'); + + $data['seo_keywords'] = self::fillFieldContent( + $faker->realText(200, 3),200, + 'SEO Meta Keywords','textarea'); + + $data['seo_title'] = self::fillFieldContent( + $faker->text(70),70, + 'SEO Title'); + + + $field['content'] = $data; + break; + + case 'address': + + $data['address_line_1'] = self::fillFieldContent( + $faker->text(50),50, + 'Address Line 1'); + + $data['address_line_2'] = self::fillFieldContent( + $faker->text(50),50, + 'Address Line 2'); + + $data['city'] = self::fillFieldContent( + $faker->text(50),50, + 'City'); + + $data['country'] = self::fillFieldContent( + $faker->text(50),20, + 'Country'); + + $data['landmark'] = self::fillFieldContent( + $faker->text(50),50, + 'Landmark'); + + $data['state'] = self::fillFieldContent( + $faker->text(50),50, + 'State'); + + $data['zip_code'] = self::fillFieldContent( + $faker->text(50),20, + 'Zip Code'); + + $field['content'] = $data; + break; + + default: + +// dd($field['type']['slug']); + + $field['content'] = null; + break; + } + } + + $groups[$g_key]['fields'][$key] = $field; + + } + + } + + + return $groups; + + + } + //------------------------------------------------------- + public static function fillFieldContent($content,$maxlength, + $name, $type = 'text', + $message = null) + { + + $response = [ + 'content' => $content, + 'maxlength' => $maxlength, + 'name' => $name, + 'type' => $type, + ]; + + if($message){ + $response['message'] = $message; + } + return $response; + + + } //------------------------------------------------------- From f31203df6481548f9cd62c3fd5c04ecafc113f7f Mon Sep 17 00:00:00 2001 From: vikram chand Date: Fri, 12 Feb 2021 19:43:37 +0530 Subject: [PATCH 2/4] Updated: update all field types --- Libraries/CmsSeeder.php | 198 +++++++++++++++++++++++++++++++--------- 1 file changed, 154 insertions(+), 44 deletions(-) diff --git a/Libraries/CmsSeeder.php b/Libraries/CmsSeeder.php index b0308e5..34c0b24 100644 --- a/Libraries/CmsSeeder.php +++ b/Libraries/CmsSeeder.php @@ -330,6 +330,14 @@ public static function fillFields($groups) $field['content'] = Str::slug($faker->text(50)); break; + case 'uuid': + $field['content'] = Str::uuid()->toString(); + break; + + case 'email': + $field['content'] = $faker->email; + break; + case 'editor': case 'textarea': $field['content'] = $faker->realText(300, 3); @@ -364,72 +372,58 @@ public static function fillFields($groups) $field['content'] = $faker->boolean; break; - case 'uuid': - $field['content'] = Str::uuid()->toString(); - break; - - case 'email': - $field['content'] = $faker->email; - break; - - case 'currency-code': + /* case 'currency-code': $field['content'] = $faker->currencyCode; - break; + break;*/ case 'json': $field['content'] = json_encode(['name' => $faker->name]); break; case 'seo-meta-tags': + $field['content'] = self::setMetaTagContent(); + break; + + case 'address': + $field['content'] = self::setAddressContent(); + break; - $data['seo_description'] = self::fillFieldContent( - $faker->realText(200, 3),200, - 'SEO Meta Description','textarea', - 'Description of content (maximum 200 characters)'); + case 'twitter-card': + $field['content'] = self::setTwitterContent(); + break; - $data['seo_keywords'] = self::fillFieldContent( - $faker->realText(200, 3),200, - 'SEO Meta Keywords','textarea'); + case 'facebook-card': + $field['content'] = self::setFacebookContent(); + break; - $data['seo_title'] = self::fillFieldContent( - $faker->text(70),70, - 'SEO Title'); + case 'image-group': + $data = [ + 'https://via.placeholder.com/150', + 'https://via.placeholder.com/150' + ]; $field['content'] = $data; break; - case 'address': - - $data['address_line_1'] = self::fillFieldContent( - $faker->text(50),50, - 'Address Line 1'); + case 'tags': - $data['address_line_2'] = self::fillFieldContent( - $faker->text(50),50, - 'Address Line 2'); + $field['content'] = $faker->text(50); + break; - $data['city'] = self::fillFieldContent( - $faker->text(50),50, - 'City'); + case 'password': - $data['country'] = self::fillFieldContent( - $faker->text(50),20, - 'Country'); + $field['content'] = 'password'; + break; - $data['landmark'] = self::fillFieldContent( - $faker->text(50),50, - 'Landmark'); + case 'price': - $data['state'] = self::fillFieldContent( - $faker->text(50),50, - 'State'); + $field['content'] = $faker->randomNumber(2); + break; - $data['zip_code'] = self::fillFieldContent( - $faker->text(50),20, - 'Zip Code'); + case 'list': - $field['content'] = $data; + $field['content'] = [$faker->firstName , $faker->firstName]; break; default: @@ -451,6 +445,122 @@ public static function fillFields($groups) return $groups; + } + //------------------------------------------------------- + public static function setMetaTagContent() + { + $faker = \Faker\Factory::create(); + + $data['seo_description'] = self::fillFieldContent( + $faker->realText(200, 3),200, + 'SEO Meta Description','textarea', + 'Description of content (maximum 200 characters)'); + + $data['seo_keywords'] = self::fillFieldContent( + $faker->realText(200, 3),200, + 'SEO Meta Keywords','textarea'); + + $data['seo_title'] = self::fillFieldContent( + $faker->text(70),70, + 'SEO Title'); + + return $data; + + + } + //------------------------------------------------------- + public static function setAddressContent() + { + $faker = \Faker\Factory::create(); + + $data['address_line_1'] = self::fillFieldContent( + $faker->buildingNumber.' '.$faker->streetName, + 50, 'Address Line 1'); + + $data['address_line_2'] = self::fillFieldContent( + $faker->secondaryAddress,50, + 'Address Line 2'); + + $data['city'] = self::fillFieldContent( + $faker->city,50, + 'City'); + + $data['country'] = self::fillFieldContent( + $faker->country,20, + 'Country'); + + $data['landmark'] = self::fillFieldContent( + $faker->streetName,50, + 'Landmark'); + + $data['state'] = self::fillFieldContent( + $faker->state,50, + 'State'); + + $data['zip_code'] = self::fillFieldContent( + $faker->postcode,20, + 'Zip Code'); + + return $data; + + + } + //------------------------------------------------------- + public static function setTwitterContent() + { + $faker = \Faker\Factory::create(); + + $data['twitter_description'] = self::fillFieldContent( + $faker->realText(200, 3),200, + 'twitter:description','textarea', + 'Description of content (maximum 200 characters)'); + + $data['twitter_imaage'] = self::fillFieldContent( + 'https://via.placeholder.com/150',200, + 'twitter:image','text', + 'URL of image to use in the card. + Images must be less than 5MB in size. + JPG, PNG, WEBP and GIF formats are supported.'); + + $data['twitter_site'] = self::fillFieldContent( + $faker->randomNumber(8),50, + 'twitter:site','test', + '@username of website. Either twitter:site or twitter:site:id is required.'); + + $data['twitter_title'] = self::fillFieldContent( + $faker->text(50),70, + 'twitter:title','text', + 'Title of content (max 70 characters).'); + + return $data; + + + } + //------------------------------------------------------- + public static function setFacebookContent() + { + $faker = \Faker\Factory::create(); + + $data['og_description'] = self::fillFieldContent( + $faker->realText(200, 3),200, + 'og:description','textarea', + 'Description of content (maximum 200 characters)'); + + $data['og_image'] = self::fillFieldContent( + 'https://via.placeholder.com/150',200, + 'og:image','text', + 'URL of image to use in the card. + Images must be less than 5MB in size. + JPG, PNG, WEBP and GIF formats are supported.'); + + $data['og_title'] = self::fillFieldContent( + $faker->text(50),70, + 'og:title','text', + 'Title of content (max 70 characters).'); + + return $data; + + } //------------------------------------------------------- public static function fillFieldContent($content,$maxlength, From 866fbf7157e77982c3cbeef3cb12248f4220f57e Mon Sep 17 00:00:00 2001 From: vikram chand Date: Sat, 13 Feb 2021 13:03:55 +0530 Subject: [PATCH 3/4] Added: add seeder for currency code --- Libraries/CmsSeeder.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Libraries/CmsSeeder.php b/Libraries/CmsSeeder.php index 34c0b24..c54b2b4 100644 --- a/Libraries/CmsSeeder.php +++ b/Libraries/CmsSeeder.php @@ -372,9 +372,9 @@ public static function fillFields($groups) $field['content'] = $faker->boolean; break; - /* case 'currency-code': + case 'currency-code': $field['content'] = $faker->currencyCode; - break;*/ + break; case 'json': $field['content'] = json_encode(['name' => $faker->name]); @@ -407,29 +407,22 @@ public static function fillFields($groups) break; case 'tags': - $field['content'] = $faker->text(50); break; case 'password': - $field['content'] = 'password'; break; case 'price': - $field['content'] = $faker->randomNumber(2); break; case 'list': - $field['content'] = [$faker->firstName , $faker->firstName]; break; default: - -// dd($field['type']['slug']); - $field['content'] = null; break; } @@ -523,7 +516,7 @@ public static function setTwitterContent() JPG, PNG, WEBP and GIF formats are supported.'); $data['twitter_site'] = self::fillFieldContent( - $faker->randomNumber(8),50, + $faker->url,50, 'twitter:site','test', '@username of website. Either twitter:site or twitter:site:id is required.'); From eb3d34604f458e47f2f2654aeaabeed2a80614ab Mon Sep 17 00:00:00 2001 From: vikram chand Date: Sat, 13 Feb 2021 13:45:19 +0530 Subject: [PATCH 4/4] Fixed: twitter site url --- Libraries/CmsSeeder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/CmsSeeder.php b/Libraries/CmsSeeder.php index c54b2b4..cc8e01b 100644 --- a/Libraries/CmsSeeder.php +++ b/Libraries/CmsSeeder.php @@ -516,7 +516,7 @@ public static function setTwitterContent() JPG, PNG, WEBP and GIF formats are supported.'); $data['twitter_site'] = self::fillFieldContent( - $faker->url,50, + 'https://twitter.com/',50, 'twitter:site','test', '@username of website. Either twitter:site or twitter:site:id is required.');