├── .styleci.yml
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── assets
├── bower
│ └── .bowerrc
├── gulpfile
│ └── gulpfile.js
├── policy
│ └── privacy_policy.docx
└── public_html
│ ├── _assets
│ ├── _admin
│ │ ├── _css
│ │ │ ├── admin.scss
│ │ │ ├── min
│ │ │ │ └── admin.min.css
│ │ │ ├── tinymce.css
│ │ │ └── uikit.min.css
│ │ ├── _images
│ │ │ └── logo-hand-black.png
│ │ └── _js
│ │ │ ├── backend.js
│ │ │ ├── min
│ │ │ └── back_core.min.js
│ │ │ ├── plugin_upload.js
│ │ │ ├── tinymce.ru.js
│ │ │ ├── uikit-icons.min.js
│ │ │ ├── uikit.min.js
│ │ │ └── wizardXLS.js
│ └── _front
│ │ ├── _css
│ │ ├── _min
│ │ │ ├── front.min.css
│ │ │ ├── libs.min.css
│ │ │ └── uikit.min.css
│ │ ├── components
│ │ │ ├── cart.scss
│ │ │ ├── catalog.scss
│ │ │ ├── feed.scss
│ │ │ ├── pages.scss
│ │ │ └── users.scss
│ │ ├── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ │ ├── layout.scss
│ │ ├── modules
│ │ │ ├── breadcrumbs.scss
│ │ │ ├── forms.scss
│ │ │ ├── menu.scss
│ │ │ ├── search.scss
│ │ │ └── seofish.scss
│ │ ├── pages
│ │ │ └── auth.scss
│ │ ├── plugins
│ │ │ └── gallery.scss
│ │ ├── sections
│ │ │ ├── footer.scss
│ │ │ ├── header.scss
│ │ │ └── right_colomn.scss
│ │ └── uikit-buttons-modify.scss
│ │ ├── _images
│ │ ├── Preloader_3.gif
│ │ ├── Preloader_7.gif
│ │ ├── ajax-loader.gif
│ │ ├── bg
│ │ │ ├── bg.png
│ │ │ ├── bg_active.png
│ │ │ ├── bg_block_right.png
│ │ │ ├── bg_download_price.png
│ │ │ ├── bg_footer.png
│ │ │ ├── bg_grad.png
│ │ │ ├── bg_header.png
│ │ │ ├── bg_header_shadow_menu.png
│ │ │ └── bg_tex.png
│ │ ├── bg_btn_dropdown.png
│ │ ├── bg_cost.png
│ │ ├── empty_big.png
│ │ ├── favicons
│ │ │ └── favicon-16x16.png
│ │ ├── icon_up.png
│ │ ├── icons
│ │ │ ├── facebook.png
│ │ │ ├── google-plus.png
│ │ │ ├── ico_mart.png
│ │ │ ├── ico_mart_white.png
│ │ │ ├── icon_arrow_right.png
│ │ │ ├── icon_cart-512.png
│ │ │ ├── icon_cart.png
│ │ │ ├── icon_cart_black.png
│ │ │ ├── icon_cart_white.png
│ │ │ ├── icon_docs_64.png
│ │ │ ├── icon_docx_122x129.png
│ │ │ ├── icon_xls_122x129.png
│ │ │ ├── icon_xls_64.png
│ │ │ ├── odnoklassniki-logo.png
│ │ │ ├── twitter.png
│ │ │ ├── vk.png
│ │ │ └── yandex.png
│ │ ├── logo.png
│ │ ├── logo@2x.png
│ │ ├── lost_image.png
│ │ ├── persent.png
│ │ ├── photo-placeholder.png
│ │ ├── preloader.gif
│ │ ├── ul-1.gif
│ │ └── up_button.png
│ │ └── _js
│ │ ├── cart.js
│ │ ├── catalog.js
│ │ └── frontend.js
│ ├── external
│ ├── adminer.css
│ └── adminer.php
│ └── vendor
│ └── jsvalidation
│ └── js
│ ├── jsvalidation.js
│ ├── jsvalidation.js.map
│ └── jsvalidation.min.js
├── composer.json
├── config
├── larrock-core-adminmenu.php
├── larrock-sitemap.php
├── larrock-to-dashboard.php
└── larrock.php
├── configVendor
├── auth.php
├── breadcrumbs.php
├── cart.php
├── database.php
├── filesystems.php
├── jsvalidation.php
├── larrock-index-public_html_php
└── medialibrary.php
├── database
└── migrations
│ ├── 2017_10_13_005151_create_config_table.php
│ ├── 2017_10_13_005151_create_seo_table.php
│ └── 2017_11_30_005151_create_link_table.php
├── lang
├── en
│ ├── apps.php
│ └── validation.php
└── ru
│ ├── apps.php
│ └── validation.php
├── src
├── AdminAjax.php
├── AdminDashboardController.php
├── Commands
│ ├── LarrockAssetsCommand.php
│ ├── LarrockCheckCommand.php
│ ├── LarrockInstallCommand.php
│ ├── LarrockInstallCorePackagesCommand.php
│ ├── LarrockManagerCommand.php
│ ├── LarrockRenamePublicDirectoryCommand.php
│ ├── LarrockUpdateEnvCommand.php
│ └── LarrockUpdateVendorConfigCommand.php
├── Component.php
├── ComponentTraits
│ └── ComponentSearchTrait.php
├── Events
│ ├── ComponentItemDestroyed.php
│ ├── ComponentItemStored.php
│ ├── ComponentItemUpdated.php
│ └── MessageLarrockEvent.php
├── Exceptions
│ └── LarrockFormBuilderRowException.php
├── Helpers
│ ├── AdminMenuBuilder.php
│ ├── CustomPathGenerator.php
│ ├── FormBuilder
│ │ ├── FBElement.php
│ │ ├── FormButton.php
│ │ ├── FormCategory.php
│ │ ├── FormCheckbox.php
│ │ ├── FormDate.php
│ │ ├── FormFile.php
│ │ ├── FormHidden.php
│ │ ├── FormInput.php
│ │ ├── FormPassword.php
│ │ ├── FormSelect.php
│ │ ├── FormSelectKey.php
│ │ ├── FormTags.php
│ │ └── FormTextarea.php
│ ├── MessageLarrock.php
│ ├── Plugins
│ │ └── RenderPlugins.php
│ └── Tree.php
├── LarrockCoreServiceProvider.php
├── Listeners
│ └── CoreEventSubscriber.php
├── Middleware
│ └── AdminMenu.php
├── Models
│ ├── Config.php
│ ├── Link.php
│ └── Seo.php
├── Plugins
│ ├── ComponentPlugin.php
│ ├── PluginAnonsTrait.php
│ └── PluginSeoTrait.php
├── Traits
│ ├── AdminMethods.php
│ ├── AdminMethodsCreate.php
│ ├── AdminMethodsDestroy.php
│ ├── AdminMethodsEdit.php
│ ├── AdminMethodsIndex.php
│ ├── AdminMethodsShow.php
│ ├── AdminMethodsStore.php
│ ├── AdminMethodsUpdate.php
│ ├── GetAdminLink.php
│ ├── GetFilesAndImages.php
│ ├── GetLink.php
│ ├── GetSeo.php
│ └── ShareMethods.php
└── routes.php
└── views
├── admin
├── admin-builder
│ ├── additional-rows-td.blade.php
│ ├── additional-rows-th.blade.php
│ ├── categories.blade.php
│ ├── create.blade.php
│ ├── edit.blade.php
│ ├── index.blade.php
│ ├── massive-action.blade.php
│ └── plugins
│ │ ├── files
│ │ ├── getUploadedFiles.blade.php
│ │ └── tab-data-files.blade.php
│ │ └── images
│ │ ├── getUploadedImages.blade.php
│ │ └── tab-data-images.blade.php
├── breadcrumb
│ └── breadcrumb.blade.php
├── dashboard
│ └── dashboard.blade.php
├── formbuilder
│ ├── button
│ │ └── button.blade.php
│ ├── checkbox
│ │ └── default.blade.php
│ ├── input
│ │ ├── date.blade.php
│ │ ├── dateDay.blade.php
│ │ ├── file.blade.php
│ │ ├── hidden.blade.php
│ │ ├── input.blade.php
│ │ └── password.blade.php
│ ├── select
│ │ ├── key.blade.php
│ │ ├── row.blade.php
│ │ └── value.blade.php
│ ├── tags
│ │ ├── categoryTree.blade.php
│ │ └── tags.blade.php
│ └── textarea
│ │ └── editor.blade.php
├── main.blade.php
├── pagination
│ └── uikit3.blade.php
└── sectionmenu
│ ├── top.blade.php
│ └── types
│ ├── default.blade.php
│ └── dropdown.blade.php
├── front
├── errors.blade.php
├── main.blade.php
├── modules
│ ├── breadcrumbs
│ │ └── breadcrumbs.blade.php
│ ├── html
│ │ └── text.blade.php
│ ├── pagination
│ │ └── uikit.blade.php
│ └── share
│ │ └── sharing.blade.php
├── plugins
│ ├── fileGallery
│ │ ├── default.blade.php
│ │ └── price.blade.php
│ └── photoGallery
│ │ ├── blocks.blade.php
│ │ ├── blocksBig.blade.php
│ │ ├── news.blade.php
│ │ ├── newsDescription.blade.php
│ │ ├── nonFancy.blade.php
│ │ └── sert.blade.php
├── sections
│ ├── bottom_scripts.blade.php
│ ├── footer.blade.php
│ ├── head.blade.php
│ └── header.blade.php
└── sitemap.blade.php
└── jsvalidation
└── uikit.php
/.styleci.yml:
--------------------------------------------------------------------------------
1 | preset: laravel
2 |
3 | risky: false
4 |
5 | finder:
6 | exclude:
7 | - "tests"
8 | path:
9 | - "src"
--------------------------------------------------------------------------------
/assets/bower/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "cwd": "public_html/_assets",
3 | "directory": "bower_components"
4 | }
--------------------------------------------------------------------------------
/assets/policy/privacy_policy.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/policy/privacy_policy.docx
--------------------------------------------------------------------------------
/assets/public_html/_assets/_admin/_css/tinymce.css:
--------------------------------------------------------------------------------
1 | body{
2 | font-family: Arial,sans-serif;
3 | font-size: 14px;
4 | padding: 5px;
5 | }
6 |
7 | table{
8 | width: 100%;
9 | }
10 |
11 | .mce-widget button {
12 | font-size: inherit;
13 | line-height: inherit;
14 | color: black !important;
15 | background: blanchedalmond !important;
16 | }
17 |
18 | .mce-btn.mce-active, .mce-btn.mce-active:hover, .mce-btn.mce-active:focus, .mce-btn.mce-active:active{
19 | background: #555c66 !important;
20 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_admin/_images/logo-hand-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_admin/_images/logo-hand-black.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/components/cart.scss:
--------------------------------------------------------------------------------
1 | #ModalToCart-form{
2 | input.editQty{
3 | width: 40px;
4 | font-size: 18px;
5 | }
6 | }
7 |
8 | form.cart-page{
9 | td.cost-row,
10 | td.subtotal{
11 | white-space: nowrap;
12 | }
13 | tr.total-row td,
14 | tr.discount_row td{
15 | border: none;
16 | }
17 | }
18 |
19 | .moduleCart a{
20 | text-decoration: none;
21 | }
22 |
23 | .cabinetPage{
24 | .orderItem{
25 | td.cost-row,
26 | td.subtotal{
27 | white-space: nowrap;
28 | }
29 | }
30 | }
31 |
32 | p.cart-show{
33 | margin-top: 0;
34 | }
35 |
36 | #cart-page, .orderItem{
37 | .item-options{
38 | font-size: 15px;
39 | line-height: 22px;
40 | p{
41 | margin-bottom: 5px;
42 | margin-top: 5px;
43 | line-height: 19px;
44 | }
45 | }
46 | table{
47 | tbody tr:first-of-type td{
48 | padding-top: 30px;
49 | }
50 | td{
51 | padding-bottom: 25px;
52 | &.tovar_image{
53 | width: 120px;
54 | }
55 | &.subtotal,
56 | &.cost-row{
57 | width: 80px;
58 | }
59 | &.spinner-row{
60 | width: 150px;
61 | }
62 | }
63 | .uk-h4{
64 | font-size: 18px;
65 | margin-top: 0;
66 | }
67 | th{
68 | color: #999!important;
69 | font-weight: 400;
70 | font-size: 15px;
71 | line-height: 22px;
72 | border-bottom: 1px solid #e8e8e8;
73 | }
74 | }
75 | .button-remove-phone{
76 | width: 129px;
77 | margin-top: 15px;
78 | }
79 | .row-total{
80 | .total{
81 | font-size: 40px;
82 | line-height: 48px;
83 | }
84 | }
85 | }
86 |
87 | textarea#address{
88 | min-height: 105px;
89 | }
90 |
91 | .spinner-qty{
92 | input{
93 | height: 26px;
94 | max-width: 60px;
95 | text-align: center;
96 | border: 1px solid #e4e4e4;
97 | font-size: 15px;
98 | }
99 | }
100 |
101 | form#form-orderFull{
102 | p.uk-h2{
103 | font-weight: 700;
104 | font-size: 28px;
105 | line-height: 35px;
106 | }
107 | }
108 |
109 | .motivate-container{
110 | @include list-mart;
111 |
112 | ul.motivate_list{
113 | li{
114 | font-size: 90%;
115 |
116 | > p:first-of-type{
117 | display: inline;
118 | }
119 | }
120 | }
121 | }
122 |
123 | .discount-row-text{
124 | font-size: 90%;
125 | font-style: italic;
126 | > p:first-of-type{
127 | display: inline;
128 | }
129 | }
130 |
131 | .discount_row{
132 | p.row-total{
133 | font-size: 130%;
134 | font-weight: 700;
135 | .uk-h1{
136 | font-weight: 700;
137 | }
138 | }
139 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/components/feed.scss:
--------------------------------------------------------------------------------
1 | .pageFeedItem{
2 | .uk-alert{
3 | position: absolute;
4 | right: 0;
5 | top: -21px;
6 | z-index: 10;
7 | }
8 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/components/pages.scss:
--------------------------------------------------------------------------------
1 | .page_description{
2 | @include list-mart;
3 |
4 | h1{
5 | margin-bottom: 35px;
6 | }
7 |
8 | h2{
9 | font-weight: 600;
10 | font-size: 29px;
11 | line-height: 35px;
12 | margin-top: 50px;
13 | &:first-of-type{
14 | margin-top: 25px;
15 | }
16 | }
17 |
18 | h3{
19 | font-weight: 600;
20 | font-size: 22px;
21 | line-height: 30px;
22 | }
23 | }
24 |
25 | .page-kontakty{
26 | table{
27 | margin-top: 15px;
28 | tr td{
29 | &:first-of-type{
30 | color: grey;
31 | text-align: right;
32 | font-style: italic;
33 | font-size: 14px;
34 | line-height: 18px;
35 | padding-top: 14px;
36 | &::after{
37 | content: ':';
38 | }
39 | }
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/components/users.scss:
--------------------------------------------------------------------------------
1 | .sociatite-auth{
2 | .uk-h3{
3 | margin-bottom: 7px;
4 | }
5 | div{
6 | padding: 0 2px;
7 | }
8 | }
9 |
10 | #collapseEditProfile{
11 | padding-bottom: 40px;
12 | }
13 |
14 | .cabinetPage{
15 | .orderItem{
16 | margin-bottom: 90px;
17 | &:last-of-type{
18 | margin-bottom: 0;
19 | }
20 | @media(max-width: 1024px){
21 | &.uk-margin-large-top{
22 | margin-top: 20px !important;
23 | }
24 | }
25 | }
26 |
27 | .uk-h2{
28 | background: $color_link;
29 | padding: 10px;
30 | color: white;
31 | small.uk-text-muted{
32 | font-size: 15px;
33 | line-height: 19px;
34 | font-weight: 400;
35 | color: white !important;
36 | }
37 | }
38 |
39 | .user-buttons{
40 | @media(max-width: 1024px){
41 | margin-top: 20px;
42 | }
43 | button{
44 | margin-right: 10px;
45 | }
46 | .uk-button{
47 | margin-top: 2px;
48 | }
49 | }
50 |
51 | .order-status{
52 | position: relative;
53 | margin-top: 5px;
54 | p{
55 | font-size: 17px;
56 | padding-top: 6px;
57 | margin-bottom: 5px;
58 | }
59 | .cancel-order{
60 | @media (min-width: 667px) {
61 | position: absolute;
62 | right: 15px;
63 | top: 12px;
64 | }
65 | }
66 | }
67 |
68 | .order-pay{
69 | position: relative;
70 | font-size: 17px;
71 | margin-top: 0;
72 | margin-bottom: 0;
73 | background: url("/_assets/_front/_images/bg/bg_footer.png") right top transparent repeat;
74 | @media(max-width: 1024px){
75 | background: #fffcb1;
76 | }
77 | color: black;
78 |
79 | p.success-pay{
80 | font-size: 40px;
81 | line-height: 48px;
82 | font-weight: 600;
83 | }
84 | p{
85 | font-size: 17px;
86 | padding-top: 1px;
87 | margin-bottom: 5px;
88 | margin-top: 0;
89 | }
90 | p.not-pay{
91 | padding-top: 20px;
92 | }
93 | .total{
94 | font-size: 40px;
95 | line-height: 48px;
96 | }
97 | form.form-ya-kassa{
98 | button{
99 | margin-top: 10px;
100 | width: 131px;
101 | }
102 | }
103 | .text-order-pay{
104 | span{
105 | margin-bottom: 0;
106 | }
107 | }
108 | .uk-text-muted{
109 | font-size: 15px;
110 | line-height: 19px;
111 | color: black !important;
112 | }
113 | }
114 |
115 | table{
116 | margin-top: 40px;
117 | }
118 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_css/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_css/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_css/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_css/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/modules/breadcrumbs.scss:
--------------------------------------------------------------------------------
1 | ul.uk-breadcrumb{
2 | padding: 0;
3 | background: transparent;
4 | font-size: 20px;
5 | line-height: 27px;
6 |
7 | white-space: nowrap;
8 | position: relative;
9 | overflow-x: hidden;
10 | overflow-y: hidden;
11 | z-index: 2;
12 |
13 | &::after{
14 | content: '';
15 | background: linear-gradient(90deg,rgba(255, 255, 255, 0) 0,rgb(255, 255, 255) 70%,rgb(255, 255, 255));
16 | width: 70px;
17 | height: 40px;
18 | position: absolute;
19 | right: 0;
20 | top: 0;
21 | z-index: 3;
22 | }
23 |
24 | h1, h2, h3, h4, h5{
25 | display: inline-block;
26 | font-size: 20px;
27 | line-height: 27px;
28 | margin: 0;
29 | color: $color_link;
30 | }
31 | h1{
32 | color: black;
33 | }
34 | a{
35 | color: $color_link;
36 | text-decoration: underline;
37 | }
38 | >li:nth-child(n+2):before {
39 | content: "/";
40 | display: inline-block;
41 | margin: 0 8px 0 0;
42 | font-size: 15px;
43 | }
44 |
45 | >li:first-of-type{
46 | display: inline-block;
47 | }
48 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/modules/forms.scss:
--------------------------------------------------------------------------------
1 | #form_vacancy{
2 | label.agree-label{
3 | width: 100% !important;
4 | }
5 | p.uk-h2{
6 | margin-top: 35px;
7 | *:first-of-type{
8 | margin-top: 0;
9 | }
10 | }
11 | }
12 | #form-backphone{
13 | p.uk-h3{
14 | font-size: 22px;
15 | text-transform: uppercase;
16 | color: #000;
17 | letter-spacing: 3px;
18 | font-weight: 700;
19 | margin-bottom: 25px;
20 | }
21 | label{
22 | font-size: 17px;
23 | }
24 | input{
25 | font-size: 15px;
26 | }
27 | .agree-label{
28 | font-size: 14px;
29 | line-height: 19px;
30 | display: inline-block;
31 | input{
32 | float: left;
33 | margin-right: 5px;
34 | margin-top: 4px;
35 | }
36 | span{
37 | display: block;
38 | margin-left: 18px;
39 | }
40 | }
41 | }
42 |
43 | .g-recaptcha{
44 | overflow: hidden;
45 | border-right: 1px solid #d6d6d6;
46 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/modules/menu.scss:
--------------------------------------------------------------------------------
1 | section#top_menu{
2 | .uk-navbar{
3 | background: none;
4 | text-align: center;
5 | }
6 | ul.uk-navbar-nav{
7 | padding: 10px 0;
8 | float: none;
9 |
10 | > li{
11 | margin-right: 25px;
12 | display: inline-block;
13 | float: none;
14 |
15 | @media (max-width: 768px) {
16 | width: 100%;
17 | margin-bottom: 3px;
18 | }
19 |
20 | &:last-of-type{
21 | margin-right: 0;
22 | }
23 | @media (max-width: 425px) {
24 | margin-right: 0;
25 | display: block;
26 | width: 100%;
27 | }
28 |
29 | a{
30 | font-family: 'Roboto', Open Sans, sans-serif;
31 | background-color: white;
32 | color: black;
33 | font-size: 19px;
34 | font-weight: 500;
35 | border-radius: 25px;
36 | @media (max-width: 768px) {
37 | border-radius: 0;
38 | }
39 | }
40 | &.uk-active > a{
41 | background-color: $color_link;
42 | color: white;
43 | }
44 |
45 | &:hover, &:focus{
46 | a{
47 | background-color: $color_link;
48 | color: white;
49 | }
50 | }
51 | }
52 | }
53 |
54 | @media (max-width: 425px) {
55 | .uk-container.uk-container-center {
56 | padding: 0;
57 | }
58 | button.uk-button {
59 | font-size: 25px;
60 | min-height: 49px;
61 | margin-bottom: 15px;
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/modules/search.scss:
--------------------------------------------------------------------------------
1 | section#search{
2 | background: $main_color_red;
3 | > .uk-container{
4 | background: transparent;
5 | }
6 | }
7 | form.form-search-autocomplite{
8 | .uk-form-row{
9 | position: relative;
10 | margin-bottom: 3px;
11 | }
12 | button{
13 | position: absolute;
14 | top: 0;
15 | right: 0;
16 | z-index: 3;
17 | }
18 | .selectize-input {
19 | padding: 0 10px;
20 | height: 40px;
21 | border-radius: 0;
22 |
23 | input[type="text"] {
24 | font-size: 18px;
25 | height: 40px;
26 | }
27 | }
28 | .selectize-input.has-options{
29 | >div{
30 | line-height: 38px;
31 |
32 | > span.title{
33 | font-size: 19px;
34 | }
35 | > span.category{
36 | color: grey;
37 | font-size: 14px;
38 | margin-left: 6px;
39 | font-style: italic;
40 | }
41 | }
42 | }
43 | .selectize-dropdown-content{
44 | max-height: 500px;
45 | span.uk-label {
46 | display: block;
47 | font-size: 17px;
48 | }
49 | span.caption {
50 | display: block;
51 | font-style: italic;
52 | padding-top: 1px;
53 | }
54 | > div {
55 | padding: 8px 8px;
56 | }
57 | }
58 | }
59 |
60 | form.form-search.uk-form.form-search-autocomplite {
61 | max-width: 400px;
62 |
63 | .selectize-control.single .selectize-input, .selectize-dropdown.single {
64 | border-color: #dadada;
65 | border-radius: 5px;
66 | }
67 | .selectize-input.items.not-full.has-options {
68 | box-shadow: none;
69 | background: white;
70 | }
71 | button.uk-button{
72 | border-radius: 0 5px 5px 0;
73 | background-color: grey;
74 | }
75 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/modules/seofish.scss:
--------------------------------------------------------------------------------
1 | .block-seofish{
2 | h1{
3 | font-size: 25px;
4 | font-weight: 600;
5 | line-height: 32px;
6 | margin-bottom: 25px;
7 | }
8 | h4{
9 | font-weight: 600;
10 | font-size: 20px;
11 | line-height: 25px;
12 | }
13 | .block-seofish-item {
14 | margin-bottom: 40px;
15 | @include list-mart;
16 | ul, p, a{
17 | font-size: 15px;
18 | line-height: 23px;
19 | }
20 | }
21 | .first-coloumn{
22 | > div{
23 | padding-right: 10px;
24 | }
25 | }
26 | .second-coloumn{
27 | > div{
28 | padding-left: 10px;
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/pages/auth.scss:
--------------------------------------------------------------------------------
1 | .loginPage{
2 | p.uk-h2, h2{
3 | font-size: 22px;
4 | line-height: 26px;
5 | margin-bottom: 35px;
6 | font-weight: 400;
7 | }
8 | label.uk-form-label, label{
9 | font-size: 15px;
10 | }
11 | button[type=submit]{
12 | margin-top: 10px;
13 | }
14 | .block-register{
15 | button[type=submit]{
16 | margin-top: 15px;
17 | }
18 | }
19 | .lost-password{
20 | display: block;
21 | font-size: 15px;
22 | padding-top: 20px;
23 | }
24 | .uk-form-row{
25 | margin-bottom: 20px;
26 | }
27 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/plugins/gallery.scss:
--------------------------------------------------------------------------------
1 | .gallery-news{
2 | img{
3 | box-shadow: 0 0 3px rgba(0, 0, 0, 0.25);
4 | }
5 | .gallery-news-item{
6 | display: inline-block;
7 | margin-bottom: 15px;
8 |
9 | &:nth-of-type(1){
10 | display: block;
11 | }
12 | }
13 | }
14 |
15 | .gallery-sert{
16 | padding-top: 10px;
17 | a.uk-display-inline-block{
18 | font-size: 14px;
19 | line-height: 20px;
20 | }
21 | }
22 |
23 | .gallery-newsDescription{
24 | img{
25 | max-width: 200px;
26 | }
27 | }
28 |
29 | /* FILES */
30 | .block-prices{
31 | margin-top: 50px;
32 | margin-bottom: 30px;
33 | .h3{
34 | margin-bottom: 20px;
35 | }
36 | .file-gallery-default{
37 | display: block;
38 |
39 | .file-gallery-default-item{
40 | margin-bottom: 50px;
41 | position: relative;
42 | }
43 | img{
44 | float: left;
45 | display: inline-block;
46 | max-width: 64px;
47 | padding-right: 15px;
48 | position: absolute;
49 | left: 0;
50 | }
51 | span{
52 | float: left;
53 | display: inline-block;
54 | font-size: 18px;
55 | padding-left: 65px;
56 | padding-top: 7px;
57 | min-height: 38px;
58 | text-decoration: underline;
59 | font-weight: 600;
60 | }
61 | }
62 | }
63 |
64 | .file-gallery-default{
65 | .file-gallery-default-item{
66 | span{
67 | margin-left: 7px;
68 | font-size: 1.2em;
69 | }
70 | }
71 | }
72 |
73 |
74 | .larrock-gallery{
75 | .uk-display-inline-block{
76 | strong{
77 | display: block;
78 | }
79 | }
80 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/sections/footer.scss:
--------------------------------------------------------------------------------
1 | footer{
2 | margin-top: 55px;
3 | @media (max-width: 768px) {
4 | margin-top: 25px;
5 | }
6 |
7 | > .uk-container-center{
8 | background: url("/_assets/_front/_images/bg/bg_footer.png") right top no-repeat #f7f7f7;
9 | color: black;
10 | min-height: 304px;
11 | @media (max-width: 768px) {
12 | background: url("/_assets/_front/_images/bg/bg_footer.png") left top no-repeat #f7f7f7;
13 | }
14 | }
15 | .footer-text{
16 | padding-top: 15px;
17 | }
18 |
19 | a{
20 | color: $color_link;
21 | }
22 |
23 | .uk-h2{
24 | color: black;
25 | font-size: 32px;
26 | line-height: 38px;
27 | }
28 |
29 | .footer-copyright{
30 | padding-top: 30px;
31 | margin-bottom: 25px;
32 | position: relative;
33 |
34 | > div{
35 | position: absolute;
36 | bottom: -5px;
37 | right: 170px;
38 | @media (max-width: 881px) {
39 | right: 0;
40 | }
41 | }
42 |
43 | a{
44 | font-size: 14px;
45 | font-weight: 300;
46 | color: black;
47 | line-height: 21px;
48 | display: inline-block;
49 | }
50 | }
51 | .larrock-block-tekst_v_podvale{
52 | line-height: 35px;
53 | @media (min-width: 1024px) {
54 | margin-left: 84px;
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/sections/header.scss:
--------------------------------------------------------------------------------
1 | header{
2 | background: url("/_assets/_front/_images/bg/bg_header.png") left top repeat transparent;
3 |
4 | @media (max-width: 414px) {
5 | .uk-margin-large-bottom {
6 | margin-bottom: 25px!important;
7 | }
8 | }
9 |
10 | .logo-container{
11 | margin: 25px 0;
12 | }
13 |
14 | .logo-link{
15 | @media (max-width: 414px) {
16 | display: block;
17 | text-align: center;
18 | margin-bottom: 10px;
19 | }
20 | }
21 |
22 | .header-links {
23 | margin-top: 50px;
24 | font-size: 20px;
25 | line-height: 23px;
26 | @media (max-width: 768px) {
27 | margin-top: 20px;
28 | margin-bottom: 15px;
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_css/sections/right_colomn.scss:
--------------------------------------------------------------------------------
1 | section#right_colomn {
2 | position: relative;
3 | padding-left: 25px;
4 |
5 | @media (max-width: 881px) {
6 | display: none;
7 | }
8 |
9 | &:before{
10 | position: absolute;
11 | left: -15px;
12 | top: 0;
13 | bottom: 35px;
14 | right: 0;
15 | content: "";
16 | background: url("/_assets/_front/_images/bg/bg_block_right.png") repeat-y transparent left top;
17 | margin-top: 14px;
18 | }
19 |
20 | > div{
21 | height: 100%;
22 |
23 | > div{
24 | margin-top: 14px;
25 | margin-left: 0;
26 | position: relative;
27 | z-index: 4;
28 | }
29 | }
30 |
31 | .modules-list > *{
32 | margin-bottom: 65px;
33 | margin-left: 15px;
34 | margin-right: 15px;
35 |
36 | &:last-child{
37 | margin-bottom: 0;
38 | }
39 | }
40 |
41 | .larrock-block-obyavlenie1,
42 | .larrock-block-obyavlenie2{
43 | font-family: 'Roboto Condensed', Arial, sans-serif;
44 | color: $color_link;
45 | font-style: italic;
46 | font-size: 30px;
47 | line-height: 35px;
48 | font-weight: 700;
49 | }
50 |
51 | .larrock-block-obyavlenie1{
52 | margin-bottom: 35px;
53 | }
54 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/Preloader_3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/Preloader_3.gif
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/Preloader_7.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/Preloader_7.gif
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/ajax-loader.gif
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_active.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_block_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_block_right.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_download_price.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_download_price.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_footer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_footer.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_grad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_grad.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_header.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_header_shadow_menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_header_shadow_menu.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg/bg_tex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg/bg_tex.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg_btn_dropdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg_btn_dropdown.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/bg_cost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/bg_cost.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/empty_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/empty_big.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/favicons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/favicons/favicon-16x16.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icon_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icon_up.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/facebook.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/google-plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/google-plus.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/ico_mart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/ico_mart.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/ico_mart_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/ico_mart_white.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_arrow_right.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_cart-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_cart-512.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_cart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_cart.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_cart_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_cart_black.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_cart_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_cart_white.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_docs_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_docs_64.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_docx_122x129.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_docx_122x129.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_xls_122x129.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_xls_122x129.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/icon_xls_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/icon_xls_64.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/odnoklassniki-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/odnoklassniki-logo.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/twitter.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/vk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/vk.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/icons/yandex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/icons/yandex.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/logo.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/logo@2x.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/lost_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/lost_image.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/persent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/persent.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/photo-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/photo-placeholder.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/preloader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/preloader.gif
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/ul-1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/ul-1.gif
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_images/up_button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/_assets/_front/_images/up_button.png
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_js/catalog.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 | $.ajaxSetup({
3 | headers: {
4 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
5 | }
6 | });
7 |
8 | change_option_ajax();
9 | changeCostValue();
10 | changeParamValue();
11 | });
12 |
13 |
14 | /**
15 | * LarrockCatalog
16 | * Изменение параметров каталога (или любых других через контроллер Ajax)
17 | *
18 | * attr data-option - метод
19 | * attr data-value - передаваемое значение
20 | * attr data-type - другое передаваемое значение
21 | */
22 | function change_option_ajax() {
23 | $('.change_option_ajax:not(.uk-active)').click(function () {
24 | var option = $(this).attr('data-option');
25 | noty_show('message', 'Страница обновляется...');
26 | $.ajax({
27 | url: '/ajax/'+ option,
28 | type: 'POST',
29 | data: {
30 | q: $(this).attr('data-value'),
31 | type: $(this).attr('data-type')
32 | },
33 | error: function() {
34 | alert('ERROR!');
35 | },
36 | success: function() {
37 | window.location.href = window.location.href.split('?')[0];
38 | }
39 | })
40 | });
41 | }
42 |
43 | /** Смена модификации товара на его странице */
44 | function changeCostValue() {
45 | $('.changeCostValue').click(function () {
46 | var cost = parseFloat($(this).find('input').val());
47 | var costValueId = $(this).find('input').attr('data-costValueId');
48 | $('.catalogPageItem').find('.cost_value').html(cost);
49 | $('.add_to_cart_fast').attr('data-cost', cost);
50 | $('.add_to_cart_fast').attr('data-costValueId', costValueId);
51 | });
52 | }
53 |
54 | /** Смена модификации товара в blockItem */
55 | function changeParamValue() {
56 | $('.changeParamValue').click(function () {
57 | var id = $(this).attr('data-tovar-id');
58 | var cost = $(this).attr('data-cost');
59 | var param = $(this).attr('data-param');
60 | var title = $(this).attr('data-title');
61 |
62 | $('.changeParamValue[data-tovar-id='+ id +']').removeClass('uk-active');
63 | $(this).addClass('uk-active');
64 | $('.add_to_cart_fast[data-id='+id+']').attr('data-costValueId', param);
65 | $('.catalogBlockItem[data-id='+ id +']').find('.costValue').html(cost);
66 | $('.catalogBlockItem[data-id='+ id +']').find('.costValueTitle').html(title);
67 | });
68 | }
--------------------------------------------------------------------------------
/assets/public_html/_assets/_front/_js/frontend.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Всплывающие уведомления в интерфейсе
3 | * @param type
4 | * @param message
5 | */
6 | function noty_show(type, message){
7 | $('#modalNotify').addClass('uk-open').addClass('uk-display-block');
8 | if(type === 'error' || type === 'alert'){
9 | UIkit.notify({
10 | message : ' '+ message,
11 | status : 'danger',
12 | timeout : 0,
13 | pos : 'top-center'
14 | });
15 | }else{
16 | UIkit.notify({
17 | message : ' '+ message,
18 | status : 'primary',
19 | timeout : 3000,
20 | pos : 'top-right'
21 | });
22 | }
23 |
24 | setTimeout(function () {
25 | $('#modalNotify').removeClass('uk-open').removeClass('uk-display-block');
26 | }, 3000);
27 | }
28 |
29 | function link_block() {
30 | /** Ищет внутри блока ссылку и присваивает ее всему блоку */
31 | $('.link_block').click(function(){window.location = $(this).find('a').attr('href');});
32 |
33 | /** Ищет в элементе аттрибут data-href и делает блок ссылкой */
34 | $('.link_block_this').click(function(){window.location = $(this).attr('data-href');});
35 | }
36 |
37 |
38 | $(document).ready(function(){
39 | $.ajaxSetup({
40 | headers: {
41 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
42 | }
43 | });
44 |
45 | $("[data-fancybox], .fancybox").fancybox({
46 | infobar : true,
47 | buttons : [
48 | 'slideShow',
49 | 'fullScreen',
50 | 'thumbs',
51 | 'close'
52 | ],
53 | hash: true,
54 | thumbs : {
55 | autoStart : true, // Display thumbnails on opening
56 | hideOnClose : true // Hide thumbnail grid when closing animation starts
57 | },
58 | lang : 'ru',
59 | i18n : {
60 | 'ru' : {
61 | CLOSE : 'Закрыть',
62 | NEXT : 'Дальше',
63 | PREV : 'Назад',
64 | ERROR : 'The requested content cannot be loaded.
Please try again later.',
65 | PLAY_START : 'Начать слайдшоу',
66 | PLAY_STOP : 'Пауза',
67 | FULL_SCREEN : 'В полный экран',
68 | THUMBS : 'Превью'
69 | }
70 | },
71 | caption : function() {
72 | return $(this).data('caption') || $(this).attr('title') || '';
73 | }
74 | });
75 | link_block();
76 |
77 | $('.showModalLoading').click(function () {
78 | UIkit.modal("#modalProgress").show();
79 | });
80 |
81 | $('input[name=date], input.date').pickadate({
82 | monthSelector: true,
83 | yearSelector: true,
84 | formatSubmit: 'yyyy-mm-dd',
85 | firstDay: 1,
86 | monthsFull: [ 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' ],
87 | weekdaysShort: [ 'Вск', 'Пон', 'Вт', 'Ср', 'Чт', 'Пт', 'Суб' ],
88 | format: 'yyyy-mm-dd'
89 | });
90 |
91 | /* Кнопка НАВЕРХ */
92 | /*jQuery scrollTopTop v1.0 - 2013-03-15*/
93 | (function(a){a.fn.scrollToTop=function(c){var d={speed:800};c&&a.extend(d,{speed:c});
94 | return this.each(function(){var b=a(this);
95 | a(window).scroll(function() {
96 | /*var x = a(this).scrollTop();
97 | $('body').css('background-position', parseInt(-x * 2 / 10) + 'px '+ parseInt(-x * 2 / 10) + 'px');*/
98 | if(100 < a(this).scrollTop()){
99 | b.fadeIn();
100 | }else{
101 | b.fadeOut()
102 | }
103 | });
104 | b.click(function(b){b.preventDefault();a("body, html").animate({scrollTop:0},d.speed)})})}})(jQuery);
105 | $("#toTop").scrollToTop();
106 |
107 | $('#modalNotify').click(function () {
108 | $('#modalNotify').removeClass('uk-open');
109 | });
110 | });
111 |
--------------------------------------------------------------------------------
/assets/public_html/external/adminer.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Fanamurov/larrock-core/d5eb56aee50582ca60c093d571905646ea5097cb/assets/public_html/external/adminer.php
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "fanamurov/larrock-core",
3 | "description": "Core components for LarrockCMS",
4 | "type": "library",
5 | "keywords": ["larrock", "larrockCMS", "laravel", "laravel5", "laravel55", "laravel-admin",
6 | "cms", "php7", "larrock-core", "larrock-menu", "larrock-users", "larrock-pages",
7 | "larrock-blocks", "larrock-contact", "larrock-admin-seo", "larrock-admin-search"],
8 | "require": {
9 | "php": ">=7.1.3",
10 | "laravel/framework": "6.*",
11 | "proengsoft/laravel-jsvalidation": "^2.5",
12 | "davejamesmiller/laravel-breadcrumbs": "5.*",
13 | "nicolaslopezj/searchable": "^1.9",
14 | "spatie/laravel-medialibrary": "^7.0.0",
15 | "fanamurov/mdash": "^1.0"
16 | },
17 | "require-dev": {
18 | "barryvdh/laravel-ide-helper": "~2.4",
19 | "phpunit/phpunit" : "^6.2|^7.0",
20 | "mockery/mockery": "^1.0.0",
21 | "orchestra/testbench": "~3.5.0|~3.6.0",
22 | "doctrine/dbal": "^2.5.2"
23 | },
24 | "autoload": {
25 | "psr-4": {
26 | "Larrock\\Core\\": "src",
27 | "Larrock\\Core\\Models\\": "src/Models"
28 | }
29 | },
30 | "autoload-dev": {
31 | "classmap": [
32 | "tests/"
33 | ],
34 | "psr-4": {
35 | "Larrock\\Core\\Tests\\": "tests"
36 | }
37 | },
38 | "license": "CC-BY-4.0",
39 | "authors": [
40 | {
41 | "name": "Alexandr Fanamurov",
42 | "email": "fanamurov@ya.ru",
43 | "homepage": "https://github.com/Fanamurov/",
44 | "role": "Developer"
45 | }
46 | ],
47 | "extra": {
48 | "laravel": {
49 | "providers": [
50 | "Larrock\\Core\\LarrockCoreServiceProvider"
51 | ]
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/config/larrock-core-adminmenu.php:
--------------------------------------------------------------------------------
1 | $components,
48 | 'other_items' => $other_items
49 | ];
--------------------------------------------------------------------------------
/config/larrock-sitemap.php:
--------------------------------------------------------------------------------
1 | $components
20 | ];
--------------------------------------------------------------------------------
/config/larrock-to-dashboard.php:
--------------------------------------------------------------------------------
1 | $components
29 | ];
--------------------------------------------------------------------------------
/configVendor/auth.php:
--------------------------------------------------------------------------------
1 | [
17 | 'guard' => 'web',
18 | 'passwords' => 'users',
19 | ],
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Authentication Guards
24 | |--------------------------------------------------------------------------
25 | |
26 | | Next, you may define every authentication guard for your application.
27 | | Of course, a great default configuration has been defined for you
28 | | here which uses session storage and the Eloquent user provider.
29 | |
30 | | All authentication drivers have a user provider. This defines how the
31 | | users are actually retrieved out of your database or other storage
32 | | mechanisms used by this application to persist your user's data.
33 | |
34 | | Supported: "session", "token"
35 | |
36 | */
37 |
38 | 'guards' => [
39 | 'web' => [
40 | 'driver' => 'session',
41 | 'provider' => 'users',
42 | ],
43 |
44 | 'api' => [
45 | 'driver' => 'token',
46 | 'provider' => 'users',
47 | ],
48 | ],
49 |
50 | /*
51 | |--------------------------------------------------------------------------
52 | | User Providers
53 | |--------------------------------------------------------------------------
54 | |
55 | | All authentication drivers have a user provider. This defines how the
56 | | users are actually retrieved out of your database or other storage
57 | | mechanisms used by this application to persist your user's data.
58 | |
59 | | If you have multiple user tables or models you may configure multiple
60 | | sources which represent each model / table. These sources may then
61 | | be assigned to any extra authentication guards you have defined.
62 | |
63 | | Supported: "database", "eloquent"
64 | |
65 | */
66 |
67 | 'providers' => [
68 | 'users' => [
69 | 'driver' => 'eloquent',
70 | 'model' => \Larrock\ComponentUsers\Models\User::class,
71 | ],
72 |
73 | // 'users' => [
74 | // 'driver' => 'database',
75 | // 'table' => 'users',
76 | // ],
77 | ],
78 |
79 | /*
80 | |--------------------------------------------------------------------------
81 | | Resetting Passwords
82 | |--------------------------------------------------------------------------
83 | |
84 | | You may specify multiple password reset configurations if you have more
85 | | than one user table or model in the application and you want to have
86 | | separate password reset settings based on the specific user types.
87 | |
88 | | The expire time is the number of minutes that the reset token should be
89 | | considered valid. This security feature keeps tokens short-lived so
90 | | they have less time to be guessed. You may change this as needed.
91 | |
92 | */
93 |
94 | 'passwords' => [
95 | 'users' => [
96 | 'provider' => 'users',
97 | 'table' => 'password_resets',
98 | 'expire' => 60,
99 | ],
100 | ],
101 |
102 | ];
103 |
--------------------------------------------------------------------------------
/configVendor/breadcrumbs.php:
--------------------------------------------------------------------------------
1 | 'larrock::front.modules.breadcrumbs.breadcrumbs',
22 |
23 | /*
24 | |--------------------------------------------------------------------------
25 | | Breadcrumbs File(s)
26 | |--------------------------------------------------------------------------
27 | |
28 | | The file(s) where breadcrumbs are defined. e.g.
29 | |
30 | | - base_path('routes/breadcrumbs.php')
31 | | - glob(base_path('breadcrumbs/*.php'))
32 | |
33 | */
34 |
35 | 'files' => base_path('routes/breadcrumbs.php'),
36 |
37 | /*
38 | |--------------------------------------------------------------------------
39 | | Exceptions
40 | |--------------------------------------------------------------------------
41 | |
42 | | Determine when to throw an exception.
43 | |
44 | */
45 |
46 | // When route-bound breadcrumbs are used but the current route doesn't have a name (UnnamedRouteException)
47 | 'unnamed-route-exception' => true,
48 |
49 | // When route-bound breadcrumbs are used and the matching breadcrumb doesn't exist (InvalidBreadcrumbException)
50 | 'missing-route-bound-breadcrumb-exception' => true,
51 |
52 | // When a named breadcrumb is used but doesn't exist (InvalidBreadcrumbException)
53 | 'invalid-named-breadcrumb-exception' => true,
54 |
55 | /*
56 | |--------------------------------------------------------------------------
57 | | Classes
58 | |--------------------------------------------------------------------------
59 | |
60 | | Subclass the default classes for more advanced customisations.
61 | |
62 | */
63 |
64 | // Manager
65 | 'manager-class' => DaveJamesMiller\Breadcrumbs\BreadcrumbsManager::class,
66 |
67 | // Generator
68 | 'generator-class' => DaveJamesMiller\Breadcrumbs\BreadcrumbsGenerator::class,
69 |
70 | ];
71 |
--------------------------------------------------------------------------------
/configVendor/cart.php:
--------------------------------------------------------------------------------
1 | null,
16 |
17 | /*
18 | |--------------------------------------------------------------------------
19 | | Shoppingcart database settings
20 | |--------------------------------------------------------------------------
21 | |
22 | | Here you can set the connection that the shoppingcart should use when
23 | | storing and restoring a cart.
24 | |
25 | */
26 |
27 | 'database' => [
28 |
29 | 'connection' => null,
30 |
31 | 'table' => 'shoppingcart',
32 |
33 | ],
34 |
35 | /*
36 | |--------------------------------------------------------------------------
37 | | Destroy the cart on user logout
38 | |--------------------------------------------------------------------------
39 | |
40 | | When this option is set to 'true' the cart will automatically
41 | | destroy all cart instances when the user logs out.
42 | |
43 | */
44 |
45 | 'destroy_on_logout' => false,
46 |
47 | /*
48 | |--------------------------------------------------------------------------
49 | | Default number format
50 | |--------------------------------------------------------------------------
51 | |
52 | | This defaults will be used for the formated numbers if you don't
53 | | set them in the method call.
54 | |
55 | */
56 |
57 | 'format' => [
58 |
59 | 'decimals' => 2,
60 |
61 | 'decimal_point' => '.',
62 |
63 | 'thousand_seperator' => ','
64 |
65 | ],
66 |
67 | ];
--------------------------------------------------------------------------------
/configVendor/filesystems.php:
--------------------------------------------------------------------------------
1 | env('FILESYSTEM_DRIVER', 'local'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Default Cloud Filesystem Disk
21 | |--------------------------------------------------------------------------
22 | |
23 | | Many applications store files both locally and in the cloud. For this
24 | | reason, you may specify a default "cloud" driver here. This driver
25 | | will be bound as the Cloud disk implementation in the container.
26 | |
27 | */
28 |
29 | 'cloud' => env('FILESYSTEM_CLOUD', 's3'),
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Filesystem Disks
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here you may configure as many filesystem "disks" as you wish, and you
37 | | may even configure multiple disks of the same driver. Defaults have
38 | | been setup for each driver as an example of the required options.
39 | |
40 | | Supported Drivers: "local", "ftp", "s3", "rackspace"
41 | |
42 | */
43 |
44 | 'disks' => [
45 |
46 | 'local' => [
47 | 'driver' => 'local',
48 | 'root' => storage_path('app'),
49 | ],
50 |
51 | 'media' => [
52 | 'driver' => 'local',
53 | 'root' => base_path() .'/public_html/media',
54 | ],
55 |
56 | 'public' => [
57 | 'driver' => 'local',
58 | 'root' => storage_path('app/public'),
59 | 'url' => env('APP_URL').'/storage',
60 | 'visibility' => 'public',
61 | ],
62 |
63 | 's3' => [
64 | 'driver' => 's3',
65 | 'key' => env('AWS_ACCESS_KEY_ID'),
66 | 'secret' => env('AWS_SECRET_ACCESS_KEY'),
67 | 'region' => env('AWS_DEFAULT_REGION'),
68 | 'bucket' => env('AWS_BUCKET'),
69 | ],
70 |
71 | ],
72 |
73 | ];
74 |
--------------------------------------------------------------------------------
/configVendor/jsvalidation.php:
--------------------------------------------------------------------------------
1 | 'larrock::jsvalidation.uikit',
9 |
10 | /*
11 | * Default JQuery selector find the form to be validated.
12 | * By default, the validations are applied to all forms.
13 | */
14 | 'form_selector' => 'form',
15 |
16 | /*
17 | * If you change the focus on detect some error then active
18 | * this parameter to move the focus to the first error found.
19 | */
20 | 'focus_on_error' => false,
21 |
22 | /*
23 | * Duration time for the animation when We are moving the focus
24 | * to the first error, http://api.jquery.com/animate/ for more information.
25 | */
26 | 'duration_animate' => 1000,
27 |
28 | /*
29 | * Enable or disable Ajax validations of Database and custom rules.
30 | * By default Unique, ActiveURL, Exists and custom validations are validated via AJAX
31 | */
32 | 'disable_remote_validation' => true,
33 |
34 | /*
35 | * Field name used in the remote validation Ajax request
36 | * You can change this value to avoid conflicts wth your field names
37 | */
38 | 'remote_validation_field' => '_jsvalidation',
39 |
40 | ];
41 |
--------------------------------------------------------------------------------
/configVendor/larrock-index-public_html_php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | define('LARAVEL_START', microtime(true));
11 |
12 | /*
13 | |--------------------------------------------------------------------------
14 | | Register The Auto Loader
15 | |--------------------------------------------------------------------------
16 | |
17 | | Composer provides a convenient, automatically generated class loader for
18 | | our application. We just need to utilize it! We'll simply require it
19 | | into the script here so that we don't have to worry about manual
20 | | loading any of our classes later on. It feels great to relax.
21 | |
22 | */
23 |
24 | require __DIR__.'/../vendor/autoload.php';
25 |
26 | /*
27 | |--------------------------------------------------------------------------
28 | | Turn On The Lights
29 | |--------------------------------------------------------------------------
30 | |
31 | | We need to illuminate PHP development, so let us turn on the lights.
32 | | This bootstraps the framework and gets it ready for use, then it
33 | | will load up this application so that we can run it and send
34 | | the responses back to the browser and delight our users.
35 | |
36 | */
37 |
38 | $app = require_once __DIR__.'/../bootstrap/app.php';
39 |
40 | /*
41 | |--------------------------------------------------------------------------
42 | | Run The Application
43 | |--------------------------------------------------------------------------
44 | |
45 | | Once we have the application, we can handle the incoming request
46 | | through the kernel, and send the associated response back to
47 | | the client's browser allowing them to enjoy the creative
48 | | and wonderful application we have prepared for them.
49 | |
50 | */
51 |
52 | $app->bind('path.public', function() {
53 | return __DIR__;
54 | });
55 |
56 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
57 |
58 | $response = $kernel->handle(
59 | $request = Illuminate\Http\Request::capture()
60 | );
61 |
62 | $response->send();
63 |
64 | $kernel->terminate($request, $response);
65 |
--------------------------------------------------------------------------------
/database/migrations/2017_10_13_005151_create_config_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->char('name');
19 | $table->text('value');
20 | $table->char('type');
21 | $table->timestamps();
22 |
23 | $table->index(['name', 'type']);
24 | });
25 | }
26 | }
27 |
28 |
29 | /**
30 | * Reverse the migrations.
31 | *
32 | * @return void
33 | */
34 | public function down()
35 | {
36 | Schema::dropIfExists('config');
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/database/migrations/2017_10_13_005151_create_seo_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('seo_title')->nullable();
19 | $table->text('seo_description')->nullable();
20 | $table->text('seo_keywords')->nullable();
21 | $table->integer('seo_id_connect')->nullable();
22 | $table->string('seo_url_connect')->nullable();
23 | $table->string('seo_type_connect')->nullable();
24 | $table->timestamps();
25 |
26 | $table->index(['seo_id_connect', 'seo_url_connect']);
27 | });
28 | }
29 | }
30 |
31 |
32 | /**
33 | * Reverse the migrations.
34 | *
35 | * @return void
36 | */
37 | public function down()
38 | {
39 | Schema::dropIfExists('seo');
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/database/migrations/2017_11_30_005151_create_link_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('id_parent')->unsigned();
19 | $table->integer('id_child')->unsigned();
20 | $table->char('model_parent', 191);
21 | $table->char('model_child', 191);
22 | $table->float('cost')->nullable();
23 | $table->timestamps();
24 | $table->index('id_parent');
25 | $table->index('id_child');
26 | $table->index('model_parent');
27 | $table->index('model_child');
28 | });
29 | }
30 | }
31 |
32 |
33 | /**
34 | * Reverse the migrations.
35 | *
36 | * @return void
37 | */
38 | public function down()
39 | {
40 | Schema::dropIfExists('link');
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/lang/en/apps.php:
--------------------------------------------------------------------------------
1 | array(
6 | 'success' => 'Content :name successfully changed',
7 | 'error' => 'Content :name not changed',
8 | 'nothing' => 'Content :name not required changes'
9 | ),
10 |
11 | 'delete' => array(
12 | 'success' => 'Content :name успешно удален',
13 | 'error' => 'Content :name не удален'
14 | ),
15 |
16 | 'create' => [
17 | 'success' => 'Content :name successfully created',
18 | 'success-temp' => 'Draft material added successfully',
19 | 'error' => 'Failed to add content :name',
20 | ],
21 |
22 | //Обновление поля
23 | 'row' => [
24 | 'update' => 'Поле :name успешно изменено',
25 | 'error' => 'Ошибка! Поле :name не изменено',
26 | 'blank' => 'Передано текущее значение поля :name. Ничего не изменено',
27 | '404' => 'Параметр :name не передан',
28 | ],
29 |
30 | //Параметры
31 | 'param' => [
32 | '404' => 'Параметр :name не передан',
33 | ],
34 |
35 | //Обновление других данных
36 | 'data' => [
37 | 'update' => 'Данные :name обновлены',
38 | 'error' => 'Ошибка! Данные :name не обновлены',
39 | 'blank' => 'Данные :name не требуют обновления',
40 | ],
41 |
42 | 'cache' => [
43 | 'clear' => 'Кеш успешно очищен'
44 | ],
45 |
46 | //Загрузка файлов
47 | 'upload' => [
48 | 'success' => 'Файл :name успешно загружен',
49 | 'error' => 'Ошибка! Файл :name не загружен',
50 | 'not_valid' => 'Ошибка! Файл :name не валиден для загрузки'
51 | ],
52 |
53 | //Удаление файлов
54 | 'delete' => [
55 | 'file' => 'Файл удален',
56 | 'file_name' => 'Файл :name удален',
57 | 'files' => 'Файлы удалены',
58 | ],
59 |
60 | '404' => 'Данные не найдены',
61 | ];
62 |
--------------------------------------------------------------------------------
/lang/ru/apps.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'success' => 'Материал :name успешно изменен',
8 | 'error' => 'Материал :name не обновлен',
9 | 'nothing' => 'Материал :name оставлен без изменений'
10 | ),
11 |
12 | 'delete' => array(
13 | 'success' => 'Материал :name успешно удален',
14 | 'error' => 'Материал :name не удален',
15 | 'file' => 'Файл удален',
16 | 'file_name' => 'Файл :name удален',
17 | 'files' => 'Файлы удалены',
18 | ),
19 |
20 | 'create' => [
21 | 'success' => 'Материал :name успешно добавлен',
22 | 'success-temp' => 'Черновик материала успешно добавлен',
23 | 'error' => 'Не удалось добавить материал :name',
24 | ],
25 |
26 | //Обновление поля
27 | 'row' => [
28 | 'update' => 'Поле :name успешно изменено',
29 | 'error' => 'Ошибка! Поле :name не изменено',
30 | 'blank' => 'Передано текущее значение поля :name. Ничего не изменено',
31 | '404' => 'Параметр :name не передан',
32 | ],
33 |
34 | //Параметры
35 | 'param' => [
36 | '404' => 'Параметр :name не передан',
37 | ],
38 |
39 | //Обновление других данных
40 | 'data' => [
41 | 'update' => 'Данные :name обновлены',
42 | 'error' => 'Ошибка! Данные :name не обновлены',
43 | 'blank' => 'Данные :name не требуют обновления',
44 | ],
45 |
46 | 'cache' => [
47 | 'clear' => 'Кеш успешно очищен'
48 | ],
49 |
50 | //Загрузка файлов
51 | 'upload' => [
52 | 'success' => 'Файл :name успешно загружен',
53 | 'error' => 'Ошибка! Файл :name не загружен',
54 | 'not_valid' => 'Ошибка! Файл :name не валиден для загрузки'
55 | ],
56 |
57 | '404' => 'Данные не найдены',
58 | ];
59 |
--------------------------------------------------------------------------------
/src/AdminDashboardController.php:
--------------------------------------------------------------------------------
1 | middleware($component->combineAdminMiddlewares());
14 | }
15 |
16 | public function index()
17 | {
18 | $data['coreVersions'] = Cache::rememberForever('coreVersion', function () {
19 | $filtered = [];
20 | if (\File::exists(base_path('composer.lock')) && $file = \File::get(base_path('composer.lock'))) {
21 | $json = json_decode($file);
22 | $packages = collect($json->packages);
23 | $filtered = $packages->filter(function ($value) {
24 | return strpos($value->name, 'larrock');
25 | });
26 | }
27 |
28 | return $filtered;
29 | });
30 |
31 | if (\count($data['coreVersions']) > 0) {
32 | Cache::rememberForever('coreVersionInstall', function () use ($data) {
33 | foreach ($data['coreVersions'] as $item) {
34 | if ($item->name === 'fanamurov/larrock-core') {
35 | return $item->version;
36 | }
37 | }
38 | });
39 |
40 | $data['full_packages_list'] = [
41 | 'fanamurov/larrock-search' => 'Search content for larrockCMS',
42 | 'fanamurov/larrock-admin-seo' => 'SEO component for larrockCMS',
43 | 'fanamurov/larrock-blocks' => 'Template blocks component for larrockCMS',
44 | 'fanamurov/larrock-cart' => 'Cart to catalog component for larrockCMS',
45 | 'fanamurov/larrock-catalog' => 'Catalog component for larrockCMS',
46 | 'fanamurov/larrock-category' => 'Category component for larrockCMS',
47 | 'fanamurov/larrock-contact' => 'Send forms component for larrockCMS',
48 | 'fanamurov/larrock-core' => 'Core components for LarrockCMS',
49 | 'fanamurov/larrock-discount' => 'Discounts in catalog component for larrockCMS',
50 | 'fanamurov/larrock-feed' => 'Feeds items component for larrockCMS',
51 | 'fanamurov/larrock-menu' => 'Menu component for larrockCMS',
52 | 'fanamurov/larrock-pages' => 'Static pages component for larrockCMS',
53 | 'fanamurov/larrock-reviews' => 'Reviews component for larrockCMS',
54 | 'fanamurov/larrock-smartbanners' => 'Smartbanners component for larrockCMS',
55 | 'fanamurov/larrock-users' => 'Users component for larrockCMS',
56 | 'fanamurov/larrock-wizard' => 'Import .xlsx price to catalog component for larrockCMS',
57 | 'fanamurov/larrock-yandex-kassa' => 'Yandex.Kassa SDK bridge for larrockCMS',
58 | 'fanamurov/larrock-vscale' => 'Vscale API bridge for larrockCMS',
59 | ];
60 | foreach ($data['coreVersions'] as $item) {
61 | unset($data['full_packages_list'][$item->name]);
62 | }
63 | }
64 |
65 | $data['toDashboard'] = $this->componentToDashboard();
66 |
67 | return view('larrock::admin.dashboard.dashboard', $data);
68 | }
69 |
70 | protected function componentToDashboard()
71 | {
72 | $data = [];
73 | $components = config('larrock-to-dashboard.components');
74 | if (\is_array($components)) {
75 | foreach ($components as $item) {
76 | $data[] = $item->toDashboard();
77 | }
78 | }
79 |
80 | return $data;
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/src/Commands/LarrockAssetsCommand.php:
--------------------------------------------------------------------------------
1 | line('=== Install assets via bower ===');
31 |
32 | $libraries = ['fancybox', 'jquery-validation', 'jquery.cookie', 'fileapi', 'jquery.spinner', 'microplugin', 'pickadate',
33 | 'selectize', 'sifter', 'tinymce', 'uikit#2.27.5', ];
34 |
35 | foreach ($libraries as $library) {
36 | if (! \File::exists(base_path('public_html/_assets/bower_components/'.$library))) {
37 | echo shell_exec('bower install '.$library);
38 | if (\File::exists(base_path('public_html/_assets/bower_components/'.$library))) {
39 | $this->info('=== '.$library.' successfully installed ===');
40 | } else {
41 | $this->alert('=== ERROR! '.$library.' not installed ===');
42 | }
43 | } else {
44 | $this->info('=== '.$library.' already installed ===');
45 | }
46 | }
47 | $this->info('=== END of assets ===');
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/Commands/LarrockCheckCommand.php:
--------------------------------------------------------------------------------
1 | line('=== Check LarrockCMS configs ===');
31 | $errors = [];
32 |
33 | if (config('database.connections.mysql.strict') === true) {
34 | $errors[] = 'Mysql Strict: ON. Please change to false';
35 | }
36 |
37 | if (config('auth.providers.users.model') !== \Larrock\ComponentUsers\Models\User::class) {
38 | $errors[] = 'User Model: '.config('auth.providers.users.model').'. Please change auth.providers.users.model to \Larrock\ComponentUsers\Models\User::class';
39 | }
40 |
41 | if (config('breadcrumbs.view') !== 'larrock::front.modules.breadcrumbs.breadcrumbs') {
42 | $errors[] = 'Breadcrumbs.view: '.config('breadcrumbs.view').'. Please change config/breadcrumbs.php to larrock::front.modules.breadcrumbs.breadcrumbs';
43 | }
44 |
45 | if (config('jsvalidation.view') !== 'larrock::jsvalidation.uikit') {
46 | $errors[] = 'Jsvalidation.view: '.config('jsvalidation.view').'. Please change config/jsvalidation.php to larrock::jsvalidation.uikit';
47 | }
48 |
49 | if (config('jsvalidation.disable_remote_validation') !== true) {
50 | $errors[] = 'Jsvalidation.disable_remote_validation not true. Please change config/jsvalidation.php to true';
51 | }
52 |
53 | if (config('medialibrary.disk_name') !== 'media') {
54 | $errors[] = 'Please change medialibrary.disk_name to "media"';
55 | }
56 |
57 | if (config('medialibrary.path_generator') !== \Larrock\Core\Helpers\CustomPathGenerator::class) {
58 | $errors[] = 'Medialibrary path_generator '.config('laravel-medialibrary.custom_path_generator_class')
59 | .'. Please change config/medialibrary.php to path_generator => \Larrock\Core\Helpers\CustomPathGenerator::class';
60 | }
61 |
62 | if (config('filesystems.disks.media.root') !== base_path().'/public_html/media') {
63 | $errors[] = 'Medialibrary filesystems.disks.media.root '.config('filesystems.disks.media.root')
64 | .'. Please change config/filesystems.php to disks.media.root => base_path() .\'/public_html/media\'';
65 | }
66 |
67 | if (! env('MAIL_TO_ADMIN')) {
68 | $errors[] = '.env MAIL_TO_ADMIN not found (email address)';
69 | }
70 | if (! env('MAIL_FROM_NAME')) {
71 | $errors[] = '.env MAIL_FROM_NAME not found (sitename for emails)';
72 | }
73 | if (env('MAIL_STOP', false) !== false) {
74 | $errors[] = '.env MAIL_STOP='.env('MAIL_STOP').'. Mails not be send';
75 | }
76 | if (! env('SITE_NAME')) {
77 | $errors[] = '.env SITE_NAME not found';
78 | }
79 |
80 | if (\count($errors) > 0) {
81 | $this->error('Find errors:'.\count($errors));
82 | foreach ($errors as $key => $error) {
83 | $this->error(++$key.'.'.$error);
84 | }
85 | } else {
86 | $this->info('All OK');
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/src/Commands/LarrockInstallCommand.php:
--------------------------------------------------------------------------------
1 | option('fast');
31 |
32 | $this->line('=== Install LarrockCMS ===');
33 |
34 | if (env('DB_DATABASE') === 'homestead' && ! $this->confirm('Данные для доступа к БД оставлены по-умолчанию, все верно?')) {
35 | $this->error('Установка завершена некорректно. Пожалуйста, установите правильные данные для
36 | доступа к БД и выполните команду php artisan larrock:install');
37 |
38 | return false;
39 | }
40 |
41 | if ($fast) {
42 | $this->call('larrock:updateEnv');
43 | $this->call('larrock:renamePublicDirectory');
44 | $this->call('larrock:updateVendorConfig');
45 | $this->call('vendor:publish');
46 | $this->call('migrate');
47 | $this->call('larrock:addAdmin');
48 | $this->call('larrock:assets');
49 | } else {
50 | if ($this->confirm('Шаг 1/7. Обновить .env? (larrock:updateEnv)')) {
51 | $this->call('larrock:updateEnv');
52 | }
53 |
54 | if ($this->confirm('Шаг 2/7. Сменить директорию "public" на "public_html"? (larrock:renamePublicDirectory)')) {
55 | $this->call('larrock:renamePublicDirectory');
56 | }
57 |
58 | if ($this->confirm('Шаг 3/7. Обновить конфиги зависимостей? (larrock:updateVendorConfig)')) {
59 | $this->call('larrock:updateVendorConfig');
60 | }
61 |
62 | if ($this->confirm('Шаг 4/7. Опубликовать ресурсы (vendor:publish)?')) {
63 | $this->call('vendor:publish');
64 | }
65 |
66 | if ($this->confirm('Шаг 5/7. Выполнить миграции БД (migrate)?')) {
67 | $this->call('migrate');
68 | }
69 |
70 | if ($this->confirm('Шаг 6/7. Добавить пользователя администратора? (larrock:addAdmin)')) {
71 | $this->call('larrock:addAdmin');
72 | }
73 |
74 | if ($this->confirm('Шаг 7/7. Установить пакеты ресурсов для шаблонов? (larrock:assets)')) {
75 | $this->call('larrock:assets');
76 | }
77 | }
78 |
79 | $this->info('=== Install LarrockCMS successfully ended ===');
80 | $this->line('Проверка корректности установки LarrockCMS - php artisan larrock:check');
81 | $this->line('Если вы хотите установить пакеты не входящие в ядро LarrockCMS, выполните команду php artisan larrock:manager');
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/Commands/LarrockInstallCorePackagesCommand.php:
--------------------------------------------------------------------------------
1 | info('=== Install larrockCMS core components ===');
31 |
32 | echo shell_exec('composer require fanamurov/larrock-menu:^1.0 fanamurov/larrock-users:^1.0 fanamurov/larrock-pages:^1.0 fanamurov/larrock-blocks:^1.0 fanamurov/larrock-contact:^1.0 fanamurov/larrock-admin-seo:^1.0 fanamurov/larrock-search:^1.0 --prefer-dist');
33 |
34 | $this->info('LarrockCMS core components installed');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Commands/LarrockManagerCommand.php:
--------------------------------------------------------------------------------
1 | info('=== LarrockCMS Package manager ===');
31 |
32 | $packages = [
33 | 'fanamurov/larrock-catalog', 'fanamurov/larrock-cart', 'fanamurov/larrock-wizard',
34 | 'fanamurov/larrock-discount', 'fanamurov/larrock-feed', 'fanamurov/larrock-category',
35 | 'fanamurov/larrock-reviews', 'fanamurov/larrock-smartbanners', 'fanamurov/larrock-menu',
36 | 'fanamurov/larrock-users', 'fanamurov/larrock-pages', 'fanamurov/larrock-blocks',
37 | 'fanamurov/larrock-contact', 'fanamurov/larrock-admin-seo', 'fanamurov/larrock-search',
38 | 'fanamurov/larrock-yandex-kassa', 'fanamurov/larrock-vscale',
39 | ];
40 |
41 | $question = array_prepend($packages, 'All');
42 | $question[] = 'Do not install other packages';
43 |
44 | $name = $this->choice('What to install/update?', $question);
45 |
46 | if ($name === 'All') {
47 | $this->info('Install all packages LarrockCMS');
48 | echo shell_exec('composer require '.implode(':^1.* ', $packages).' --prefer-dist');
49 | } elseif ($name !== 'Do not install other packages') {
50 | $this->info('composer require fanamurov/'.$name.':^1.* --prefer-dist');
51 | echo shell_exec('composer require fanamurov/'.$name.':^1.* --prefer-dist');
52 | }
53 |
54 | if ($name !== 'Do not install other packages') {
55 | $this->call('vendor:publish');
56 | $this->call('migrate');
57 | }
58 |
59 | $this->info('The task is completed! Thank you for using LarrockCMS');
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/Commands/LarrockRenamePublicDirectoryCommand.php:
--------------------------------------------------------------------------------
1 | line('=== Rename public directory to "public_html" ===');
31 |
32 | if (! \File::exists(base_path('public_html/index.php'))) {
33 | \File::copyDirectory(base_path('public'), base_path('public_html'));
34 | \File::deleteDirectory(base_path('public'));
35 | $dir = str_replace('/Commands', '', __DIR__);
36 | \File::copy($dir.'/../configVendor/larrock-index-public_html_php', base_path('public_html/index.php'));
37 | $this->info('Directory and index.php successfully updated');
38 | } else {
39 | $this->info('The command is not required, the directory has already changed.');
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/Commands/LarrockUpdateEnvCommand.php:
--------------------------------------------------------------------------------
1 | line('=== Check Laravel .env ===');
32 |
33 | if (! env('LARROCK VARS')) {
34 | $this->info('=== Add LARROCK vars ===');
35 | \File::append(base_path('.env'), "\n\nLARROCK VARS=PLACED");
36 | }
37 |
38 | if (! env('MAIL_TEMPLATE_ADDRESS')) {
39 | \File::append(base_path('.env'), "\nMAIL_TEMPLATE_ADDRESS='company address'");
40 | $this->info('MAIL_FROM_ADDRESS not found. Add "company address"');
41 | }
42 |
43 | if (! env('MAIL_TEMPLATE_PHONE')) {
44 | \File::append(base_path('.env'), "\nMAIL_TEMPLATE_PHONE='company phone'");
45 | $this->info('MAIL_TEMPLATE_PHONE not found. Add "company phone"');
46 | }
47 |
48 | if (! env('MAIL_TEMPLATE_MAIL')) {
49 | \File::append(base_path('.env'), "\nMAIL_TEMPLATE_MAIL=admin@larrock-cms.ru");
50 | $this->info('MAIL_TEMPLATE_MAIL not found. Add "admin@larrock-cms.ru"');
51 | }
52 |
53 | if (! env('MAIL_FROM_ADDRESS')) {
54 | \File::append(base_path('.env'), "\nMAIL_FROM_ADDRESS=admin@larrock-cms.ru");
55 | $this->info('MAIL_FROM_ADDRESS not found. Add "admin@larrock-cms.ru"');
56 | }
57 |
58 | if (! env('MAIL_TO_ADMIN')) {
59 | \File::append(base_path('.env'), "\nMAIL_TO_ADMIN=admin@larrock-cms.ru");
60 | $this->info('MAIL_TO_ADMIN not found. Add "admin@larrock-cms.ru"');
61 | }
62 |
63 | if (! env('MAIL_FROM_NAME')) {
64 | \File::append(base_path('.env'), "\nMAIL_FROM_NAME='LARROCK'");
65 | $this->info('MAIL_FROM_NAME not found. Add "LARROCK"');
66 | }
67 |
68 | if (! env('SITE_NAME')) {
69 | \File::append(base_path('.env'), "\nSITE_NAME='LARROCK'");
70 | $this->info('SITE_NAME not found. Add "LARROCK"');
71 | }
72 |
73 | if (env('MAIL_STOP', false) !== false) {
74 | \File::append(base_path('.env'), "\nMAIL_STOP=false");
75 | $this->info('MAIL_STOP not found. Add "false"');
76 | }
77 |
78 | $this->info('.env vars currently installed');
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/Commands/LarrockUpdateVendorConfigCommand.php:
--------------------------------------------------------------------------------
1 | line('=== Update vendor configs ===');
31 |
32 | $dir = str_replace('/Commands', '', __DIR__);
33 |
34 | \File::copy($dir.'/../configVendor/auth.php', base_path('/config/auth.php'));
35 | \File::copy($dir.'/../configVendor/breadcrumbs.php', base_path('/config/breadcrumbs.php'));
36 | \File::copy($dir.'/../configVendor/filesystems.php', base_path('/config/filesystems.php'));
37 | \File::copy($dir.'/../configVendor/jsvalidation.php', base_path('/config/jsvalidation.php'));
38 | \File::copy($dir.'/../configVendor/medialibrary.php', base_path('/config/medialibrary.php'));
39 | \File::copy($dir.'/../configVendor/cart.php', base_path('/config/cart.php'));
40 | \File::copy($dir.'/../configVendor/database.php', base_path('/config/database.php'));
41 | \File::deleteDirectory(base_path('public'));
42 |
43 | $this->info('Configs successfully updated');
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/ComponentTraits/ComponentSearchTrait.php:
--------------------------------------------------------------------------------
1 | searchable = true;
24 | $this->search_title = $title;
25 |
26 | return $this;
27 | }
28 |
29 | /**
30 | * Данные для поиска по материалам компонента.
31 | * @param null|bool $admin Если TRUE - для поиска будут доступны вообще все элементы (не только опубликованные)
32 | * @return null
33 | */
34 | public function search($admin = null)
35 | {
36 | if ($this->searchable !== true) {
37 | return [];
38 | }
39 |
40 | return \Cache::rememberForever('search'.$this->name.$admin, function () use ($admin) {
41 | $data = [];
42 |
43 | if ($this->name !== 'feed' && $this->name !== 'catalog') {
44 | return [];
45 | }
46 |
47 | $model = new $this->model;
48 |
49 | $search_rows = ['id', $this->search_title];
50 |
51 | if (isset($this->rows['url'])) {
52 | $search_rows[] = 'url';
53 | }
54 |
55 | if (isset($this->rows['category']) && ! $this->rows['category'] instanceof FormTags) {
56 | $search_rows[] = 'category';
57 | }
58 |
59 | if ($admin) {
60 | if (isset($this->rows['category'])) {
61 | $model = $model::with(['getCategory']);
62 | }
63 | } else {
64 | if (isset($this->rows['category'])) {
65 | $model = $model::with(['getCategoryActive']);
66 | }
67 | }
68 |
69 | $items = $model->get($search_rows);
70 |
71 | foreach ($items as $item) {
72 | if (empty($item->{$this->search_title})) {
73 | unset($data[$item->id]);
74 | } else {
75 | $data[$item->id]['id'] = $item->id;
76 | $data[$item->id]['title'] = $item->{$this->search_title};
77 | $data[$item->id]['full_url'] = $item->full_url;
78 | $data[$item->id]['component'] = $this->name;
79 | $data[$item->id]['category'] = null;
80 | $data[$item->id]['admin_url'] = $item->admin_url;
81 | if ($admin) {
82 | if ($item->getCategory) {
83 | if (!isset($item->getCategory->id) && \count($item->getCategory) > 0) {
84 | $data[$item->id]['category'] = $item->getCategory->first()->title;
85 | } elseif (isset($item->getCategory->title)) {
86 | $data[$item->id]['category'] = $item->getCategory->title;
87 | } else {
88 | unset($data[$item->id]);
89 | }
90 | }
91 | } else {
92 | if ($item->getCategoryActive) {
93 | if (!isset($item->getCategoryActive->id) && \count($item->getCategoryActive) > 0) {
94 | $data[$item->id]['category'] = $item->getCategoryActive->first()->title;
95 | } elseif (isset($item->getCategoryActive->title)) {
96 | $data[$item->id]['category'] = $item->getCategoryActive->title;
97 | } else {
98 | unset($data[$item->id]);
99 | }
100 | }
101 | }
102 | }
103 | }
104 | if (\count($data) === 0) {
105 | return null;
106 | }
107 |
108 | return $data;
109 | });
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/src/Events/ComponentItemDestroyed.php:
--------------------------------------------------------------------------------
1 | component = $component;
37 | $this->model = $data;
38 | $this->request = $request;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Events/ComponentItemStored.php:
--------------------------------------------------------------------------------
1 | component = $component;
37 | $this->model = $data;
38 | $this->request = $request;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Events/ComponentItemUpdated.php:
--------------------------------------------------------------------------------
1 | component = $component;
37 | $this->model = $data;
38 | $this->request = $request;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Events/MessageLarrockEvent.php:
--------------------------------------------------------------------------------
1 | type = $type;
21 | $this->message = $message;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Exceptions/LarrockFormBuilderRowException.php:
--------------------------------------------------------------------------------
1 | active === true) {
17 | $menu[] = $item->renderAdminMenu();
18 | }
19 | }
20 |
21 | $other_items = \Config::get('larrock-core-adminmenu.other_items', []);
22 | foreach ($other_items as $item) {
23 | if ($item->active === true) {
24 | $menu_other[] = $item->renderAdminMenu();
25 | }
26 | }
27 |
28 | return ['menu' => $menu, 'menu_other' => $menu_other];
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Helpers/CustomPathGenerator.php:
--------------------------------------------------------------------------------
1 | getBasePath($media).'/';
20 | }
21 |
22 | /*
23 | * Get the path for conversions of the given media, relative to the root storage path.
24 | */
25 | public function getPathForConversions(Media $media): string
26 | {
27 | return $this->getBasePath($media).'/conversions/';
28 | }
29 |
30 | /*
31 | * Get the path for responsive images of the given media, relative to the root storage path.
32 | */
33 | public function getPathForResponsiveImages(Media $media): string
34 | {
35 | return $this->getBasePath($media).'/responsive-images/';
36 | }
37 |
38 | /*
39 | * Get a unique base path for the given media.
40 | */
41 | protected function getBasePath(Media $media): string
42 | {
43 | return class_basename($media->model_type).'/'.$media->name;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormButton.php:
--------------------------------------------------------------------------------
1 | buttonType = $buttonType;
21 |
22 | return $this;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormCategory.php:
--------------------------------------------------------------------------------
1 | max_items = $max;
35 |
36 | return $this;
37 | }
38 |
39 | /**
40 | * @return $this
41 | */
42 | public function setAllowEmpty()
43 | {
44 | $this->allow_empty = true;
45 |
46 | return $this;
47 | }
48 |
49 | /**
50 | * Установка связи поля с какой-либо моделью
51 | * Сейчас применяется в FormSelect, FormCategory.
52 | * @param Model $model
53 | * @param null $relation_name
54 | * @param null $group_by
55 | * @return $this
56 | */
57 | public function setConnect($model, $relation_name = null, $group_by = null)
58 | {
59 | $this->connect = collect();
60 | $this->connect->model = $model;
61 | $this->connect->relation_name = $relation_name;
62 | $this->connect->group_by = $group_by;
63 |
64 | return $this;
65 | }
66 |
67 | /**
68 | * Установка опции выборки значений для setConnect().
69 | * @param string $key
70 | * @param string $value
71 | * @return $this
72 | * @throws LarrockFormBuilderRowException
73 | */
74 | public function setWhereConnect(string $key, string $value)
75 | {
76 | if (! isset($this->connect->model)) {
77 | throw new LarrockFormBuilderRowException('У поля '.$this->name.' сначала нужно определить setConnect');
78 | }
79 | $this->connect->where_key = $key;
80 | $this->connect->where_value = $value;
81 |
82 | return $this;
83 | }
84 |
85 | /**
86 | * Отрисовка элемента формы.
87 | * @return string
88 | */
89 | public function __toString()
90 | {
91 | if (! isset($this->connect->model, $this->connect->relation_name)) {
92 | return 'Отрисовка не возможна! Поля model, relation_name не установлены через setConnect()';
93 | }
94 |
95 | if ($this->data && ! isset($this->data->{$this->name}) && $this->default) {
96 | $this->data->{$this->name} = $this->default;
97 | }
98 |
99 | $this->options = collect();
100 | /** @var \Eloquent $model */
101 | $model = new $this->connect->model;
102 | if (isset($this->connect->where_key)) {
103 | $get_options = $model::where($this->connect->where_key, '=', $this->connect->where_value)->get(['id', 'parent', 'level', 'title']);
104 | } else {
105 | $get_options = $model::get(['id', 'parent', 'level', 'title']);
106 | }
107 | if ($get_options) {
108 | foreach ($get_options as $get_options_value) {
109 | $this->options->push($get_options_value);
110 | }
111 | }
112 |
113 | $selected = null;
114 | if ($this->data) {
115 | $selected = $this->data->{$this->connect->relation_name};
116 | if (isset($selected->id)) {
117 | $once_category[] = $selected;
118 | $selected = $once_category;
119 | }
120 | }
121 |
122 | if ($selected === null
123 | && isset($this->data->{$this->name})
124 | && ($get_category = LarrockCategory::getModel()->whereId($this->data->{$this->name})->first())) {
125 | $selected[] = $get_category;
126 | }
127 |
128 | $tree = new Tree;
129 | $this->options = $tree->buildTree($this->options, 'parent');
130 |
131 | return View::make($this->FBTemplate, ['row_key' => $this->name,
132 | 'row_settings' => $this, 'data' => $this->data, 'selected' => $selected, ])->render();
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormCheckbox.php:
--------------------------------------------------------------------------------
1 | setDefaultValue(date('Y-m-d'));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormFile.php:
--------------------------------------------------------------------------------
1 | multiple = true;
23 |
24 | return $this;
25 | }
26 |
27 | /**
28 | * Устанавливает фильтр на типы файлов, которые вы можете отправить через поле загрузки файлов.
29 | * @param string $fileTypes
30 | * @return $this
31 | */
32 | public function setAccept(string $fileTypes)
33 | {
34 | $this->accept = $fileTypes;
35 |
36 | return $this;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormHidden.php:
--------------------------------------------------------------------------------
1 | typo = true;
20 |
21 | return $this;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormPassword.php:
--------------------------------------------------------------------------------
1 | allowCreate = true;
20 |
21 | return $this;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Helpers/FormBuilder/FormTextarea.php:
--------------------------------------------------------------------------------
1 | typo = true;
19 |
20 | return $this;
21 | }
22 |
23 | /**
24 | * @return $this
25 | */
26 | public function setNotEditor()
27 | {
28 | $this->cssClass .= ' not-editor';
29 |
30 | return $this;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/Helpers/MessageLarrock.php:
--------------------------------------------------------------------------------
1 | {$row_level}) {
24 | $a->{$row_level} = 0;
25 | }
26 | $new[$a->{$row_level}][] = $a;
27 | }
28 |
29 | return $this->createTree($new, Arr::get($new, 0, []));
30 | }
31 |
32 | /**
33 | * Вспомогательный метод для построения дерева
34 | * Прикрпепляем информацию о вложенности элемента ->level.
35 | *
36 | * @link http://stackoverflow.com/a/10332361/2748662
37 | * @param $list
38 | * @param array $parent
39 | * @param int $level
40 | * @return array
41 | */
42 | protected function createTree(&$list, $parent, $level = 1)
43 | {
44 | $tree = [];
45 | foreach ($parent as $l) {
46 | $l->level = $level;
47 | if (isset($list[$l->id])) {
48 | $l->children = $this->createTree($list, $list[$l->id], ++$level);
49 | $level--;
50 | }
51 | $tree[] = $l;
52 | }
53 |
54 | return $tree;
55 | }
56 |
57 | /**
58 | * Вспомогательный метод для получения массива все опубликованных разделов уровнем переданных в $categories и выше.
59 | *
60 | * @param $categories \Eloquent
61 | * @return mixed
62 | */
63 | public function listActiveCategories($categories)
64 | {
65 | $this->iterateActiveCategories($categories);
66 |
67 | return $this->activeCategory;
68 | }
69 |
70 | /**
71 | * Выборка опубликованных разделов, включая связи.
72 | *
73 | * @param $categories
74 | */
75 | protected function iterateActiveCategories($categories)
76 | {
77 | foreach ($categories as $category) {
78 | $this->activeCategory[] = $category->id;
79 | if (isset($category->get_childActive)) {
80 | $this->listActiveCategories($category->get_childActive);
81 | }
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/Listeners/CoreEventSubscriber.php:
--------------------------------------------------------------------------------
1 | listen(
19 | ComponentItemDestroyed::class,
20 | 'Larrock\Core\Plugins\ComponentPlugin@detach'
21 | );
22 |
23 | $events->listen(
24 | ComponentItemUpdated::class,
25 | 'Larrock\Core\Plugins\ComponentPlugin@attach'
26 | );
27 |
28 | $events->listen(
29 | ComponentItemStored::class,
30 | 'Larrock\Core\Plugins\ComponentPlugin@attach'
31 | );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/Middleware/AdminMenu.php:
--------------------------------------------------------------------------------
1 | topMenu());
22 |
23 | return $next($request);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Models/Config.php:
--------------------------------------------------------------------------------
1 | 'float',
37 | ];
38 |
39 | protected $appends = [
40 | 'cost',
41 | ];
42 |
43 | public function getFullDataChild()
44 | {
45 | $cache_key = sha1('getFullDataChild'.$this->model_child.$this->id_child);
46 |
47 | return Cache::rememberForever($cache_key, function () {
48 | $data = new $this->model_child;
49 |
50 | return $data->whereId($this->id_child)->first();
51 | });
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/Models/Seo.php:
--------------------------------------------------------------------------------
1 | 'integer',
43 | ];
44 |
45 | public function __construct(array $attributes = [])
46 | {
47 | parent::__construct($attributes);
48 | $this->fillable(LarrockSeo::addFillableUserRows([]));
49 | $this->config = LarrockSeo::getConfig();
50 | $this->table = LarrockSeo::getTable();
51 | }
52 |
53 | public function getConfig()
54 | {
55 | return $this->config;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/Plugins/PluginAnonsTrait.php:
--------------------------------------------------------------------------------
1 | rows['anons_merge'] = $rows_plugin[] = $row->setTab('anons', 'Создать анонс');
19 |
20 | $row = new FormTextarea('anons_description', 'Текст для анонса новости в модуле');
21 | $this->rows['anons_description'] = $rows_plugin[] = $row->setTab('anons', 'Создать анонс')->setTypo();
22 |
23 | $this->settings['anons_category'] = $categoryAnons;
24 | $this->plugins_backend['anons']['rows'] = $rows_plugin;
25 |
26 | return $this;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Plugins/PluginSeoTrait.php:
--------------------------------------------------------------------------------
1 | rows['seo_title'] = $rows_plugin[] = $row->setTab('seo', 'Seo')->setValid('max:255')
18 | ->setTypo()->setHelp('По-умолчанию равно заголовку материала');
19 |
20 | $row = new FormInput('seo_description', 'Description материала');
21 | $this->rows['seo_description'] = $rows_plugin[] = $row->setTab('seo', 'Seo')->setValid('max:255')
22 | ->setTypo()->setHelp('По-умолчанию равно заголовку материала');
23 |
24 | $row = new FormTextarea('seo_keywords', 'Keywords материала');
25 | $this->rows['seo_keywords'] = $rows_plugin[] = $row->setTab('seo', 'Seo')->setValid('max:255')
26 | ->setCssClass('not-editor uk-width-1-1');
27 |
28 | $this->plugins_backend['seo']['rows'] = $rows_plugin;
29 |
30 | $row = new FormInput('url', 'URL материала');
31 | $this->rows['url'] = $row->setTab('seo', 'SEO')
32 | ->setValid('max:155|required|unique:'.$this->table)->setCssClass('uk-width-1-1')->setFillable();
33 |
34 | return $this;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethods.php:
--------------------------------------------------------------------------------
1 | $request->get('title', 'Новый материал'),
26 | 'url' => str_slug($request->get('title', 'Новый материал')),
27 | ];
28 |
29 | if ($request->has('category')) {
30 | $post_rows['category'] = $request->get('category');
31 | }
32 |
33 | foreach ($this->config->rows as $row) {
34 | if (isset($row->modelChild) && $row->modelChild === \config('larrock.models.category', Category::class)) {
35 | if (! empty($request->get($row->name))) {
36 | if ($findCategory = \LarrockCategory::getModel()->whereComponent($this->config->name)->whereId($request->get($row->name))->first()) {
37 | $post_rows[$row->name] = $findCategory->id;
38 | } else {
39 | MessageLarrock::danger('Раздела с переданным id:'.$request->get($row->name).' не существует');
40 |
41 | return back()->withInput();
42 | }
43 | } else {
44 | if ($findCategory = \LarrockCategory::getModel()->whereComponent($this->config->name)->first()) {
45 | $post_rows[$row->name] = $findCategory->id;
46 | } else {
47 | MessageLarrock::danger('Создать материал пока нельзя. Сначала создайте для него раздел');
48 |
49 | return back()->withInput();
50 | }
51 | }
52 | }
53 | }
54 |
55 | $store = Request::create('/admin/'.$this->config->name, 'POST', $post_rows);
56 |
57 | if (! method_exists($this, 'store')) {
58 | $trait = new class {
59 | use AdminMethodsStore;
60 | };
61 |
62 | return $trait->updateConfig($this->config)->store($store);
63 | }
64 |
65 | return $this->store($store);
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethodsDestroy.php:
--------------------------------------------------------------------------------
1 | has('ids') && \is_array($request->get('ids'))) {
28 | foreach ($request->get('ids') as $id_item) {
29 | $this->destroyElement($request, $id_item);
30 | }
31 | Session::push('message.success', 'Удалено '.\count($request->get('ids')).' элементов');
32 |
33 | return back();
34 | }
35 | $this->destroyElement($request, $id);
36 | if ($request->has('category_item')) {
37 | return Redirect::to('/admin/'.$this->config->name.'/'.$request->get('category_item'));
38 | }
39 | if ($request->get('place') === 'material') {
40 | return Redirect::to('/admin/'.$this->config->name);
41 | }
42 |
43 | return back();
44 | }
45 |
46 | /**
47 | * Remove id element.
48 | * @param Request $request
49 | * @param $id
50 | * @throws \Exception
51 | */
52 | protected function destroyElement(Request $request, $id)
53 | {
54 | if ($data = $this->config->getModel()::find($id)) {
55 | if (method_exists($data, 'clearMediaCollection')) {
56 | $data->clearMediaCollection();
57 | }
58 | $name = $data->title;
59 |
60 | if ($data->delete()) {
61 | event(new ComponentItemDestroyed($this->config, $data, $request));
62 | \Cache::flush();
63 | Session::push('message.success', Lang::get('larrock::apps.delete.success', ['name' => $name]));
64 | } else {
65 | Session::push('message.danger', Lang::get('larrock::apps.delete.error', ['name' => $name]));
66 | }
67 | } else {
68 | Session::push('message.danger', 'Такого материала уже не существует');
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethodsEdit.php:
--------------------------------------------------------------------------------
1 | config->getModel()::findOrFail($id);
22 | $data['app'] = $this->config->tabbable($data['data']);
23 |
24 | $validator = JsValidator::make($this->config->getValid($id));
25 | View::share('validator', $validator);
26 |
27 | return view('larrock::admin.admin-builder.edit', $data);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethodsIndex.php:
--------------------------------------------------------------------------------
1 | config->rows['category'])) {
21 | $data['app_category'] = LarrockCategory::getConfig();
22 | $data['categories'] = LarrockCategory::getModel()->whereComponent($this->config->name)->whereLevel(1)
23 | ->orderBy('position', 'DESC')->orderBy('updated_at', 'ASC')->with(['getChild', 'getParent'])->paginate(30);
24 |
25 | return view('larrock::admin.admin-builder.categories', $data);
26 | }
27 |
28 | if (array_key_exists('position', $this->config->rows)) {
29 | $data['data'] = $this->config->getModel()::orderBy('position', 'DESC')->paginate(30);
30 | } else {
31 | $data['data'] = $this->config->getModel()::paginate(30);
32 | }
33 |
34 | return view('larrock::admin.admin-builder.index', $data);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethodsShow.php:
--------------------------------------------------------------------------------
1 | config->getModelName());
24 | $data['category'] = Cache::rememberForever($cache_key, function () use ($id) {
25 | return LarrockCategory::getModel()->whereId($id)->with(['getChild', 'getParent'])->firstOrFail();
26 | });
27 | $cache_key = sha1('AdminMethodsShowData'.$id.$this->config->getModelName());
28 | $data['data'] = Cache::rememberForever($cache_key, function () use ($id) {
29 | return $this->config->getModel()->whereHas('getCategory', function ($q) use ($id) {
30 | $q->where('category.id', '=', $id);
31 | })->get();
32 | });
33 |
34 | return view('larrock::admin.admin-builder.categories', $data);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethodsStore.php:
--------------------------------------------------------------------------------
1 | config = $config;
32 |
33 | return $this;
34 | }
35 |
36 | /**
37 | * Store a newly created resource in storage.
38 | *
39 | * @param \Illuminate\Http\Request $request
40 | * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Http\RedirectResponse|\Illuminate\Http\Response
41 | * @throws \Exception
42 | */
43 | public function store(Request $request)
44 | {
45 | $validate_data_array = $request->all();
46 | $data = $this->config->getModel();
47 | $data->fill($request->all());
48 |
49 | foreach ($this->config->rows as $row) {
50 | if ($row->fillable && ! isset($data->{$row->name})) {
51 | if ($row instanceof FormDate) {
52 | $data->{$row->name} = $request->input('date', date('Y-m-d'));
53 | } else {
54 | $data->{$row->name} = $request->input($row->name, $row->default);
55 | }
56 | $validate_data_array[$row->name] = $data->{$row->name};
57 | }
58 | }
59 |
60 | $validator = Validator::make($validate_data_array, $this->config->getValid());
61 | if ($validator->fails()) {
62 | if ($this->allow_redirect) {
63 | if (array_key_exists('url', $validator->failed())) {
64 | $search = $this->config->getModel()::whereUrl($data->url)->first();
65 | MessageLarrock::danger('Материал с тарим url уже существует: /admin/'.$this->config->name.'/'.$search->id.'/edit');
66 | }
67 |
68 | return back()->withInput($request->except('password'))->withErrors($validator);
69 | }
70 |
71 | return response()->json(['status' => 'danger', 'message' => $validator->errors()->first()]);
72 | }
73 |
74 | $data->save();
75 | event(new ComponentItemStored($this->config, $data, $request));
76 | \Cache::flush();
77 | Session::push('message.success', 'Материал '.$request->input('title').' добавлен');
78 | if ($this->allow_redirect) {
79 | return Redirect::to('/admin/'.$this->config->name.'/'.$data->id.'/edit')->withInput();
80 | }
81 |
82 | return $data;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/Traits/AdminMethodsUpdate.php:
--------------------------------------------------------------------------------
1 | all();
31 | $data = $this->config->getModel()::find($id);
32 | $data->fill($request->all());
33 |
34 | foreach ($this->config->rows as $row) {
35 | if ($row->fillable && ! isset($data->{$row->name})) {
36 | if ($row instanceof FormDate) {
37 | $data->{$row->name} = $request->input('date', date('Y-m-d'));
38 | } else {
39 | $data->{$row->name} = $request->input($row->name, $row->default);
40 | }
41 | $validate_data_array[$row->name] = $data->{$row->name};
42 | }
43 | if ($row instanceof FormCheckbox && empty($request->get($row->name, null))) {
44 | $data->{$row->name} = null;
45 | }
46 | }
47 |
48 | $validator = Validator::make($validate_data_array, $this->config->getValid($id));
49 | if ($validator->fails()) {
50 | return back()->withInput($request->except('password'))->withErrors($validator);
51 | }
52 |
53 | $data->save();
54 | event(new ComponentItemUpdated($this->config, $data, $request));
55 | MessageLarrock::success('Материал '.$request->input('title').' изменен');
56 | \Cache::flush();
57 |
58 | return back();
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/Traits/GetAdminLink.php:
--------------------------------------------------------------------------------
1 | id.$this->config->name);
12 |
13 | return Cache::rememberForever($cache_key, function () {
14 | return '/admin/'.$this->config->name.'/'.$this->id.'/edit';
15 | });
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Traits/GetFilesAndImages.php:
--------------------------------------------------------------------------------
1 | addMediaConversion('110x110')
21 | ->height(110)->width(110)
22 | ->performOnCollections('images');
23 |
24 | $this->addMediaConversion('140x140')
25 | ->height(140)->width(140)
26 | ->performOnCollections('images');
27 |
28 | if ($this->config->customMediaConversions) {
29 | foreach ($this->config->customMediaConversions as $conversion) {
30 | $explode = explode('x', $conversion);
31 | $this->addMediaConversion($conversion)
32 | ->height($explode[0])->width($explode[1])
33 | ->performOnCollections('images');
34 | }
35 | }
36 | }
37 |
38 | public function getFiles()
39 | {
40 | return $this->hasMany('Spatie\MediaLibrary\Models\Media', 'model_id', 'id')
41 | ->where([['model_type', '=', $this->config->model], ['collection_name', '=', 'files']])->orderBy('order_column', 'DESC');
42 | }
43 |
44 | public function getImages()
45 | {
46 | return $this->hasMany('Spatie\MediaLibrary\Models\Media', 'model_id', 'id')
47 | ->where([['model_type', '=', $this->config->model], ['collection_name', '=', 'images']])->orderBy('order_column', 'DESC');
48 | }
49 |
50 | public function getFirstImage()
51 | {
52 | return $this->hasOne('Spatie\MediaLibrary\Models\Media', 'model_id', 'id')
53 | ->where([['model_type', '=', $this->config->model], ['collection_name', '=', 'images']])->orderBy('order_column', 'DESC');
54 | }
55 |
56 | public function getFirstImageAttribute()
57 | {
58 | $value = Cache::rememberForever(sha1('image_f_category'.$this->id.'_'.$this->config->model), function () {
59 | if (config('larrock.catalog.categoryImageForItem', false) === true && $this instanceof Catalog) {
60 | if ($get_image = $this->getMedia('images')->sortByDesc('order_column')->first()) {
61 | return $get_image->getUrl();
62 | } elseif ($get_image_category = $this->getCategoryActive->first()->getMedia('images')->sortByDesc('order_column')->first()) {
63 | return $get_image_category->getUrl();
64 | }
65 |
66 | return '/_assets/_front/_images/empty_big.png';
67 | }
68 |
69 | if ($get_image = $this->getMedia('images')->sortByDesc('order_column')->first()) {
70 | return $get_image->getUrl();
71 | }
72 |
73 | return '/_assets/_front/_images/empty_big.png';
74 | });
75 |
76 | return $value;
77 | }
78 |
79 | public function getFirstImage110Attribute()
80 | {
81 | $value = Cache::rememberForever(sha1('image_f110_category'.$this->id.'_'.$this->config->model), function () {
82 | if ($get_image = $this->getMedia('images')->sortByDesc('order_column')->first()) {
83 | return $get_image->getUrl('110x110');
84 | }
85 |
86 | return '/_assets/_front/_images/empty_big.png';
87 | });
88 |
89 | return $value;
90 | }
91 |
92 | public function getFirstImage140Attribute()
93 | {
94 | $value = Cache::rememberForever(sha1('image_f140_category'.$this->id.'_'.$this->config->model), function () {
95 | if ($get_image = $this->getMedia('images')->sortByDesc('order_column')->first()) {
96 | return $get_image->getUrl('140x140');
97 | }
98 |
99 | return '/_assets/_front/_images/empty_big.png';
100 | });
101 |
102 | return $value;
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/src/Traits/GetSeo.php:
--------------------------------------------------------------------------------
1 | hasOne(Seo::class, 'seo_id_connect', 'id')->whereSeoTypeConnect($this->config->name);
13 | }
14 |
15 | public function getGetSeoTitleAttribute()
16 | {
17 | $cache_key = sha1('getGetSeoTitleAttribute'.$this->id.$this->config->name);
18 |
19 | return Cache::rememberForever($cache_key, function () {
20 | if (($get_seo = Seo::whereSeoUrlConnect($this->url)->whereSeoTypeConnect($this->config->name)->first()) && $get_seo->seo_title) {
21 | return $get_seo->seo_title;
22 | }
23 | if (($get_seo = Seo::whereSeoIdConnect($this->id)->whereSeoTypeConnect($this->config->name)->first()) && $get_seo->seo_title) {
24 | return $get_seo->seo_title;
25 | }
26 |
27 | return $this->title;
28 | });
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/Traits/ShareMethods.php:
--------------------------------------------------------------------------------
1 | config('larrock-sitemap')])->header('Content-Type', 'application/xml');
5 | });
6 |
7 | Route::group(['prefix' => 'admin'], function () {
8 | Route::get('/', [
9 | 'as' => 'admin.home', 'uses' => 'Larrock\Core\AdminDashboardController@index',
10 | ]); //Роут главной страницы админки
11 |
12 | Route::post('ajax/EditRow', 'Larrock\Core\AdminAjax@EditRow');
13 | Route::post('ajax/ClearCache', 'Larrock\Core\AdminAjax@ClearCache');
14 | Route::post('ajax/UploadFile', 'Larrock\Core\AdminAjax@UploadFile');
15 | Route::post('ajax/UploadImage', 'Larrock\Core\AdminAjax@UploadImage');
16 | Route::post('ajax/GetUploadedMedia', 'Larrock\Core\AdminAjax@GetUploadedMedia');
17 | Route::post('ajax/DeleteUploadedMedia', 'Larrock\Core\AdminAjax@DeleteUploadedMedia');
18 | Route::post('ajax/DeleteAllUploadedMediaByType', 'Larrock\Core\AdminAjax@DeleteAllUploadedMediaByType');
19 | Route::post('ajax/CustomProperties', 'Larrock\Core\AdminAjax@CustomProperties');
20 | Route::post('ajax/TypographLight', 'Larrock\Core\AdminAjax@TypographLight');
21 | Route::post('ajax/Translit', 'Larrock\Core\AdminAjax@Translit');
22 | });
23 |
24 | Breadcrumbs::register('admin.edit', function ($breadcrumbs, $data) {
25 | $current_level = null;
26 | $breadcrumbs->parent('admin.'.$data->getConfig()->name.'.index');
27 | if ($data->getCategory) {
28 | if (isset($data->getCategory->id)) {
29 | foreach ($data->getCategory->parent_tree as $item) {
30 | $active = ' [Не опубликован!]';
31 | if ($item->active === 1) {
32 | $active = '';
33 | }
34 | $breadcrumbs->push($item->title.$active, '/admin/'.$data->getConfig()->name.'/'.$item->id);
35 | }
36 | $current_level = $data->getConfig()->getModel()->whereCategory($data->getCategory->id)->orderBy('updated_at', 'DESC')->take('15')->get();
37 | } else {
38 | if (\count($data->getCategory) > 0) {
39 | foreach ($data->getCategory->first()->parent_tree as $item) {
40 | $active = ' [Не опубликован!]';
41 | if ($item->active === 1) {
42 | $active = '';
43 | }
44 | $breadcrumbs->push($item->title.$active, '/admin/'.$data->getConfig()->name.'/'.$item->id);
45 | }
46 | } else {
47 | $breadcrumbs->push('[Раздел не найден]');
48 | }
49 | }
50 | } else {
51 | if ($data->parent) {
52 | $breadcrumbs->push($data->getConfig()->title, '/admin/'.$data->getConfig()->name.'/'.$data->parent);
53 | }
54 | }
55 | if ($data->title) {
56 | $active = ' [Не опубликован!]';
57 | if ($data->active === 1) {
58 | $active = '';
59 | }
60 | $breadcrumbs->push($data->title.$active, '/admin/'.$data->getConfig()->getName().'/'.$data->id, ['current_level' => $current_level]);
61 | } else {
62 | $breadcrumbs->push('Элемент');
63 | }
64 | });
65 |
--------------------------------------------------------------------------------
/views/admin/admin-builder/additional-rows-td.blade.php:
--------------------------------------------------------------------------------
1 | @if(isset($allowUpdate))
2 |
В конфиге компонента указан этот плагин, но данные для него не получены, используйте метод getFiles
27 | @endif -------------------------------------------------------------------------------- /views/admin/admin-builder/plugins/images/getUploadedImages.blade.php: -------------------------------------------------------------------------------- 1 |В конфиге компонента указан этот плагин, но данные для него не получены, используйте метод getFiles
32 | @endif -------------------------------------------------------------------------------- /views/admin/breadcrumb/breadcrumb.blade.php: -------------------------------------------------------------------------------- 1 | @if ($breadcrumbs) 2 | 11 | 12 | @if(isset(collect($breadcrumbs)->last()->current_level)) 13 | 23 | @endif 24 | @endif 25 | -------------------------------------------------------------------------------- /views/admin/dashboard/dashboard.blade.php: -------------------------------------------------------------------------------- 1 | @extends('larrock::admin.main') 2 | @section('title') Larrock Dashboard @endsection 3 | 4 | @section('content') 5 |Статистика версий установленных компонентов не доступна. Файл composer.lock не прочитан.
52 | @endif 53 |{{ $row_settings->help }}
15 | @endif 16 |