added a new component for breadcrumbs and reworked the component for getting icons using sprites
This commit is contained in:
Generated
+14
-2
@@ -6,7 +6,6 @@
|
|||||||
<sourceFolder url="file://$MODULE_DIR$/database/factories" isTestSource="false" packagePrefix="Database\Factories\" />
|
<sourceFolder url="file://$MODULE_DIR$/database/factories" isTestSource="false" packagePrefix="Database\Factories\" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/database/seeders" isTestSource="false" packagePrefix="Database\Seeders\" />
|
<sourceFolder url="file://$MODULE_DIR$/database/seeders" isTestSource="false" packagePrefix="Database\Seeders\" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" />
|
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/brick/math" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/brick/math" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||||
@@ -155,7 +154,6 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/html-sanitizer" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/html-sanitizer" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/awcodes/filament-tiptap-editor" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/awcodes/filament-tiptap-editor" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/mohamedsabil83/filament-forms-tinyeditor" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/mohamedsabil83/filament-forms-tinyeditor" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/rahmanramsi/filament-editorjs" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/scrivo/highlight.php" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/scrivo/highlight.php" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/shiki-php" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/shiki-php" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ueberdosis/tiptap-php" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/ueberdosis/tiptap-php" />
|
||||||
@@ -184,6 +182,20 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/yepsua/filament-range-field" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/yepsua/filament-range-field" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/tomatophp/console-helpers" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/tomatophp/console-helpers" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/vendor/tomatophp/filament-icons" />
|
<excludeFolder url="file://$MODULE_DIR$/vendor/tomatophp/filament-icons" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/imangazaliev/didom" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/opcodesio/log-viewer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/opcodesio/mail-parser" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/alxdorosenco/porto-for-laravel" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/calebporzio/sushi" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/filament/spatie-laravel-settings-plugin" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/shuvroroy/filament-spatie-laravel-backup" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/db-dumper" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/laravel-backup" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/laravel-settings" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/laravel-signal-aware-command" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|||||||
Generated
+178
-176
@@ -17,194 +17,196 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="PhpIncludePathManager">
|
<component name="PhpIncludePathManager">
|
||||||
<include_path>
|
<include_path>
|
||||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/termwind" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/config" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/commonmark" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/sail" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/flysystem-local" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/prompts" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/flysystem" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/pint" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/sanctum" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/tinker" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/serializable-closure" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/framework" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/laravel/breeze" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/fakerphp/faker" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/clock" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
||||||
<path value="$PROJECT_DIR$/vendor/fruitcake/php-cors" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/dragonmantank/cron-expression" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/inertiajs/inertia-laravel" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/graham-campbell/result-type" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/routing" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/tightenco/ziggy" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php83" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/error-handler" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/uid" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/http-kernel" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/string" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-uuid" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/ramsey/collection" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/ramsey/uuid" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/intervention/image" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psy/psysh" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/brick/math" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/uri-template" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/dflydev/dot-access-data" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/nette/schema" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/nette/utils" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/voku/portable-ascii" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/mockery/mockery" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/danharrin/date-format-converter" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/danharrin/livewire-rate-limiting" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/blade-ui-kit/blade-icons" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/blade-ui-kit/blade-heroicons" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/kirschbaum-development/eloquent-power-joins" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/livewire/livewire" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/ryangjchandler/blade-capture-directive" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/forms" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/tables" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/filament" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/infolists" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/actions" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/support" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/widgets" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/notifications" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/masterminds/html5" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/invade" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-package-tools" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/color" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/anourvalar/eloquent-serialize" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/openspout/openspout" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/csv" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/uri-interfaces" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/league/uri" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/psr/cache" />
|
<path value="$PROJECT_DIR$/vendor/psr/cache" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/html-sanitizer" />
|
<path value="$PROJECT_DIR$/vendor/voku/portable-ascii" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
|
<path value="$PROJECT_DIR$/vendor/brick/math" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/cache" />
|
<path value="$PROJECT_DIR$/vendor/psy/psysh" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||||
<path value="$PROJECT_DIR$/vendor/doctrine/dbal" />
|
<path value="$PROJECT_DIR$/vendor/psr/clock" />
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/spatie-laravel-tags-plugin" />
|
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/eloquent-sortable" />
|
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-translatable" />
|
<path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-tags" />
|
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
|
||||||
<path value="$PROJECT_DIR$/vendor/ueberdosis/tiptap-php" />
|
<path value="$PROJECT_DIR$/vendor/league/flysystem-local" />
|
||||||
<path value="$PROJECT_DIR$/vendor/awcodes/filament-tiptap-editor" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/scrivo/highlight.php" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/shiki-php" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/rahmanramsi/filament-editorjs" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/protonemedia/laravel-cross-eloquent-search" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/mohamedsabil83/filament-forms-tinyeditor" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/xvladqt/faker-lorem-flickr" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpoffice/phpspreadsheet" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/maennchen/zipstream-php" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/maatwebsite/excel" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/markbaker/matrix" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/markbaker/complex" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/ezyang/htmlpurifier" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/pxlrbt/filament-excel" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/guava/filament-icon-picker" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/joshembling/image-optimizer" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/bezhansalleh/filament-shield" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-permission" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/vkcom/vk-php-sdk" />
|
<path value="$PROJECT_DIR$/vendor/vkcom/vk-php-sdk" />
|
||||||
<path value="$PROJECT_DIR$/vendor/symfony/dom-crawler" />
|
<path value="$PROJECT_DIR$/vendor/ezyang/htmlpurifier" />
|
||||||
<path value="$PROJECT_DIR$/vendor/nicmart/tree" />
|
<path value="$PROJECT_DIR$/vendor/nette/schema" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/temporary-directory" />
|
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/robots-txt" />
|
<path value="$PROJECT_DIR$/vendor/guava/filament-icon-picker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nette/utils" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/predis/predis" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/uri" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/commonmark" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/uri-interfaces" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/csv" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/config" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/flysystem" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-sitemap" />
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-sitemap" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/robots-txt" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-package-tools" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-translatable" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ramsey/uuid" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/scrivo/highlight.php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/pxlrbt/filament-excel" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ramsey/collection" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/shiki-php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-backup" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/eloquent-sortable" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-tags" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/temporary-directory" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/color" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/browsershot" />
|
<path value="$PROJECT_DIR$/vendor/spatie/browsershot" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/crawler" />
|
<path value="$PROJECT_DIR$/vendor/spatie/crawler" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-signal-aware-command" />
|
<path value="$PROJECT_DIR$/vendor/awcodes/filament-tiptap-editor" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/dflydev/dot-access-data" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/yepsua/filament-range-field" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/db-dumper" />
|
<path value="$PROJECT_DIR$/vendor/spatie/db-dumper" />
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-backup" />
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-permission" />
|
||||||
<path value="$PROJECT_DIR$/vendor/calebporzio/sushi" />
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-signal-aware-command" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/invade" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/sail" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/prompts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/serializable-closure" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/sanctum" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/tinker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/framework" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/pint" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nicmart/tree" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/breeze" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/mockery/mockery" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-uuid" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/uid" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/http-kernel" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php83" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/dom-crawler" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/html-sanitizer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/error-handler" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/routing" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/string" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/xvladqt/faker-lorem-flickr" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/dbal" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/cache" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/infolists" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/filament" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/tables" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/forms" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/fakerphp/faker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/spatie-laravel-tags-plugin" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/danharrin/date-format-converter" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/livewire/livewire" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/notifications" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/widgets" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/support" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/actions" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/opcodesio/mail-parser" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/opcodesio/log-viewer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/markbaker/complex" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/markbaker/matrix" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/inertiajs/inertia-laravel" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/maennchen/zipstream-php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/danharrin/livewire-rate-limiting" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/fruitcake/php-cors" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/openspout/openspout" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpoffice/phpspreadsheet" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/tomatophp/filament-icons" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/tightenco/ziggy" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/tomatophp/console-helpers" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||||
<path value="$PROJECT_DIR$/vendor/shuvroroy/filament-spatie-laravel-backup" />
|
<path value="$PROJECT_DIR$/vendor/shuvroroy/filament-spatie-laravel-backup" />
|
||||||
<path value="$PROJECT_DIR$/vendor/askerakbar/checkpoint" />
|
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ueberdosis/tiptap-php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nunomaduro/termwind" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/anourvalar/eloquent-serialize" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/uri-template" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/blade-ui-kit/blade-icons" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/blade-ui-kit/blade-heroicons" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/alxdorosenco/porto-for-laravel" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/bezhansalleh/filament-shield" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/maatwebsite/excel" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/masterminds/html5" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/calebporzio/sushi" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/joshembling/image-optimizer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ryangjchandler/blade-capture-directive" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/graham-campbell/result-type" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/dragonmantank/cron-expression" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/mohamedsabil83/filament-forms-tinyeditor" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/protonemedia/laravel-cross-eloquent-search" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/imangazaliev/didom" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/intervention/image" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/kirschbaum-development/eloquent-power-joins" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-settings" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filament/spatie-laravel-settings-plugin" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||||
<path value="$PROJECT_DIR$/vendor/filament/spatie-laravel-settings-plugin" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/spatie/laravel-settings" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/predis/predis" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/yepsua/filament-range-field" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/tomatophp/filament-icons" />
|
|
||||||
<path value="$PROJECT_DIR$/vendor/tomatophp/console-helpers" />
|
|
||||||
</include_path>
|
</include_path>
|
||||||
</component>
|
</component>
|
||||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
|
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
|
use App\Containers\AppStructure\Models\Page;
|
||||||
|
use App\Containers\Article\Models\Post;
|
||||||
|
use App\Containers\Event\Models\Event;
|
||||||
use App\Containers\Widget\Models\PageReferenceList;
|
use App\Containers\Widget\Models\PageReferenceList;
|
||||||
use App\Filament\Resources\PageReferenceListResource\Pages;
|
use App\Filament\Resources\PageReferenceListResource\Pages;
|
||||||
use Filament\Forms;
|
use Filament\Forms;
|
||||||
@@ -17,6 +20,7 @@ use Filament\Tables\Columns\TextColumn;
|
|||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
|
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
use TomatoPHP\FilamentIcons\Components\IconPicker;
|
||||||
|
|
||||||
class PageReferenceListResource extends Resource
|
class PageReferenceListResource extends Resource
|
||||||
{
|
{
|
||||||
@@ -177,17 +181,42 @@ class PageReferenceListResource extends Resource
|
|||||||
->required()
|
->required()
|
||||||
->maxLength(255),
|
->maxLength(255),
|
||||||
|
|
||||||
FileUpload::make('image')
|
// Новый блок для выбора между изображением и иконкой
|
||||||
->label('Изображение предпросмотра')
|
Forms\Components\Section::make('Графическое представление')
|
||||||
->helperText('Рекомендуемый формат: PNG, JPEG, JPG')
|
->description('Выберите тип графического представления')
|
||||||
->image()
|
->collapsible()
|
||||||
->optimize('webp')
|
->schema([
|
||||||
->resize(50)
|
Forms\Components\Radio::make('visual_type')
|
||||||
->disk('public')
|
->label('Тип представления')
|
||||||
->directory('images')
|
->options([
|
||||||
->imageEditor()
|
'image' => 'Изображение',
|
||||||
->downloadable()
|
'icon' => 'Иконка',
|
||||||
->openable(),
|
])
|
||||||
|
->default('image')
|
||||||
|
->dehydrated(false)
|
||||||
|
->live()
|
||||||
|
->inline(),
|
||||||
|
|
||||||
|
FileUpload::make('image')
|
||||||
|
->label('Изображение предпросмотра')
|
||||||
|
->helperText('Рекомендуемый формат: PNG, JPEG, JPG')
|
||||||
|
->image()
|
||||||
|
->optimize('webp')
|
||||||
|
->resize(50)
|
||||||
|
->disk('public')
|
||||||
|
->directory('images')
|
||||||
|
->imageEditor()
|
||||||
|
->downloadable()
|
||||||
|
->openable()
|
||||||
|
->visible(fn (Forms\Get $get): bool => $get('visual_type') === 'image'),
|
||||||
|
|
||||||
|
IconPicker::make('icon')
|
||||||
|
->label('Иконка')
|
||||||
|
->default('heroicon-o-academic-cap')
|
||||||
|
->helperText('Выберите иконку для отображения')
|
||||||
|
->columns(6)
|
||||||
|
->visible(fn (Forms\Get $get): bool => $get('visual_type') === 'icon'),
|
||||||
|
]),
|
||||||
|
|
||||||
Forms\Components\Grid::make(2)
|
Forms\Components\Grid::make(2)
|
||||||
->schema([
|
->schema([
|
||||||
@@ -213,7 +242,6 @@ class PageReferenceListResource extends Resource
|
|||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function table(Table $table): Table
|
public static function table(Table $table): Table
|
||||||
{
|
{
|
||||||
return $table
|
return $table
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Filament\Resources;
|
|||||||
use App\Containers\Schedule\Models\EducationalGroup;
|
use App\Containers\Schedule\Models\EducationalGroup;
|
||||||
use App\Containers\Schedule\Models\Schedule;
|
use App\Containers\Schedule\Models\Schedule;
|
||||||
use App\Filament\Resources\ScheduleResource\Pages;
|
use App\Filament\Resources\ScheduleResource\Pages;
|
||||||
|
use App\Ship\Enums\Education\FormEducation;
|
||||||
use Filament\Forms;
|
use Filament\Forms;
|
||||||
use Filament\Forms\Components\FileUpload;
|
use Filament\Forms\Components\FileUpload;
|
||||||
use Filament\Forms\Components\Grid;
|
use Filament\Forms\Components\Grid;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Jobs;
|
namespace App\Jobs;
|
||||||
|
|
||||||
use App\Containers\Article\Models\Post;
|
use App\Containers\Article\Models\Post;
|
||||||
|
use App\Services\Filament\Traits\SeoGenerate;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
use Illuminate\Foundation\Bus\Dispatchable;
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||||||
@@ -14,7 +15,7 @@ use Illuminate\Support\Str;
|
|||||||
|
|
||||||
class ImportApiDataPost implements ShouldQueue
|
class ImportApiDataPost implements ShouldQueue
|
||||||
{
|
{
|
||||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, SeoGenerate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new job instance.
|
* Create a new job instance.
|
||||||
@@ -83,26 +84,31 @@ class ImportApiDataPost implements ShouldQueue
|
|||||||
// Генерация уникального slug
|
// Генерация уникального slug
|
||||||
$slug = $this->generateSlug($post->NAME);
|
$slug = $this->generateSlug($post->NAME);
|
||||||
|
|
||||||
|
$author = $this->extractAuthor($post->DETAIL_TEXT ?? '');
|
||||||
|
$authors = $author ? [$author] : ($post->AUTHORS ?? ['Без автора']);
|
||||||
|
|
||||||
// Создание нового поста
|
// Создание нового поста
|
||||||
Post::firstOrCreate(
|
$createdPost = Post::firstOrCreate(
|
||||||
['id' => $post->ID], // Условие поиска по ID
|
['id' => $post->ID], // Условие поиска по ID
|
||||||
[
|
[
|
||||||
'title' => $post->NAME,
|
'title' => $post->NAME,
|
||||||
'slug' => $slug,
|
'slug' => $slug,
|
||||||
'preview_text' => strip_tags($post->PREVIEW_TEXT),
|
'preview_text' => strip_tags($post->PREVIEW_TEXT),
|
||||||
'authors' => ['Без автора'],
|
'authors' => $authors,
|
||||||
'content' => $contentData, // Преобразуем в JSON
|
'content' => $contentData, // Преобразуем в JSON
|
||||||
'status' => 'published',
|
'status' => 'published',
|
||||||
'images' => $imagePaths, // Сохраняем пути к изображениям
|
'images' => $imagePaths, // Сохраняем пути к изображениям
|
||||||
'preview' => $imagePaths[0],
|
'preview' => $imagePaths[0] ?? null,
|
||||||
'search_data' => strip_tags($content), // Преобразуем в JSON
|
'search_data' => strip_tags($content), // Преобразуем в JSON
|
||||||
'reading_time' => $readingTime,
|
'reading_time' => $readingTime,
|
||||||
'user_id' => 1,
|
'user_id' => 2,
|
||||||
'publish_at' => $post->DATE_CREATE,
|
'publish_at' => $post->DATE_CREATE,
|
||||||
'created_at' => $post->DATE_CREATE,
|
'created_at' => $post->DATE_CREATE,
|
||||||
'updated_at' => $post->DATE_CREATE,
|
'updated_at' => $post->DATE_CREATE,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->createSeo($createdPost);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::error('Error importing post ID: ' . $post->ID . ' - ' . $e->getMessage());
|
Log::error('Error importing post ID: ' . $post->ID . ' - ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
@@ -134,4 +140,19 @@ class ImportApiDataPost implements ShouldQueue
|
|||||||
return max(1, round($wordCount / $wordsPerMinute));
|
return max(1, round($wordCount / $wordsPerMinute));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function extractAuthor(string $detailText): ?string
|
||||||
|
{
|
||||||
|
// Ищем последний div с text-align: right
|
||||||
|
if (preg_match('/<div\s+style="[^"]*text-align:\s*right[^"]*"[^>]*>(.*?)<\/div>/', $detailText, $matches)) {
|
||||||
|
$author = trim(strip_tags($matches[1]));
|
||||||
|
|
||||||
|
// Удаляем возможные префиксы типа "Автор:", если они есть
|
||||||
|
$author = preg_replace('/^(Автор|Фото|Источник):\s*/ui', '', $author);
|
||||||
|
|
||||||
|
return $author ?: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+3574
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,7 @@
|
|||||||
"rollup": "^3.29.4",
|
"rollup": "^3.29.4",
|
||||||
"tailwindcss": "^3.2.1",
|
"tailwindcss": "^3.2.1",
|
||||||
"terser": "^5.39.0",
|
"terser": "^5.39.0",
|
||||||
|
"vite-plugin-svg-icons": "^2.0.1",
|
||||||
"vue": "^3.2.41"
|
"vue": "^3.2.41"
|
||||||
},
|
},
|
||||||
"@comment dependencies": [
|
"@comment dependencies": [
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
:class="(HAS_ACTIVE_PAGE(section) ? 'text-primary bg-gray-100' : 'text-gray-700')"
|
:class="(HAS_ACTIVE_PAGE(section) ? 'text-primary bg-gray-100' : 'text-gray-700')"
|
||||||
type="button"
|
type="button"
|
||||||
class="hs-accordion-toggle hs-accordion-active:text-primary w-full text-start flex items-center gap-x-3 py-2 px-2.5 text-sm rounded-lg focus:outline-none" aria-expanded="true" aria-controls="users-accordion">
|
class="hs-accordion-toggle hs-accordion-active:text-primary w-full text-start flex items-center gap-x-3 py-2 px-2.5 text-sm rounded-lg focus:outline-none" aria-expanded="true" aria-controls="users-accordion">
|
||||||
<BasicIcon class="w-4" name="line" />
|
<BasicIcon class="w-4 h-4" name="line" />
|
||||||
{{ section.title }}
|
{{ section.title }}
|
||||||
<svg class="flex-shrink-0 hs-accordion-active:block ms-auto hidden size-4 text-gray-600 group-hover:text-gray-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m18 15-6-6-6 6"/></svg>
|
<svg class="flex-shrink-0 hs-accordion-active:block ms-auto hidden size-4 text-gray-600 group-hover:text-gray-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m18 15-6-6-6 6"/></svg>
|
||||||
<svg class="flex-shrink-0 hs-accordion-active:hidden ms-auto block size-4 text-gray-600 group-hover:text-gray-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
|
<svg class="flex-shrink-0 hs-accordion-active:hidden ms-auto block size-4 text-gray-600 group-hover:text-gray-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
|
||||||
@@ -52,14 +52,14 @@
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div class="hs-accordion-content w-full overflow-hidden transition-[height] duration-300 hidden" role="region" :aria-labelledby="'nav-accordion-' + subSection.slug">
|
<div class="hs-accordion-content w-full overflow-hidden transition-[height] duration-300 hidden" role="region" :aria-labelledby="'nav-accordion-' + subSection.slug">
|
||||||
<ul class="pt-2 ps-2">
|
<ul class="pt-2">
|
||||||
<li v-for="page in subSection.pages">
|
<li class="mb-1.5" v-for="page in subSection.pages">
|
||||||
<a
|
<a
|
||||||
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'"
|
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'"
|
||||||
class="flex items-center gap-x-3 py-2 px-2.5 text-sm rounded-lg hover:bg-gray-[#EFEFEF] focus:outline-none focus:bg-gray-100"
|
class="flex items-center gap-x-3 py-2 px-2.5 text-sm rounded-lg hover:bg-gray-[#EFEFEF] focus:outline-none focus:bg-gray-100"
|
||||||
:class="(IS_SAME_ROUTE(page.path) ? 'text-primary bg-white border border-[#E4E4E7]' : 'text-gray-700')"
|
:class="(IS_SAME_ROUTE(page.path) ? 'text-primary bg-white border border-[#E4E4E7]' : 'text-gray-700')"
|
||||||
>
|
>
|
||||||
<BasicIcon v-if="page.icon" class="w-4" :name="page.icon" />
|
<BasicIcon v-if="page.icon" class="w-4 h-4" :name="page.icon" />
|
||||||
{{ page.title }}
|
{{ page.title }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -75,27 +75,27 @@
|
|||||||
<Link :href="route('client.schedule.index')"
|
<Link :href="route('client.schedule.index')"
|
||||||
:class="(IS_SAME_ROUTE(route('client.schedule.index')) ? 'text-primary bg-white border border-[#E4E4E7]' : 'text-gray-700')"
|
:class="(IS_SAME_ROUTE(route('client.schedule.index')) ? 'text-primary bg-white border border-[#E4E4E7]' : 'text-gray-700')"
|
||||||
class="flex items-center gap-x-3 py-2 px-2.5 text-sm rounded-lg hover:bg-gray-100 dark:hover:bg-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300" href="#">
|
class="flex items-center gap-x-3 py-2 px-2.5 text-sm rounded-lg hover:bg-gray-100 dark:hover:bg-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300" href="#">
|
||||||
<BasicIcon class="w-4" name="schedule" />
|
<BasicIcon class="w-4 h-4" name="schedule" />
|
||||||
Расписание
|
Расписание
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
<!-- <li>-->
|
<!-- <li>-->
|
||||||
<!-- <a class="flex items-center gap-x-3 py-2 px-2.5 text-sm text-gray-700 rounded-lg hover:bg-gray-100 dark:hover:bg-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300" href="#">-->
|
<!-- <a class="flex items-center gap-x-3 py-2 px-2.5 text-sm text-gray-700 rounded-lg hover:bg-gray-100 dark:hover:bg-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-300" href="#">-->
|
||||||
<!-- <BasicIcon class="w-4" name="eye" />-->
|
<!-- <BasicIcon class="w-4 h-4" name="eye" />-->
|
||||||
<!-- Режим для слабовидящих-->
|
<!-- Режим для слабовидящих-->
|
||||||
<!-- </a>-->
|
<!-- </a>-->
|
||||||
<!-- </li>-->
|
<!-- </li>-->
|
||||||
<li>
|
<li>
|
||||||
<button aria-haspopup="dialog" aria-expanded="false" aria-controls="hs-full-screen-modal-below-md" data-hs-overlay="#open-search-modal"
|
<button aria-haspopup="dialog" aria-expanded="false" aria-controls="hs-full-screen-modal-below-md" data-hs-overlay="#open-search-modal"
|
||||||
class="flex items-center gap-x-3 py-2 px-2.5 text-sm text-gray-700 rounded-lg hover:bg-gray-100 w-full">
|
class="flex items-center gap-x-3 py-2 px-2.5 text-sm text-gray-700 rounded-lg hover:bg-gray-100 w-full">
|
||||||
<BasicIcon class="w-4" name="search" />
|
<BasicIcon class="w-4 h-4" name="search" />
|
||||||
Поиск
|
Поиск
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<button aria-haspopup="dialog" aria-expanded="false" aria-controls="hs-full-screen-modal-below-md" data-hs-overlay="#open-search-sveden-modal"
|
<button aria-haspopup="dialog" aria-expanded="false" aria-controls="hs-full-screen-modal-below-md" data-hs-overlay="#open-search-sveden-modal"
|
||||||
class="flex items-center gap-x-3 py-2 px-2.5 text-sm text-gray-700 rounded-lg hover:bg-gray-100 w-full">
|
class="flex items-center gap-x-3 py-2 px-2.5 text-sm text-gray-700 rounded-lg hover:bg-gray-100 w-full">
|
||||||
<BasicIcon class="w-4" name="search" />
|
<BasicIcon class="w-4 h-4" name="search" />
|
||||||
Поиск по СОО
|
Поиск по СОО
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
Binary file not shown.
@@ -16,10 +16,15 @@ import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
|||||||
import AdditionalProgramTitle
|
import AdditionalProgramTitle
|
||||||
from "@/componentss/features/additionalEducationPrograms/components/AdditionalProgramTitle.vue";
|
from "@/componentss/features/additionalEducationPrograms/components/AdditionalProgramTitle.vue";
|
||||||
import FormEducationalFilter from "@/componentss/shared/filter/filters/FormEducationalFilter.vue";
|
import FormEducationalFilter from "@/componentss/shared/filter/filters/FormEducationalFilter.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs,
|
||||||
|
BasicIcon, BreadcrumbsItem,
|
||||||
FormEducationalFilter,
|
FormEducationalFilter,
|
||||||
AdditionalProgramTitle,
|
AdditionalProgramTitle,
|
||||||
BasicListFilter,
|
BasicListFilter,
|
||||||
@@ -47,13 +52,10 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
},
|
breadcrumbs: {
|
||||||
methods: {
|
type: Object
|
||||||
|
}
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -70,8 +72,9 @@ export default {
|
|||||||
<div class="max-w-2xl text-center mx-auto mb-10 lg:mb-14">
|
<div class="max-w-2xl text-center mx-auto mb-10 lg:mb-14">
|
||||||
<h2 class="text-2xl font-bold md:text-4xl md:leading-tight dark:text-white">Научные периодические издания НТГСПИ</h2>
|
<h2 class="text-2xl font-bold md:text-4xl md:leading-tight dark:text-white">Научные периодические издания НТГСПИ</h2>
|
||||||
</div>
|
</div>
|
||||||
<!-- Grid -->
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
<AcademicJournalsListBreadcrumbs />
|
<BreadcrumbsItem title="Научные журналы" :url="route('client.academicJournals.index')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<div class="grid sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3 gap-3 sm:gap-6">
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3 gap-3 sm:gap-6">
|
||||||
<template v-for="journal in journals.data">
|
<template v-for="journal in journals.data">
|
||||||
<Link :href="route('client.academicJournals.show', journal.slug)" class="group flex items-center bg-white border shadow-sm rounded-xl hover:shadow-md focus:outline-none focus:shadow-md transition" >
|
<Link :href="route('client.academicJournals.show', journal.slug)" class="group flex items-center bg-white border shadow-sm rounded-xl hover:shadow-md focus:outline-none focus:shadow-md transition" >
|
||||||
|
|||||||
@@ -18,10 +18,16 @@ import ProgramTitle from "@/componentss/features/educationalPrograms/components/
|
|||||||
import ProgramListBreadcrumbs from "@/componentss/features/educationalPrograms/components/ProgramListBreadcrumbs.vue";
|
import ProgramListBreadcrumbs from "@/componentss/features/educationalPrograms/components/ProgramListBreadcrumbs.vue";
|
||||||
import FormEducationalFilter from "@/componentss/shared/filter/filters/FormEducationalFilter.vue";
|
import FormEducationalFilter from "@/componentss/shared/filter/filters/FormEducationalFilter.vue";
|
||||||
import BackButton from "@/componentss/ui/buttons/BackButton.vue";
|
import BackButton from "@/componentss/ui/buttons/BackButton.vue";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Show",
|
name: "Show",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs,
|
||||||
|
BreadcrumbsItem,
|
||||||
|
BasicIcon,
|
||||||
BackButton,
|
BackButton,
|
||||||
FormEducationalFilter,
|
FormEducationalFilter,
|
||||||
ProgramListBreadcrumbs,
|
ProgramListBreadcrumbs,
|
||||||
@@ -59,20 +65,10 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
textLimit(text, symbols) {
|
|
||||||
if (text.length > symbols) {
|
|
||||||
let LimitedText
|
|
||||||
LimitedText = text.substring(0, symbols)
|
|
||||||
return LimitedText + "..."
|
|
||||||
}
|
|
||||||
return text
|
|
||||||
},
|
},
|
||||||
|
breadcrumbs: {
|
||||||
},
|
type: Object
|
||||||
mounted() {
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -88,7 +84,10 @@ export default {
|
|||||||
<div class=" space-y-5 md:space-y-8">
|
<div class=" space-y-5 md:space-y-8">
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<BackButton link="client.academicJournals.index" title="К списку журналов" />
|
<BackButton link="client.academicJournals.index" title="К списку журналов" />
|
||||||
<AcademicJournalsItemBreadcrumbs :title="journal.data.title" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem :title="journal.data.title" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
|
|
||||||
<AcademicJournalsTitle class="text-center" :header="journal.data.title" />
|
<AcademicJournalsTitle class="text-center" :header="journal.data.title" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -21,10 +21,13 @@ import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
|||||||
import BackButton from "@/componentss/ui/buttons/BackButton.vue";
|
import BackButton from "@/componentss/ui/buttons/BackButton.vue";
|
||||||
import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
||||||
import ProgramTitle from "@/componentss/features/educationalPrograms/components/ProgramTitle.vue";
|
import ProgramTitle from "@/componentss/features/educationalPrograms/components/ProgramTitle.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BasicIcon, BreadcrumbsItem,
|
||||||
ProgramTitle, Builder, BackButton, BasicPageWrapper, BasicPageContainer, AdditionalProgramItemBreadcrumbs,
|
ProgramTitle, Builder, BackButton, BasicPageWrapper, BasicPageContainer, AdditionalProgramItemBreadcrumbs,
|
||||||
BasicListBadge,
|
BasicListBadge,
|
||||||
AdditionalProgramBadge,
|
AdditionalProgramBadge,
|
||||||
@@ -104,6 +107,12 @@ export default {
|
|||||||
<div class="space-y-3 mx-auto max-w-3xl w-full">
|
<div class="space-y-3 mx-auto max-w-3xl w-full">
|
||||||
<div class="my-10 w-full">
|
<div class="my-10 w-full">
|
||||||
<AdditionalProgramListBreadcrumbs :breadcrumbs="breadcrumbs" />
|
<AdditionalProgramListBreadcrumbs :breadcrumbs="breadcrumbs" />
|
||||||
|
<BreadcrumbsItem :breadcrumbs="breadcrumbs">
|
||||||
|
<Link :href="route('client.additionalEducation.index')" class="flex items-center text-gray-500 hover:text-primary-hover">
|
||||||
|
<BasicIcon class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400" name="breadcrumb-tag" />
|
||||||
|
Дополнительное образование
|
||||||
|
</Link>
|
||||||
|
</BreadcrumbsItem>
|
||||||
<div class="flex items-center gap-x-2">
|
<div class="flex items-center gap-x-2">
|
||||||
<LevelEduFilter :directions="directionAdditionalEducations" :direction_filter="filters.direction_filter" />
|
<LevelEduFilter :directions="directionAdditionalEducations" :direction_filter="filters.direction_filter" />
|
||||||
<BasicListFilter>
|
<BasicListFilter>
|
||||||
|
|||||||
@@ -15,11 +15,14 @@ import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
|||||||
import ProgramItemBreadcrumbs from "@/componentss/features/educationalPrograms/components/ProgramItemBreadcrumbs.vue";
|
import ProgramItemBreadcrumbs from "@/componentss/features/educationalPrograms/components/ProgramItemBreadcrumbs.vue";
|
||||||
import FormBlock from "@/componentss/shared/builder/pageBuilder/blocks/FormBlock.vue";
|
import FormBlock from "@/componentss/shared/builder/pageBuilder/blocks/FormBlock.vue";
|
||||||
import FormBuilder from "@/componentss/shared/builder/formBuilder/FormBuilder.vue";
|
import FormBuilder from "@/componentss/shared/builder/formBuilder/FormBuilder.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Show",
|
name: "Show",
|
||||||
components: {
|
components: {
|
||||||
|
BasicIcon, BreadcrumbsItem,
|
||||||
FormBuilder,
|
FormBuilder,
|
||||||
FormBlock,
|
FormBlock,
|
||||||
ProgramItemBreadcrumbs, BasicPageWrapper, BasicPageContainer,
|
ProgramItemBreadcrumbs, BasicPageWrapper, BasicPageContainer,
|
||||||
@@ -76,7 +79,12 @@ export default {
|
|||||||
<BasicPageContainer>
|
<BasicPageContainer>
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<BackButton link="client.additionalEducation.index" title="Все программы"/>
|
<BackButton link="client.additionalEducation.index" title="Все программы"/>
|
||||||
<AdditionalProgramItemBreadcrumbs class="pb-4" :breadcrumbs="breadcrumbs" :additional-education-title="additionalEducation.data.title" />
|
<BreadcrumbsItem :breadcrumbs="breadcrumbs">
|
||||||
|
<Link :href="$page.url" class="flex items-center text-gray-500 hover:text-primary-light">
|
||||||
|
<BasicIcon class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400" name="breadcrumb-tag" />
|
||||||
|
{{ additionalEducation.data.title }}
|
||||||
|
</Link>
|
||||||
|
</BreadcrumbsItem>
|
||||||
<ProgramTitle :header="additionalEducation.data.title" class="text-center" />
|
<ProgramTitle :header="additionalEducation.data.title" class="text-center" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,11 @@
|
|||||||
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3 truncate">
|
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3 truncate">
|
||||||
<div class="grow">
|
<div class="grow">
|
||||||
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
||||||
<DepartmentItemBreadcrumbs :faculty="department.data.faculty" :department-title="department.data.title" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Факультеты" :url="route('client.faculty.index')" />
|
||||||
|
<BreadcrumbsItem :title="department.data.faculty.abbreviation" :url="route('client.faculty.show', department.data.faculty.slug)" />
|
||||||
|
<BreadcrumbsItem :title="department.data.title" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -163,6 +167,8 @@ import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
|||||||
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
||||||
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
||||||
import NavigateVisor from "@/componentss/shared/visor/NavigateVisor.vue";
|
import NavigateVisor from "@/componentss/shared/visor/NavigateVisor.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -188,10 +194,14 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object
|
type: Object
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
NavigateVisor,
|
NavigateVisor,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
EventListSearch,
|
EventListSearch,
|
||||||
|
|||||||
@@ -5,10 +5,13 @@ import MetaTags from "@/componentss/shared/SEO/MetaTags.vue";
|
|||||||
import DivisionListTitle from "@/componentss/features/divisions/components/DivisionListTitle.vue";
|
import DivisionListTitle from "@/componentss/features/divisions/components/DivisionListTitle.vue";
|
||||||
import DivisionListBreadcrumbs from "@/componentss/features/divisions/components/DivisionListBreadcrumbs.vue";
|
import DivisionListBreadcrumbs from "@/componentss/features/divisions/components/DivisionListBreadcrumbs.vue";
|
||||||
import BasicFooter from "@/footers/BasicFooter.vue";
|
import BasicFooter from "@/footers/BasicFooter.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
BasicFooter,
|
BasicFooter,
|
||||||
DivisionListTitle,
|
DivisionListTitle,
|
||||||
MetaTags,
|
MetaTags,
|
||||||
@@ -28,14 +31,11 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -61,7 +61,9 @@ export default {
|
|||||||
bottom-text="Список структурных и административных отделов НТГСПИ"
|
bottom-text="Список структурных и административных отделов НТГСПИ"
|
||||||
header="Подразделения института" />
|
header="Подразделения института" />
|
||||||
|
|
||||||
<DivisionListBreadcrumbs />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Подразделения института" :url="route('client.division.index')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
|
|
||||||
<!-- Grid -->
|
<!-- Grid -->
|
||||||
<div class="grid sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3 gap-3 sm:gap-6">
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3 gap-3 sm:gap-6">
|
||||||
|
|||||||
@@ -61,6 +61,10 @@
|
|||||||
<div class="grow">
|
<div class="grow">
|
||||||
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
||||||
<DivisionItemBreadcrumbs :division-title="division.data.title" />
|
<DivisionItemBreadcrumbs :division-title="division.data.title" />
|
||||||
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Подразделения института" :url="route('client.division.index')" />
|
||||||
|
<BreadcrumbsItem :title="division.data.title" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,6 +116,8 @@ import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
|||||||
import DivisionWorkerCard from "@/componentss/features/divisions/components/DivisionWorkerCard.vue";
|
import DivisionWorkerCard from "@/componentss/features/divisions/components/DivisionWorkerCard.vue";
|
||||||
import BasicFooter from "@/footers/BasicFooter.vue";
|
import BasicFooter from "@/footers/BasicFooter.vue";
|
||||||
import DivisionItemBreadcrumbs from "@/componentss/features/divisions/components/DivisionItemBreadcrumbs.vue";
|
import DivisionItemBreadcrumbs from "@/componentss/features/divisions/components/DivisionItemBreadcrumbs.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -133,10 +139,14 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
BasicFooter,
|
BasicFooter,
|
||||||
DivisionWorkerCard,
|
DivisionWorkerCard,
|
||||||
Builder,
|
Builder,
|
||||||
|
|||||||
@@ -20,11 +20,14 @@ import BackButton from "@/componentss/ui/buttons/BackButton.vue";
|
|||||||
import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
||||||
import BasicTitle from "@/componentss/ui/titles/BasicTitle.vue";
|
import BasicTitle from "@/componentss/ui/titles/BasicTitle.vue";
|
||||||
import EventItemBreadcrumbs from "@/componentss/features/events/components/EventItemBreadcrumbs.vue";
|
import EventItemBreadcrumbs from "@/componentss/features/events/components/EventItemBreadcrumbs.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Archive",
|
name: "Archive",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
EventItemBreadcrumbs, BasicTitle, Builder, BackButton, BasicPageWrapper, BasicPageContainer,
|
EventItemBreadcrumbs, BasicTitle, Builder, BackButton, BasicPageWrapper, BasicPageContainer,
|
||||||
BasicPagination,
|
BasicPagination,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
@@ -86,7 +89,10 @@ export default {
|
|||||||
<BasicPageWrapper>
|
<BasicPageWrapper>
|
||||||
<BasicPageContainer breakpoint="md">
|
<BasicPageContainer breakpoint="md">
|
||||||
<div>
|
<div>
|
||||||
<EventArchiveListBreadcrumbs :breadcrumbs="breadcrumbs" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Мероприятия" :url="route('client.event.index')" />
|
||||||
|
<BreadcrumbsItem title="Архив" :url="route('client.event.archive')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<div class="space-y-5 md:space-y-4">
|
<div class="space-y-5 md:space-y-4">
|
||||||
<div class="flex items-center w-full justify-center">
|
<div class="flex items-center w-full justify-center">
|
||||||
<h1 class="block text-brand-primary text-center mb-3 mt-2 mr-4 text-3xl font-semibold tracking-tight lg:text-[35px] lg:leading-tight">
|
<h1 class="block text-brand-primary text-center mb-3 mt-2 mr-4 text-3xl font-semibold tracking-tight lg:text-[35px] lg:leading-tight">
|
||||||
|
|||||||
@@ -16,11 +16,14 @@ import BackButton from "@/componentss/ui/buttons/BackButton.vue";
|
|||||||
import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
import Builder from "@/componentss/shared/builder/pageBuilder/Builder.vue";
|
||||||
import BasicTitle from "@/componentss/ui/titles/BasicTitle.vue";
|
import BasicTitle from "@/componentss/ui/titles/BasicTitle.vue";
|
||||||
import EventItemBreadcrumbs from "@/componentss/features/events/components/EventItemBreadcrumbs.vue";
|
import EventItemBreadcrumbs from "@/componentss/features/events/components/EventItemBreadcrumbs.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
EventItemBreadcrumbs, BasicTitle, Builder, BackButton, BasicPageWrapper, BasicPageContainer,
|
EventItemBreadcrumbs, BasicTitle, Builder, BackButton, BasicPageWrapper, BasicPageContainer,
|
||||||
BasicListBadge,
|
BasicListBadge,
|
||||||
CategoryFilter,
|
CategoryFilter,
|
||||||
@@ -77,7 +80,9 @@ export default {
|
|||||||
<BasicPageWrapper>
|
<BasicPageWrapper>
|
||||||
<BasicPageContainer breakpoint="md">
|
<BasicPageContainer breakpoint="md">
|
||||||
<div>
|
<div>
|
||||||
<EventListBreadcrumbs :breadcrumbs="breadcrumbs" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Мероприятия" :url="route('client.event.index')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<div class="space-y-5 md:space-y-4">
|
<div class="space-y-5 md:space-y-4">
|
||||||
<div class="flex items-center w-full justify-center">
|
<div class="flex items-center w-full justify-center">
|
||||||
<h1 class="block text-brand-primary text-center mb-3 mt-2 mr-4 text-3xl font-semibold tracking-tight dark:text-white lg:text-[40px] lg:leading-tight">
|
<h1 class="block text-brand-primary text-center mb-3 mt-2 mr-4 text-3xl font-semibold tracking-tight dark:text-white lg:text-[40px] lg:leading-tight">
|
||||||
|
|||||||
@@ -11,10 +11,13 @@ import BasicPageContainer from "@/componentss/ui/templates/BasicPageContainer.vu
|
|||||||
import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
||||||
import ProgramTitle from "@/componentss/features/educationalPrograms/components/ProgramTitle.vue";
|
import ProgramTitle from "@/componentss/features/educationalPrograms/components/ProgramTitle.vue";
|
||||||
import ProgramItemBreadcrumbs from "@/componentss/features/educationalPrograms/components/ProgramItemBreadcrumbs.vue";
|
import ProgramItemBreadcrumbs from "@/componentss/features/educationalPrograms/components/ProgramItemBreadcrumbs.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Show",
|
name: "Show",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
ProgramItemBreadcrumbs, ProgramTitle, BasicPageWrapper, BasicPageContainer,
|
ProgramItemBreadcrumbs, ProgramTitle, BasicPageWrapper, BasicPageContainer,
|
||||||
MetaTags,
|
MetaTags,
|
||||||
BasicFooter,
|
BasicFooter,
|
||||||
@@ -68,7 +71,10 @@ export default {
|
|||||||
<div class="space-y-5 md:space-y-10">
|
<div class="space-y-5 md:space-y-10">
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<BackButton link="client.event.index" title="Все мероприятия" />
|
<BackButton link="client.event.index" title="Все мероприятия" />
|
||||||
<EventItemBreadcrumbs :breadcrumbs="breadcrumbs" :event-title="event.data.title" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Мероприятия" :url="route('client.event.index')" />
|
||||||
|
<BreadcrumbsItem :title="event.data.title" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<BasicTitle :header="event.data.title" />
|
<BasicTitle :header="event.data.title" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,13 @@ import IsOnlineFilter from "@/componentss/shared/filter/filters/IsOnlineFilter.v
|
|||||||
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
||||||
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
||||||
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
EventListSearch,
|
EventListSearch,
|
||||||
BasicListFilter,
|
BasicListFilter,
|
||||||
@@ -49,14 +52,11 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -71,6 +71,9 @@ export default {
|
|||||||
bottom-text="Информация о наших факультетах и кафедрах"
|
bottom-text="Информация о наших факультетах и кафедрах"
|
||||||
header="Факультеты и кафедры" />
|
header="Факультеты и кафедры" />
|
||||||
<FacultyListBreadcrumbs />
|
<FacultyListBreadcrumbs />
|
||||||
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Факультеты" :url="route('client.faculty.index')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
|
|
||||||
<!-- Grid -->
|
<!-- Grid -->
|
||||||
<div class="grid sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3 gap-3 sm:gap-6">
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3 gap-3 sm:gap-6">
|
||||||
|
|||||||
@@ -35,7 +35,10 @@
|
|||||||
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3 truncate">
|
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3 truncate">
|
||||||
<div class="grow">
|
<div class="grow">
|
||||||
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
||||||
<FacultyItemBreadcrumbs :faculty-title="faculty.data.shortTitle" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Факультеты" :url="route('client.faculty.index')" />
|
||||||
|
<BreadcrumbsItem :title="faculty.data.shortTitle" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -118,6 +121,8 @@ import EventListSearch from "@/componentss/features/events/components/EventListS
|
|||||||
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
||||||
import NavigateVisor from "@/componentss/shared/visor/NavigateVisor.vue";
|
import NavigateVisor from "@/componentss/shared/visor/NavigateVisor.vue";
|
||||||
import NavigateLinks from "@/componentss/shared/navigate/NavigateLinks.vue";
|
import NavigateLinks from "@/componentss/shared/navigate/NavigateLinks.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -139,10 +144,14 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
NavigateLinks,
|
NavigateLinks,
|
||||||
NavigateVisor,
|
NavigateVisor,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
|
|||||||
@@ -12,7 +12,9 @@
|
|||||||
<section class="w-full min-w-0 mt-1 max-w-6xl px-1 md:px-6" style="">
|
<section class="w-full min-w-0 mt-1 max-w-6xl px-1 md:px-6" style="">
|
||||||
<div class="w-full mx-auto sm:px-6 lg:px-8">
|
<div class="w-full mx-auto sm:px-6 lg:px-8">
|
||||||
|
|
||||||
<PersonBreadcrumbs class="mb-4" :person-name="person.data.name" />
|
<BaseBreadcrumbs class="mb-4" :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem :title="person.data.name" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
|
|
||||||
<InfoSection :person="person" />
|
<InfoSection :person="person" />
|
||||||
|
|
||||||
@@ -52,6 +54,8 @@ import IsOnlineFilter from "@/componentss/shared/filter/filters/IsOnlineFilter.v
|
|||||||
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
||||||
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
||||||
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -70,10 +74,14 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
EventListSearch,
|
EventListSearch,
|
||||||
BasicListFilter,
|
BasicListFilter,
|
||||||
@@ -187,72 +195,4 @@ export default {
|
|||||||
<style>
|
<style>
|
||||||
|
|
||||||
|
|
||||||
.paragraph-container a {
|
|
||||||
@apply text-primary;
|
|
||||||
@apply underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.paragraph-container p {
|
|
||||||
@apply mb-2
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes fade {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-enter-active,
|
|
||||||
.fade-leave-active {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-enter-from,
|
|
||||||
.fade-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes grow-progress {
|
|
||||||
from { transform: scaleX(0); }
|
|
||||||
to { transform: scaleX(1); }
|
|
||||||
}
|
|
||||||
|
|
||||||
#progress {
|
|
||||||
height: 2px;
|
|
||||||
background: #26ACB8;
|
|
||||||
z-index: 10000;
|
|
||||||
|
|
||||||
transform-origin: 0 50%;
|
|
||||||
animation: grow-progress auto linear;
|
|
||||||
animation-timeline: scroll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.active {
|
|
||||||
color: blue !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.example-initial-animation {
|
|
||||||
animation: initial-animation 2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes initial-animation {
|
|
||||||
0% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -19,9 +19,12 @@ import EventArchiveListBreadcrumbs from "@/componentss/features/events/component
|
|||||||
import BasicPagination from "@/componentss/shared/paginate/BasicPagination.vue";
|
import BasicPagination from "@/componentss/shared/paginate/BasicPagination.vue";
|
||||||
import IsOnlineFilter from "@/componentss/shared/filter/filters/IsOnlineFilter.vue";
|
import IsOnlineFilter from "@/componentss/shared/filter/filters/IsOnlineFilter.vue";
|
||||||
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
WhenVisible,
|
WhenVisible,
|
||||||
EventListSearch, IsOnlineFilter, BasicPagination, EventArchiveListBreadcrumbs, BasicPageWrapper, BasicPageContainer,
|
EventListSearch, IsOnlineFilter, BasicPagination, EventArchiveListBreadcrumbs, BasicPageWrapper, BasicPageContainer,
|
||||||
BasicListBadge,
|
BasicListBadge,
|
||||||
@@ -86,7 +89,9 @@ export default {
|
|||||||
<h2 class="text-2xl font-bold md:text-4xl md:leading-tight dark:text-white">Новости НТГСПИ</h2>
|
<h2 class="text-2xl font-bold md:text-4xl md:leading-tight dark:text-white">Новости НТГСПИ</h2>
|
||||||
<p class="mt-1 text-gray-600 dark:text-neutral-400">Узнайте последние новости любимого вуза</p>
|
<p class="mt-1 text-gray-600 dark:text-neutral-400">Узнайте последние новости любимого вуза</p>
|
||||||
</div>
|
</div>
|
||||||
<PostListBreadcrumbs :breadcrumbs="breadcrumbs" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Новости" :url="route('client.post.index')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<div>
|
<div>
|
||||||
<HeadItemsWrapper>
|
<HeadItemsWrapper>
|
||||||
<PostListSearch :search_filter="filters.search_filter" />
|
<PostListSearch :search_filter="filters.search_filter" />
|
||||||
|
|||||||
@@ -21,11 +21,14 @@ import IsOnlineFilter from "@/componentss/shared/filter/filters/IsOnlineFilter.v
|
|||||||
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
||||||
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
||||||
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Show",
|
name: "Show",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
EventListSearch,
|
EventListSearch,
|
||||||
BasicListFilter,
|
BasicListFilter,
|
||||||
@@ -90,7 +93,10 @@ export default {
|
|||||||
<div class="space-y-5 md:space-y-10">
|
<div class="space-y-5 md:space-y-10">
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<BackButton link="client.post.index" title="Все новости"/>
|
<BackButton link="client.post.index" title="Все новости"/>
|
||||||
<PostItemBreadcrumbs :breadcrumbs="breadcrumbs" :post-title="post.data.title" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Новости" :url="route('client.post.index')" />
|
||||||
|
<BreadcrumbsItem :title="post.data.title" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<BasicTitle :header="post.data.title"/>
|
<BasicTitle :header="post.data.title"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,13 @@ import AcademicJournalsListBreadcrumbs
|
|||||||
from "@/componentss/features/academicJournals/components/AcademicJournalsListBreadcrumbs.vue.vue";
|
from "@/componentss/features/academicJournals/components/AcademicJournalsListBreadcrumbs.vue.vue";
|
||||||
import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
||||||
import BasicListBadge from "@/componentss/shared/badge/BasicListBadge.vue";
|
import BasicListBadge from "@/componentss/shared/badge/BasicListBadge.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Index",
|
name: "Index",
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
BasicListBadge,
|
BasicListBadge,
|
||||||
BasicPageWrapper, AcademicJournalsListBreadcrumbs, BasicPageContainer,
|
BasicPageWrapper, AcademicJournalsListBreadcrumbs, BasicPageContainer,
|
||||||
ProgramLevelEduFilter,
|
ProgramLevelEduFilter,
|
||||||
@@ -63,7 +66,10 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
transformToColumns(originalArray) {
|
transformToColumns(originalArray) {
|
||||||
@@ -102,6 +108,9 @@ export default {
|
|||||||
<div class="">
|
<div class="">
|
||||||
<div class="mt-10 mb-5 w-full">
|
<div class="mt-10 mb-5 w-full">
|
||||||
<ProgramListBreadcrumbs />
|
<ProgramListBreadcrumbs />
|
||||||
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Образовательные программы" :url="route('client.program.index')" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<div class="flex items-center gap-x-2">
|
<div class="flex items-center gap-x-2">
|
||||||
<ProgramLevelEduFilter :levels="levelsEducational" :level_filter="filters.level_filter" />
|
<ProgramLevelEduFilter :levels="levelsEducational" :level_filter="filters.level_filter" />
|
||||||
<BasicListFilter>
|
<BasicListFilter>
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import BudgetEducation from "@/Enum/BudgetEducation.js";
|
|||||||
import TypeExam from "@/Enum/TypeExam.js";
|
import TypeExam from "@/Enum/TypeExam.js";
|
||||||
import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
import BasicPageWrapper from "@/componentss/ui/wrappers/BasicPageWrapper.vue";
|
||||||
import BasicPageContainer from "@/componentss/ui/templates/BasicPageContainer.vue";
|
import BasicPageContainer from "@/componentss/ui/templates/BasicPageContainer.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -49,6 +51,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
BasicPageContainer,
|
BasicPageContainer,
|
||||||
BasicPageWrapper,
|
BasicPageWrapper,
|
||||||
ProgramTitle,
|
ProgramTitle,
|
||||||
@@ -70,7 +73,10 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object,
|
type: Object,
|
||||||
}
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -84,7 +90,10 @@ export default {
|
|||||||
<BasicPageContainer>
|
<BasicPageContainer>
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<BackButton link="client.program.index" title="Все программы" />
|
<BackButton link="client.program.index" title="Все программы" />
|
||||||
<ProgramItemBreadcrumbs :program-title="program.data.name" />
|
<BaseBreadcrumbs :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem title="Образовательные программы" :url="route('client.program.index')" />
|
||||||
|
<BreadcrumbsItem :title="program.data.name" :url="$page.url" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<ProgramTitle class="text-center" :header="program.data.name" />
|
<ProgramTitle class="text-center" :header="program.data.name" />
|
||||||
</div>
|
</div>
|
||||||
<div class="max-w-[85rem] px-4 py-10 sm:px-6 lg:px-8 lg:py-14 mx-auto">
|
<div class="max-w-[85rem] px-4 py-10 sm:px-6 lg:px-8 lg:py-14 mx-auto">
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import BasicFooter from "@/footers/BasicFooter.vue";
|
|||||||
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
||||||
import FormEducationalFilter from "@/componentss/shared/filter/filters/FormEducationalFilter.vue";
|
import FormEducationalFilter from "@/componentss/shared/filter/filters/FormEducationalFilter.vue";
|
||||||
import MetaTags from "@/componentss/shared/SEO/MetaTags.vue";
|
import MetaTags from "@/componentss/shared/SEO/MetaTags.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -23,6 +25,7 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
BaseBreadcrumbs, BreadcrumbsItem,
|
||||||
WhenVisible,
|
WhenVisible,
|
||||||
MetaTags,
|
MetaTags,
|
||||||
FormEducationalFilter,
|
FormEducationalFilter,
|
||||||
@@ -49,6 +52,9 @@ export default {
|
|||||||
},
|
},
|
||||||
seo: {
|
seo: {
|
||||||
type: Object
|
type: Object
|
||||||
|
},
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -157,7 +163,7 @@ export default {
|
|||||||
<div class="relative mx-auto mt-[67px] max-w-screen-xl px-4 py-10 md:flex md:flex-row md:py-10">
|
<div class="relative mx-auto mt-[67px] max-w-screen-xl px-4 py-10 md:flex md:flex-row md:py-10">
|
||||||
<article class="w-full min-w-0 mt-4 px-1 md:px-6">
|
<article class="w-full min-w-0 mt-4 px-1 md:px-6">
|
||||||
<div class="relative overflow-hidden">
|
<div class="relative overflow-hidden">
|
||||||
<div class="max-w-[85rem] mx-auto sm:px-6 lg:px-8 py-10 sm:pb-12 sm:py-5">
|
<div class="max-w-[40rem] mx-auto sm:px-6 lg:px-8 py-5 sm:pb-12 sm:py-5">
|
||||||
<div>
|
<div>
|
||||||
<ScheduleListTitle
|
<ScheduleListTitle
|
||||||
bottom-text="Просто введите название группы"
|
bottom-text="Просто введите название группы"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<MainPageNavBar :sections="$page.props.navigation" />
|
<MainPageNavBar :sections="$page.props.navigation" />
|
||||||
<Slider class="bvi-hide" slider-id="quos-velit-quisquam" />
|
<Slider class="bvi-hide" slider-id="quos-velit-quisquam" />
|
||||||
|
|
||||||
<section class="max-w-screen-xl w-full mx-auto px-4 py-3 pb-10">
|
<section class="max-w-screen-xl w-full mx-auto px-4 py-3 pb-10">
|
||||||
<PostSection :posts="posts" />
|
<PostSection :posts="posts" />
|
||||||
<EducationSection :educations="educations" />
|
<EducationSection :educations="educations" />
|
||||||
</section>
|
</section>
|
||||||
@@ -26,8 +26,8 @@ import ContactSectionBlock from "@/componentss/shared/contactSection/ContactSect
|
|||||||
import PostSection from "@/componentss/features/mainPage/PostSection.vue";
|
import PostSection from "@/componentss/features/mainPage/PostSection.vue";
|
||||||
import EventSection from "@/componentss/features/mainPage/EventSection.vue";
|
import EventSection from "@/componentss/features/mainPage/EventSection.vue";
|
||||||
import EducationSection from "@/componentss/features/mainPage/EducationSection.vue";
|
import EducationSection from "@/componentss/features/mainPage/EducationSection.vue";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
import SvgIcon from "@/componentss/ui/icons/SvgIcon.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Main",
|
name: "Main",
|
||||||
@@ -47,6 +47,8 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
SvgIcon,
|
||||||
|
BasicIcon,
|
||||||
EducationSection,
|
EducationSection,
|
||||||
EventSection,
|
EventSection,
|
||||||
PostSection,
|
PostSection,
|
||||||
|
|||||||
@@ -10,7 +10,9 @@
|
|||||||
<NavigateLinks v-if="!settings?.hide_page_navigate_links" :header-navs="headerNavs"/>
|
<NavigateLinks v-if="!settings?.hide_page_navigate_links" :header-navs="headerNavs"/>
|
||||||
<div class="w-full min-w-0 mt-1 max-w-6xl px-1 md:px-6" style="">
|
<div class="w-full min-w-0 mt-1 max-w-6xl px-1 md:px-6" style="">
|
||||||
<div class="space-y-5 md:space-y-5">
|
<div class="space-y-5 md:space-y-5">
|
||||||
<PageBreadcrumbs v-if="!settings?.hide_breadcrumbs" :breadcrumbs="breadcrumbs" :page-title="page.data.title"/>
|
<BaseBreadcrumbs v-if="!settings?.hide_breadcrumbs" :breadcrumbs="breadcrumbs">
|
||||||
|
<BreadcrumbsItem :title="breadcrumbs.page.data.title" :url="route('page.view', breadcrumbs.page.data.path)" />
|
||||||
|
</BaseBreadcrumbs>
|
||||||
<BasicTitle :header="page.data.title"/>
|
<BasicTitle :header="page.data.title"/>
|
||||||
<div id="page-area">
|
<div id="page-area">
|
||||||
<Builder :blocks="page.data.content"/>
|
<Builder :blocks="page.data.content"/>
|
||||||
@@ -48,6 +50,9 @@ import IsOnlineFilter from "@/componentss/shared/filter/filters/IsOnlineFilter.v
|
|||||||
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
import BasicListFilter from "@/componentss/shared/filter/BasicListFilter.vue";
|
||||||
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
import EventListSearch from "@/componentss/features/events/components/EventListSearch.vue";
|
||||||
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
import SortingByFilter from "@/componentss/shared/filter/filters/SortingByFilter.vue";
|
||||||
|
import BaseBreadcrumbs from "@/componentss/shared/Breadcrumbs/BaseBreadcrumbs.vue";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -79,6 +84,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
BreadcrumbsItem,
|
||||||
|
BasicIcon,
|
||||||
|
BaseBreadcrumbs,
|
||||||
SortingByFilter,
|
SortingByFilter,
|
||||||
EventListSearch,
|
EventListSearch,
|
||||||
BasicListFilter,
|
BasicListFilter,
|
||||||
@@ -110,61 +118,4 @@ export default {
|
|||||||
<style>
|
<style>
|
||||||
|
|
||||||
|
|
||||||
@keyframes fade {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-enter-active,
|
|
||||||
.fade-leave-active {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-enter-from,
|
|
||||||
.fade-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes grow-progress {
|
|
||||||
from {
|
|
||||||
transform: scaleX(0);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
transform: scaleX(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#progress {
|
|
||||||
height: 2px;
|
|
||||||
background: #26ACB8;
|
|
||||||
z-index: 10000;
|
|
||||||
|
|
||||||
transform-origin: 0 50%;
|
|
||||||
animation: grow-progress auto linear;
|
|
||||||
animation-timeline: scroll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.example-initial-animation {
|
|
||||||
animation: initial-animation 2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes initial-animation {
|
|
||||||
0% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import './bootstrap';
|
import './bootstrap';
|
||||||
import '../css/app.css';
|
import '../css/app.css';
|
||||||
import 'preline';
|
import 'preline';
|
||||||
|
import 'virtual:svg-icons-register'
|
||||||
|
|
||||||
|
|
||||||
import { createSSRApp, h } from 'vue';
|
import { createSSRApp, h } from 'vue';
|
||||||
import { createInertiaApp } from '@inertiajs/vue3';
|
import { createInertiaApp } from '@inertiajs/vue3';
|
||||||
|
|||||||
+2161
-108
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@
|
|||||||
<a :class="{'text-white font-normal bg-primary border': isSameRoute(page.path), 'text-gray-600 hover:text-[#2C6288]': !isSameRoute(page.path) }"
|
<a :class="{'text-white font-normal bg-primary border': isSameRoute(page.path), 'text-gray-600 hover:text-[#2C6288]': !isSameRoute(page.path) }"
|
||||||
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'"
|
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'"
|
||||||
class="duration-300 flex gap-x-2 w-full rounded-md cursor-pointer items-center px-2 py-1.5 text-left text-sm">
|
class="duration-300 flex gap-x-2 w-full rounded-md cursor-pointer items-center px-2 py-1.5 text-left text-sm">
|
||||||
<BasicIcon v-if="page.icon" class="w-4" :name="page.icon" />
|
<BasicIcon v-if="page.icon" class="w-4 h-4" :name="page.icon" />
|
||||||
{{ page.title }}
|
{{ page.title }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex justify-between pb-4 items-center">
|
<div class="flex justify-between pb-4 items-center">
|
||||||
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3">
|
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3 truncate mask-fade">
|
||||||
<div class="grow">
|
<div class="grow">
|
||||||
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
||||||
<BreadcrumbsWrapper v-if="breadcrumbs">
|
<BreadcrumbsWrapper v-if="breadcrumbs">
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
{{ textLimit(postTitle, 60) }}
|
{{ textLimit(postTitle, 60) }}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</BreadcrumbsWrapper>
|
</BreadcrumbsWrapper >
|
||||||
<BreadcrumbsWrapper v-else>
|
<BreadcrumbsWrapper v-else>
|
||||||
<li class="text-sm">
|
<li class="text-sm">
|
||||||
<Link :href="route('index')" class="flex items-center text-gray-500 hover:text-primary-hover" href="/">
|
<Link :href="route('index')" class="flex items-center text-gray-500 hover:text-primary-hover" href="/">
|
||||||
@@ -203,7 +203,8 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.mask-fade {
|
||||||
|
mask-image: linear-gradient(to right, black 90%, transparent 100%);
|
||||||
|
-webkit-mask-image: linear-gradient(to right, black 90%, transparent 100%);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
<template>
|
||||||
|
<div class="flex justify-between pb-4 items-center">
|
||||||
|
<div class="flex w-full sm:items-center gap-x-5 sm:gap-x-3 truncate mask-fade">
|
||||||
|
<div class="grow">
|
||||||
|
<div class="grid sm:flex sm:justify-between sm:items-center gap-2">
|
||||||
|
<BreadcrumbsWrapper>
|
||||||
|
<li class="text-sm">
|
||||||
|
<Link :href="route('index')" class="flex items-center text-gray-500 hover:text-primary-hover" href="/">
|
||||||
|
<BasicIcon class="size-5" name="home" />
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
<li v-if="breadcrumbs?.mainSection?.data?.title" class="text-sm">
|
||||||
|
<span class="flex items-center text-gray-500 hover:text-primary-hover cursor-pointer" @click.prevent="handleSectionClick(breadcrumbs.mainSection)">
|
||||||
|
<BasicIcon class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400" name="breadcrumb-tag" />
|
||||||
|
{{ TEXT_LIMIT(breadcrumbs.mainSection.data.title, 25) }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li v-if="breadcrumbs?.subSection?.data?.title" class="text-sm">
|
||||||
|
<span class="flex items-center text-gray-500 hover:text-primary-hover cursor-pointer" @click.prevent="handleSubSectionClick(breadcrumbs.mainSection, breadcrumbs.subSection)">
|
||||||
|
<BasicIcon class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400" name="breadcrumb-tag" />
|
||||||
|
{{ TEXT_LIMIT(breadcrumbs.subSection.data.title, 25) }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<slot />
|
||||||
|
</BreadcrumbsWrapper>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {Link} from "@inertiajs/vue3";
|
||||||
|
import slugify from "slugify";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
import BreadcrumbsWrapper from "@/componentss/ui/wrappers/BreadcrumbsWrapper.vue";
|
||||||
|
import BreadcrumbsItem from "@/componentss/shared/Breadcrumbs/BreadcrumbsItem.vue";
|
||||||
|
import {helpers} from "@/mixins/Helpers.js";
|
||||||
|
export default {
|
||||||
|
mixins: [helpers],
|
||||||
|
name: "BaseBreadcrumbs",
|
||||||
|
components: {BreadcrumbsItem, BreadcrumbsWrapper, BasicIcon, Link},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
isMobileDevice() {
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||||
|
}
|
||||||
|
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||||
|
},
|
||||||
|
handleSectionClick(breadcrumb) {
|
||||||
|
if (this.isMobileDevice()) {
|
||||||
|
this.toggleMobileNavSection(breadcrumb)
|
||||||
|
} else {
|
||||||
|
this.toggleDesktopNavSection(breadcrumb)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleSubSectionClick(mainSectionBreadcrumb, breadcrumb) {
|
||||||
|
if (this.isMobileDevice()) {
|
||||||
|
this.toggleMobileNavSubSection(mainSectionBreadcrumb, breadcrumb)
|
||||||
|
} else {
|
||||||
|
this.toggleDesktopNavSubSection(mainSectionBreadcrumb, breadcrumb)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
highlightNavItem(item) {
|
||||||
|
item.classList.add('animate-pulse');
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
item.classList.remove('animate-pulse');
|
||||||
|
}, 4000);
|
||||||
|
},
|
||||||
|
openMobileNavMenu() {
|
||||||
|
const openMobileNavBtn = document.getElementById('open-mobile-btn');
|
||||||
|
openMobileNavBtn.click();
|
||||||
|
},
|
||||||
|
toggleMobileNavSubSection(mainSectionBreadcrumb, breadcrumb) {
|
||||||
|
this.openMobileNavMenu()
|
||||||
|
const mobileNavElement = document.getElementById('open-mobile-nav');
|
||||||
|
const sectionNavBlock = mobileNavElement.querySelector('#nav-section-accordion-' + mainSectionBreadcrumb.data.slug);
|
||||||
|
const sectionNavBlockBtn = mobileNavElement.querySelector('#nav-section-accordion-btn-' + mainSectionBreadcrumb.data.slug);
|
||||||
|
if (!sectionNavBlock.classList.contains('active')) {
|
||||||
|
sectionNavBlockBtn.click()
|
||||||
|
}
|
||||||
|
const subSectionNavBlock = mobileNavElement.querySelector('#nav-sub-section-accordion-' + breadcrumb.data.slug);
|
||||||
|
const subSectionNavBlockBtn = mobileNavElement.querySelector('#nav-sub-section-accordion-btn-' + breadcrumb.data.slug);
|
||||||
|
if (subSectionNavBlock.classList.contains('active')) {
|
||||||
|
subSectionNavBlockBtn.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
this.highlightNavItem(subSectionNavBlock)
|
||||||
|
},
|
||||||
|
toggleMobileNavSection(breadcrumb) {
|
||||||
|
const mobileNavElement = document.getElementById('open-mobile-nav');
|
||||||
|
const sectionNavBlock = mobileNavElement.querySelector('#nav-section-accordion-' + breadcrumb.data.slug);
|
||||||
|
const sectionNavBlockBtn = mobileNavElement.querySelector('#nav-section-accordion-btn-' + breadcrumb.data.slug);
|
||||||
|
if (sectionNavBlock.classList.contains('active')) {
|
||||||
|
sectionNavBlockBtn.click()
|
||||||
|
}
|
||||||
|
this.openMobileNavMenu()
|
||||||
|
|
||||||
|
this.highlightNavItem(sectionNavBlock)
|
||||||
|
|
||||||
|
},
|
||||||
|
toggleDesktopNavSubSection(mainSectionBreadcrumb, breadcrumb) {
|
||||||
|
const desktopNavElement = document.getElementById('desktop-nav');
|
||||||
|
const sectionNavTitle = desktopNavElement.querySelector('#nav-sub-section-title-' + breadcrumb.data.slug);
|
||||||
|
const sectionNavBlockBtn = desktopNavElement.querySelector('#nav-section-btn-' + mainSectionBreadcrumb.data.slug);
|
||||||
|
sectionNavBlockBtn.click()
|
||||||
|
this.highlightNavItem(sectionNavTitle)
|
||||||
|
},
|
||||||
|
toggleDesktopNavSection(breadcrumb) {
|
||||||
|
const desktopNavElement = document.getElementById('desktop-nav');
|
||||||
|
const sectionNavBlock = desktopNavElement.querySelector('#nav-section-menu-' + breadcrumb.data.slug);
|
||||||
|
const sectionNavBlockBtn = desktopNavElement.querySelector('#nav-section-btn-' + breadcrumb.data.slug);
|
||||||
|
sectionNavBlockBtn.click()
|
||||||
|
// this.highlightNavItem(sectionNavBlock)
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
breadcrumbs: {
|
||||||
|
type: Object,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.mask-fade {
|
||||||
|
mask-image: linear-gradient(to right, black 90%, transparent 100%);
|
||||||
|
-webkit-mask-image: linear-gradient(to right, black 90%, transparent 100%);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<template>
|
||||||
|
<li class="text-sm">
|
||||||
|
<Link :href="url" class="flex items-center text-gray-500 hover:text-primary-light">
|
||||||
|
<BasicIcon v-if="separator" class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400" name="breadcrumb-tag" />
|
||||||
|
{{ title }}
|
||||||
|
</Link>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
|
import {Link} from "@inertiajs/vue3";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "BreadcrumbsItem",
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
url: {
|
||||||
|
type: String,
|
||||||
|
// default: this.$page.url
|
||||||
|
},
|
||||||
|
separator: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
BasicIcon,
|
||||||
|
Link,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -26,8 +26,10 @@
|
|||||||
|
|
||||||
<a v-for="item in resource.data.content" class="group flex-shrink-0 w-64 flex flex-col bg-white border shadow-sm rounded-xl focus:outline-none focus:shadow-md transition" :href="item.link">
|
<a v-for="item in resource.data.content" class="group flex-shrink-0 w-64 flex flex-col bg-white border shadow-sm rounded-xl focus:outline-none focus:shadow-md transition" :href="item.link">
|
||||||
<div class="aspect-w-16 aspect-h-9 p-3 rounded-xl m-1 group-hover:bg-gray-100">
|
<div class="aspect-w-16 aspect-h-9 p-3 rounded-xl m-1 group-hover:bg-gray-100">
|
||||||
<img v-if="item.image" class="w-full backdrop-blur-xl rounded-xl object-cover h-[150px]" :src="'/storage/' + item.image" alt="Blog Image">
|
<img v-if="!item.image || item.image.length > 0" class="w-full backdrop-blur-xl rounded-xl object-cover h-[150px]" :src="'/storage/' + item.image" alt="Blog Image">
|
||||||
<div v-else :class="randomBgClass()" class="w-full rounded-xl object-cover h-[150px] bg-gradient-to-tr" />
|
<div v-else class="w-full rounded-xl object-cover h-[150px] flex justify-center items-center">
|
||||||
|
<BasicIcon class="w-10 h-10 text-gray-500" :name="item.icon" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="px-5 pb-4">
|
<div class="px-5 pb-4">
|
||||||
<h3 class="mt-2 truncate text-base font-medium text-gray-800 group-hover:text-primary-hover">{{ item.title }}</h3>
|
<h3 class="mt-2 truncate text-base font-medium text-gray-800 group-hover:text-primary-hover">{{ item.title }}</h3>
|
||||||
@@ -51,9 +53,10 @@
|
|||||||
|
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import {Link} from "@inertiajs/vue3";
|
import {Link} from "@inertiajs/vue3";
|
||||||
|
import BasicIcon from "@/componentss/ui/icons/BasicIcon.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "PageResourceList",
|
name: "PageResourceList",
|
||||||
components: {axios, Link },
|
components: {BasicIcon, axios, Link },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
resource: null,
|
resource: null,
|
||||||
|
|||||||
@@ -1,45 +1,47 @@
|
|||||||
<template>
|
<template>
|
||||||
<svg v-bind="svgAttributes" v-html="icon.path"></svg>
|
<svg aria-hidden="true">
|
||||||
|
<use :href="symbolId" :fill="color" />
|
||||||
|
</svg>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import icons from "@/assets/icons/icons.js"
|
import { defineComponent, computed } from 'vue'
|
||||||
export default {
|
|
||||||
name: "BasicIcon",
|
export default defineComponent({
|
||||||
props: {
|
name: "BasicIcon",
|
||||||
name: {
|
props: {
|
||||||
type: String,
|
name: {
|
||||||
},
|
type: String,
|
||||||
viewBox: {
|
required: true,
|
||||||
type: String,
|
},
|
||||||
},
|
prefix: {
|
||||||
stroke_width: {
|
type: String,
|
||||||
type: Number,
|
default: 'icon',
|
||||||
},
|
},
|
||||||
fill: {
|
color: {
|
||||||
type: String
|
type: String,
|
||||||
}
|
default: '#333',
|
||||||
},
|
},
|
||||||
computed: {
|
},
|
||||||
icon() {
|
setup(props) {
|
||||||
return icons[this.transformIconName(this.name)] || icons['file'];
|
const rawName = props.name.replace(/^heroicon-(o|c|s|m)-/, '');
|
||||||
},
|
const symbolId = computed(() => `#${props.prefix}-${rawName}`)
|
||||||
svgAttributes() {
|
return { symbolId }
|
||||||
return {
|
},
|
||||||
xmlns: "http://www.w3.org/2000/svg",
|
// computed: {
|
||||||
fill: this.icon.fill || 'none',
|
// icon() {
|
||||||
viewBox: this.icon.viewBox || this.viewBox || '0 0 24 24',
|
// return icons[this.transformIconName(this.name)] || icons['file'];
|
||||||
'stroke-width': this.icon.stroke_width || this.stroke_width || 1.5,
|
// },
|
||||||
stroke: this.icon.stroke || 'currentColor',
|
// svgAttributes() {
|
||||||
class: this.$attrs.class || 'w-6 h-6'
|
// return {
|
||||||
};
|
// xmlns: "http://www.w3.org/2000/svg",
|
||||||
}
|
// fill: this.icon.fill || 'none',
|
||||||
},
|
// viewBox: this.icon.viewBox || this.viewBox || '0 0 24 24',
|
||||||
methods: {
|
// 'stroke-width': this.icon.stroke_width || this.stroke_width || 1.5,
|
||||||
transformIconName(iconName) {
|
// stroke: this.icon.stroke || 'currentColor',
|
||||||
return iconName.replace(/^heroicon-(o|c|s|m)-/, '')
|
// class: this.$attrs.class || 'w-6 h-6'
|
||||||
.replace(/-(\w)/g, (_, letter) => letter.toUpperCase());
|
// };
|
||||||
}
|
// }
|
||||||
}
|
// },
|
||||||
}
|
})
|
||||||
</script>
|
</script>
|
||||||
Reference in New Issue
Block a user