Skip to content

Commit

Permalink
Blocks initial refactor (#139)
Browse files Browse the repository at this point in the history
* Fixed CMS seeder blocks

* Fixed BlockLoad to work with new code
  • Loading branch information
AdrianSkierniewski committed Dec 23, 2017
1 parent 4b54999 commit 6fc3d5e
Show file tree
Hide file tree
Showing 21 changed files with 335 additions and 387 deletions.
186 changes: 86 additions & 100 deletions src/Gzero/Cms/CMSSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use Faker\Factory;
use Faker\Generator;
use Gzero\Cms\Jobs\AddContentTranslation;
use Gzero\Cms\Jobs\CreateBlock;
use Gzero\Cms\Jobs\CreateContent;
use Gzero\Cms\Models\Block;
use Gzero\Cms\Models\BlockType;
Expand All @@ -18,43 +19,24 @@
use Gzero\Core\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class CMSSeeder extends Seeder {

const RANDOM_USERS = 12;
const RANDOM_CONTENTS = 10;
const RANDOM_BLOCKS = 10;
const RANDOM_FILES = 4;

/**
* @var \Faker\Generator
*/
/** @var \Faker\Generator */
protected $faker;

/**
* @var BlockService
*/
protected $blockService;
/**
* @var ContentReadRepository
*/
protected $contentRepository;

/**
* CMSSeeder constructor
*
* @param BlockService $blockService Block service
* @param ContentReadRepository $contentRepository Content repository
*/
public function __construct(
BlockService $blockService,
ContentReadRepository $contentRepository
) {
$this->faker = Factory::create();
$this->contentRepository = $contentRepository;
$this->blockService = $blockService;
// We don't want to allow to pass everything to Eloquent model
Model::reguard();
public function __construct()
{
$this->faker = Factory::create();
Model::reguard(); // We don't want to allow to pass everything to Eloquent model
}

/**
Expand All @@ -64,13 +46,14 @@ public function __construct(
*/
public function run()
{
config()->set('gzero-core.db_transactions', false);
$languages = Language::all()->keyBy('code');
$users = $this->seedUsers();
$this->seedContent($languages, $users);
//$blocks = $this->seedBlock($blockTypes, $languages, $users, $contents);
$contents = $this->seedContent($languages, $users);
$this->seedBlock(BlockType::all(), $languages, $users, $contents);
//$fileTypes = $this->seedFileTypes();
//$files = $this->seedFiles($fileTypes, $languages, $users, $contents, $blocks);
//$this->seedOptions($langs);
//$this->seedOptions($languages);
}


Expand Down Expand Up @@ -114,7 +97,7 @@ private function seedContent($languages, $users)

$contents = [$news, $offer, $aboutUs];

for ($i = 0; $i < 10; $i++) {
for ($i = 0; $i < self::RANDOM_CONTENTS; $i++) {
$contents[] = $this->seedRandomContent('content', $news, $languages, $users);
$contents[] = $this->seedRandomContent('content', $offer, $languages, $users);
}
Expand Down Expand Up @@ -228,68 +211,71 @@ private function generateContentTranslation(Language $language)
* Seed block
*
* @param array $blockTypes Block type
* @param array $langs Array with langs
* @param array $languages Array with languages
* @param array $users Array with users
* @param array $contents Array with contents
*
* @return Block
* @return array
*/
//private function seedBlock($blockTypes, $langs, $users, $contents)
//{
// $blocks = [];
// for ($x = 0; $x < self::RANDOM_BLOCKS; $x++) {
// /** @var TYPE_NAME $contents */
// $block = $this->seedRandomBlock(
// $blockTypes[array_rand($blockTypes)],
// $langs,
// $users,
// $contents
// );
// $blocks[] = $block;
// }
//
// return $blocks;
//}
private function seedBlock($blockTypes, $languages, $users, $contents)
{
$blocks = [];
for ($x = 0; $x < self::RANDOM_BLOCKS; $x++) {
$block = $this->seedRandomBlock(
$blockTypes->random(),
$languages,
$users,
$contents
);
$blocks[] = $block;
}

return $blocks;
}

/**
* Seed single block
*
* @param BlockType $type Block type
* @param array $langs Array with langs
* @param array $users Array with users
* @param array $contents Array with contents
* @param BlockType $type Block type
* @param array $languages Array with languages
* @param array $users Array with users
* @param array $contents Array with contents
*
* @return Block
*/
//private function seedRandomBlock(BlockType $type, $langs, $users, $contents)
//{
// $isActive = (bool) rand(0, 1);
// $isCacheable = (bool) rand(0, 1);
// $filter = (rand(0, 1)) ? [
// '+' => [$this->getRandomBlockFilter($contents)],
// '-' => [$this->getRandomBlockFilter($contents)]
// ] : null;
// $input = [
// 'type' => $type->name,
// 'region' => $this->getRandomBlockRegion(),
// 'weight' => rand(0, 12),
// 'filter' => $filter,
// 'options' => array_combine($this->faker->words(), $this->faker->words()),
// 'is_active' => $isActive,
// 'is_cacheable' => $isCacheable,
// 'translations' => $this->prepareBlockTranslation($langs['en']),
// 'widget' => [
// 'name' => $this->faker->unique()->word,
// 'args' => array_combine($this->faker->words(), $this->faker->words()),
// 'is_active' => $isActive,
// 'is_cacheable' => $isCacheable,
// ],
// ];
//
// $block = $this->blockService->create($input, $users[array_rand($users)]);
// $this->blockService->createTranslation($block, $this->prepareBlockTranslation($langs['pl']));
// return $block;
//}
private function seedRandomBlock(BlockType $type, $languages, $users, $contents)
{
$language = $languages->random();
$faker = Factory::create($language->i18n);
$isActive = (bool) rand(0, 1);
$isCacheable = (bool) rand(0, 1);
$filter = (rand(0, 1)) ? [
'+' => [$this->getRandomBlockFilter($contents)],
'-' => [$this->getRandomBlockFilter($contents)]
] : null;
$input = [
'type' => $type->name,
'region' => $this->getRandomBlockRegion(),
'weight' => rand(0, 12),
'filter' => $filter,
'options' => array_combine($this->faker->words(), $this->faker->words()),
'is_active' => $isActive,
'is_cacheable' => $isCacheable,
'translations' => $this->prepareBlockTranslation($languages['en']),
'widget' => [
'name' => $this->faker->unique()->word,
'args' => array_combine($this->faker->words(), $this->faker->words()),
'is_active' => $isActive,
'is_cacheable' => $isCacheable,
],
'body' => $faker->realText(300),
'custom_fields' => array_combine($this->faker->words(), $this->faker->words()),
];

$block = dispatch_now(CreateBlock::make($faker->realText(38, 1), $language, $users->random(), $input));

return $block;
}

/**
* Seed file
Expand Down Expand Up @@ -394,17 +380,17 @@ private function generateContentTranslation(Language $language)
*
* @return array
*/
//private function prepareBlockTranslation(Language $language, $title = null, $isActive = null)
//{
// $faker = Factory::create($language->i18n);
// return [
// 'language_code' => $language->code,
// 'title' => ($title) ? $title : $faker->realText(38, 1),
// 'body' => $faker->realText(300),
// 'custom_fields' => array_combine($this->faker->words(), $this->faker->words()),
// 'is_active' => (bool) ($title) ? $isActive : rand(0, 1)
// ];
//}
private function prepareBlockTranslation(Language $language, $title = null, $isActive = null)
{
$faker = Factory::create($language->i18n);
return [
'language_code' => $language->code,
'title' => ($title) ? $title : $faker->realText(38, 1),
'body' => $faker->realText(300),
'custom_fields' => array_combine($this->faker->words(), $this->faker->words()),
'is_active' => (bool) ($title) ? $isActive : rand(0, 1)
];
}

/**
* Function generates translation for specified language
Expand Down Expand Up @@ -478,19 +464,19 @@ private function generateBodyHTML(Generator $faker)
*
* @return string
*/
//private function getRandomBlockFilter($contents)
//{
// return rand(0, 1) ? $contents[array_rand($contents)]->path . '*' : $contents[array_rand($contents)]->path;
//}
private function getRandomBlockFilter($contents)
{
return rand(0, 1) ? $contents[array_rand($contents)]->path . '*' : $contents[array_rand($contents)]->path;
}

/**
* Function returns one of the available block regions
*
* @return string
*/
//private function getRandomBlockRegion()
//{
// $availableRegions = config('gzero-cms.available_blocks_regions');
// return $availableRegions[array_rand($availableRegions, 1)];
//}
private function getRandomBlockRegion()
{
$availableRegions = config('gzero-cms.available_blocks_regions');
return $availableRegions[array_rand($availableRegions, 1)];
}
}
33 changes: 0 additions & 33 deletions src/Gzero/Cms/Events/ContentRouteMatched.php

This file was deleted.

12 changes: 6 additions & 6 deletions src/Gzero/Cms/Handlers/Block/Basic.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ class Basic implements BlockTypeHandler {
/**
* Load block
*
* @param Block $block Block
* @param Language $lang Language
* @param Block $block Block
* @param Language $language Language
*
* @return string
*/
public function render(Block $block, Language $lang)
public function handle(Block $block, Language $language)
{
$html = $this->getFromCache($block, $lang);
$html = $this->getFromCache($block, $language);
if ($html !== null) {
return $html;
}
$html = view('blocks.basic', ['block' => $block, 'lang' => $lang])->render();
$this->putInCache($block, $lang, $html);
$html = view('blocks.basic', ['block' => $block])->render();
$this->putInCache($block, $language, $html);
return $html;
}

Expand Down
5 changes: 0 additions & 5 deletions src/Gzero/Cms/Handlers/Block/BlockHandlerException.php

This file was deleted.

6 changes: 3 additions & 3 deletions src/Gzero/Cms/Handlers/Block/BlockTypeHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ interface BlockTypeHandler {
/**
* Load block
*
* @param Block $block Block
* @param Language $lang Language
* @param Block $block Block
* @param Language $language Language
*
* @return BlockTypeHandler
*/
public function render(Block $block, Language $lang);
public function handle(Block $block, Language $language);

}
12 changes: 6 additions & 6 deletions src/Gzero/Cms/Handlers/Block/Menu.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ class Menu implements BlockTypeHandler {
/**
* Load block
*
* @param Block $block Block
* @param Language $lang Language
* @param Block $block Block
* @param Language $language Language
*
* @return string
*/
public function render(Block $block, Language $lang)
public function handle(Block $block, Language $language)
{
$html = $this->getFromCache($block, $lang);
$html = $this->getFromCache($block, $language);
if ($html !== null) {
return $html;
}
$html = view('blocks.menu', ['block' => $block, 'lang' => $lang])->render();
$this->putInCache($block, $lang, $html);
$html = view('blocks.menu', ['block' => $block])->render();
$this->putInCache($block, $language, $html);
return $html;
}
}
Loading

0 comments on commit 6fc3d5e

Please sign in to comment.