HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/finsteps.komma.pro/vendor/komma/kms/src/Sites/Kms/SiteSection.php
<?php

namespace Komma\KMS\Sites\Kms;

use Komma\KMS\Core\Attributes\Attribute;
use Komma\KMS\Core\Attributes\MultiSelect;
use Komma\KMS\Core\Attributes\TextField;
use Komma\KMS\Core\Attributes\Title;
use Komma\KMS\Core\Sections\Section;
use Komma\KMS\Core\Sections\Tabs\Collections\NoLanguageTabs;
use Komma\KMS\Core\ValidationSet;
use Komma\KMS\Globalization\Languages\Kms\LanguageService;
use Komma\KMS\Providers\SetupServiceProvider;
use Komma\KMS\Users\Models\KmsUserRole;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;

final class SiteSection extends Section
{
    protected $packagePrefix = SetupServiceProvider::PACKAGE_NAMESPACE.'::';

    /**
     * SiteSection constructor.
     * @param $slug
     */
    function __construct($slug)
    {
        if(app()->runningInConsole()) return;

        $tabs = new NoLanguageTabs();
        parent::__construct($tabs, $slug);
    }

    /**
     * Generates the attributes for this section. They all must extend the App\Kms\Core\Attributes\Attribute class
     *
     * @param Model $currentModel
     * @return Collection A collection of SectionTabItems
     */
    protected function generateAttributes(Model $currentModel = null): Collection
    {
        //*****************************************************************************************\\
        //*** Define attribute validation sets                                                  ***\\
        //*****************************************************************************************\\
        $nameValidationSet = (new ValidationSet())
            ->setRules('required|min:3')
            ->setMessages([
                'required' => __('validation.required'),
                'min' => __('validation.min.string'),
            ]);

        $slugValidationSet = (new ValidationSet())
            ->setRules([
                'required',
                'min:3',
                'regex:/^[a-z0-9_-]*$/',
                ($currentModel) ? 'unique:sites,slug,'.$currentModel->id : 'unique:sites,slug'
            ])
            ->setMessages([
                'required' => __('validation.required'),
                'min' => __('validation.min.string'),
                'unique' => __('validation.unique'),
                'regex' => __('validation.regex'),
            ]);

        //*****************************************************************************************\\
        //*** Generate the attributes                                                           ***\\
        //*****************************************************************************************\\
        $attributes = [];

        //Build the general attributes and put them in the attributes array
        $attributes[] = (new Title(__('KMS::kms/global.information')));

        $attributes[] = (new TextField(__('KMS::kms/global.name')))
            ->setReadOnly(false)
            ->setValidationSet($nameValidationSet)
            ->mapValueFrom(Attribute::ValueFromModel, 'name');

        $attributes[] = (new TextField(__('KMS::kms/sites.slug')))
            ->setReadOnly(false)
            ->setValidationSet($slugValidationSet)
            ->setExplanation(__('KMS::kms/sites.slug_explanation'))
            ->mapValueFrom(Attribute::ValueFromModel, 'slug');

        $languageOptionsModels = LanguageService::getAvailableLanguagesForSitesAsSelectOptions();
        $attributes[] = (new MultiSelect())
            ->setItems($languageOptionsModels)
            ->setLabelText(__('KMS::kms/sites.languages'))
            ->mapValueFrom(Attribute::ValueFromModelHasManyRelation, 'languages|id');

        //Return all attributes as a collection
        return collect(array_merge($attributes));
    }


}