You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							231 lines
						
					
					
						
							7.3 KiB
						
					
					
				
			
		
		
	
	
							231 lines
						
					
					
						
							7.3 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
namespace Database\Seeders;
 | 
						|
 | 
						|
use Illuminate\Database\Seeder;
 | 
						|
use TCG\Voyager\Models\Category;
 | 
						|
use TCG\Voyager\Models\DataRow;
 | 
						|
use TCG\Voyager\Models\DataType;
 | 
						|
use TCG\Voyager\Models\Menu;
 | 
						|
use TCG\Voyager\Models\MenuItem;
 | 
						|
use TCG\Voyager\Models\Permission;
 | 
						|
 | 
						|
class CategoriesTableSeeder extends Seeder
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Auto generated seed file.
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function run()
 | 
						|
    {
 | 
						|
        //Data Type
 | 
						|
        $dataType = $this->dataType('name', 'categories');
 | 
						|
        if (!$dataType->exists) {
 | 
						|
            $dataType->fill([
 | 
						|
                'slug'                  => 'categories',
 | 
						|
                'display_name_singular' => __('voyager::seeders.data_types.category.singular'),
 | 
						|
                'display_name_plural'   => __('voyager::seeders.data_types.category.plural'),
 | 
						|
                'icon'                  => 'voyager-categories',
 | 
						|
                'model_name'            => 'TCG\\Voyager\\Models\\Category',
 | 
						|
                'controller'            => '',
 | 
						|
                'generate_permissions'  => 1,
 | 
						|
                'description'           => '',
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
        //Data Rows
 | 
						|
        $categoryDataType = DataType::where('slug', 'categories')->firstOrFail();
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'id');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'number',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.id'),
 | 
						|
                'required'     => 1,
 | 
						|
                'browse'       => 0,
 | 
						|
                'read'         => 0,
 | 
						|
                'edit'         => 0,
 | 
						|
                'add'          => 0,
 | 
						|
                'delete'       => 0,
 | 
						|
                'order'        => 1,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'parent_id');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'select_dropdown',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.parent'),
 | 
						|
                'required'     => 0,
 | 
						|
                'browse'       => 0,
 | 
						|
                'read'         => 1,
 | 
						|
                'edit'         => 1,
 | 
						|
                'add'          => 1,
 | 
						|
                'delete'       => 1,
 | 
						|
                'details'      => [
 | 
						|
                    'default' => '',
 | 
						|
                    'null'    => '',
 | 
						|
                    'options' => [
 | 
						|
                        '' => '-- None --',
 | 
						|
                    ],
 | 
						|
                    'relationship' => [
 | 
						|
                        'key'   => 'id',
 | 
						|
                        'label' => 'name',
 | 
						|
                    ],
 | 
						|
                ],
 | 
						|
                'order' => 2,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'order');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'text',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.order'),
 | 
						|
                'required'     => 1,
 | 
						|
                'browse'       => 1,
 | 
						|
                'read'         => 1,
 | 
						|
                'edit'         => 1,
 | 
						|
                'add'          => 1,
 | 
						|
                'delete'       => 1,
 | 
						|
                'details'      => [
 | 
						|
                    'default' => 1,
 | 
						|
                ],
 | 
						|
                'order' => 3,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'name');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'text',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.name'),
 | 
						|
                'required'     => 1,
 | 
						|
                'browse'       => 1,
 | 
						|
                'read'         => 1,
 | 
						|
                'edit'         => 1,
 | 
						|
                'add'          => 1,
 | 
						|
                'delete'       => 1,
 | 
						|
                'order'        => 4,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'slug');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'text',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.slug'),
 | 
						|
                'required'     => 1,
 | 
						|
                'browse'       => 1,
 | 
						|
                'read'         => 1,
 | 
						|
                'edit'         => 1,
 | 
						|
                'add'          => 1,
 | 
						|
                'delete'       => 1,
 | 
						|
                'details'      => [
 | 
						|
                    'slugify' => [
 | 
						|
                        'origin' => 'name',
 | 
						|
                    ],
 | 
						|
                ],
 | 
						|
                'order' => 5,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'created_at');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'timestamp',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.created_at'),
 | 
						|
                'required'     => 0,
 | 
						|
                'browse'       => 0,
 | 
						|
                'read'         => 1,
 | 
						|
                'edit'         => 0,
 | 
						|
                'add'          => 0,
 | 
						|
                'delete'       => 0,
 | 
						|
                'order'        => 6,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $dataRow = $this->dataRow($categoryDataType, 'updated_at');
 | 
						|
        if (!$dataRow->exists) {
 | 
						|
            $dataRow->fill([
 | 
						|
                'type'         => 'timestamp',
 | 
						|
                'display_name' => __('voyager::seeders.data_rows.updated_at'),
 | 
						|
                'required'     => 0,
 | 
						|
                'browse'       => 0,
 | 
						|
                'read'         => 0,
 | 
						|
                'edit'         => 0,
 | 
						|
                'add'          => 0,
 | 
						|
                'delete'       => 0,
 | 
						|
                'order'        => 7,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        //Menu Item
 | 
						|
        $menu = Menu::where('name', 'admin')->firstOrFail();
 | 
						|
        $menuItem = MenuItem::firstOrNew([
 | 
						|
            'menu_id' => $menu->id,
 | 
						|
            'title'   => __('voyager::seeders.menu_items.categories'),
 | 
						|
            'url'     => '',
 | 
						|
            'route'   => 'voyager.categories.index',
 | 
						|
        ]);
 | 
						|
        if (!$menuItem->exists) {
 | 
						|
            $menuItem->fill([
 | 
						|
                'target'     => '_self',
 | 
						|
                'icon_class' => 'voyager-categories',
 | 
						|
                'color'      => null,
 | 
						|
                'parent_id'  => null,
 | 
						|
                'order'      => 8,
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        //Permissions
 | 
						|
        Permission::generateFor('categories');
 | 
						|
 | 
						|
        //Content
 | 
						|
        $category = Category::firstOrNew([
 | 
						|
            'slug' => 'category-1',
 | 
						|
        ]);
 | 
						|
        if (!$category->exists) {
 | 
						|
            $category->fill([
 | 
						|
                'name' => 'Category 1',
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
 | 
						|
        $category = Category::firstOrNew([
 | 
						|
            'slug' => 'category-2',
 | 
						|
        ]);
 | 
						|
        if (!$category->exists) {
 | 
						|
            $category->fill([
 | 
						|
                'name' => 'Category 2',
 | 
						|
            ])->save();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * [dataRow description].
 | 
						|
     *
 | 
						|
     * @param [type] $type  [description]
 | 
						|
     * @param [type] $field [description]
 | 
						|
     *
 | 
						|
     * @return [type] [description]
 | 
						|
     */
 | 
						|
    protected function dataRow($type, $field)
 | 
						|
    {
 | 
						|
        return DataRow::firstOrNew([
 | 
						|
            'data_type_id' => $type->id,
 | 
						|
            'field'        => $field,
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * [dataType description].
 | 
						|
     *
 | 
						|
     * @param [type] $field [description]
 | 
						|
     * @param [type] $for   [description]
 | 
						|
     *
 | 
						|
     * @return [type] [description]
 | 
						|
     */
 | 
						|
    protected function dataType($field, $for)
 | 
						|
    {
 | 
						|
        return DataType::firstOrNew([$field => $for]);
 | 
						|
    }
 | 
						|
}
 | 
						|
 |