├── src ├── Console │ ├── stubs │ │ ├── extension │ │ │ ├── view.stub │ │ │ ├── README.md.stub │ │ │ ├── .gitignore.stub │ │ │ ├── routes.stub │ │ │ ├── controller.stub │ │ │ ├── extension.stub │ │ │ ├── composer.json.stub │ │ │ └── service-provider.stub │ │ ├── AuthController.stub │ │ ├── blank.stub │ │ ├── grid-row-action.stub │ │ ├── routes.stub │ │ ├── grid-batch-action.stub │ │ ├── action.stub │ │ ├── bootstrap.stub │ │ ├── step-form.stub │ │ └── HomeController.stub │ ├── MenuCommand.php │ ├── ControllerCommand.php │ └── PublishCommand.php ├── Grid │ ├── Filter │ │ ├── Equal.php │ │ ├── Ilike.php │ │ ├── EndsWith.php │ │ ├── StartsWith.php │ │ ├── NotIn.php │ │ ├── Day.php │ │ ├── Year.php │ │ ├── Month.php │ │ ├── Presenter │ │ │ └── Checkbox.php │ │ ├── Date.php │ │ ├── NotEqual.php │ │ ├── In.php │ │ ├── Gt.php │ │ ├── Lt.php │ │ ├── Hidden.php │ │ └── Like.php │ ├── Displayers │ │ ├── ContextMenuActions.php │ │ ├── Button.php │ │ ├── Suffix.php │ │ ├── Prefix.php │ │ ├── Link.php │ │ ├── Upload.php │ │ ├── Input.php │ │ ├── Textarea.php │ │ ├── Badge.php │ │ ├── Radio.php │ │ ├── Select.php │ │ ├── Datetime.php │ │ ├── Checkbox.php │ │ ├── MultipleSelect.php │ │ ├── ProgressBar.php │ │ ├── Secret.php │ │ └── Image.php │ ├── Exporters │ │ └── ExporterInterface.php │ ├── Selectable │ │ ├── Radio.php │ │ ├── Checkbox.php │ │ └── BrowserBtn.php │ ├── Actions │ │ ├── Show.php │ │ └── Edit.php │ ├── Concerns │ │ ├── CanFixHeader.php │ │ ├── CanDoubleClick.php │ │ ├── HasHeader.php │ │ ├── HasFooter.php │ │ └── CanFixColumns.php │ └── Tools │ │ ├── FilterButton.php │ │ └── CreateButton.php ├── Layout │ └── Buildable.php ├── Form │ ├── Field │ │ ├── Month.php │ │ ├── Year.php │ │ ├── Id.php │ │ ├── Display.php │ │ ├── Hidden.php │ │ ├── TimeRange.php │ │ ├── DatetimeRange.php │ │ ├── Nullable.php │ │ ├── Datetime.php │ │ ├── Password.php │ │ ├── Email.php │ │ ├── Time.php │ │ ├── Url.php │ │ ├── Rate.php │ │ ├── Editor.php │ │ ├── Timezone.php │ │ ├── Button.php │ │ ├── Divider.php │ │ ├── Mobile.php │ │ ├── Ip.php │ │ ├── Decimal.php │ │ ├── RadioCard.php │ │ ├── CheckboxCard.php │ │ ├── Icon.php │ │ ├── Slider.php │ │ └── RadioButton.php │ └── Concerns │ │ └── HandleCascadeFields.php ├── Show │ └── Divider.php ├── Controllers │ ├── ModelForm.php │ └── HasResourceActions.php ├── Widgets │ └── Navbar │ │ ├── RefreshButton.php │ │ └── Fullscreen.php ├── Middleware │ ├── Bootstrap.php │ └── Session.php ├── Traits │ ├── DefaultDatetimeFormat.php │ ├── ShouldSnakeAttributes.php │ └── AdminBuilder.php └── Actions │ ├── SweatAlert2.php │ └── Interactor │ └── Interactor.php ├── CHANGELOG.md ├── resources ├── views │ ├── partials │ │ ├── html.blade.php │ │ ├── style.blade.php │ │ ├── js.blade.php │ │ ├── css.blade.php │ │ ├── script.blade.php │ │ ├── toastr.blade.php │ │ └── footer.blade.php │ ├── form │ │ ├── hidden.blade.php │ │ ├── row.blade.php │ │ ├── help-block.blade.php │ │ ├── button.blade.php │ │ ├── id.blade.php │ │ ├── file.blade.php │ │ ├── display.blade.php │ │ ├── slider.blade.php │ │ ├── editor.blade.php │ │ ├── textarea.blade.php │ │ ├── embeds.blade.php │ │ ├── multiplefile.blade.php │ │ ├── switchfield.blade.php │ │ ├── error.blade.php │ │ ├── rate.blade.php │ │ ├── captcha.blade.php │ │ ├── map.blade.php │ │ ├── listbox.blade.php │ │ ├── tab.blade.php │ │ ├── multipleselect.blade.php │ │ ├── tags.blade.php │ │ ├── input.blade.php │ │ ├── radio.blade.php │ │ ├── radiobutton.blade.php │ │ └── belongsto.blade.php │ ├── actions │ │ └── form │ │ │ ├── hidden.blade.php │ │ │ ├── text.blade.php │ │ │ ├── date.blade.php │ │ │ ├── help-block.blade.php │ │ │ ├── file.blade.php │ │ │ ├── muitplefile.blade.php │ │ │ ├── textarea.blade.php │ │ │ ├── select.blade.php │ │ │ ├── multipleselect.blade.php │ │ │ ├── radio.blade.php │ │ │ └── checkbox.blade.php │ ├── grid │ │ ├── quick-create │ │ │ ├── text.blade.php │ │ │ ├── date.blade.php │ │ │ ├── select.blade.php │ │ │ ├── multipleselect.blade.php │ │ │ └── form.blade.php │ │ ├── total-row.blade.php │ │ ├── displayer │ │ │ └── table.blade.php │ │ ├── quick-search.blade.php │ │ └── inline-edit │ │ │ ├── textarea.blade.php │ │ │ └── input.blade.php │ ├── widgets │ │ ├── callout.blade.php │ │ ├── alert.blade.php │ │ ├── info-box.blade.php │ │ ├── table.blade.php │ │ ├── collapse.blade.php │ │ └── box.blade.php │ ├── filter │ │ ├── where.blade.php │ │ ├── gt.blade.php │ │ ├── lt.blade.php │ │ ├── select.blade.php │ │ ├── multipleselect.blade.php │ │ ├── radio.blade.php │ │ ├── checkbox.blade.php │ │ ├── between.blade.php │ │ ├── text.blade.php │ │ └── datetime.blade.php │ ├── show.blade.php │ ├── components │ │ └── refresh-btn.blade.php │ ├── show │ │ ├── panel.blade.php │ │ └── field.blade.php │ ├── tree │ │ └── branch.blade.php │ └── dashboard │ │ ├── title.blade.php │ │ └── environment.blade.php └── assets │ ├── AdminLTE │ ├── plugins │ │ ├── input-mask │ │ │ └── phone-codes │ │ │ │ └── readme.txt │ │ ├── iCheck │ │ │ ├── flat │ │ │ │ ├── aero.png │ │ │ │ ├── blue.png │ │ │ │ ├── flat.png │ │ │ │ ├── grey.png │ │ │ │ ├── pink.png │ │ │ │ ├── red.png │ │ │ │ ├── green.png │ │ │ │ ├── orange.png │ │ │ │ ├── purple.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── yellow.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── flat@2x.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple@2x.png │ │ │ │ └── yellow@2x.png │ │ │ ├── line │ │ │ │ ├── line.png │ │ │ │ └── line@2x.png │ │ │ ├── minimal │ │ │ │ ├── red.png │ │ │ │ ├── aero.png │ │ │ │ ├── blue.png │ │ │ │ ├── green.png │ │ │ │ ├── grey.png │ │ │ │ ├── orange.png │ │ │ │ ├── pink.png │ │ │ │ ├── purple.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── yellow.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── minimal.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── minimal@2x.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── purple@2x.png │ │ │ │ └── yellow@2x.png │ │ │ ├── square │ │ │ │ ├── aero.png │ │ │ │ ├── blue.png │ │ │ │ ├── grey.png │ │ │ │ ├── pink.png │ │ │ │ ├── red.png │ │ │ │ ├── aero@2x.png │ │ │ │ ├── blue@2x.png │ │ │ │ ├── green.png │ │ │ │ ├── grey@2x.png │ │ │ │ ├── orange.png │ │ │ │ ├── pink@2x.png │ │ │ │ ├── purple.png │ │ │ │ ├── red@2x.png │ │ │ │ ├── square.png │ │ │ │ ├── yellow.png │ │ │ │ ├── green@2x.png │ │ │ │ ├── orange@2x.png │ │ │ │ ├── purple@2x.png │ │ │ │ ├── square@2x.png │ │ │ │ └── yellow@2x.png │ │ │ ├── polaris │ │ │ │ ├── polaris.png │ │ │ │ └── polaris@2x.png │ │ │ └── futurico │ │ │ │ ├── futurico.png │ │ │ │ └── futurico@2x.png │ │ ├── colorpicker │ │ │ └── img │ │ │ │ ├── alpha.png │ │ │ │ ├── hue.png │ │ │ │ ├── saturation.png │ │ │ │ ├── hue-horizontal.png │ │ │ │ └── alpha-horizontal.png │ │ ├── ionslider │ │ │ └── img │ │ │ │ ├── sprite-skin-flat.png │ │ │ │ └── sprite-skin-nice.png │ │ └── select2 │ │ │ └── i18n │ │ │ ├── zh-TW.js │ │ │ ├── zh-CN.js │ │ │ ├── az.js │ │ │ ├── fi.js │ │ │ ├── ja.js │ │ │ ├── hu.js │ │ │ ├── tr.js │ │ │ ├── ko.js │ │ │ ├── th.js │ │ │ ├── id.js │ │ │ ├── vi.js │ │ │ ├── is.js │ │ │ ├── ar.js │ │ │ ├── de.js │ │ │ ├── et.js │ │ │ ├── sv.js │ │ │ ├── bg.js │ │ │ ├── km.js │ │ │ ├── nb.js │ │ │ ├── ms.js │ │ │ ├── gl.js │ │ │ ├── da.js │ │ │ ├── en.js │ │ │ ├── he.js │ │ │ ├── fa.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── mk.js │ │ │ ├── eu.js │ │ │ ├── pt-BR.js │ │ │ ├── pt.js │ │ │ ├── lv.js │ │ │ ├── es.js │ │ │ ├── ca.js │ │ │ ├── it.js │ │ │ ├── fr.js │ │ │ ├── ro.js │ │ │ ├── nl.js │ │ │ ├── lt.js │ │ │ ├── pl.js │ │ │ ├── el.js │ │ │ ├── sr.js │ │ │ ├── uk.js │ │ │ ├── sr-Cyrl.js │ │ │ └── ru.js │ ├── dist │ │ └── img │ │ │ ├── icons.png │ │ │ ├── boxed-bg.jpg │ │ │ ├── boxed-bg.png │ │ │ ├── default-50x50.gif │ │ │ └── user2-160x160.jpg │ └── bootstrap │ │ └── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── bootstrap3-editable │ └── img │ │ ├── clear.png │ │ └── loading.gif │ ├── font-awesome │ └── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── bootstrap-fileinput │ ├── img │ │ ├── loading.gif │ │ └── loading-sm.gif │ └── js │ │ └── plugins │ │ └── canvas-to-blob.min.js │ ├── google-fonts │ └── fonts │ │ ├── Source-Sans-Pro.eot │ │ ├── Source-Sans-Pro.ttf │ │ ├── Source-Sans-Pro.woff │ │ ├── Source-Sans-Pro.woff2 │ │ ├── Source-Sans-Pro-Bold.ttf │ │ ├── Source-Sans-Pro-Bold.woff │ │ ├── Source-Sans-Pro-Light.ttf │ │ ├── Source-Sans-Pro-Bold.woff2 │ │ ├── Source-Sans-Pro-Italic.ttf │ │ ├── Source-Sans-Pro-Italic.woff │ │ ├── Source-Sans-Pro-Italic.woff2 │ │ ├── Source-Sans-Pro-Light.woff │ │ ├── Source-Sans-Pro-Light.woff2 │ │ ├── Source-Sans-Pro-Semibold.ttf │ │ ├── Source-Sans-Pro-Semibold.woff │ │ ├── Source-Sans-Pro-Semibold.woff2 │ │ ├── Source-Sans-Pro-Light-Italic.ttf │ │ ├── Source-Sans-Pro-Light-Italic.woff │ │ ├── Source-Sans-Pro-Light-Italic.woff2 │ │ ├── Source-Sans-Pro-Semibold-Italic.ttf │ │ ├── Source-Sans-Pro-Semibold-Italic.woff │ │ └── Source-Sans-Pro-Semibold-Italic.woff2 │ └── flatpickr │ └── dist │ └── shortcut-buttons-flatpickr │ └── themes │ └── light.min.css ├── tests ├── assets │ └── test.jpg ├── models │ ├── File.php │ ├── Image.php │ ├── Profile.php │ ├── Tag.php │ ├── MultipleImage.php │ ├── Tree.php │ └── User.php ├── LaravelTest.php ├── routes.php ├── seeds │ └── UserTableSeeder.php ├── ModelTreeTest.php └── InstallTest.php ├── .gitignore ├── FUNDING.yml ├── docs ├── issue_template.md ├── zh │ ├── change-log.md │ ├── upgrade.md │ ├── model-grid-exporter.md │ ├── model-form-validation.md │ ├── extension-scheduling.md │ └── extension-config.md └── en │ ├── change-log.md │ ├── upgrade.md │ └── extension-scheduling.md ├── .github ├── dependabot.yml └── stale.yml ├── .travis.yml └── phpunit.xml.dist /src/Console/stubs/extension/view.stub: -------------------------------------------------------------------------------- 1 | Welcome to laravel-admin -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | See https://laravel-admin.org/docs/ 3 | -------------------------------------------------------------------------------- /src/Console/stubs/extension/README.md.stub: -------------------------------------------------------------------------------- 1 | laravel-admin extension 2 | ====== 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/views/partials/html.blade.php: -------------------------------------------------------------------------------- 1 | @foreach($html as $item) 2 | {!! $item !!} 3 | @endforeach 4 | -------------------------------------------------------------------------------- /tests/assets/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/tests/assets/test.jpg -------------------------------------------------------------------------------- /resources/views/partials/style.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/views/partials/js.blade.php: -------------------------------------------------------------------------------- 1 | @foreach($js as $j) 2 | 3 | @endforeach -------------------------------------------------------------------------------- /resources/views/partials/css.blade.php: -------------------------------------------------------------------------------- 1 | @foreach($css as $c) 2 | 3 | @endforeach -------------------------------------------------------------------------------- /src/Grid/Filter/Equal.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Console/stubs/extension/.gitignore.stub: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | phpunit.phar 3 | /vendor 4 | composer.phar 5 | composer.lock 6 | *.project 7 | .idea/ -------------------------------------------------------------------------------- /FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | open_collective: laravel-admin 4 | custom: http://laravel-admin.org/donate 5 | -------------------------------------------------------------------------------- /resources/views/actions/form/hidden.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Layout/Buildable.php: -------------------------------------------------------------------------------- 1 | $(function () {@foreach($script as $s) {!! $s !!} @endforeach}); 2 | -------------------------------------------------------------------------------- /src/Form/Field/Month.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/assets/bootstrap3-editable/img/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/bootstrap3-editable/img/clear.png -------------------------------------------------------------------------------- /resources/assets/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/Form/Field/Id.php: -------------------------------------------------------------------------------- 1 | 2 | @if(isset($title)) 3 |

{{ $title }}

4 | @endif 5 | {!! $content !!} 6 | -------------------------------------------------------------------------------- /src/Console/stubs/extension/routes.stub: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/colorpicker/img/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/colorpicker/img/saturation.png -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/futurico/futurico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/futurico/futurico.png -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/minimal/minimal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/minimal/minimal@2x.png -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/minimal/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/minimal/orange@2x.png -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/minimal/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/minimal/purple@2x.png -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/minimal/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/minimal/yellow@2x.png -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/polaris/polaris@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/polaris/polaris@2x.png -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Bold.woff2 -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Italic.ttf -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Italic.woff -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Italic.woff2 -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Light.woff -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Light.woff2 -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold.ttf -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/iCheck/futurico/futurico@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/iCheck/futurico/futurico@2x.png -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold.woff -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold.woff2 -------------------------------------------------------------------------------- /src/Form/Field/DatetimeRange.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @include('admin::actions.form.help-block') 5 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/colorpicker/img/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/plugins/colorpicker/img/alpha-horizontal.png -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Light-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Light-Italic.woff2 -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.ttf -------------------------------------------------------------------------------- /resources/assets/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /resources/assets/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff -------------------------------------------------------------------------------- /resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodeNinja0718/laravel_project/HEAD/resources/assets/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff2 -------------------------------------------------------------------------------- /src/Show/Divider.php: -------------------------------------------------------------------------------- 1 | '; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/models/File.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @include('admin::actions.form.help-block') 5 | -------------------------------------------------------------------------------- /resources/views/filter/where.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | @include($presenter->view()) 5 |
6 |
-------------------------------------------------------------------------------- /src/Grid/Filter/NotIn.php: -------------------------------------------------------------------------------- 1 | 2 | @foreach($fields as $field) 3 |
4 | {!! $field['element']->render() !!} 5 |
6 | @endforeach 7 | -------------------------------------------------------------------------------- /src/Grid/Displayers/ContextMenuActions.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | @include($presenter->view()) 5 |
6 | -------------------------------------------------------------------------------- /resources/views/filter/lt.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | @include($presenter->view()) 5 |
6 |
-------------------------------------------------------------------------------- /resources/views/form/help-block.blade.php: -------------------------------------------------------------------------------- 1 | @if($help) 2 | 3 |  {!! \Illuminate\Support\Arr::get($help, 'text') !!} 4 | 5 | @endif -------------------------------------------------------------------------------- /src/Console/stubs/AuthController.stub: -------------------------------------------------------------------------------- 1 | 3 |  {!! \Illuminate\Support\Arr::get($help, 'text') !!} 4 | 5 | @endif -------------------------------------------------------------------------------- /resources/views/widgets/alert.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |

{{ $title }}

4 | {!! $content !!} 5 |
-------------------------------------------------------------------------------- /resources/views/actions/form/file.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | @include('admin::actions.form.help-block') 5 |
6 | -------------------------------------------------------------------------------- /resources/views/grid/total-row.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | @foreach($columns as $column) 4 | {!! $column['value'] !!} 5 | @endforeach 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Controllers/ModelForm.php: -------------------------------------------------------------------------------- 1 | visit('/') 8 | ->assertResponseStatus(200) 9 | ->see('Laravel'); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /resources/views/actions/form/muitplefile.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | @include('admin::actions.form.help-block') 5 |
6 | -------------------------------------------------------------------------------- /src/Console/stubs/blank.stub: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! $panel !!} 4 |
5 | 6 |
7 | @foreach($relations as $relation) 8 | {!! $relation->render() !!} 9 | @endforeach 10 |
11 | -------------------------------------------------------------------------------- /src/Grid/Filter/Day.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /resources/views/actions/form/textarea.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | @include('admin::actions.form.help-block') 5 |
-------------------------------------------------------------------------------- /tests/models/Profile.php: -------------------------------------------------------------------------------- 1 | belongsTo(User::class, 'user_id'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Form/Field/Nullable.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | @foreach($options as $select => $option) 4 | 5 | @endforeach 6 | -------------------------------------------------------------------------------- /src/Form/Field/Datetime.php: -------------------------------------------------------------------------------- 1 | defaultAttribute('style', 'width: 160px'); 12 | 13 | return parent::render(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/models/Tag.php: -------------------------------------------------------------------------------- 1 | belongsToMany(User::class, 'test_user_tags', 'tag_id', 'user_id'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Form/Field/Password.php: -------------------------------------------------------------------------------- 1 | prepend('') 10 | ->defaultAttribute('type', 'password'); 11 | 12 | return parent::render(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /resources/views/filter/multipleselect.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Widgets/Navbar/RefreshButton.php: -------------------------------------------------------------------------------- 1 | prepend('') 12 | ->defaultAttribute('type', 'email'); 13 | 14 | return parent::render(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Form/Field/Time.php: -------------------------------------------------------------------------------- 1 | prepend('') 12 | ->defaultAttribute('style', 'width: 150px'); 13 | 14 | return parent::render(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Form/Field/Url.php: -------------------------------------------------------------------------------- 1 | prepend('') 12 | ->defaultAttribute('type', 'url'); 13 | 14 | return parent::render(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Form/Field/Rate.php: -------------------------------------------------------------------------------- 1 | prepend('') 10 | ->append('%') 11 | ->defaultAttribute('style', 'text-align:right;') 12 | ->defaultAttribute('placeholder', 0); 13 | 14 | return parent::render(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Grid/Filter/Presenter/Checkbox.php: -------------------------------------------------------------------------------- 1 | filter->getId()}').iCheck({checkboxClass:'icheckbox_minimal-blue'});"; 12 | 13 | Admin::script($script); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /resources/views/form/id.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 | 7 | @include('admin::form.help-block') 8 | 9 |
10 |
-------------------------------------------------------------------------------- /src/Grid/Displayers/Button.php: -------------------------------------------------------------------------------- 1 | map(function ($style) { 10 | return 'btn-'.$style; 11 | })->implode(' '); 12 | 13 | return "{$this->value}"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Grid/Selectable/Radio.php: -------------------------------------------------------------------------------- 1 | getAttribute($key); 12 | 13 | return << 15 | EOT; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /resources/views/components/refresh-btn.blade.php: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | 4 | 5 |
  • 6 | 12 | -------------------------------------------------------------------------------- /resources/views/widgets/info-box.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    {{ $info }}

    4 | 5 |

    {{ $name }}

    6 |
    7 |
    8 | 9 |
    10 | 11 | {{ trans('admin.more') }}  12 | 13 | 14 |
    -------------------------------------------------------------------------------- /src/Form/Field/Editor.php: -------------------------------------------------------------------------------- 1 | script = "CKEDITOR.replace('{$this->id}');"; 16 | 17 | return parent::render(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Grid/Selectable/Checkbox.php: -------------------------------------------------------------------------------- 1 | getAttribute($key); 12 | 13 | return << 15 | EOT; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /resources/views/widgets/table.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @foreach($headers as $header) 5 | 6 | @endforeach 7 | 8 | 9 | 10 | @foreach($rows as $row) 11 | 12 | @foreach($row as $item) 13 | 14 | @endforeach 15 | 16 | @endforeach 17 | 18 |
    {{ $header }}
    {!! $item !!}
    -------------------------------------------------------------------------------- /src/Console/stubs/grid-row-action.stub: -------------------------------------------------------------------------------- 1 | response()->success('Success message.')->refresh(); 17 | } 18 | DummyInteractor 19 | } -------------------------------------------------------------------------------- /src/Grid/Displayers/Suffix.php: -------------------------------------------------------------------------------- 1 | call($this->row, $this->getValue()); 11 | } 12 | 13 | return <<getValue()}{$delimiter}{$suffix} 15 | HTML; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Traits/DefaultDatetimeFormat.php: -------------------------------------------------------------------------------- 1 | version(), '7.0.0') < 0) { 12 | return parent::serializeDate($date); 13 | } 14 | 15 | return $date->format(Carbon::DEFAULT_TO_STRING_FORMAT); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 7.2 5 | - 7.3 6 | - 7.4 7 | - 8.0 8 | 9 | matrix: 10 | fast_finish: true 11 | allow_failures: 12 | - php: hhvm 13 | 14 | sudo: false 15 | 16 | services: 17 | - mysql 18 | 19 | before_script: 20 | - mysql -e 'create database if not exists laravel_admin_test;' 21 | - travis_retry composer self-update 22 | - travis_retry composer install --no-interaction 23 | 24 | script: 25 | - composer test 26 | -------------------------------------------------------------------------------- /docs/zh/change-log.md: -------------------------------------------------------------------------------- 1 | # Change log 2 | 3 | ## v1.2.9、v1.3.3、v1.4.1 4 | 5 | - 添加用户设置和修改头像功能 6 | - model-form自定义工具[参考](zh/model-form.md?id=自定义工具) 7 | - 内嵌表单支持[参考](zh/model-form-fields.md?id=embeds) 8 | - 支持自定义导航条(右上角)[参考](https://github.com/z-song/laravel-admin/issues/392) 9 | - 添加脚手架、数据库命令行工具、web artisan帮助工具[参考](zh/helpers.md) 10 | - 支持自定义登陆页面和登陆逻辑[参考](zh/qa.md?id=自定义登陆页面和登陆逻辑) 11 | - 表单支持设置宽度、设置action[参考](zh/model-form.md?id=其它方法) 12 | - 优化表格过滤器 13 | - 修复bug,优化代码和逻辑 -------------------------------------------------------------------------------- /docs/en/change-log.md: -------------------------------------------------------------------------------- 1 | # Change log 2 | 3 | ## v1.2.9、v1.3.3、v1.4.1 4 | 5 | - Add user settings and modify avatar function 6 | - Embedded form support 7 | - Support for customize navigation bar (upper right corner) 8 | - Add scaffolding, database command line tool, web artisan help tool 9 | - Support for customize login page and login logic 10 | - The form supports setting the width and setting the action 11 | - Optimize table filters 12 | - Fix bugs, optimize code and logic -------------------------------------------------------------------------------- /src/Console/stubs/extension/controller.stub: -------------------------------------------------------------------------------- 1 | title('Title') 14 | ->description('Description') 15 | ->body(view(':base_package::index')); 16 | } 17 | } -------------------------------------------------------------------------------- /src/Console/stubs/extension/extension.stub: -------------------------------------------------------------------------------- 1 | ':title', 17 | 'path' => ':path', 18 | 'icon' => 'fa-gears', 19 | ]; 20 | } -------------------------------------------------------------------------------- /src/Widgets/Navbar/Fullscreen.php: -------------------------------------------------------------------------------- 1 | config('admin.route.prefix'), 5 | 'namespace' => 'Tests\Controllers', 6 | 'middleware' => ['web', 'admin'], 7 | ], function ($router) { 8 | $router->resource('images', ImageController::class); 9 | $router->resource('multiple-images', MultipleImageController::class); 10 | $router->resource('files', FileController::class); 11 | $router->resource('users', UserController::class); 12 | }); 13 | -------------------------------------------------------------------------------- /src/Console/stubs/routes.stub: -------------------------------------------------------------------------------- 1 | config('admin.route.prefix'), 9 | 'namespace' => config('admin.route.namespace'), 10 | 'middleware' => config('admin.route.middleware'), 11 | 'as' => config('admin.route.prefix') . '.', 12 | ], function (Router $router) { 13 | 14 | $router->get('/', 'HomeController@index')->name('home'); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Prefix.php: -------------------------------------------------------------------------------- 1 | call($this->row, $this->getValue(), $this->getColumn()->getOriginal()); 11 | } 12 | 13 | return <<getValue()} 15 | HTML; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Grid/Actions/Show.php: -------------------------------------------------------------------------------- 1 | getResource()}/{$this->getKey()}"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/views/form/file.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | 11 | @include('admin::form.help-block') 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /resources/views/grid/displayer/table.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @foreach($titles as $column => $title) 5 | 6 | @endforeach 7 | 8 | 9 | 10 | @foreach($data as $datum) 11 | 12 | @foreach($datum as $key => $value) 13 | 14 | @endforeach 15 | 16 | @endforeach 17 | 18 |
    {{ $title }}
    {{ $value }}
    -------------------------------------------------------------------------------- /src/Form/Field/Timezone.php: -------------------------------------------------------------------------------- 1 | options = collect(DateTimeZone::listIdentifiers(DateTimeZone::ALL))->mapWithKeys(function ($timezone) { 14 | return [$timezone => $timezone]; 15 | })->toArray(); 16 | 17 | return parent::render(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Grid/Actions/Edit.php: -------------------------------------------------------------------------------- 1 | getResource()}/{$this->getKey()}/edit"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/views/form/display.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 |
    5 | 6 |
    7 | {!! $value !!}  8 |
    9 |
    10 | 11 | @include('admin::form.help-block') 12 | 13 |
    14 |
    -------------------------------------------------------------------------------- /src/Middleware/Session.php: -------------------------------------------------------------------------------- 1 | $path]); 14 | 15 | if ($domain = config('admin.route.domain')) { 16 | config(['session.domain' => $domain]); 17 | } 18 | 19 | return $next($request); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Form/Concerns/HandleCascadeFields.php: -------------------------------------------------------------------------------- 1 | pushField($group = new Field\CascadeGroup($dependency)); 16 | 17 | call_user_func($closure, $this); 18 | 19 | $group->end(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /resources/views/actions/form/select.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 11 | @include('admin::actions.form.help-block') 12 |
    13 | 14 | -------------------------------------------------------------------------------- /src/Console/stubs/grid-batch-action.stub: -------------------------------------------------------------------------------- 1 | response()->success('Success message...')->refresh(); 19 | } 20 | DummyInteractor 21 | } -------------------------------------------------------------------------------- /resources/views/form/slider.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | 11 | @include('admin::form.help-block') 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /docs/zh/upgrade.md: -------------------------------------------------------------------------------- 1 | # 升级注意事项 2 | 3 | 因为laravel-admin 1.5的内置表结构有修改,所以建议大家重新安装laravel 5.5和laravel-admin 1.5,然后再将代码迁移过来 4 | 5 | 代码迁移需要注意的事项: 6 | 7 | - 表结构有修改 请参考 [tables.php](https://github.com/z-song/laravel-admin/blob/master/database/migrations/2016_01_04_173148_create_admin_tables.php) 8 | - 路由文件结构有修改 请参考 [routes.stub](https://github.com/z-song/laravel-admin/blob/master/src/Console/stubs/routes.stub) 9 | - 配置文件结构有修改 请参考 [admin.php](https://github.com/z-song/laravel-admin/blob/master/config/admin.php) 10 | - 图表组件已经移除,不能再使用,参考 [自定义图表](/zh/custom-chart.md) -------------------------------------------------------------------------------- /src/Grid/Filter/Date.php: -------------------------------------------------------------------------------- 1 | {$this->fieldName}(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Grid/Filter/NotEqual.php: -------------------------------------------------------------------------------- 1 | column); 15 | 16 | if (!isset($value)) { 17 | return; 18 | } 19 | 20 | $this->value = $value; 21 | 22 | return $this->buildCondition($this->column, '!=', $this->value); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/views/partials/toastr.blade.php: -------------------------------------------------------------------------------- 1 | @if(Session::has('toastr')) 2 | @php 3 | $toastr = Session::pull('toastr'); 4 | $type = \Illuminate\Support\Arr::get($toastr->get('type'), 0, 'success'); 5 | $message = \Illuminate\Support\Arr::get($toastr->get('message'), 0, ''); 6 | $options = json_encode($toastr->get('options', [])); 7 | @endphp 8 | 13 | @endif -------------------------------------------------------------------------------- /resources/views/grid/quick-search.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 |
    6 | 7 |
    8 |
    9 |
    -------------------------------------------------------------------------------- /src/Grid/Selectable/BrowserBtn.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |   {$text} 17 | 18 | HTML; 19 | 20 | return $html; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/models/MultipleImage.php: -------------------------------------------------------------------------------- 1 | attributes['pictures'] = json_encode($pictures); 15 | } 16 | } 17 | 18 | public function getPicturesAttribute($pictures) 19 | { 20 | return json_decode($pictures, true) ?: []; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Link.php: -------------------------------------------------------------------------------- 1 | bindTo($this->row); 11 | $href = call_user_func_array($callback, [$this->row]); 12 | } else { 13 | $href = $callback ?: $this->value; 14 | } 15 | 16 | return "{$this->value}"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Form/Field/Button.php: -------------------------------------------------------------------------------- 1 | class = 'btn-info'; 14 | 15 | return $this; 16 | } 17 | 18 | public function on($event, $callback) 19 | { 20 | $this->script = <<getElementClassSelector()}').on('$event', function() { 23 | $callback 24 | }); 25 | 26 | EOT; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /resources/views/form/editor.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | 11 | @include('admin::form.help-block') 12 | 13 |
    14 |
    15 | -------------------------------------------------------------------------------- /resources/views/actions/form/multipleselect.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 10 | @include('admin::actions.form.help-block') 11 |
    12 | 13 | -------------------------------------------------------------------------------- /src/Grid/Concerns/CanFixHeader.php: -------------------------------------------------------------------------------- 1 | create() 13 | ->each(function ($u) { 14 | $u->profile()->save(factory(\Tests\Models\Profile::class)->make()); 15 | $u->tags()->saveMany(factory(\Tests\Models\Tag::class, 5)->make()); 16 | $u->data = ['json' => ['field' => random_int(0, 50)]]; 17 | }); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | tests/ 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Console/stubs/action.stub: -------------------------------------------------------------------------------- 1 | response()->success('Success message...')->refresh(); 17 | } 18 | DummyInteractor 19 | public function html() 20 | { 21 | return <<DummyName 23 | HTML; 24 | } 25 | } -------------------------------------------------------------------------------- /resources/views/filter/radio.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @foreach($options as $option => $label) 3 | 4 | {!! $inline ? '' : '
    ' !!} 5 | 6 | 9 | 10 | {!! $inline ? '' : '
    ' !!} 11 | 12 | @endforeach 13 |
    -------------------------------------------------------------------------------- /resources/views/filter/checkbox.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @foreach($options as $option => $label) 3 | 4 | {!! $inline ? '' : '
    ' !!} 5 | 6 | 9 | 10 | {!! $inline ? '' : '
    ' !!} 11 | 12 | @endforeach 13 |
    -------------------------------------------------------------------------------- /src/Console/stubs/bootstrap.stub: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Bootstraper for Admin. 8 | * 9 | * Here you can remove builtin form field: 10 | * Encore\Admin\Form::forget(['map', 'editor']); 11 | * 12 | * Or extend custom form field: 13 | * Encore\Admin\Form::extend('php', PHPEditor::class); 14 | * 15 | * Or require js and css assets: 16 | * Admin::css('/packages/prettydocs/css/styles.css'); 17 | * Admin::js('/packages/prettydocs/js/main.js'); 18 | * 19 | */ 20 | 21 | Encore\Admin\Form::forget(['map', 'editor']); 22 | -------------------------------------------------------------------------------- /resources/views/form/textarea.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | 11 | {!! $append !!} 12 | 13 | @include('admin::form.help-block') 14 | 15 |
    16 |
    17 | -------------------------------------------------------------------------------- /resources/views/actions/form/radio.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | @foreach($options as $option => $label) 5 | 6 | 9 | 10 | @endforeach 11 |
    12 | @include('admin::actions.form.help-block') 13 |
    14 | -------------------------------------------------------------------------------- /src/Grid/Concerns/CanDoubleClick.php: -------------------------------------------------------------------------------- 1 | tableID}>tbody>tr', function(e) { 18 | var url = "{$this->resource()}/"+$(this).data('key')+"/edit"; 19 | $.admin.redirect(url); 20 | }); 21 | SCRIPT; 22 | Admin::script($script); 23 | 24 | return $this; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Upload.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 13 | 'name' => $this->getPayloadName(), 14 | 'value' => $this->getValue(), 15 | 'target' => "inline-upload-{$this->getKey()}", 16 | 'resource' => $this->getResource(), 17 | 'multiple' => $multiple, 18 | ]); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /resources/views/form/embeds.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    {{ $label }}

    4 |
    5 |
    6 | 7 |
    8 | 9 |
    10 | 11 |
    12 | 13 |
    14 | 15 | @foreach($form->fields() as $field) 16 | {!! $field->render() !!} 17 | @endforeach 18 | 19 |
    20 |
    21 |
    22 | 23 |
    -------------------------------------------------------------------------------- /resources/views/form/multiplefile.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | @isset($sortable) 11 | 12 | @endisset 13 | 14 | @include('admin::form.help-block') 15 | 16 |
    17 |
    18 | -------------------------------------------------------------------------------- /tests/ModelTreeTest.php: -------------------------------------------------------------------------------- 1 | where('uri', ''); 18 | }, $rootText); 19 | 20 | $count = Tree::query()->where('uri', '')->count(); 21 | 22 | $this->assertEquals(array_shift($options), $rootText); 23 | $this->assertEquals(count($options), $count); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /resources/views/form/switchfield.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | 11 | 12 | @include('admin::form.help-block') 13 | 14 |
    15 |
    16 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/form/error.blade.php: -------------------------------------------------------------------------------- 1 | @if(is_array($errorKey)) 2 | @foreach($errorKey as $key => $col) 3 | @if($errors->has($col.$key)) 4 | @foreach($errors->get($col.$key) as $message) 5 |
    6 | @endforeach 7 | @endif 8 | @endforeach 9 | @else 10 | @if($errors->has($errorKey)) 11 | @foreach($errors->get($errorKey) as $message) 12 |
    13 | @endforeach 14 | @endif 15 | @endif -------------------------------------------------------------------------------- /resources/views/grid/quick-create/select.blade.php: -------------------------------------------------------------------------------- 1 | 8 | 9 |
    10 | 17 |
    18 | 19 | -------------------------------------------------------------------------------- /resources/views/partials/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 | 16 | 17 | Powered by laravel-admin 18 |
    -------------------------------------------------------------------------------- /resources/views/show/panel.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    {{ $title }}

    4 | 5 |
    6 | {!! $tools !!} 7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 |
    16 | 17 | @foreach($fields as $field) 18 | {!! $field->render() !!} 19 | @endforeach 20 |
    21 | 22 |
    23 | 24 |
    25 |
    -------------------------------------------------------------------------------- /tests/models/Tree.php: -------------------------------------------------------------------------------- 1 | setConnection($connection); 22 | 23 | $this->setTable(config('admin.database.menu_table')); 24 | 25 | parent::__construct($attributes); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /resources/views/actions/form/checkbox.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | @foreach($options as $option => $label) 5 | 6 | 9 | 10 | @endforeach 11 |
    12 | 13 | @include('admin::actions.form.help-block') 14 |
    15 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/tree/branch.blade.php: -------------------------------------------------------------------------------- 1 |
  • 2 |
    3 | {!! $branchCallback($branch) !!} 4 | 5 | 6 | 7 | 8 |
    9 | @if(isset($branch['children'])) 10 |
      11 | @foreach($branch['children'] as $branch) 12 | @include($branchView, $branch) 13 | @endforeach 14 |
    15 | @endif 16 |
  • -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/az.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/fi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ja.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Filter/In.php: -------------------------------------------------------------------------------- 1 | column); 24 | 25 | if (is_null($value)) { 26 | return; 27 | } 28 | 29 | $this->value = (array) $value; 30 | 31 | return $this->buildCondition($this->column, $this->value); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Form/Field/Divider.php: -------------------------------------------------------------------------------- 1 | title = $title; 14 | } 15 | 16 | public function render() 17 | { 18 | if (empty($this->title)) { 19 | return '
    '; 20 | } 21 | 22 | return << 24 | 25 | {$this->title} 26 | 27 | 28 | HTML; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/hu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/tr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/form/rate.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 |
    10 | 11 | % 12 |
    13 | 14 | @include('admin::form.help-block') 15 | 16 |
    17 |
    18 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ko.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/th.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Filter/Gt.php: -------------------------------------------------------------------------------- 1 | column); 24 | 25 | if (is_null($value)) { 26 | return; 27 | } 28 | 29 | $this->value = $value; 30 | 31 | return $this->buildCondition($this->column, '>=', $this->value); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Grid/Filter/Lt.php: -------------------------------------------------------------------------------- 1 | column); 24 | 25 | if (is_null($value)) { 26 | return; 27 | } 28 | 29 | $this->value = $value; 30 | 31 | return $this->buildCondition($this->column, '<=', $this->value); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/views/widgets/collapse.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @foreach($items as $key => $item) 3 |
    4 | 11 |
    12 |
    13 | {!! $item['content'] !!} 14 |
    15 |
    16 |
    17 | @endforeach 18 | 19 |
    20 | -------------------------------------------------------------------------------- /src/Form/Field/Mobile.php: -------------------------------------------------------------------------------- 1 | '99999999999', 18 | ]; 19 | 20 | public function render() 21 | { 22 | $this->inputmask($this->options); 23 | 24 | $this->prepend('') 25 | ->defaultAttribute('style', 'width: 150px'); 26 | 27 | return parent::render(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Input.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 13 | 'value' => $this->getValue(), 14 | 'display' => $this->getValue(), 15 | 'name' => $this->getPayloadName(), 16 | 'resource' => $this->getResource(), 17 | 'trigger' => "ie-trigger-{$this->getClassName()}", 18 | 'target' => "ie-template-{$this->getClassName()}", 19 | 'mask' => $mask, 20 | ]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 60 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | # Label to use when marking an issue as stale 10 | staleLabel: wontfix 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false 18 | -------------------------------------------------------------------------------- /resources/views/form/captcha.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 |
    10 | 11 | 12 | 13 | 14 | 15 |
    16 | 17 | @include('admin::form.help-block') 18 | 19 |
    20 |
    -------------------------------------------------------------------------------- /resources/views/grid/quick-create/multipleselect.blade.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
    11 | 18 |
    19 | 20 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Textarea.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 13 | 'value' => $this->getValue(), 14 | 'display' => $this->getValue(), 15 | 'name' => $this->getPayloadName(), 16 | 'resource' => $this->getResource(), 17 | 'trigger' => "ie-trigger-{$this->getClassName()}", 18 | 'target' => "ie-template-{$this->getClassName()}", 19 | 'rows' => $rows, 20 | ]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Badge.php: -------------------------------------------------------------------------------- 1 | value instanceof Arrayable) { 13 | $this->value = $this->value->toArray(); 14 | } 15 | 16 | return collect((array) $this->value)->map(function ($name) use ($style) { 17 | if (is_array($style)) { 18 | $style = Arr::get($style, $this->getColumn()->getOriginal(), 'red'); 19 | } 20 | 21 | return "$name"; 22 | })->implode(' '); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/views/filter/between.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 |
    5 | 6 | - 7 | 8 |
    9 |
    10 |
    -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/id.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/vi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Form/Field/Ip.php: -------------------------------------------------------------------------------- 1 | 'ip', 20 | ]; 21 | 22 | public function render() 23 | { 24 | $this->inputmask($this->options); 25 | 26 | $this->prepend('') 27 | ->defaultAttribute('style', 'width: 130px'); 28 | 29 | return parent::render(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/is.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /docs/zh/model-grid-exporter.md: -------------------------------------------------------------------------------- 1 | # 自定义导出 2 | 3 | laravel-admin的数据表格默认支持导出csv文件, 4 | 5 | ```php 6 | getTable().'.csv'; 17 | 18 | $data = $this->getData(); 19 | 20 | $output = ''; 21 | 22 | $headers = [ 23 | 'Content-Encoding' => 'UTF-8', 24 | 'Content-Type' => 'text/csv;charset=UTF-8', 25 | 'Content-Disposition' => "attachment; filename=\"$filename\"", 26 | ]; 27 | 28 | response(rtrim($output, "\n"), 200, $headers)->send(); 29 | 30 | exit; 31 | } 32 | } 33 | ``` -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ar.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/de.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/et.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Form/Field/Decimal.php: -------------------------------------------------------------------------------- 1 | 'decimal', 18 | 'rightAlign' => true, 19 | ]; 20 | 21 | public function render() 22 | { 23 | $this->inputmask($this->options); 24 | 25 | $this->prepend('') 26 | ->defaultAttribute('style', 'width: 130px'); 27 | 28 | return parent::render(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /docs/zh/model-form-validation.md: -------------------------------------------------------------------------------- 1 | 表单验证 2 | ======== 3 | 4 | `model-form`使用laravel的验证规则来验证表单提交的数据: 5 | 6 | ```php 7 | $form->text('title')->rules('required|min:3'); 8 | 9 | // 复杂的验证规则可以在回调里面实现 10 | $form->text('title')->rules(function ($form) { 11 | 12 | // 如果不是编辑状态,则添加字段唯一验证 13 | if (!$id = $form->model()->id) { 14 | return 'unique:users,email_address'; 15 | } 16 | 17 | }); 18 | 19 | ``` 20 | 21 | 也可以给验证规则自定义错误提示消息: 22 | 23 | ```php 24 | $form->text('code')->rules('required|regex:/^\d+$/|min:10', [ 25 | 'regex' => 'code必须全部为数字', 26 | 'min' => 'code不能少于10个字符', 27 | ]); 28 | ``` 29 | 30 | 如果要允许字段为空,首先要在数据库的表里面对该字段设置为`NULL`,然后 31 | 32 | ```php 33 | $form->text('title')->rules('nullable'); 34 | ``` 35 | 36 | 更多规则请参考[Validation](https://laravel.com/docs/5.5/validation). -------------------------------------------------------------------------------- /resources/views/form/map.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 |
    10 | 11 | 12 | 13 | @include('admin::form.help-block') 14 | 15 |
    16 |
    17 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/sv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Console/MenuCommand.php: -------------------------------------------------------------------------------- 1 | command('inspire')->everyTenMinutes(); 27 | 28 | $schedule->command('route:list')->dailyAt('02:00'); 29 | } 30 | } 31 | 32 | ``` 33 | 34 | 然后就能在后台看到这两项计划任务的详细情况,也能直接运行这两个计划任务。 35 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/bg.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/km.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/nb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/show/field.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | @if($wrapped) 5 |
    6 | 7 |
    8 | @if($escape) 9 | {{ $content }}  10 | @else 11 | {!! $content !!}  12 | @endif 13 |
    14 |
    15 | @else 16 | @if($escape) 17 | {{ $content }} 18 | @else 19 | {!! $content !!} 20 | @endif 21 | @endif 22 |
    23 |
    -------------------------------------------------------------------------------- /src/Grid/Displayers/Radio.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 14 | 'name' => $this->getPayloadName(), 15 | 'value' => $this->getValue(), 16 | 'resource' => $this->getResource(), 17 | 'trigger' => "ie-trigger-{$this->getClassName()}", 18 | 'target' => "ie-template-{$this->getClassName()}", 19 | 'display' => Arr::get($options, $this->getValue(), ''), 20 | 'options' => $options, 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ms.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Displayers/Select.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 14 | 'value' => $this->getValue(), 15 | 'display' => Arr::get($options, $this->getValue(), ''), 16 | 'name' => $this->getPayloadName(), 17 | 'resource' => $this->getResource(), 18 | 'trigger' => "ie-trigger-{$this->getClassName()}", 19 | 'target' => "ie-template-{$this->getClassName()}", 20 | 'options' => $options, 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/gl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Form/Field/RadioCard.php: -------------------------------------------------------------------------------- 1 | addStyle(); 40 | 41 | return parent::render(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Datetime.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 13 | 'value' => $this->getValue(), 14 | 'display' => $this->getValue(), 15 | 'name' => $this->getPayloadName(), 16 | 'resource' => $this->getResource(), 17 | 'trigger' => "ie-trigger-{$this->getClassName()}", 18 | 'target' => "ie-template-{$this->getClassName()}", 19 | 20 | 'format' => $format, 21 | 'locale' => config('app.locale'), 22 | ]); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Form/Field/CheckboxCard.php: -------------------------------------------------------------------------------- 1 | addStyle(); 40 | 41 | return parent::render(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/InstallTest.php: -------------------------------------------------------------------------------- 1 | assertFileExists(admin_path()); 8 | 9 | $this->assertFileExists(admin_path('Controllers')); 10 | 11 | $this->assertFileExists(admin_path('routes.php')); 12 | 13 | $this->assertFileExists(admin_path('bootstrap.php')); 14 | 15 | $this->assertFileExists(admin_path('Controllers/HomeController.php')); 16 | 17 | $this->assertFileExists(admin_path('Controllers/AuthController.php')); 18 | 19 | $this->assertFileExists(admin_path('Controllers/ExampleController.php')); 20 | 21 | $this->assertFileExists(config_path('admin.php')); 22 | 23 | $this->assertFileExists(public_path('vendor/laravel-admin')); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Form/Field/Icon.php: -------------------------------------------------------------------------------- 1 | script = <<getElementClassSelector()}').iconpicker({placement:'bottomLeft'}); 22 | 23 | EOT; 24 | 25 | $this->prepend('') 26 | ->defaultAttribute('style', 'width: 140px'); 27 | 28 | return parent::render(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/da.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /docs/en/upgrade.md: -------------------------------------------------------------------------------- 1 | # Upgrade precautions 2 | 3 | Because `laravel-admin 1.5` built-in table structure has been modified, it is recommended that you re-install `laravel 5.5` and `laravel-admin 1.5`, and then migrate the code over 4 | 5 | Code migration needs attention: 6 | 7 | - Please refer to the table structure changes [tables.php](https://github.com/z-song/laravel-admin/blob/master/database/migrations/2016_01_04_173148_create_admin_tables.php) 8 | - Routing file structure is modified please refer to [routes.stub](https://github.com/z-song/laravel-admin/blob/master/src/Console/stubs/routes.stub) 9 | - Please refer to the configuration file structure changes [admin.php](https://github.com/z-song/laravel-admin/blob/master/config/admin.php) 10 | - The chart component has been removed and can no longer be used, please refer to [Custom chart](/en/custom-chart.md) -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/en.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/he.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/fa.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/hi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/hr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/widgets/box.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @if($title || $tools) 3 |
    4 |

    {{ $title }}

    5 |
    6 | @foreach($tools as $tool) 7 | {!! $tool !!} 8 | @endforeach 9 |
    10 |
    11 | @endif 12 |
    13 | {!! $content !!} 14 |
    15 | @if($footer) 16 | 19 | @endif 20 |
    21 | {{-- 由于widget box 有可能会用于expand,加载完页面后还没有对应的html,导致script失败,故只能和html写在一起。 --}} 22 | -------------------------------------------------------------------------------- /src/Actions/SweatAlert2.php: -------------------------------------------------------------------------------- 1 | type = $type; 26 | $this->title = $title; 27 | 28 | return $this; 29 | } 30 | 31 | /** 32 | * @return array 33 | */ 34 | public function getOptions() 35 | { 36 | return [ 37 | 'swal' => [ 38 | 'type' => $this->type, 39 | 'title' => $this->title, 40 | ], 41 | ]; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Checkbox.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 14 | 'name' => $this->getPayloadName(), 15 | 'resource' => $this->getResource(), 16 | 'trigger' => "ie-trigger-{$this->getClassName()}", 17 | 'target' => "ie-content-{$this->getClassName()}-{$this->getKey()}", 18 | 'value' => json_encode($this->getValue()), 19 | 'display' => implode(';', Arr::only($options, $this->getValue())), 20 | 'options' => $options, 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/mk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Displayers/MultipleSelect.php: -------------------------------------------------------------------------------- 1 | $this->getKey(), 14 | 'name' => $this->getPayloadName(), 15 | 'value' => json_encode($this->getValue()), 16 | 'resource' => $this->getResource(), 17 | 'trigger' => "ie-trigger-{$this->getClassName()}", 18 | 'target' => "ie-template-{$this->getClassName()}", 19 | 'display' => implode(';', Arr::only($options, $this->getValue())), 20 | 'options' => $options, 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/eu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/pt-BR.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/pt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Tools/FilterButton.php: -------------------------------------------------------------------------------- 1 | grid->getFilter(); 16 | 17 | if ($scope = $filter->getCurrentScope()) { 18 | $label = " {$scope->getLabel()} "; 19 | } 20 | 21 | return Admin::component('admin::filter.button', [ 22 | 'scopes' => $filter->getScopes(), 23 | 'label' => $label, 24 | 'cancel' => $filter->urlWithoutScopes(), 25 | 'btn_class' => uniqid().'-filter-btn', 26 | 'expand' => $filter->expand, 27 | 'filter_id' => $filter->getFilterID(), 28 | ]); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/lv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/form/listbox.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 14 | 15 | 16 | @include('admin::form.help-block') 17 | 18 |
    19 |
    20 | -------------------------------------------------------------------------------- /resources/views/form/tab.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Console/stubs/extension/composer.json.stub: -------------------------------------------------------------------------------- 1 | { 2 | "name": ":package", 3 | "description": "description...", 4 | "type": "library", 5 | "keywords": ["laravel-admin", "extension"], 6 | "homepage": "https://github.com/:package", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "your name", 11 | "email": "your email" 12 | } 13 | ], 14 | "require": { 15 | "php": ">=7.0.0", 16 | "encore/laravel-admin": "~1.6" 17 | }, 18 | "require-dev": { 19 | "phpunit/phpunit": "~6.0" 20 | }, 21 | "autoload": { 22 | "psr-4": { 23 | ":namespace": "src/" 24 | } 25 | }, 26 | "extra": { 27 | "laravel": { 28 | "providers": [ 29 | ":namespace:class_nameServiceProvider" 30 | ] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/es.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/form/multipleselect.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 14 | 15 | 16 | @include('admin::form.help-block') 17 | 18 |
    19 |
    20 | -------------------------------------------------------------------------------- /resources/views/form/tags.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 16 | 17 | 18 | @include('admin::form.help-block') 19 | 20 |
    21 |
    22 | -------------------------------------------------------------------------------- /src/Grid/Filter/Hidden.php: -------------------------------------------------------------------------------- 1 | name = $name; 26 | 27 | $this->value = $value; 28 | } 29 | 30 | /** 31 | * {@inheritdoc} 32 | */ 33 | public function condition($inputs) 34 | { 35 | } 36 | 37 | /** 38 | * {@inheritdoc} 39 | */ 40 | public function render() 41 | { 42 | return ""; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /tests/models/User.php: -------------------------------------------------------------------------------- 1 | 'array']; 14 | 15 | public function profile() 16 | { 17 | return $this->hasOne(Profile::class, 'user_id'); 18 | } 19 | 20 | public function getFullNameAttribute() 21 | { 22 | return "{$this->profile['first_name']} {$this->profile['last_name']}"; 23 | } 24 | 25 | public function getPositionAttribute() 26 | { 27 | return "{$this->profile->latitude} {$this->profile->longitude}"; 28 | } 29 | 30 | public function tags() 31 | { 32 | return $this->belongsToMany(Tag::class, 'test_user_tags', 'user_id', 'tag_id'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ca.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/grid/inline-edit/textarea.blade.php: -------------------------------------------------------------------------------- 1 | @extends('admin::grid.inline-edit.comm') 2 | 3 | @section('field') 4 | 5 | @endsection 6 | 7 | @section('assert') 8 | 18 | 19 | {{--after submit--}} 20 | 25 | @endsection 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/it.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Concerns/HasHeader.php: -------------------------------------------------------------------------------- 1 | header; 26 | } 27 | 28 | $this->header = $closure; 29 | 30 | return $this; 31 | } 32 | 33 | /** 34 | * @return string 35 | */ 36 | public function renderHeader() 37 | { 38 | if (!$this->header) { 39 | return ''; 40 | } 41 | 42 | return (new Header($this))->render(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Traits/ShouldSnakeAttributes.php: -------------------------------------------------------------------------------- 1 | model instanceof GridModel) ? 28 | $this->model->eloquent() : $this->model; 29 | 30 | $class = get_class($model); 31 | 32 | return static::$snakeAttributes = $class::$snakeAttributes; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/fr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ro.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/nl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/grid/quick-create/form.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |  {{ __('admin.quick_create') }} 7 | 8 | 9 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Controllers/HasResourceActions.php: -------------------------------------------------------------------------------- 1 | form()->update($id); 17 | } 18 | 19 | /** 20 | * Store a newly created resource in storage. 21 | * 22 | * @return mixed 23 | */ 24 | public function store() 25 | { 26 | return $this->form()->store(); 27 | } 28 | 29 | /** 30 | * Remove the specified resource from storage. 31 | * 32 | * @param int $id 33 | * 34 | * @return \Illuminate\Http\Response 35 | */ 36 | public function destroy($id) 37 | { 38 | return $this->form()->destroy($id); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/lt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Form/Field/Slider.php: -------------------------------------------------------------------------------- 1 | 'single', 20 | 'prettify' => false, 21 | 'hasGrid' => true, 22 | ]; 23 | 24 | public function render() 25 | { 26 | $option = json_encode($this->options); 27 | 28 | $this->script = "$('{$this->getElementClassSelector()}').ionRangeSlider($option);"; 29 | 30 | return parent::render(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Console/stubs/extension/service-provider.stub: -------------------------------------------------------------------------------- 1 | views()) { 19 | $this->loadViewsFrom($views, ':base_package'); 20 | } 21 | 22 | if ($this->app->runningInConsole() && $assets = $extension->assets()) { 23 | $this->publishes( 24 | [$assets => public_path('vendor/:package')], 25 | ':base_package' 26 | ); 27 | } 28 | 29 | $this->app->booted(function () { 30 | :class_name::routes(__DIR__.'/../routes/web.php'); 31 | }); 32 | } 33 | } -------------------------------------------------------------------------------- /src/Grid/Displayers/ProgressBar.php: -------------------------------------------------------------------------------- 1 | map(function ($style) { 10 | return 'progress-bar-'.$style; 11 | })->implode(' '); 12 | 13 | $this->value = (int) $this->value; 14 | 15 | return << 17 | {$this->value}% 18 |
    19 |
    20 |
    21 |
    22 | 23 | EOT; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/pl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Concerns/HasFooter.php: -------------------------------------------------------------------------------- 1 | footer; 26 | } 27 | 28 | $this->footer = $closure; 29 | 30 | return $this; 31 | } 32 | 33 | /** 34 | * Render grid footer. 35 | * 36 | * @return string 37 | */ 38 | public function renderFooter() 39 | { 40 | if (!$this->footer) { 41 | return ''; 42 | } 43 | 44 | return (new Footer($this))->render(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Traits/AdminBuilder.php: -------------------------------------------------------------------------------- 1 | =2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Form/Field/RadioButton.php: -------------------------------------------------------------------------------- 1 | addScript(); 32 | 33 | $this->addCascadeScript(); 34 | 35 | $this->addVariables([ 36 | 'options' => $this->options, 37 | 'checked' => $this->checked, 38 | ]); 39 | 40 | return parent::fieldRender(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/uk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/sr-Cyrl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/Grid/Concerns/CanFixColumns.php: -------------------------------------------------------------------------------- 1 | fixColumns = new FixColumns($this, $head, $tail); 22 | 23 | $this->rendering($this->fixColumns->apply()); 24 | } 25 | 26 | /** 27 | * @return Collection 28 | */ 29 | public function leftVisibleColumns() 30 | { 31 | return $this->fixColumns->leftColumns(); 32 | } 33 | 34 | /** 35 | * @return Collection 36 | */ 37 | public function rightVisibleColumns() 38 | { 39 | return $this->fixColumns->rightColumns(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /docs/en/extension-scheduling.md: -------------------------------------------------------------------------------- 1 | # Task scheduling 2 | 3 | This tool is a web interface for manage Laravel's scheduled tasks 4 | 5 | ![wx20170810-101048](https://user-images.githubusercontent.com/1479100/29151552-8affc0b2-7db4-11e7-932a-a10d8a42ec50.png) 6 | 7 | ## Installation 8 | 9 | ``` 10 | $ composer require laravel-admin-ext/scheduling -vvv 11 | 12 | $ php artisan admin:import scheduling 13 | ``` 14 | 15 | Then open `http://localhost/admin/scheduling` 16 | 17 | ## Add tasks 18 | 19 | Open `app/Console/Kernel.php`, try adding two scheduled tasks: 20 | 21 | ```php 22 | class Kernel extends ConsoleKernel 23 | { 24 | protected function schedule(Schedule $schedule) 25 | { 26 | $schedule->command('inspire')->everyTenMinutes(); 27 | 28 | $schedule->command('route:list')->dailyAt('02:00'); 29 | } 30 | } 31 | 32 | ``` 33 | 34 | And then you can see the tasks with details in the page, and you can also directly run these two tasks in the page. 35 | -------------------------------------------------------------------------------- /resources/views/form/input.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 |
    10 | 11 | @if ($prepend) 12 | {!! $prepend !!} 13 | @endif 14 | 15 | 16 | 17 | @if ($append) 18 | {!! $append !!} 19 | @endif 20 | 21 | @isset($btn) 22 | 23 | {!! $btn !!} 24 | 25 | @endisset 26 | 27 |
    28 | 29 | @include('admin::form.help-block') 30 | 31 |
    32 |
    33 | -------------------------------------------------------------------------------- /resources/assets/AdminLTE/plugins/select2/i18n/ru.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /resources/views/grid/inline-edit/input.blade.php: -------------------------------------------------------------------------------- 1 | @extends('admin::grid.inline-edit.comm') 2 | 3 | @section('field') 4 | 5 | @endsection 6 | 7 | @section('assert') 8 | 21 | 22 | {{--after submit--}} 23 | 28 | @endsection 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/Console/stubs/step-form.stub: -------------------------------------------------------------------------------- 1 | all()); 27 | 28 | admin_success('Processed successfully.'); 29 | 30 | return $this->next($request->all()); 31 | } 32 | 33 | /** 34 | * Build a form here. 35 | */ 36 | public function form() 37 | { 38 | $this->text('name')->rules('required'); 39 | $this->email('email')->rules('email'); 40 | $this->datetime('created_at'); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Grid/Displayers/Secret.php: -------------------------------------------------------------------------------- 1 | addScript(); 12 | 13 | $dots = str_repeat('*', $dotCount); 14 | 15 | return << 17 | 18 |   19 | {$dots} 20 | 21 | 22 | HTML; 23 | } 24 | 25 | protected function addScript() 26 | { 27 | $script = <<<'SCRIPT' 28 | $('.secret-wrapper i').click(function () { 29 | $(this).toggleClass('fa-eye fa-eye-slash').parent().find('.secret-placeholder,.secret-content').toggle(); 30 | }); 31 | SCRIPT; 32 | 33 | Admin::script($script); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /resources/views/form/radio.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | @foreach($options as $option => $label) 10 | 11 | {!! $inline ? '' : '
    ' !!} 12 | 13 | 16 | 17 | {!! $inline ? '' : '
    ' !!} 18 | 19 | @endforeach 20 | 21 | @include('admin::form.help-block') 22 | 23 |
    24 |
    25 | -------------------------------------------------------------------------------- /resources/views/dashboard/title.blade.php: -------------------------------------------------------------------------------- 1 | 27 | 28 |
    29 | Laravel-admin 30 |
    31 | -------------------------------------------------------------------------------- /resources/views/form/radiobutton.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 |
    10 | @foreach($options as $option => $label) 11 | 14 | @endforeach 15 |
    16 | 17 | @include('admin::form.help-block') 18 | 19 |
    20 |
    21 | -------------------------------------------------------------------------------- /src/Actions/Interactor/Interactor.php: -------------------------------------------------------------------------------- 1 | action = $action; 33 | } 34 | 35 | /** 36 | * @return mixed 37 | */ 38 | abstract public function addScript(); 39 | } 40 | -------------------------------------------------------------------------------- /src/Grid/Filter/Like.php: -------------------------------------------------------------------------------- 1 | column); 29 | 30 | if (is_array($value)) { 31 | $value = array_filter($value); 32 | } 33 | 34 | if (is_null($value) || empty($value)) { 35 | return; 36 | } 37 | 38 | $this->value = $value; 39 | 40 | $expr = str_replace('{value}', $this->value, $this->exprFormat); 41 | 42 | return $this->buildCondition($this->column, $this->operator, $expr); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /resources/assets/bootstrap-fileinput/js/plugins/canvas-to-blob.min.js: -------------------------------------------------------------------------------- 1 | !function(a){"use strict";var b=a.HTMLCanvasElement&&a.HTMLCanvasElement.prototype,c=a.Blob&&function(){try{return Boolean(new Blob)}catch(a){return!1}}(),d=c&&a.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(a){return!1}}(),e=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||a.MSBlobBuilder,f=(c||e)&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&function(a){var b,f,g,h,i,j;for(b=a.split(",")[0].indexOf("base64")>=0?atob(a.split(",")[1]):decodeURIComponent(a.split(",")[1]),f=new ArrayBuffer(b.length),g=new Uint8Array(f),h=0;h 2 |
    3 |

    Environment

    4 | 5 |
    6 | 8 | 9 |
    10 |
    11 | 12 | 13 |
    14 |
    15 | 16 | 17 | @foreach($envs as $env) 18 | 19 | 20 | 21 | 22 | @endforeach 23 |
    {{ $env['name'] }}{{ $env['value'] }}
    24 |
    25 | 26 |
    27 | 28 | -------------------------------------------------------------------------------- /resources/assets/flatpickr/dist/shortcut-buttons-flatpickr/themes/light.min.css: -------------------------------------------------------------------------------- 1 | .shortcut-buttons-flatpickr-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:5px}.shortcut-buttons-flatpickr-wrapper>.shortcut-buttons-flatpickr-label{-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:0 5px}.shortcut-buttons-flatpickr-wrapper>.shortcut-buttons-flatpickr-buttons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.shortcut-buttons-flatpickr-buttons>.shortcut-buttons-flatpickr-button{margin:2px}.light.shortcut-buttons-flatpickr-wrapper{background-color:#eceef1;color:#5a6171} -------------------------------------------------------------------------------- /src/Grid/Displayers/Image.php: -------------------------------------------------------------------------------- 1 | value instanceof Arrayable) { 13 | $this->value = $this->value->toArray(); 14 | } 15 | 16 | return collect((array) $this->value)->filter()->map(function ($path) use ($server, $width, $height) { 17 | if (url()->isValidUrl($path) || strpos($path, 'data:image') === 0) { 18 | $src = $path; 19 | } elseif ($server) { 20 | $src = rtrim($server, '/').'/'.ltrim($path, '/'); 21 | } else { 22 | $src = Storage::disk(config('admin.upload.disk'))->url($path); 23 | } 24 | 25 | return ""; 26 | })->implode(' '); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /resources/views/filter/text.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @if($group) 3 |
    4 | 5 | 10 | 15 |
    16 | @endif 17 |
    18 | 19 |
    20 | 21 | 22 |
    -------------------------------------------------------------------------------- /resources/views/form/belongsto.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 | 7 | @include('admin::form.error') 8 | 9 | 10 | 11 | 17 | 18 |
    19 | {!! $grid->render() !!} 20 | 23 |
    24 | 25 | @include('admin::form.help-block') 26 | 27 |
    28 |
    29 | -------------------------------------------------------------------------------- /src/Console/ControllerCommand.php: -------------------------------------------------------------------------------- 1 | argument('model'); 31 | } 32 | 33 | /** 34 | * @throws \ReflectionException 35 | * 36 | * @return string 37 | */ 38 | protected function getControllerName() 39 | { 40 | $name = (new \ReflectionClass($this->modelName))->getShortName(); 41 | 42 | return $name.'Controller'; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Console/PublishCommand.php: -------------------------------------------------------------------------------- 1 | option('force'); 31 | $options = ['--provider' => 'Encore\Admin\AdminServiceProvider']; 32 | if ($force == true) { 33 | $options['--force'] = true; 34 | } 35 | $this->call('vendor:publish', $options); 36 | $this->call('view:clear'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Grid/Tools/CreateButton.php: -------------------------------------------------------------------------------- 1 | grid = $grid; 22 | } 23 | 24 | /** 25 | * Render CreateButton. 26 | * 27 | * @return string 28 | */ 29 | public function render() 30 | { 31 | if (!$this->grid->showCreateBtn()) { 32 | return ''; 33 | } 34 | 35 | $new = trans('admin.new'); 36 | 37 | return << 40 | 41 | 42 | 43 | 44 | 45 | EOT; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /docs/zh/extension-config.md: -------------------------------------------------------------------------------- 1 | # 配置管理 2 | 3 | 这个工具将配置数据存在数据库中,然后在能在Laravel中能像普通配置一样使用 4 | 5 | ![wx20170810-100226](https://user-images.githubusercontent.com/1479100/29151322-0879681a-7db3-11e7-8005-03310686c884.png) 6 | 7 | ## 安装 8 | 9 | ``` 10 | $ composer require laravel-admin-ext/config 11 | 12 | $ php artisan migrate 13 | ``` 14 | 15 | 打开`app/Providers/AppServiceProvider.php`, 在`boot`方法中添加`Config::load();`: 16 | 17 | ```php 18 | title('Dashboard') 17 | ->description('Description...') 18 | ->row(Dashboard::title()) 19 | ->row(function (Row $row) { 20 | 21 | $row->column(4, function (Column $column) { 22 | $column->append(Dashboard::environment()); 23 | }); 24 | 25 | $row->column(4, function (Column $column) { 26 | $column->append(Dashboard::extensions()); 27 | }); 28 | 29 | $row->column(4, function (Column $column) { 30 | $column->append(Dashboard::dependencies()); 31 | }); 32 | }); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /resources/views/filter/datetime.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @if($group) 3 |
    4 | 5 | 10 | 15 |
    16 | @endif 17 |
    18 | 19 |
    20 | 21 |
    --------------------------------------------------------------------------------