├── .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 | 3 | Свойства 4 | 5 | @endif 6 | @if(isset($allowDestroy)) 7 | 8 |
9 | 10 | 11 | 12 | {{ csrf_field() }} 13 | 14 |
15 | 16 | @endif -------------------------------------------------------------------------------- /views/admin/admin-builder/additional-rows-th.blade.php: -------------------------------------------------------------------------------- 1 | @if(isset($allowUpdate)) 2 | 3 | @endif 4 | @if(isset($allowDestroy)) 5 | 6 | @endif -------------------------------------------------------------------------------- /views/admin/admin-builder/massive-action.blade.php: -------------------------------------------------------------------------------- 1 | @if(isset($allowDestroy)) 2 |
3 | 8 | {{ method_field('DELETE') }} 9 | {{ csrf_field() }} 10 | Выделено: 0 элементов. 11 |
12 | @endif -------------------------------------------------------------------------------- /views/admin/admin-builder/plugins/files/getUploadedFiles.blade.php: -------------------------------------------------------------------------------- 1 |
2 | @foreach($data as $file_item) 3 |
4 |
5 | 8 |
9 | 10 | 15 |
16 |
17 | 18 | 23 |
24 |
25 | 26 | 31 |
32 |
33 |
34 | 39 |
40 |
41 |
42 | @endforeach 43 |
-------------------------------------------------------------------------------- /views/admin/admin-builder/plugins/files/tab-data-files.blade.php: -------------------------------------------------------------------------------- 1 | @if(isset($data->getFiles)) 2 |
  • 3 |
    4 | 8 | @if(count($data->getFiles) > 0) 9 | 11 | @endif 12 |
    13 |
    Выберите файлы для загрузки
    14 | 15 |
    или перетащите сюда файлы мышкой
    16 |
    17 | 20 |
    21 | @include('larrock::admin.admin-builder.plugins.files.getUploadedFiles', ['data' => $data->getFiles, 'app' => $app]) 22 |
    23 |
    24 |
  • 25 | @else 26 |

    В конфиге компонента указан этот плагин, но данные для него не получены, используйте метод getFiles

    27 | @endif -------------------------------------------------------------------------------- /views/admin/admin-builder/plugins/images/getUploadedImages.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @foreach($data as $image_value) 3 |
    4 |
    5 |
    6 | 7 | Фото 8 |
    9 | 14 |
    15 | {{ $image_value->humanReadableSize }} 16 |
    17 |
    18 |
    19 | {{ $image_value->file_name }}
    20 | @foreach($image_value->getMediaConversionNames() as $conv) 21 | [{{ $conv }}] 22 | @endforeach 23 |
    24 |
    25 | 26 | 31 |
    32 |
    33 | 34 | 39 |
    40 |
    41 | 42 | 47 |
    48 |
    49 |
    50 |
    51 |
    52 | @endforeach 53 |
    -------------------------------------------------------------------------------- /views/admin/admin-builder/plugins/images/tab-data-images.blade.php: -------------------------------------------------------------------------------- 1 | @if(isset($data->getImages)) 2 |
  • 3 |
    4 | 8 | 12 | @if(count($data->getImages) > 0) 13 | 15 | @endif 16 |
    17 |
    Выберите файлы для загрузки
    18 | 19 |
    или перетащите сюда файлы мышкой
    20 |
    21 | 24 |
    25 |
    26 | @include('larrock::admin.admin-builder.plugins.images.getUploadedImages', ['data' => $data->getImages, 'app' => $app]) 27 |
    28 |
    29 |
  • 30 | @else 31 |

    В конфиге компонента указан этот плагин, но данные для него не получены, используйте метод getFiles

    32 | @endif -------------------------------------------------------------------------------- /views/admin/breadcrumb/breadcrumb.blade.php: -------------------------------------------------------------------------------- 1 | @if ($breadcrumbs) 2 | 11 | 12 | @if(isset(collect($breadcrumbs)->last()->current_level)) 13 | 14 | 15 |
    16 | 21 |
    22 |
    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 |
    6 | @if(count($toDashboard) > 0) 7 |
    8 | @foreach($toDashboard as $item) 9 | {!! $item !!} 10 | @endforeach 11 |
    12 | @endif 13 | 14 | @if(count($coreVersions) > 0) 15 |
    16 | 19 | 49 |
    50 | @else 51 |

    Статистика версий установленных компонентов не доступна. Файл composer.lock не прочитан.

    52 | @endif 53 |
    54 | @endsection -------------------------------------------------------------------------------- /views/admin/formbuilder/button/button.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 4 | @if($row_settings->help) 5 | ({{ $row_settings->help }}) 6 | @endif 7 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/checkbox/default.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 10 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/input/date.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 |
    9 | 10 | 12 |
    13 | @if($row_settings->help) 14 |

    {{ $row_settings->help }}

    15 | @endif 16 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/input/dateDay.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 |
    9 | 10 | @if($data->{$row_key} > \Carbon\Carbon::createFromFormat('Y-m-d h:s:i', '2015-01-01 00:00:00')) 11 | 13 | @else 14 | 16 | @endif 17 |
    18 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/input/file.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 | multiple) multiple @endif name="{{ $row_key }}@if($row_settings->multiple)[]@endif" 9 | class="uk-input uk-width-1-1 {{ $row_settings->cssClass }}" id="{{ $row_key }}" 10 | @if($row_settings->accept) accept="{{ $row_settings->accept }}" @endif> 11 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/input/hidden.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 | 11 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/input/input.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 | @if($row_settings->typo) 9 |
    10 |
    11 | model)) data-table="{{ $package->model }}" @endif> 15 |
    16 |
    17 | 18 | @if($row_key === 'title') 19 | 20 | @endif 21 |
    22 |
    23 | @else 24 | 27 | @endif 28 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/input/password.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 | 11 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/select/key.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 | 18 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/select/row.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 |
    9 | 23 |
    Создать
    24 |
    25 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/select/value.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 11 | 45 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/tags/categoryTree.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 |
    9 | 21 |
    22 | 56 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/tags/tags.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 |
    9 | 17 | 18 | @if($row_settings->costValue) 19 |
    20 | @foreach($selected as $value) 21 |
    22 | 23 | 24 | {{ $data->what }} 25 |
    26 | @endforeach 27 |
    28 | @endif 29 |
    30 | 31 | 63 |
    -------------------------------------------------------------------------------- /views/admin/formbuilder/textarea/editor.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 | 9 |
    -------------------------------------------------------------------------------- /views/admin/pagination/uikit3.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 36 | @endif 37 | -------------------------------------------------------------------------------- /views/admin/sectionmenu/top.blade.php: -------------------------------------------------------------------------------- 1 | 38 | 39 |
    40 |
    41 |
    42 | 43 |
      44 | @foreach($menu as $item) 45 | {!! $item !!} 46 | @endforeach 47 |
    • 48 | Прочее 49 |
      50 |
        51 | @foreach($menu_other as $item) 52 | {!! $item !!} 53 | @endforeach 54 |
      • Система
      • 55 | @if(file_exists(public_path(). '/external/adminer.php')) 56 |
      • DB Adminer
      • 57 | @endif 58 |
      • 59 | Очистить кэш 60 |
      • 61 |
      62 |
      63 |
    • 64 |
    65 |
    66 |
    67 |
    -------------------------------------------------------------------------------- /views/admin/sectionmenu/types/default.blade.php: -------------------------------------------------------------------------------- 1 |
  • 2 | {{ $app->title }} @if(isset($count))[{{ $count }}]@endif 3 |
  • 4 | -------------------------------------------------------------------------------- /views/admin/sectionmenu/types/dropdown.blade.php: -------------------------------------------------------------------------------- 1 |
  • 2 | {{ $app->title }} @if(isset($count))[{{ $count }}]@endif 3 |
    4 | 21 |
    22 |
  • -------------------------------------------------------------------------------- /views/front/errors.blade.php: -------------------------------------------------------------------------------- 1 | @if(isset($errors)) 2 | @foreach($errors->all() as $error) 3 |
    4 | 5 | {!! $error !!} 6 |
    7 | @endforeach 8 | @endif 9 | @if(Session::has('message') && is_array(Session::get('message'))) 10 | @foreach(Session::get('message') as $type => $messages) 11 | @foreach($messages as $message) 12 |
    13 | @if($type === 'danger') @else @endif 14 | {{ $message }} 15 |
    16 | @endforeach 17 | @endforeach 18 | @php(\Illuminate\Support\Facades\Session::forget('message')) 19 | @endif -------------------------------------------------------------------------------- /views/front/main.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @include('larrock::front.sections.head') 5 | 6 | 7 |
    8 |
    9 | @include('larrock::front.sections.header') 10 |
    11 |
    12 |
    13 |
    14 |
    15 | @include('larrock::front.errors') 16 | @yield('content') 17 | @yield('contentBottom') 18 |
    19 | 20 | @if(isset($seofish) && count($seofish) > 0) 21 |
    22 | @include('larrock::front.modules.seofish.item') 23 |
    24 | @endif 25 |
    26 |
    27 |
    28 | 29 |
    30 | @yield('front.modules.list.catalog') 31 | @if(isset($anons) && count($anons) > 0) 32 | @include('vendor.larrock.front.modules.list.news', ['data' => $anons]) 33 | @endif 34 | @if(isset($RandomCatalogItems)) 35 | @include('larrock::front.modules.list.random_catalog_items', $RandomCatalogItems) 36 | @endif 37 |
    38 | 39 | @if(env('SMARTBANNERS') === true) 40 | {!! $smartbanners !!} 41 | @endif 42 | 43 |
    44 |
    45 |
    46 |
    47 |
    48 | @include('larrock::front.sections.footer') 49 |
    50 |
    51 |
    52 |
    53 |
    54 | Загрузка... 55 |
    56 |
    57 | @include('larrock::front.sections.bottom_scripts') 58 | 59 | -------------------------------------------------------------------------------- /views/front/modules/breadcrumbs/breadcrumbs.blade.php: -------------------------------------------------------------------------------- 1 | @if ($breadcrumbs) 2 | 11 | @endif 12 | -------------------------------------------------------------------------------- /views/front/modules/html/text.blade.php: -------------------------------------------------------------------------------- 1 | {!! $data->description !!} -------------------------------------------------------------------------------- /views/front/modules/pagination/uikit.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 36 | @endif 37 | -------------------------------------------------------------------------------- /views/front/modules/share/sharing.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    -------------------------------------------------------------------------------- /views/front/plugins/fileGallery/default.blade.php: -------------------------------------------------------------------------------- 1 | 14 |
    -------------------------------------------------------------------------------- /views/front/plugins/fileGallery/price.blade.php: -------------------------------------------------------------------------------- 1 | 14 |
    -------------------------------------------------------------------------------- /views/front/plugins/photoGallery/blocks.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/front/plugins/photoGallery/blocksBig.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/front/plugins/photoGallery/news.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/front/plugins/photoGallery/newsDescription.blade.php: -------------------------------------------------------------------------------- 1 | 15 |
    -------------------------------------------------------------------------------- /views/front/plugins/photoGallery/nonFancy.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/front/plugins/photoGallery/sert.blade.php: -------------------------------------------------------------------------------- 1 | 21 |
    -------------------------------------------------------------------------------- /views/front/sections/bottom_scripts.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | @if(isset($validator)) {!! $validator->render() !!} @endif 17 | @stack('scripts') 18 | 19 | 20 | 21 | @if(App::environment() !== 'local') 22 | 23 | 24 | @endif -------------------------------------------------------------------------------- /views/front/sections/footer.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/front/sections/head.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | @yield('title') 6 | 7 | 8 | @yield('meta') 9 | 10 | 11 | 12 | 13 | 14 | @yield('styles') 15 | -------------------------------------------------------------------------------- /views/front/sections/header.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |
    5 | 6 |
    7 | @renderBlock(telefony_v_shapke) 8 |
    9 |
    10 | 19 |
    20 |
    21 | @if(isset($menu_default)) 22 |
    23 | @include('larrock::front.modules.menu.top', ['menu' => $menu_default]) 24 |
    25 | @endif 26 |
    -------------------------------------------------------------------------------- /views/front/sitemap.blade.php: -------------------------------------------------------------------------------- 1 | '."\n" ?> 2 | 5 | 6 | {{ env('APP_URL') }} 7 | {{ Carbon\Carbon::now()->format('Y-m-d\TH:i:sP') }} 8 | daily 9 | 1.0 10 | 11 | @foreach($data as $component ) 12 | @foreach($component as $componentItem) 13 | @foreach($componentItem->createSitemap() as $item) 14 | 15 | {{ env('APP_URL') }}{{ $item->fullUrl }} 16 | {{ Carbon\Carbon::parse($item->updated_at)->format('Y-m-d\TH:i:sP') }} 17 | monthly 18 | 1.0 19 | 20 | @endforeach 21 | @endforeach 22 | @endforeach 23 | -------------------------------------------------------------------------------- /views/jsvalidation/uikit.php: -------------------------------------------------------------------------------- 1 | 64 | --------------------------------------------------------------------------------