├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── build ├── pull.sh └── push.sh ├── composer.json ├── fixture ├── .env.example ├── .gitattributes ├── .gitignore ├── Modules │ ├── Blog │ │ ├── Assets │ │ │ └── .gitkeep │ │ ├── Config │ │ │ └── .gitkeep │ │ ├── Console │ │ │ └── .gitkeep │ │ ├── Database │ │ │ ├── Migrations │ │ │ │ └── .gitkeep │ │ │ └── Seeders │ │ │ │ ├── .gitkeep │ │ │ │ └── BlogDatabaseSeeder.php │ │ ├── Entities │ │ │ └── .gitkeep │ │ ├── Http │ │ │ ├── Controllers │ │ │ │ ├── .gitkeep │ │ │ │ └── BlogController.php │ │ │ ├── Filters │ │ │ │ └── .gitkeep │ │ │ ├── Requests │ │ │ │ └── .gitkeep │ │ │ └── routes.php │ │ ├── Providers │ │ │ ├── .gitkeep │ │ │ └── BlogServiceProvider.php │ │ ├── Repositories │ │ │ └── .gitkeep │ │ ├── Resources │ │ │ ├── lang │ │ │ │ └── .gitkeep │ │ │ └── views │ │ │ │ ├── .gitkeep │ │ │ │ ├── index.blade.php │ │ │ │ └── layouts │ │ │ │ └── master.blade.php │ │ ├── Tests │ │ │ └── .gitkeep │ │ ├── composer.json │ │ ├── module.json │ │ └── start.php │ └── User │ │ ├── Assets │ │ └── .gitkeep │ │ ├── Config │ │ └── .gitkeep │ │ ├── Console │ │ └── .gitkeep │ │ ├── Database │ │ ├── Migrations │ │ │ └── .gitkeep │ │ └── Seeders │ │ │ ├── .gitkeep │ │ │ └── UserDatabaseSeeder.php │ │ ├── Entities │ │ └── .gitkeep │ │ ├── Http │ │ ├── Controllers │ │ │ ├── .gitkeep │ │ │ └── UserController.php │ │ ├── Filters │ │ │ └── .gitkeep │ │ ├── Requests │ │ │ └── .gitkeep │ │ └── routes.php │ │ ├── Providers │ │ ├── .gitkeep │ │ └── UserServiceProvider.php │ │ ├── Repositories │ │ └── .gitkeep │ │ ├── Resources │ │ ├── lang │ │ │ └── .gitkeep │ │ └── views │ │ │ ├── .gitkeep │ │ │ ├── index.blade.php │ │ │ └── layouts │ │ │ └── master.blade.php │ │ ├── Tests │ │ └── .gitkeep │ │ ├── composer.json │ │ ├── module.json │ │ └── start.php ├── app │ ├── Commands │ │ └── Command.php │ ├── Console │ │ ├── Commands │ │ │ └── Inspire.php │ │ └── Kernel.php │ ├── Events │ │ └── Event.php │ ├── Exceptions │ │ └── Handler.php │ ├── Handlers │ │ ├── Commands │ │ │ └── .gitkeep │ │ └── Events │ │ │ └── .gitkeep │ ├── Http │ │ ├── Controllers │ │ │ ├── Auth │ │ │ │ ├── AuthController.php │ │ │ │ └── PasswordController.php │ │ │ ├── Controller.php │ │ │ ├── HomeController.php │ │ │ └── WelcomeController.php │ │ ├── Kernel.php │ │ ├── Middleware │ │ │ ├── Authenticate.php │ │ │ ├── RedirectIfAuthenticated.php │ │ │ └── VerifyCsrfToken.php │ │ ├── Requests │ │ │ └── Request.php │ │ └── routes.php │ ├── Providers │ │ ├── AppServiceProvider.php │ │ ├── BusServiceProvider.php │ │ ├── ConfigServiceProvider.php │ │ ├── EventServiceProvider.php │ │ └── RouteServiceProvider.php │ ├── Services │ │ └── Registrar.php │ └── User.php ├── artisan ├── composer.json ├── config │ ├── app.php │ ├── auth.php │ ├── cache.php │ ├── compile.php │ ├── database.php │ ├── filesystems.php │ ├── mail.php │ ├── queue.php │ ├── services.php │ ├── session.php │ └── view.php ├── database │ ├── .gitignore │ ├── migrations │ │ ├── .gitkeep │ │ ├── 2014_10_12_000000_create_users_table.php │ │ └── 2014_10_12_100000_create_password_resets_table.php │ └── seeds │ │ ├── .gitkeep │ │ └── DatabaseSeeder.php ├── generators │ └── .gitignore ├── gulpfile.js ├── package.json ├── phpspec.yml ├── phpunit.xml ├── public │ ├── .htaccess │ ├── css │ │ └── app.css │ ├── favicon.ico │ ├── index.php │ └── robots.txt ├── readme.md ├── resources │ ├── assets │ │ └── less │ │ │ ├── app.less │ │ │ └── bootstrap │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── mixins │ │ │ ├── alerts.less │ │ │ ├── background-variant.less │ │ │ ├── border-radius.less │ │ │ ├── buttons.less │ │ │ ├── center-block.less │ │ │ ├── clearfix.less │ │ │ ├── forms.less │ │ │ ├── gradients.less │ │ │ ├── grid-framework.less │ │ │ ├── grid.less │ │ │ ├── hide-text.less │ │ │ ├── image.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── nav-divider.less │ │ │ ├── nav-vertical-align.less │ │ │ ├── opacity.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── progress-bar.less │ │ │ ├── reset-filter.less │ │ │ ├── resize.less │ │ │ ├── responsive-visibility.less │ │ │ ├── size.less │ │ │ ├── tab-focus.less │ │ │ ├── table-row.less │ │ │ ├── text-emphasis.less │ │ │ ├── text-overflow.less │ │ │ └── vendor-prefixes.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ ├── lang │ │ └── en │ │ │ ├── pagination.php │ │ │ ├── passwords.php │ │ │ └── validation.php │ └── views │ │ ├── app.blade.php │ │ ├── auth │ │ ├── login.blade.php │ │ ├── password.blade.php │ │ ├── register.blade.php │ │ └── reset.blade.php │ │ ├── emails │ │ └── password.blade.php │ │ ├── errors │ │ └── 503.blade.php │ │ ├── home.blade.php │ │ ├── vendor │ │ └── .gitkeep │ │ └── welcome.blade.php ├── server.php ├── storage │ ├── .gitignore │ ├── app │ │ └── .gitignore │ ├── framework │ │ ├── .gitignore │ │ ├── cache │ │ │ └── .gitignore │ │ ├── sessions │ │ │ └── .gitignore │ │ └── views │ │ │ └── .gitignore │ └── logs │ │ └── .gitignore ├── tests │ ├── ExampleTest.php │ └── TestCase.php ├── themes │ └── default │ │ ├── config │ │ └── config.php │ │ ├── lang │ │ └── en │ │ │ └── theme.php │ │ ├── theme.json │ │ └── views │ │ └── index.php └── vendor │ └── .gitignore ├── phpunit.xml ├── src └── Pingpong │ ├── Generators │ ├── .gitignore │ ├── Console │ │ ├── ConsoleCommand.php │ │ ├── ControllerCommand.php │ │ ├── FormCommand.php │ │ ├── MigrationCommand.php │ │ ├── ModelCommand.php │ │ ├── PivotCommand.php │ │ ├── RequestCommand.php │ │ ├── ScaffoldCommand.php │ │ ├── SeedCommand.php │ │ └── ViewCommand.php │ ├── ConsoleGenerator.php │ ├── ControllerGenerator.php │ ├── FileAlreadyExistsException.php │ ├── FormDumpers │ │ ├── FieldsDumper.php │ │ ├── StubTrait.php │ │ └── TableDumper.php │ ├── FormGenerator.php │ ├── Generator.php │ ├── GeneratorsServiceProvider.php │ ├── LICENSE │ ├── MigrationGenerator.php │ ├── Migrations │ │ ├── NameParser.php │ │ └── SchemaParser.php │ ├── ModelGenerator.php │ ├── PivotGenerator.php │ ├── README.md │ ├── RequestGenerator.php │ ├── ScaffoldGenerator.php │ ├── Scaffolders │ │ └── ControllerScaffolder.php │ ├── SeedGenerator.php │ ├── Stub.php │ ├── Stubs │ │ ├── blank.stub │ │ ├── console.stub │ │ ├── controller │ │ │ ├── plain.stub │ │ │ ├── resource.stub │ │ │ └── scaffold.stub │ │ ├── filter.stub │ │ ├── form │ │ │ ├── checkbox.stub │ │ │ ├── email.stub │ │ │ ├── input.stub │ │ │ ├── password.stub │ │ │ ├── radio.stub │ │ │ ├── select.stub │ │ │ ├── text.stub │ │ │ └── textarea.stub │ │ ├── migration │ │ │ ├── add.stub │ │ │ ├── create.stub │ │ │ ├── delete.stub │ │ │ ├── drop.stub │ │ │ ├── pivot.stub │ │ │ └── plain.stub │ │ ├── model.stub │ │ ├── provider.stub │ │ ├── request.stub │ │ ├── scaffold │ │ │ ├── row.stub │ │ │ └── views │ │ │ │ ├── create.stub │ │ │ │ ├── edit.stub │ │ │ │ ├── form.stub │ │ │ │ ├── index.stub │ │ │ │ └── show.stub │ │ ├── seed.stub │ │ ├── view.stub │ │ └── views │ │ │ └── master.stub │ ├── ViewGenerator.php │ ├── composer.json │ └── config.php │ ├── Menus │ ├── .gitignore │ ├── LICENSE │ ├── Menu.php │ ├── MenuBuilder.php │ ├── MenuFacade.php │ ├── MenuItem.php │ ├── MenusServiceProvider.php │ ├── Presenters │ │ ├── Bootstrap │ │ │ ├── NavMenuPresenter.php │ │ │ ├── NavPillsPresenter.php │ │ │ ├── NavTabPresenter.php │ │ │ ├── NavbarPresenter.php │ │ │ ├── NavbarRightPresenter.php │ │ │ └── SidebarMenuPresenter.php │ │ ├── Presenter.php │ │ └── PresenterInterface.php │ ├── README.md │ ├── composer.json │ ├── shots │ │ └── multilevel-menu-pingpong.png │ └── src │ │ ├── config │ │ └── config.php │ │ └── views │ │ ├── child │ │ ├── dropdown.blade.php │ │ └── item.blade.php │ │ ├── default.blade.php │ │ ├── item │ │ ├── dropdown.blade.php │ │ └── item.blade.php │ │ ├── menu.blade.php │ │ ├── nav-pills-justified.blade.php │ │ ├── nav-pills-stacked.blade.php │ │ ├── nav-pills.blade.php │ │ ├── nav-tabs-justified.blade.php │ │ ├── nav-tabs.blade.php │ │ ├── navbar-left.blade.php │ │ ├── navbar-right.blade.php │ │ └── style.blade.php │ ├── Modules │ ├── .gitignore │ ├── Collection.php │ ├── Commands │ │ ├── CommandCommand.php │ │ ├── ControllerCommand.php │ │ ├── DisableCommand.php │ │ ├── DumpCommand.php │ │ ├── EnableCommand.php │ │ ├── GenerateFilterCommand.php │ │ ├── GenerateProviderCommand.php │ │ ├── GenerateRouteProviderCommand.php │ │ ├── GeneratorCommand.php │ │ ├── InstallCommand.php │ │ ├── ListCommand.php │ │ ├── MakeCommand.php │ │ ├── MakeRequestCommand.php │ │ ├── MigrateCommand.php │ │ ├── MigrateRefreshCommand.php │ │ ├── MigrateResetCommand.php │ │ ├── MigrateRollbackCommand.php │ │ ├── MigrationCommand.php │ │ ├── ModelCommand.php │ │ ├── PublishCommand.php │ │ ├── PublishMigrationCommand.php │ │ ├── PublishTranslationCommand.php │ │ ├── SeedCommand.php │ │ ├── SeedMakeCommand.php │ │ ├── SetupCommand.php │ │ ├── UpdateCommand.php │ │ ├── UseCommand.php │ │ └── stubs │ │ │ ├── command.stub │ │ │ ├── composer.stub │ │ │ ├── controller.stub │ │ │ ├── filter.stub │ │ │ ├── json.stub │ │ │ ├── migration │ │ │ ├── add.stub │ │ │ ├── create.stub │ │ │ ├── delete.stub │ │ │ ├── drop.stub │ │ │ └── plain.stub │ │ │ ├── model.stub │ │ │ ├── provider.stub │ │ │ ├── request.stub │ │ │ ├── route-provider.stub │ │ │ ├── routes.stub │ │ │ ├── scaffold │ │ │ ├── config.stub │ │ │ └── provider.stub │ │ │ ├── seeder.stub │ │ │ ├── start.stub │ │ │ └── views │ │ │ ├── index.stub │ │ │ └── master.stub │ ├── Contracts │ │ ├── PublisherInterface.php │ │ ├── RepositoryInterface.php │ │ └── RunableInterface.php │ ├── Exceptions │ │ └── ModuleNotFoundException.php │ ├── Facades │ │ └── Module.php │ ├── Generators │ │ ├── FileGenerator.php │ │ ├── Generator.php │ │ └── ModuleGenerator.php │ ├── Json.php │ ├── LICENSE │ ├── Migrations │ │ └── Migrator.php │ ├── Module.php │ ├── ModulesServiceProvider.php │ ├── Process │ │ ├── Installer.php │ │ ├── Runner.php │ │ └── Updater.php │ ├── Providers │ │ ├── BootstrapServiceProvider.php │ │ ├── ConsoleServiceProvider.php │ │ └── ContractsServiceProvider.php │ ├── Publishing │ │ ├── AssetPublisher.php │ │ ├── LangPublisher.php │ │ ├── MigrationPublisher.php │ │ └── Publisher.php │ ├── README.md │ ├── Repository.php │ ├── Routing │ │ └── Controller.php │ ├── Starter.php │ ├── Traits │ │ ├── MigrationLoaderTrait.php │ │ └── ModuleCommandTrait.php │ ├── composer.json │ └── src │ │ └── config │ │ └── config.php │ ├── Presenters │ ├── .gitignore │ ├── LICENSE │ ├── Model.php │ ├── PresentableInterface.php │ ├── PresentableTrait.php │ ├── Presenter.php │ ├── README.md │ └── composer.json │ ├── Shortcode │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── Shortcode.php │ ├── ShortcodeFacade.php │ ├── ShortcodeServiceProvider.php │ └── composer.json │ ├── Support │ ├── Json.php │ ├── Stub.php │ ├── Traits │ │ ├── Imageable.php │ │ └── Publishable.php │ ├── composer.json │ └── helpers.php │ ├── Themes │ ├── .gitignore │ ├── Console │ │ ├── CacheCommand.php │ │ ├── ListCommand.php │ │ ├── MakeCommand.php │ │ ├── PublishCommand.php │ │ └── stubs │ │ │ ├── json.stub │ │ │ ├── theme.stub │ │ │ └── theme │ │ │ ├── assets │ │ │ └── .gitkeep │ │ │ ├── config │ │ │ └── config.php │ │ │ ├── lang │ │ │ └── en │ │ │ │ └── .gitkeep │ │ │ └── views │ │ │ └── .gitkeep │ ├── Finder.php │ ├── LICENSE │ ├── README.md │ ├── Repository.php │ ├── Theme.php │ ├── ThemeFacade.php │ ├── ThemesServiceProvider.php │ ├── composer.json │ ├── helpers.php │ └── src │ │ └── config │ │ ├── .gitkeep │ │ └── config.php │ ├── Trusty │ ├── .gitignore │ ├── Exceptions │ │ ├── ForbiddenException.php │ │ └── PermissionDeniedException.php │ ├── Facades │ │ └── Trusty.php │ ├── LICENSE │ ├── Permission.php │ ├── README.md │ ├── Role.php │ ├── Traits │ │ ├── PermissionTrait.php │ │ ├── SlugableTrait.php │ │ └── TrustyTrait.php │ ├── Trusty.php │ ├── TrustyServiceProvider.php │ ├── composer.json │ └── src │ │ ├── config │ │ └── config.php │ │ └── migrations │ │ ├── .gitkeep │ │ ├── 2014_11_02_051938_create_roles_table.php │ │ ├── 2014_11_02_052125_create_permissions_table.php │ │ ├── 2014_11_02_052410_create_role_user_table.php │ │ └── 2014_11_02_092851_create_permission_role_table.php │ └── Widget │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── Widget.php │ ├── WidgetFacade.php │ ├── WidgetServiceProvider.php │ └── composer.json └── tests ├── .gitkeep ├── Generators ├── .gitkeep └── MigrationParserTest.php ├── Menus ├── BuilderTest.php └── MenuTest.php ├── Modules ├── JsonTest.php ├── RepositoryTest.php └── test.json ├── PingpongTestCase.php ├── Presenters └── PresenterTest.php ├── Shortcode ├── FacadeTest.php └── ShortcodeTest.php ├── Themes ├── .gitkeep └── ThemeTest.php ├── Trusty ├── .gitkeep └── TrustyTest.php └── Widget └── WidgetTest.php /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | /vendor/ 3 | composer.phar 4 | composer.lock -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.5 5 | - 5.6 6 | - hhvm 7 | 8 | matrix: 9 | allow_failures: 10 | - php: hhvm 11 | 12 | before_script: 13 | - travis_retry composer self-update 14 | - travis_retry composer install --prefer-source --no-interaction --dev 15 | 16 | script: phpunit 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Pingpong Labs 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of sky nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pingpong Sky - An Extra Laravel Component 2 | 3 | [![Build Status](https://travis-ci.org/pingpong-labs/sky.svg)](https://travis-ci.org/pingpong-labs/sky) 4 | 5 | ### Version Compability 6 | 7 | Laravel | Pingpong Sky | PHP | Status 8 | :---------|:-----------------|:-------|:-------- 9 | 4.* | 1.0.* |>= 5.4 | Ready 10 | 5.0.* | 2.0.* |>= 5.4 | Ready 11 | 5.1.* | 2.1.* |>= 5.5.9| Ready 12 | 13 | ### Documentation 14 | 15 | Documentation is located [here](http://sky.pingpong-labs.com). 16 | 17 | ### License 18 | 19 | This package is open-sourced software licensed under [The BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause) -------------------------------------------------------------------------------- /build/pull.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BRANCH=$1 4 | 5 | git pull origin $BRANCH 6 | git subtree pull --prefix=src/Pingpong/Widget git@github.com:pingpong-labs/widget.git $BRANCH --squash 7 | git subtree pull --prefix=src/Pingpong/Shortcode git@github.com:pingpong-labs/shortcode.git $BRANCH --squash 8 | git subtree pull --prefix=src/Pingpong/Menus git@github.com:pingpong-labs/menus.git $BRANCH --squash 9 | git subtree pull --prefix=src/Pingpong/Presenters git@github.com:pingpong-labs/presenters.git $BRANCH --squash 10 | git subtree pull --prefix=src/Pingpong/Modules git@github.com:pingpong-labs/modules.git $BRANCH --squash 11 | git subtree pull --prefix=src/Pingpong/Generators git@github.com:pingpong-labs/generators.git $BRANCH --squash 12 | git subtree pull --prefix=src/Pingpong/Trusty git@github.com:pingpong-labs/trusty.git $BRANCH --squash 13 | git subtree pull --prefix=src/Pingpong/Themes git@github.com:pingpong-labs/themes.git $BRANCH --squash 14 | git subtree pull --prefix=src/Pingpong/Support git@github.com:pingpong-labs/support.git $BRANCH --squash 15 | -------------------------------------------------------------------------------- /build/push.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | BRANCH=$1 4 | 5 | git push origin $BRANCH 6 | git subtree push --prefix=src/Pingpong/Widget git@github.com:pingpong-labs/widget.git $BRANCH --squash 7 | git subtree push --prefix=src/Pingpong/Shortcode git@github.com:pingpong-labs/shortcode.git $BRANCH --squash 8 | git subtree push --prefix=src/Pingpong/Menus git@github.com:pingpong-labs/menus.git $BRANCH --squash 9 | git subtree push --prefix=src/Pingpong/Presenters git@github.com:pingpong-labs/presenters.git $BRANCH --squash 10 | git subtree push --prefix=src/Pingpong/Modules git@github.com:pingpong-labs/modules.git $BRANCH --squash 11 | git subtree push --prefix=src/Pingpong/Generators git@github.com:pingpong-labs/generators.git $BRANCH --squash 12 | git subtree push --prefix=src/Pingpong/Trusty git@github.com:pingpong-labs/trusty.git $BRANCH --squash 13 | git subtree push --prefix=src/Pingpong/Themes git@github.com:pingpong-labs/themes.git $BRANCH --squash 14 | git subtree push --prefix=src/Pingpong/Support git@github.com:pingpong-labs/support.git $BRANCH --squash 15 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/sky", 3 | "description": "An Extra Laravel Component", 4 | "license": "BSD-3-Clause", 5 | "homepage": "http://sky.pingpong-labs.com", 6 | "authors": [ 7 | { 8 | "name": "Pingpong Labs", 9 | "email": "pingpong.labs@gmail.com" 10 | } 11 | ], 12 | "minimum-stability": "stable", 13 | "require": { 14 | "php": ">=5.4.0", 15 | "laravel/framework": "5.1.*", 16 | "laravelcollective/html": "~5.0", 17 | "doctrine/dbal": "~2.5" 18 | }, 19 | "require-dev": { 20 | "mockery/mockery": "~0.9", 21 | "phpunit/phpunit": "~4", 22 | "pingpong/testing": "2.1.*" 23 | }, 24 | "autoload": { 25 | "psr-4": { 26 | "Pingpong\\": "src/Pingpong" 27 | }, 28 | "classmap": [ 29 | "tests/PingpongTestCase.php" 30 | ], 31 | "files": [ 32 | "src/Pingpong/Support/helpers.php" 33 | ], 34 | "classmap": [ 35 | "tests/PingpongTestCase.php" 36 | ] 37 | }, 38 | "suggest": { 39 | "erusev/parsedown-extra": "Required for markdown helper." 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /fixture/.env.example: -------------------------------------------------------------------------------- 1 | APP_ENV=local 2 | APP_DEBUG=true 3 | APP_KEY=SomeRandomString 4 | 5 | DB_HOST=localhost 6 | DB_DATABASE=homestead 7 | DB_USERNAME=homestead 8 | DB_PASSWORD=secret 9 | 10 | CACHE_DRIVER=file 11 | SESSION_DRIVER=file 12 | -------------------------------------------------------------------------------- /fixture/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /fixture/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .env 3 | -------------------------------------------------------------------------------- /fixture/Modules/Blog/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Assets/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Config/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Config/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Console/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Console/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Database/Migrations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Database/Migrations/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Database/Seeders/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Database/Seeders/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Database/Seeders/BlogDatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call("OthersTableSeeder"); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /fixture/Modules/Blog/Entities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Entities/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Http/Controllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Http/Controllers/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Http/Controllers/BlogController.php: -------------------------------------------------------------------------------- 1 | 'blog', 'namespace' => 'Modules\Blog\Http\Controllers'], function() 4 | { 5 | Route::get('/', 'BlogController@index'); 6 | }); -------------------------------------------------------------------------------- /fixture/Modules/Blog/Providers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Providers/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/Providers/BlogServiceProvider.php: -------------------------------------------------------------------------------- 1 | Hello World 6 | 7 | @stop -------------------------------------------------------------------------------- /fixture/Modules/Blog/Resources/views/layouts/master.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Module Blog 8 | 9 | 10 | @yield('content') 11 | 12 | -------------------------------------------------------------------------------- /fixture/Modules/Blog/Tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/Blog/Tests/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/Blog/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong-modules/blog", 3 | "description": "", 4 | "authors": [ 5 | { 6 | "name": "Pingpong Labs", 7 | "email": "pingpong.labs@gmail.com" 8 | } 9 | ], 10 | "autoload": { 11 | "psr-4": { 12 | "Modules\\Blog\\": "" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /fixture/Modules/Blog/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Blog", 3 | "alias": "blog", 4 | "description": "", 5 | "keywords": [], 6 | "active": 1, 7 | "priority": 0, 8 | "providers": [], 9 | "aliases":{}, 10 | "files": [ 11 | "start.php" 12 | ] 13 | } -------------------------------------------------------------------------------- /fixture/Modules/Blog/start.php: -------------------------------------------------------------------------------- 1 | call("OthersTableSeeder"); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /fixture/Modules/User/Entities/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/User/Entities/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/User/Http/Controllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/User/Http/Controllers/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/User/Http/Controllers/UserController.php: -------------------------------------------------------------------------------- 1 | 'user', 'namespace' => 'Modules\User\Http\Controllers'], function() 4 | { 5 | Route::get('/', 'UserController@index'); 6 | }); -------------------------------------------------------------------------------- /fixture/Modules/User/Providers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/User/Providers/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/User/Providers/UserServiceProvider.php: -------------------------------------------------------------------------------- 1 | Hello World 6 | 7 | @stop -------------------------------------------------------------------------------- /fixture/Modules/User/Resources/views/layouts/master.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Module User 8 | 9 | 10 | @yield('content') 11 | 12 | -------------------------------------------------------------------------------- /fixture/Modules/User/Tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/Modules/User/Tests/.gitkeep -------------------------------------------------------------------------------- /fixture/Modules/User/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong-modules/user", 3 | "description": "", 4 | "authors": [ 5 | { 6 | "name": "Pingpong Labs", 7 | "email": "pingpong.labs@gmail.com" 8 | } 9 | ], 10 | "autoload": { 11 | "psr-4": { 12 | "Modules\\User\\": "" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /fixture/Modules/User/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "User", 3 | "alias": "user", 4 | "description": "", 5 | "keywords": [], 6 | "active": 1, 7 | "priority": 0, 8 | "providers": [], 9 | "aliases": [], 10 | "files": [ 11 | "start.php" 12 | ] 13 | } -------------------------------------------------------------------------------- /fixture/Modules/User/start.php: -------------------------------------------------------------------------------- 1 | comment(PHP_EOL.Inspiring::quote().PHP_EOL); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /fixture/app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire') 26 | ->hourly(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /fixture/app/Events/Event.php: -------------------------------------------------------------------------------- 1 | isHttpException($e)) 40 | { 41 | return $this->renderHttpException($e); 42 | } 43 | else 44 | { 45 | return parent::render($request, $e); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /fixture/app/Handlers/Commands/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/app/Handlers/Commands/.gitkeep -------------------------------------------------------------------------------- /fixture/app/Handlers/Events/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/app/Handlers/Events/.gitkeep -------------------------------------------------------------------------------- /fixture/app/Http/Controllers/Auth/AuthController.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 33 | $this->registrar = $registrar; 34 | 35 | $this->middleware('guest', ['except' => 'getLogout']); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /fixture/app/Http/Controllers/Auth/PasswordController.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 33 | $this->passwords = $passwords; 34 | 35 | $this->middleware('guest'); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /fixture/app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | middleware('auth'); 24 | } 25 | 26 | /** 27 | * Show the application dashboard to the user. 28 | * 29 | * @return Response 30 | */ 31 | public function index() 32 | { 33 | return view('home'); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /fixture/app/Http/Controllers/WelcomeController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 24 | } 25 | 26 | /** 27 | * Show the application welcome screen to the user. 28 | * 29 | * @return Response 30 | */ 31 | public function index() 32 | { 33 | return view('welcome'); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /fixture/app/Http/Kernel.php: -------------------------------------------------------------------------------- 1 | 'App\Http\Middleware\Authenticate', 28 | 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 29 | 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 30 | ]; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /fixture/app/Http/Middleware/Authenticate.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 24 | } 25 | 26 | /** 27 | * Handle an incoming request. 28 | * 29 | * @param \Illuminate\Http\Request $request 30 | * @param \Closure $next 31 | * @return mixed 32 | */ 33 | public function handle($request, Closure $next) 34 | { 35 | if ($this->auth->guest()) 36 | { 37 | if ($request->ajax()) 38 | { 39 | return response('Unauthorized.', 401); 40 | } 41 | else 42 | { 43 | return redirect()->guest('auth/login'); 44 | } 45 | } 46 | 47 | return $next($request); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /fixture/app/Http/Middleware/RedirectIfAuthenticated.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 25 | } 26 | 27 | /** 28 | * Handle an incoming request. 29 | * 30 | * @param \Illuminate\Http\Request $request 31 | * @param \Closure $next 32 | * @return mixed 33 | */ 34 | public function handle($request, Closure $next) 35 | { 36 | if ($this->auth->check()) 37 | { 38 | return new RedirectResponse(url('/home')); 39 | } 40 | 41 | return $next($request); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /fixture/app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | 'required', 23 | 'password' => 'required', 24 | ]; 25 | 26 | $validation = Validator::make($data = Input::all(), $rules); 27 | 28 | if($validation->fails()) 29 | { 30 | throw new RuntimeException("Validation failed"); 31 | } 32 | 33 | return $data; 34 | }); -------------------------------------------------------------------------------- /fixture/app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->bind( 29 | 'Illuminate\Contracts\Auth\Registrar', 30 | 'App\Services\Registrar' 31 | ); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /fixture/app/Providers/BusServiceProvider.php: -------------------------------------------------------------------------------- 1 | mapUsing(function($command) 17 | { 18 | return Dispatcher::simpleMapping( 19 | $command, 'App\Commands', 'App\Handlers\Commands' 20 | ); 21 | }); 22 | } 23 | 24 | /** 25 | * Register any application services. 26 | * 27 | * @return void 28 | */ 29 | public function register() 30 | { 31 | // 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /fixture/app/Providers/ConfigServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 15 | 'EventListener', 16 | ], 17 | ]; 18 | 19 | /** 20 | * Register any other events for your application. 21 | * 22 | * @param \Illuminate\Contracts\Events\Dispatcher $events 23 | * @return void 24 | */ 25 | public function boot(DispatcherContract $events) 26 | { 27 | parent::boot($events); 28 | 29 | // 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /fixture/app/Providers/RouteServiceProvider.php: -------------------------------------------------------------------------------- 1 | group(['namespace' => $this->namespace], function($router) 39 | { 40 | require app_path('Http/routes.php'); 41 | }); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /fixture/app/Services/Registrar.php: -------------------------------------------------------------------------------- 1 | 'required|max:255', 19 | 'email' => 'required|email|max:255|unique:users', 20 | 'password' => 'required|confirmed|min:6', 21 | ]); 22 | } 23 | 24 | /** 25 | * Create a new user instance after a valid registration. 26 | * 27 | * @param array $data 28 | * @return User 29 | */ 30 | public function create(array $data) 31 | { 32 | return User::create([ 33 | 'name' => $data['name'], 34 | 'email' => $data['email'], 35 | 'password' => bcrypt($data['password']), 36 | ]); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /fixture/app/User.php: -------------------------------------------------------------------------------- 1 | [ 17 | 18 | realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), 19 | realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), 20 | realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), 21 | realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), 22 | realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), 23 | 24 | ], 25 | 26 | /* 27 | |-------------------------------------------------------------------------- 28 | | Compiled File Providers 29 | |-------------------------------------------------------------------------- 30 | | 31 | | Here you may list service providers which define a "compiles" function 32 | | that returns additional files that should be compiled, providing an 33 | | easy way to get common files from any packages you are utilizing. 34 | | 35 | */ 36 | 37 | 'providers' => [ 38 | // 39 | ], 40 | 41 | ]; 42 | -------------------------------------------------------------------------------- /fixture/config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => '', 19 | 'secret' => '', 20 | ], 21 | 22 | 'mandrill' => [ 23 | 'secret' => '', 24 | ], 25 | 26 | 'ses' => [ 27 | 'key' => '', 28 | 'secret' => '', 29 | 'region' => 'us-east-1', 30 | ], 31 | 32 | 'stripe' => [ 33 | 'model' => 'User', 34 | 'secret' => '', 35 | ], 36 | 37 | ]; 38 | -------------------------------------------------------------------------------- /fixture/config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | realpath(base_path('resources/views')) 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => realpath(storage_path().'/framework/views'), 32 | 33 | ]; 34 | -------------------------------------------------------------------------------- /fixture/database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /fixture/database/migrations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/database/migrations/.gitkeep -------------------------------------------------------------------------------- /fixture/database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->string('email')->unique(); 20 | $table->string('password', 60); 21 | $table->rememberToken(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::drop('users'); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /fixture/database/migrations/2014_10_12_100000_create_password_resets_table.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 18 | $table->string('token')->index(); 19 | $table->timestamp('created_at'); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::drop('password_resets'); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /fixture/database/seeds/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/database/seeds/.gitkeep -------------------------------------------------------------------------------- /fixture/database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call('UserTableSeeder'); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /fixture/generators/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /fixture/gulpfile.js: -------------------------------------------------------------------------------- 1 | var elixir = require('laravel-elixir'); 2 | 3 | /* 4 | |-------------------------------------------------------------------------- 5 | | Elixir Asset Management 6 | |-------------------------------------------------------------------------- 7 | | 8 | | Elixir provides a clean, fluent API for defining some basic Gulp tasks 9 | | for your Laravel application. By default, we are compiling the Less 10 | | file for our application, as well as publishing vendor resources. 11 | | 12 | */ 13 | 14 | elixir(function(mix) { 15 | mix.less('app.less'); 16 | }); 17 | -------------------------------------------------------------------------------- /fixture/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "gulp": "^3.8.8", 4 | "laravel-elixir": "*" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /fixture/phpspec.yml: -------------------------------------------------------------------------------- 1 | suites: 2 | main: 3 | namespace: App 4 | psr4_prefix: App 5 | src_path: app -------------------------------------------------------------------------------- /fixture/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | ./tests/ 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /fixture/public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Redirect Trailing Slashes... 9 | RewriteRule ^(.*)/$ /$1 [L,R=301] 10 | 11 | # Handle Front Controller... 12 | RewriteCond %{REQUEST_FILENAME} !-d 13 | RewriteCond %{REQUEST_FILENAME} !-f 14 | RewriteRule ^ index.php [L] 15 | 16 | -------------------------------------------------------------------------------- /fixture/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/public/favicon.ico -------------------------------------------------------------------------------- /fixture/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/app.less: -------------------------------------------------------------------------------- 1 | @import "bootstrap/bootstrap"; 2 | 3 | @btn-font-weight: 300; 4 | @font-family-sans-serif: "Roboto", Helvetica, Arial, sans-serif; 5 | 6 | body, label, .checkbox label { 7 | font-weight: 300; 8 | } 9 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | .btn-xs & { 32 | top: 0; 33 | padding: 1px 5px; 34 | } 35 | 36 | // Hover state, but only for links 37 | a& { 38 | &:hover, 39 | &:focus { 40 | color: @badge-link-hover-color; 41 | text-decoration: none; 42 | cursor: pointer; 43 | } 44 | } 45 | 46 | // Account for badges in navs 47 | .list-group-item.active > &, 48 | .nav-pills > .active > a > & { 49 | color: @badge-active-color; 50 | background-color: @badge-active-bg; 51 | } 52 | .list-group-item > & { 53 | float: right; 54 | } 55 | .list-group-item > & + & { 56 | margin-right: 5px; 57 | } 58 | .nav-pills > li > a > & { 59 | margin-left: 3px; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset and dependencies 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | @import "glyphicons.less"; 9 | 10 | // Core CSS 11 | @import "scaffolding.less"; 12 | @import "type.less"; 13 | @import "code.less"; 14 | @import "grid.less"; 15 | @import "tables.less"; 16 | @import "forms.less"; 17 | @import "buttons.less"; 18 | 19 | // Components 20 | @import "component-animations.less"; 21 | @import "dropdowns.less"; 22 | @import "button-groups.less"; 23 | @import "input-groups.less"; 24 | @import "navs.less"; 25 | @import "navbar.less"; 26 | @import "breadcrumbs.less"; 27 | @import "pagination.less"; 28 | @import "pager.less"; 29 | @import "labels.less"; 30 | @import "badges.less"; 31 | @import "jumbotron.less"; 32 | @import "thumbnails.less"; 33 | @import "alerts.less"; 34 | @import "progress-bars.less"; 35 | @import "media.less"; 36 | @import "list-group.less"; 37 | @import "panels.less"; 38 | @import "responsive-embed.less"; 39 | @import "wells.less"; 40 | @import "close.less"; 41 | 42 | // Components w/ JavaScript 43 | @import "modals.less"; 44 | @import "tooltip.less"; 45 | @import "popovers.less"; 46 | @import "carousel.less"; 47 | 48 | // Utility classes 49 | @import "utilities.less"; 50 | @import "responsive-utilities.less"; 51 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | visibility: hidden; 21 | 22 | &.in { display: block; visibility: visible; } 23 | tr&.in { display: table-row; } 24 | tbody&.in { display: table-row-group; } 25 | } 26 | 27 | .collapsing { 28 | position: relative; 29 | height: 0; 30 | overflow: hidden; 31 | .transition-property(~"height, visibility"); 32 | .transition-duration(.35s); 33 | .transition-timing-function(ease); 34 | } 35 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding (@jumbotron-padding / 2); 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: (@jumbotron-padding / 2); 18 | font-size: @jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | > hr { 23 | border-top-color: darken(@jumbotron-bg, 10%); 24 | } 25 | 26 | .container &, 27 | .container-fluid & { 28 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 29 | } 30 | 31 | .container { 32 | max-width: 100%; 33 | } 34 | 35 | @media screen and (min-width: @screen-sm-min) { 36 | padding: (@jumbotron-padding * 1.6) 0; 37 | 38 | .container &, 39 | .container-fluid & { 40 | padding-left: (@jumbotron-padding * 2); 41 | padding-right: (@jumbotron-padding * 2); 42 | } 43 | 44 | h1, 45 | .h1 { 46 | font-size: (@font-size-base * 4.5); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/media.less: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media-right, 11 | .media > .pull-right { 12 | padding-left: 10px; 13 | } 14 | 15 | .media-left, 16 | .media > .pull-left { 17 | padding-right: 10px; 18 | } 19 | 20 | .media-left, 21 | .media-right, 22 | .media-body { 23 | display: table-cell; 24 | vertical-align: top; 25 | } 26 | 27 | .media-middle { 28 | vertical-align: middle; 29 | } 30 | 31 | .media-bottom { 32 | vertical-align: bottom; 33 | } 34 | 35 | // Reset margins on headings for tighter default spacing 36 | .media-heading { 37 | margin-top: 0; 38 | margin-bottom: 5px; 39 | } 40 | 41 | // Media list variation 42 | // 43 | // Undo default ul/ol styles 44 | .media-list { 45 | padding-left: 0; 46 | list-style: none; 47 | } 48 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text.less"; 6 | @import "mixins/opacity.less"; 7 | @import "mixins/image.less"; 8 | @import "mixins/labels.less"; 9 | @import "mixins/reset-filter.less"; 10 | @import "mixins/resize.less"; 11 | @import "mixins/responsive-visibility.less"; 12 | @import "mixins/size.less"; 13 | @import "mixins/tab-focus.less"; 14 | @import "mixins/text-emphasis.less"; 15 | @import "mixins/text-overflow.less"; 16 | @import "mixins/vendor-prefixes.less"; 17 | 18 | // Components 19 | @import "mixins/alerts.less"; 20 | @import "mixins/buttons.less"; 21 | @import "mixins/panels.less"; 22 | @import "mixins/pagination.less"; 23 | @import "mixins/list-group.less"; 24 | @import "mixins/nav-divider.less"; 25 | @import "mixins/forms.less"; 26 | @import "mixins/progress-bar.less"; 27 | @import "mixins/table-row.less"; 28 | 29 | // Skins 30 | @import "mixins/background-variant.less"; 31 | @import "mixins/border-radius.less"; 32 | @import "mixins/gradients.less"; 33 | 34 | // Layout 35 | @import "mixins/clearfix.less"; 36 | @import "mixins/center-block.less"; 37 | @import "mixins/nav-vertical-align.less"; 38 | @import "mixins/grid-framework.less"; 39 | @import "mixins/grid.less"; 40 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/buttons.less: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | .button-variant(@color; @background; @border) { 7 | color: @color; 8 | background-color: @background; 9 | border-color: @border; 10 | 11 | &:hover, 12 | &:focus, 13 | &.focus, 14 | &:active, 15 | &.active, 16 | .open > .dropdown-toggle& { 17 | color: @color; 18 | background-color: darken(@background, 10%); 19 | border-color: darken(@border, 12%); 20 | } 21 | &:active, 22 | &.active, 23 | .open > .dropdown-toggle& { 24 | background-image: none; 25 | } 26 | &.disabled, 27 | &[disabled], 28 | fieldset[disabled] & { 29 | &, 30 | &:hover, 31 | &:focus, 32 | &.focus, 33 | &:active, 34 | &.active { 35 | background-color: @background; 36 | border-color: @border; 37 | } 38 | } 39 | 40 | .badge { 41 | color: @background; 42 | background-color: @color; 43 | } 44 | } 45 | 46 | // Button sizes 47 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 48 | padding: @padding-vertical @padding-horizontal; 49 | font-size: @font-size; 50 | line-height: @line-height; 51 | border-radius: @border-radius; 52 | } 53 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/image.less: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | .img-responsive(@display: block) { 10 | display: @display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { 21 | background-image: url("@{file-1x}"); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url("@{file-2x}"); 31 | background-size: @width-1x @height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: @cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | 26 | // Modifier class for 16:9 aspect ratio 27 | &.embed-responsive-16by9 { 28 | padding-bottom: 56.25%; 29 | } 30 | 31 | // Modifier class for 4:3 aspect ratio 32 | &.embed-responsive-4by3 { 33 | padding-bottom: 75%; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /fixture/resources/assets/less/bootstrap/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /fixture/resources/lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /fixture/resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | "Passwords must be at least six characters and match the confirmation.", 17 | "user" => "We can't find a user with that e-mail address.", 18 | "token" => "This password reset token is invalid.", 19 | "sent" => "We have e-mailed your password reset link!", 20 | "reset" => "Your password has been reset!", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /fixture/resources/views/auth/password.blade.php: -------------------------------------------------------------------------------- 1 | @extends('app') 2 | 3 | @section('content') 4 |
5 |
6 |
7 |
8 |
Reset Password
9 |
10 | @if (session('status')) 11 |
12 | {{ session('status') }} 13 |
14 | @endif 15 | 16 | @if (count($errors) > 0) 17 |
18 | Whoops! There were some problems with your input.

19 |
    20 | @foreach ($errors->all() as $error) 21 |
  • {{ $error }}
  • 22 | @endforeach 23 |
24 |
25 | @endif 26 | 27 |
28 | 29 | 30 |
31 | 32 |
33 | 34 |
35 |
36 | 37 |
38 |
39 | 42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | @endsection 51 | -------------------------------------------------------------------------------- /fixture/resources/views/emails/password.blade.php: -------------------------------------------------------------------------------- 1 | Click here to reset your password: {{ url('password/reset/'.$token) }} 2 | -------------------------------------------------------------------------------- /fixture/resources/views/errors/503.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 33 | 34 | 35 |
36 |
37 |
Be right back.
38 |
39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /fixture/resources/views/home.blade.php: -------------------------------------------------------------------------------- 1 | @extends('app') 2 | 3 | @section('content') 4 |
5 |
6 |
7 |
8 |
Home
9 | 10 |
11 | You are logged in! 12 |
13 |
14 |
15 |
16 |
17 | @endsection 18 | -------------------------------------------------------------------------------- /fixture/resources/views/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/fixture/resources/views/vendor/.gitkeep -------------------------------------------------------------------------------- /fixture/resources/views/welcome.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 37 | 38 | 39 |
40 |
41 |
Laravel 5
42 |
{{ Inspiring::quote() }}
43 |
44 |
45 | 46 | 47 | -------------------------------------------------------------------------------- /fixture/server.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | 9 | $uri = urldecode( 10 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 11 | ); 12 | 13 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the 14 | // built-in PHP web server. This provides a convenient way to test a Laravel 15 | // application without having installed a "real" web server software here. 16 | if ($uri !== '/' and file_exists(__DIR__.'/public'.$uri)) 17 | { 18 | return false; 19 | } 20 | 21 | require_once __DIR__.'/public/index.php'; 22 | -------------------------------------------------------------------------------- /fixture/storage/.gitignore: -------------------------------------------------------------------------------- 1 | laravel.log 2 | /meta -------------------------------------------------------------------------------- /fixture/storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /fixture/storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | config.php 2 | routes.php 3 | compiled.php 4 | services.json 5 | events.scanned.php 6 | routes.scanned.php 7 | -------------------------------------------------------------------------------- /fixture/storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /fixture/storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /fixture/storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /fixture/storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /fixture/tests/ExampleTest.php: -------------------------------------------------------------------------------- 1 | call('GET', '/'); 13 | 14 | $this->assertEquals(200, $response->getStatusCode()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /fixture/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | make('Illuminate\Contracts\Console\Kernel')->bootstrap(); 15 | 16 | return $app; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /fixture/themes/default/config/config.php: -------------------------------------------------------------------------------- 1 | 'bar' 5 | ]; -------------------------------------------------------------------------------- /fixture/themes/default/lang/en/theme.php: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | ./tests/ 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | /.idea -------------------------------------------------------------------------------- /src/Pingpong/Generators/Console/FormCommand.php: -------------------------------------------------------------------------------- 1 | argument('table'), 33 | $this->option('fields') 34 | ); 35 | 36 | $this->line($generator->render()); 37 | } 38 | 39 | /** 40 | * The array of command arguments. 41 | * 42 | * @return array 43 | */ 44 | public function getArguments() 45 | { 46 | return [ 47 | ['table', InputArgument::OPTIONAL, 'The name of table being used.', null], 48 | ]; 49 | } 50 | 51 | /** 52 | * The array of command options. 53 | * 54 | * @return array 55 | */ 56 | public function getOptions() 57 | { 58 | return [ 59 | ['fields', 'f', InputOption::VALUE_OPTIONAL, 'The form fields.', null], 60 | ]; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/ConsoleGenerator.php: -------------------------------------------------------------------------------- 1 | getAppNamespace().'Console\\Commands\\'; 32 | } 33 | 34 | /** 35 | * Get template replacements. 36 | * 37 | * @return array 38 | */ 39 | public function getReplacements() 40 | { 41 | return array_merge(parent::getReplacements(), [ 42 | 'command' => $this->option('command', 'command:name'), 43 | 'description' => $this->option('description', 'Command description'), 44 | ]); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/FileAlreadyExistsException.php: -------------------------------------------------------------------------------- 1 | name = $name; 33 | $this->fields = $fields; 34 | } 35 | 36 | /** 37 | * Render the form. 38 | * 39 | * @return string 40 | */ 41 | public function render() 42 | { 43 | if ($this->fields) { 44 | return $this->renderFromFields(); 45 | } 46 | 47 | return $this->renderFromDb(); 48 | } 49 | 50 | /** 51 | * Render form from database. 52 | * 53 | * @return string 54 | */ 55 | public function renderFromDb() 56 | { 57 | return (new TableDumper($this->name))->render(); 58 | } 59 | 60 | /** 61 | * Render form from fields option. 62 | * 63 | * @return string 64 | */ 65 | public function renderFromFields() 66 | { 67 | return (new FieldsDumper($this->fields))->render(); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/GeneratorsServiceProvider.php: -------------------------------------------------------------------------------- 1 | publishes([ 37 | __DIR__ . '/Stubs/' => $templatePath 38 | ], 'stubs'); 39 | 40 | $configPath = config_path('generators.php'); 41 | 42 | $this->publishes([ 43 | __DIR__.'/config.php' => $configPath, 44 | ], 'config'); 45 | 46 | if (file_exists($configPath)) { 47 | $this->mergeConfigFrom($configPath, 'generators'); 48 | } 49 | } 50 | 51 | /** 52 | * Register the service provider. 53 | */ 54 | public function register() 55 | { 56 | foreach ($this->consoles as $console) { 57 | $this->commands('Pingpong\Generators\Console\\'.$console.'Command'); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Pingpong Labs 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of generators nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/README.md: -------------------------------------------------------------------------------- 1 | Laravel 5 Generators 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/generators) -------------------------------------------------------------------------------- /src/Pingpong/Generators/SeedGenerator.php: -------------------------------------------------------------------------------- 1 | getBasePath().$this->getName().'.php'; 32 | } 33 | 34 | /** 35 | * Get name of class. 36 | * 37 | * @return string 38 | */ 39 | public function getName() 40 | { 41 | $name = parent::getName(); 42 | 43 | $suffix = $this->master ? 'DatabaseSeeder' : 'TableSeeder'; 44 | 45 | return $name.$suffix; 46 | } 47 | 48 | /** 49 | * Get root namespace. 50 | * 51 | * @return string 52 | */ 53 | public function getRootNamespace() 54 | { 55 | return false; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stub.php: -------------------------------------------------------------------------------- 1 | 2 | {!! Form::label('$NAME$', '', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::checkbox('$NAME$') !!} 5 | $LABEL$ 6 |
7 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/email.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '$LABEL$:', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::email('$NAME$', null, ['class' => 'form-control']) !!} 5 |
6 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/input.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '$LABEL$:', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::$TYPE$('$NAME$', null, ['class' => 'form-control']) !!} 5 |
6 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/password.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '$LABEL$:', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::password('$NAME$', ['class' => 'form-control']) !!} 5 |
6 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/radio.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::radio('$NAME$') !!} 5 | $LABEL$ 6 |
7 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/select.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '$LABEL$:', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::select('$NAME$', [], null, ['class' => 'form-control']) !!} 5 |
6 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/text.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '$LABEL$:', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::text('$NAME$', null, ['class' => 'form-control']) !!} 5 |
6 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/form/textarea.stub: -------------------------------------------------------------------------------- 1 |
2 | {!! Form::label('$NAME$', '$LABEL$:', ['class' => 'col-md-2 control-label']) !!} 3 |
4 | {!! Form::textarea('$NAME$', null, ['class' => 'form-control']) !!} 5 |
6 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/migration/add.stub: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $FIELDS$ 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::drop('$TABLE$'); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/migration/delete.stub: -------------------------------------------------------------------------------- 1 | increments('id'); 28 | $FIELDS$ 29 | $table->timestamps(); 30 | }); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/migration/pivot.stub: -------------------------------------------------------------------------------- 1 | integer('$COLUMN_ONE$_id')->unsigned()->index(); 18 | $table->foreign('$COLUMN_ONE$_id')->references('id')->on('$TABLE_ONE$')->onDelete('cascade'); 19 | $table->integer('$COLUMN_TWO$_id')->unsigned()->index(); 20 | $table->foreign('$COLUMN_TWO$_id')->references('id')->on('$TABLE_TWO$')->onDelete('cascade'); 21 | $TIMESTAMP$ 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::drop('$TABLE_PIVOT$'); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/migration/plain.stub: -------------------------------------------------------------------------------- 1 | 2 | $LABEL$ 3 | {!! $$VAR$->$COLUMN$ !!} 4 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/scaffold/views/create.stub: -------------------------------------------------------------------------------- 1 | @extends('$EXTENDS$') 2 | 3 | @section('content') 4 | 5 |
6 |
7 | Add New $STUDLY_SINGULAR_ENTITY$ 8 |
9 | Back 10 |
11 |
12 |
13 | @include('$PREFIX_DOT$$LOWER_PLURAL_ENTITY$.form') 14 |
15 |
16 | 17 | @stop -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/scaffold/views/edit.stub: -------------------------------------------------------------------------------- 1 | @extends('$EXTENDS$') 2 | 3 | @section('content') 4 | 5 |
6 |
7 | Edit $STUDLY_SINGULAR_ENTITY$ 8 |
9 | Back 10 |
11 |
12 |
13 | @include('$PREFIX_DOT$$LOWER_PLURAL_ENTITY$.form', ['model' => $$LOWER_SINGULAR_ENTITY$]) 14 |
15 |
16 | 17 | @stop -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/scaffold/views/form.stub: -------------------------------------------------------------------------------- 1 | @if (count($errors) > 0) 2 |
3 | Whoops! There were some problems with your input.

4 | 9 |
10 | @endif 11 | 12 |
13 | @if (isset($model)) 14 | {!! Form::model($model, ['files' => true, 'method' => 'PUT', 'route' => ['$PREFIX_DOT$$LOWER_PLURAL_ENTITY$.update', $model->id]]) !!} 15 | @else 16 | {!! Form::open(['files' => true, 'route' => '$PREFIX_DOT$$LOWER_PLURAL_ENTITY$.store']) !!} 17 | @endif 18 | $FORM$ 19 |
20 | 21 |
22 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 23 |
24 |
25 | {!! Form::close() !!} 26 |
-------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/scaffold/views/show.stub: -------------------------------------------------------------------------------- 1 | @extends('$EXTENDS$') 2 | 3 | @section('content') 4 |
5 |
6 | Show $STUDLY_SINGULAR_ENTITY$ 7 |
8 | Edit 9 | Back 10 |
11 |
12 | 13 | 14 | 15 | 16 | 17 | $SHOW_BODY$ 18 | 19 | 20 | 21 | 22 |
ID{!! $$LOWER_SINGULAR_ENTITY$->id !!}
Created At{!! $$LOWER_SINGULAR_ENTITY$->created_at !!}
23 |
24 | @stop -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/seed.stub: -------------------------------------------------------------------------------- 1 | call("OthersTableSeeder"); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/view.stub: -------------------------------------------------------------------------------- 1 | @extends('$EXTENDS$') 2 | 3 | @section('$SECTION$') 4 | 5 | $CONTENT$ 6 | 7 | @endsection -------------------------------------------------------------------------------- /src/Pingpong/Generators/Stubs/views/master.stub: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Laravel 8 | 9 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 22 | 23 | 24 |
25 | @yield('content') 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/generators", 3 | "description": "Laravel Generators", 4 | "license": "BSD-3-Clause", 5 | "keywords": [ 6 | "laravel", 7 | "generators", 8 | "pingpong" 9 | ], 10 | "authors": [ 11 | { 12 | "name": "Pingpong Labs", 13 | "email": "pingpong.labs@gmail.com" 14 | } 15 | ], 16 | "require": { 17 | "php": ">=5.4.0", 18 | "illuminate/filesystem": "5.1.*", 19 | "illuminate/support": "5.1.*", 20 | "pingpong/support": "2.1.*", 21 | "doctrine/dbal": "~2.5" 22 | }, 23 | "require-dev": { 24 | "mockery/mockery": "~0.9", 25 | "phpunit/phpunit": "~4" 26 | }, 27 | "autoload": { 28 | "psr-4": { 29 | "Pingpong\\Generators\\": "" 30 | } 31 | }, 32 | "minimum-stability": "stable" 33 | } 34 | -------------------------------------------------------------------------------- /src/Pingpong/Generators/config.php: -------------------------------------------------------------------------------- 1 | base_path('resources/pingpong/generators/stubs') 5 | ]; -------------------------------------------------------------------------------- /src/Pingpong/Menus/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Pingpong Labs 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /src/Pingpong/Menus/MenuFacade.php: -------------------------------------------------------------------------------- 1 | '.PHP_EOL; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/Presenters/Bootstrap/NavTabPresenter.php: -------------------------------------------------------------------------------- 1 | '.PHP_EOL; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/Presenters/Bootstrap/NavbarRightPresenter.php: -------------------------------------------------------------------------------- 1 | '.PHP_EOL; 13 | } 14 | 15 | /** 16 | * {@inheritdoc }. 17 | */ 18 | public function getMenuWithDropDownWrapper($item) 19 | { 20 | return '' 29 | .PHP_EOL; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/Presenters/PresenterInterface.php: -------------------------------------------------------------------------------- 1 | =5.3.0", 21 | "illuminate/support": "5.1.*", 22 | "illuminate/config": "5.1.*", 23 | "illuminate/view": "5.1.*", 24 | "laravelcollective/html": "~5.0" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "~4", 28 | "mockery/mockery": "~0.9" 29 | }, 30 | "autoload": { 31 | "psr-4": { 32 | "Pingpong\\Menus\\": "" 33 | } 34 | }, 35 | "minimum-stability": "stable" 36 | } 37 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/shots/multilevel-menu-pingpong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/src/Pingpong/Menus/shots/multilevel-menu-pingpong.png -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/config/config.php: -------------------------------------------------------------------------------- 1 | array( 6 | 'navbar' => 'Pingpong\Menus\Presenters\Bootstrap\NavbarPresenter', 7 | 'navbar-right' => 'Pingpong\Menus\Presenters\Bootstrap\NavbarRightPresenter', 8 | 'nav-pills' => 'Pingpong\Menus\Presenters\Bootstrap\NavPillsPresenter', 9 | 'nav-tab' => 'Pingpong\Menus\Presenters\Bootstrap\NavTabPresenter', 10 | 'sidebar' => 'Pingpong\Menus\Presenters\Bootstrap\SidebarMenuPresenter', 11 | 'navmenu' => 'Pingpong\Menus\Presenters\Bootstrap\NavMenuPresenter', 12 | ), 13 | 14 | 'ordering' => false, 15 | 16 | ); 17 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/child/dropdown.blade.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/child/item.blade.php: -------------------------------------------------------------------------------- 1 | @if ($item->isDivider()) 2 |
  • 3 | @elseif ($item->isHeader()) 4 | 5 | @else 6 |
  • 7 | 8 | {{ $item->title }} 9 | 10 |
  • 11 | @endif 12 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/default.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/item/dropdown.blade.php: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/item/item.blade.php: -------------------------------------------------------------------------------- 1 | @if ($item->isDivider()) 2 |
  • 3 | @elseif ($item->isHeader()) 4 | 5 | @else 6 |
  • 7 | getAttributes() !!}> 8 | {!! $item->getIcon() !!} 9 | {{ $item->title }} 10 | 11 |
  • 12 | @endif 13 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/menu.blade.php: -------------------------------------------------------------------------------- 1 | @foreach ($items as $item) 2 | @if ($item->hasChilds()) 3 | @include('menus::item.dropdown', compact('item')) 4 | @else 5 | @include('menus::item.item', compact('item')) 6 | @endif 7 | @endforeach 8 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/nav-pills-justified.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/nav-pills-stacked.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/nav-pills.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/nav-tabs-justified.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/nav-tabs.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/navbar-left.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/navbar-right.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/Pingpong/Menus/src/views/style.blade.php: -------------------------------------------------------------------------------- 1 | 50 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | /wiki 6 | .idea/ 7 | /fixture/vendor -------------------------------------------------------------------------------- /src/Pingpong/Modules/Collection.php: -------------------------------------------------------------------------------- 1 | items; 18 | } 19 | 20 | /** 21 | * Get the collection of items as a plain array. 22 | * 23 | * @return array 24 | */ 25 | public function toArray() 26 | { 27 | return array_map(function ($value) { 28 | if ($value instanceof Module) { 29 | return $value->json()->getAttributes(); 30 | } 31 | 32 | return $value instanceof Arrayable ? $value->toArray() : $value; 33 | 34 | }, $this->items); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/DisableCommand.php: -------------------------------------------------------------------------------- 1 | laravel['modules']->findOrFail($this->argument('module')); 32 | 33 | if ($module->enabled()) { 34 | $module->disable(); 35 | 36 | $this->info("Module [{$module}] disabled successful."); 37 | } else { 38 | $this->comment("Module [{$module}] has already disabled."); 39 | } 40 | } 41 | 42 | /** 43 | * Get the console command arguments. 44 | * 45 | * @return array 46 | */ 47 | protected function getArguments() 48 | { 49 | return array( 50 | array('module', InputArgument::REQUIRED, 'Module name.'), 51 | ); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/EnableCommand.php: -------------------------------------------------------------------------------- 1 | laravel['modules']->findOrFail($this->argument('module')); 32 | 33 | if ($module->disabled()) { 34 | $module->enable(); 35 | 36 | $this->info("Module [{$module}] enabled successful."); 37 | } else { 38 | $this->comment("Module [{$module}] has already enabled."); 39 | } 40 | } 41 | 42 | /** 43 | * Get the console command arguments. 44 | * 45 | * @return array 46 | */ 47 | protected function getArguments() 48 | { 49 | return array( 50 | array('module', InputArgument::REQUIRED, 'Module name.'), 51 | ); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/UpdateCommand.php: -------------------------------------------------------------------------------- 1 | laravel['modules']->update($name = $this->getModuleName()); 35 | 36 | $this->info("Module [{$name}] updated successfully."); 37 | } 38 | 39 | /** 40 | * Get the console command arguments. 41 | * 42 | * @return array 43 | */ 44 | protected function getArguments() 45 | { 46 | return array( 47 | array('module', InputArgument::OPTIONAL, 'The name of module will be updated.'), 48 | ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/UseCommand.php: -------------------------------------------------------------------------------- 1 | argument('module')); 33 | 34 | if (!$this->laravel['modules']->has($module)) { 35 | $this->error("Module [{$module}] does not exists."); 36 | 37 | return; 38 | } 39 | 40 | $this->laravel['modules']->setUsed($module); 41 | 42 | $this->info("Module [{$module}] used successfully."); 43 | } 44 | 45 | /** 46 | * Get the console command arguments. 47 | * 48 | * @return array 49 | */ 50 | protected function getArguments() 51 | { 52 | return array( 53 | array('module', InputArgument::REQUIRED, 'The name of module will be used.'), 54 | ); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/command.stub: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $FIELDS$ 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::drop('$TABLE$'); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/migration/delete.stub: -------------------------------------------------------------------------------- 1 | increments('id'); 28 | $FIELDS$ 29 | $table->timestamps(); 30 | }); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/migration/plain.stub: -------------------------------------------------------------------------------- 1 | '$LOWER_NAME$', 'namespace' => '$MODULE_NAMESPACE$\$STUDLY_NAME$\Http\Controllers'], function() 4 | { 5 | Route::get('/', '$STUDLY_NAME$Controller@index'); 6 | }); -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/scaffold/config.stub: -------------------------------------------------------------------------------- 1 | '$STUDLY_NAME$' 5 | ]; -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/seeder.stub: -------------------------------------------------------------------------------- 1 | call("OthersTableSeeder"); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/start.stub: -------------------------------------------------------------------------------- 1 | Hello World 6 | 7 |

    8 | This view is loaded from module: {!! config('$LOWER_NAME$.name') !!} 9 |

    10 | 11 | @stop -------------------------------------------------------------------------------- /src/Pingpong/Modules/Commands/stubs/views/master.stub: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Module $STUDLY_NAME$ 8 | 9 | 10 | @yield('content') 11 | 12 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Contracts/PublisherInterface.php: -------------------------------------------------------------------------------- 1 | module = $module; 25 | } 26 | 27 | /** 28 | * Run the given command. 29 | * 30 | * @param string $command 31 | */ 32 | public function run($command) 33 | { 34 | passthru($command); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Process/Updater.php: -------------------------------------------------------------------------------- 1 | module->findOrFail($module); 15 | 16 | $packages = $module->get('require', []); 17 | 18 | chdir(base_path()); 19 | 20 | foreach ($packages as $name => $version) { 21 | $package = "\"{$name}:{$version}\""; 22 | 23 | $this->run("composer require {$package}"); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Providers/BootstrapServiceProvider.php: -------------------------------------------------------------------------------- 1 | app['modules']->boot(); 15 | } 16 | 17 | /** 18 | * Register the provider. 19 | */ 20 | public function register() 21 | { 22 | $this->app['modules']->register(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Providers/ContractsServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->bind( 15 | 'Pingpong\Modules\Contracts\RepositoryInterface', 16 | 'Pingpong\Modules\Repository' 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Publishing/AssetPublisher.php: -------------------------------------------------------------------------------- 1 | repository->assetPath($this->module->getLowerName()); 22 | } 23 | 24 | /** 25 | * Get source path. 26 | * 27 | * @return string 28 | */ 29 | public function getSourcePath() 30 | { 31 | return $this->getModule()->getExtraPath( 32 | $this->repository->config('paths.generator.assets') 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Publishing/LangPublisher.php: -------------------------------------------------------------------------------- 1 | module->getLowerName(); 22 | 23 | return base_path("resources/lang/{$name}"); 24 | } 25 | 26 | /** 27 | * Get source path. 28 | * 29 | * @return string 30 | */ 31 | public function getSourcePath() 32 | { 33 | return $this->getModule()->getExtraPath( 34 | $this->repository->config('paths.generator.lang') 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Publishing/MigrationPublisher.php: -------------------------------------------------------------------------------- 1 | repository->config('paths.migration'); 15 | } 16 | 17 | /** 18 | * Get source path. 19 | * 20 | * @return string 21 | */ 22 | public function getSourcePath() 23 | { 24 | return $this->getModule()->getExtraPath($this->repository->config('paths.generator.migration')); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/README.md: -------------------------------------------------------------------------------- 1 | Laravel 5 Modules 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/modules) -------------------------------------------------------------------------------- /src/Pingpong/Modules/Routing/Controller.php: -------------------------------------------------------------------------------- 1 | in($path)->files()->name('autoload.php')->depth('<= 3')->followLinks(); 27 | 28 | foreach ($autoloads as $file) { 29 | $files->requireOnce($file->getRealPath()); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Traits/MigrationLoaderTrait.php: -------------------------------------------------------------------------------- 1 | laravel['modules']->getModulePath($module).$this->getMigrationGeneratorPath(); 15 | 16 | $files = $this->laravel['files']->glob($path.'/*_*.php'); 17 | 18 | foreach ($files as $file) { 19 | $this->laravel['files']->requireOnce($file); 20 | } 21 | } 22 | 23 | /** 24 | * Get migration generator path. 25 | * 26 | * @return string 27 | */ 28 | protected function getMigrationGeneratorPath() 29 | { 30 | return $this->laravel['modules']->config('paths.generator.migration'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/Traits/ModuleCommandTrait.php: -------------------------------------------------------------------------------- 1 | argument('module') ?: $this->laravel['modules']->getUsedNow(); 15 | 16 | $module = $this->laravel['modules']->findOrFail($module); 17 | 18 | return $module->getStudlyName(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Pingpong/Modules/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/modules", 3 | "description": "Laravel Modules", 4 | "keywords": [ 5 | "modules", 6 | "laravel", 7 | "pingpong", 8 | "hmvc", 9 | "module" 10 | ], 11 | "license": "BSD-3-Clause", 12 | "authors": [ 13 | { 14 | "name": "Pingpong Labs", 15 | "email": "pingpong.labs@gmail.com" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=5.4.0", 20 | "laravel/framework": "5.1.*", 21 | "pingpong/generators": "2.1.*", 22 | "pingpong/support": "2.1.*", 23 | "laravelcollective/html": "~5.0" 24 | }, 25 | "require-dev": { 26 | "phpunit/phpunit": "~4", 27 | "mockery/mockery": "~0.9" 28 | }, 29 | "autoload": { 30 | "psr-4": { 31 | "Pingpong\\Modules\\": "" 32 | } 33 | }, 34 | "minimum-stability": "stable" 35 | } 36 | -------------------------------------------------------------------------------- /src/Pingpong/Presenters/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/Pingpong/Presenters/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Pingpong Labs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /src/Pingpong/Presenters/Model.php: -------------------------------------------------------------------------------- 1 | entity = $entity; 22 | } 23 | 24 | /** 25 | * Get entity class. 26 | * 27 | * @return PresentableInterface 28 | */ 29 | public function getEntity() 30 | { 31 | return $this->entity; 32 | } 33 | 34 | /** 35 | * Handle call to __get method. 36 | * 37 | * @param $key 38 | * 39 | * @return mixed 40 | */ 41 | public function __get($key) 42 | { 43 | if (method_exists($this, $key)) { 44 | return call_user_func(array($this, $key)); 45 | } 46 | 47 | return $this->entity->{$key}; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Pingpong/Presenters/README.md: -------------------------------------------------------------------------------- 1 | Laravel 5 View Presenter 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/presenters) -------------------------------------------------------------------------------- /src/Pingpong/Presenters/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/presenters", 3 | "description": "Laravel Presenter", 4 | "keywords": [ 5 | "laravel", 6 | "pingpong", 7 | "simple", 8 | "presenters" 9 | ], 10 | "license": "MIT", 11 | "authors": [ 12 | { 13 | "name": "Pingpong Labs", 14 | "email": "pingpong.labs@gmail.com" 15 | } 16 | ], 17 | "require": { 18 | "php": ">=5.4.0", 19 | "illuminate/database": "5.1.*", 20 | "illuminate/support": "5.1.*", 21 | "illuminate/container": "5.1.*" 22 | }, 23 | "autoload": { 24 | "psr-4": { 25 | "Pingpong\\Presenters\\": "" 26 | } 27 | }, 28 | "minimum-stability": "stable" 29 | } 30 | -------------------------------------------------------------------------------- /src/Pingpong/Shortcode/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/Pingpong/Shortcode/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Pingpong Labs 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /src/Pingpong/Shortcode/README.md: -------------------------------------------------------------------------------- 1 | Laravel 5 Shortcode 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/shortcode) -------------------------------------------------------------------------------- /src/Pingpong/Shortcode/ShortcodeFacade.php: -------------------------------------------------------------------------------- 1 | app['shortcode'] = $this->app->share(function ($app) { 22 | return new Shortcode(); 23 | }); 24 | } 25 | 26 | /** 27 | * Get the services provided by the provider. 28 | * 29 | * @return array 30 | */ 31 | public function provides() 32 | { 33 | return array('shortcode'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Pingpong/Shortcode/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/shortcode", 3 | "description": "Laravel - Simple shortcode based on wordpress shortcode", 4 | "keywords": [ 5 | "pingpong", 6 | "laravel", 7 | "shortcode", 8 | "wordpress" 9 | ], 10 | "license": "BSD-3-Clause", 11 | "authors": [ 12 | { 13 | "name": "Pingpong Labs", 14 | "email": "pingpong.labs@gmail.com" 15 | } 16 | ], 17 | "require": { 18 | "php": ">=5.4.0", 19 | "illuminate/container": "5.1.*", 20 | "illuminate/support": "5.1.*" 21 | }, 22 | "require-dev": { 23 | "phpunit/phpunit": "~4", 24 | "mockery/mockery": "~0.9" 25 | }, 26 | "autoload": { 27 | "psr-4": { 28 | "Pingpong\\Shortcode\\": "" 29 | } 30 | }, 31 | "minimum-stability": "stable" 32 | } 33 | -------------------------------------------------------------------------------- /src/Pingpong/Support/Traits/Imageable.php: -------------------------------------------------------------------------------- 1 | getImagePath())) { 15 | @unlink($path); 16 | 17 | return true; 18 | } 19 | 20 | return false; 21 | } 22 | 23 | /** 24 | * Get image path. 25 | * 26 | * @return string 27 | */ 28 | public function getImagePath() 29 | { 30 | return public_path(static::$path.$this->image); 31 | } 32 | 33 | /** 34 | * Get image url. 35 | * 36 | * @return string 37 | */ 38 | public function getImageUrl() 39 | { 40 | return asset(static::$path.$this->image); 41 | } 42 | 43 | /** 44 | * Accessor for "image_url". 45 | * 46 | * @param string $value 47 | * 48 | * @return string 49 | */ 50 | public function getImageUrlAttribute($value) 51 | { 52 | return $this->getImageUrl(); 53 | } 54 | 55 | /** 56 | * Determine whether the current file has image. 57 | * 58 | * @return bool 59 | */ 60 | public function hasImage() 61 | { 62 | return !empty($this->image) && file_exists($this->getImagePath()); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/Pingpong/Support/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/support", 3 | "description": "Support Component of Pingpong Sky Package", 4 | "license": "BSD-3-Clause", 5 | "authors": [ 6 | { 7 | "name": "Pingpong Labs", 8 | "email": "pingpong.labs@gmail.com" 9 | } 10 | ], 11 | "require": { 12 | "php": ">=5.4.0", 13 | "illuminate/filesystem": "5.1.*", 14 | "illuminate/support": "5.1.*", 15 | "erusev/parsedown-extra": "0.7.*" 16 | }, 17 | "autoload": { 18 | "psr-4": { 19 | "Pingpong\\Support\\": "" 20 | }, 21 | "files": [ 22 | "helpers.php" 23 | ] 24 | }, 25 | "minimum-stability": "stable" 26 | } 27 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/Console/CacheCommand.php: -------------------------------------------------------------------------------- 1 | clear(); 29 | $this->cache(); 30 | } 31 | 32 | /** 33 | * Clear cached themes. 34 | */ 35 | protected function clear() 36 | { 37 | $this->laravel['themes']->forgetCache(); 38 | 39 | $this->info('Theme cache cleared!'); 40 | } 41 | 42 | /** 43 | * Cache the themes. 44 | */ 45 | protected function cache() 46 | { 47 | $this->laravel['themes']->cache(); 48 | 49 | $this->info('Themes cached successfully!'); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/Console/ListCommand.php: -------------------------------------------------------------------------------- 1 | table(['Name', 'Path', 'Enabled', 'Active'], $this->getRows()); 29 | } 30 | 31 | /** 32 | * Get table rows. 33 | * 34 | * @return array 35 | */ 36 | public function getRows() 37 | { 38 | $rows = []; 39 | 40 | $themes = $this->laravel['themes']->all(); 41 | 42 | foreach ($themes as $theme) { 43 | $rows[] = [ 44 | $theme->getName(), 45 | $theme->getPath(), 46 | $theme->enabled() ? 'Yes' : 'No', 47 | $theme->isActive() ? 'Yes' : 'No', 48 | ]; 49 | } 50 | 51 | return $rows; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/Console/stubs/json.stub: -------------------------------------------------------------------------------- 1 | { 2 | "name": "$NAME$", 3 | "description": "", 4 | "author": [ 5 | { 6 | "name": "", 7 | "email": "" 8 | } 9 | ], 10 | "files": [ 11 | "theme.php" 12 | ] 13 | } -------------------------------------------------------------------------------- /src/Pingpong/Themes/Console/stubs/theme.stub: -------------------------------------------------------------------------------- 1 | 'value' 5 | ]; 6 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/Console/stubs/theme/lang/en/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/src/Pingpong/Themes/Console/stubs/theme/lang/en/.gitkeep -------------------------------------------------------------------------------- /src/Pingpong/Themes/Console/stubs/theme/views/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/src/Pingpong/Themes/Console/stubs/theme/views/.gitkeep -------------------------------------------------------------------------------- /src/Pingpong/Themes/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Pingpong Labs 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /src/Pingpong/Themes/README.md: -------------------------------------------------------------------------------- 1 | Laravel 5 Themes 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/themes) -------------------------------------------------------------------------------- /src/Pingpong/Themes/ThemeFacade.php: -------------------------------------------------------------------------------- 1 | =5.4.0", 19 | "illuminate/support": "5.1.*", 20 | "illuminate/filesystem": "5.1.*", 21 | "illuminate/translation": "5.1.*", 22 | "illuminate/view": "5.1.*", 23 | "illuminate/config": "5.1.*", 24 | "pingpong/support": "2.1.*" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "~4", 28 | "mockery/mockery": "~0.9" 29 | }, 30 | "autoload": { 31 | "psr-4": { 32 | "Pingpong\\Themes\\": "" 33 | } 34 | }, 35 | "minimum-stability": "stable" 36 | } 37 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/helpers.php: -------------------------------------------------------------------------------- 1 | view($view, $data, $mergeData); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Pingpong/Themes/src/config/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/src/Pingpong/Themes/src/config/.gitkeep -------------------------------------------------------------------------------- /src/Pingpong/Themes/src/config/config.php: -------------------------------------------------------------------------------- 1 | 'default', 6 | 7 | 'path' => base_path('resources/themes'), 8 | 9 | 'cache' => [ 10 | 'enabled' => false, 11 | 'key' => 'pingpong.themes', 12 | 'lifetime' => 86400, 13 | ], 14 | 15 | ); 16 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/Exceptions/ForbiddenException.php: -------------------------------------------------------------------------------- 1 | belongsToMany(config('trusty.model.permission'))->withTimestamps(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/README.md: -------------------------------------------------------------------------------- 1 | Trusty - Roles and Permissions for Laravel 5 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/trusty) -------------------------------------------------------------------------------- /src/Pingpong/Trusty/Traits/PermissionTrait.php: -------------------------------------------------------------------------------- 1 | beforeFilter(function () use ($permissions) { 19 | Trusty::filterByPermission($permissions); 20 | }); 21 | } 22 | 23 | /** 24 | * Filter the specified request by the given roles. 25 | * 26 | * @param string|array $roles 27 | */ 28 | public function beforeRole($roles) 29 | { 30 | $roles = is_array($roles) ? $roles : func_get_args(); 31 | 32 | $this->beforeFilter(function () use ($roles) { 33 | Trusty::filterByRole($roles); 34 | }); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/Traits/SlugableTrait.php: -------------------------------------------------------------------------------- 1 | attributes['slug'] = Str::slug($value, '_'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/TrustyServiceProvider.php: -------------------------------------------------------------------------------- 1 | publishes([ 22 | __DIR__.'/src/migrations/' => base_path('/database/migrations'), 23 | __DIR__.'/src/config/config.php' => config_path('trusty.php'), 24 | ]); 25 | $this->mergeConfigFrom(__DIR__.'/src/config/config.php', 'trusty'); 26 | } 27 | 28 | /** 29 | * Register the service provider. 30 | */ 31 | public function register() 32 | { 33 | $this->app['trusty'] = $this->app->share(function ($app) { 34 | $auth = $app['auth']->driver(); 35 | 36 | return new Trusty($auth, $app['router']); 37 | }); 38 | } 39 | 40 | /** 41 | * Get the services provided by the provider. 42 | * 43 | * @return array 44 | */ 45 | public function provides() 46 | { 47 | return array('trusty'); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/trusty", 3 | "description": "Roles and Permissions for Laravel 4", 4 | "keywords": [ 5 | "roles", 6 | "permissions", 7 | "laravel", 8 | "pingpong" 9 | ], 10 | "license": "BSD-3-Clause", 11 | "authors": [ 12 | { 13 | "name": "Pingpong Labs", 14 | "email": "pingpong.labs@gmail.com" 15 | } 16 | ], 17 | "require": { 18 | "php": ">=5.4.0", 19 | "illuminate/auth": "5.1.*", 20 | "illuminate/support": "5.1.*", 21 | "illuminate/routing": "5.1.*", 22 | "illuminate/database": "5.1.*" 23 | }, 24 | "require-dev": { 25 | "phpunit/phpunit": "~4", 26 | "mockery/mockery": "~0.9" 27 | }, 28 | "autoload": { 29 | "psr-4": { 30 | "Pingpong\\Trusty\\": "" 31 | } 32 | }, 33 | "minimum-stability": "stable" 34 | } 35 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/src/config/config.php: -------------------------------------------------------------------------------- 1 | [ 6 | 'user' => 'App\User', 7 | 'role' => 'Pingpong\Trusty\Role', 8 | 'permission' => 'Pingpong\Trusty\Permission', 9 | ], 10 | 11 | ]; 12 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/src/migrations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/src/Pingpong/Trusty/src/migrations/.gitkeep -------------------------------------------------------------------------------- /src/Pingpong/Trusty/src/migrations/2014_11_02_051938_create_roles_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 15 | $table->string('name'); 16 | $table->string('slug')->unique(); 17 | $table->text('description')->nullable(); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | */ 25 | public function down() 26 | { 27 | Schema::drop('roles'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/src/migrations/2014_11_02_052125_create_permissions_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 15 | $table->string('name'); 16 | $table->string('slug')->unique(); 17 | $table->text('description')->nullable(); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | */ 25 | public function down() 26 | { 27 | Schema::drop('permissions'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/src/migrations/2014_11_02_052410_create_role_user_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 16 | $table->integer('role_id')->unsigned()->index(); 17 | $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); 18 | $table->integer('user_id')->unsigned()->index(); 19 | $table->foreign('user_id')->references('id')->on(config('auth.table'))->onDelete('cascade'); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | */ 27 | public function down() 28 | { 29 | Schema::dropIfExists('role_user'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Pingpong/Trusty/src/migrations/2014_11_02_092851_create_permission_role_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 15 | $table->integer('permission_id')->unsigned()->index(); 16 | $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade'); 17 | $table->integer('role_id')->unsigned()->index(); 18 | $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | */ 26 | public function down() 27 | { 28 | Schema::drop('permission_role'); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Pingpong/Widget/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | composer.phar 3 | composer.lock 4 | .DS_Store 5 | /.idea -------------------------------------------------------------------------------- /src/Pingpong/Widget/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Pingpong Labs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /src/Pingpong/Widget/README.md: -------------------------------------------------------------------------------- 1 | Laravel 5 Widget 2 | ============== 3 | 4 | Official documentation is located [here](http://sky.pingpong-labs.com/docs/2.0/widget) -------------------------------------------------------------------------------- /src/Pingpong/Widget/WidgetFacade.php: -------------------------------------------------------------------------------- 1 | app['widget'] = $this->app->share(function ($app) { 23 | $blade = $app['view']->getEngineResolver()->resolve('blade')->getCompiler(); 24 | 25 | return new Widget($blade, $app); 26 | }); 27 | 28 | $this->app->booting(function () { 29 | $loader = AliasLoader::getInstance(); 30 | $loader->alias('Widget', 'Pingpong\Widget\WidgetFacade'); 31 | 32 | $file = app_path('widgets.php'); 33 | 34 | if (file_exists($file)) { 35 | include $file; 36 | } 37 | }); 38 | } 39 | 40 | /** 41 | * Get the services provided by the provider. 42 | * 43 | * @return array 44 | */ 45 | public function provides() 46 | { 47 | return array('widget'); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Pingpong/Widget/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pingpong/widget", 3 | "description": "Simple Widget System for Laravel Framework", 4 | "keywords": [ 5 | "widget", 6 | "laravel", 7 | "pingpong" 8 | ], 9 | "license": "MIT", 10 | "authors": [ 11 | { 12 | "name": "Pingpong Labs", 13 | "email": "pingpong.labs@gmail.com" 14 | } 15 | ], 16 | "require": { 17 | "php": ">=5.3.0", 18 | "illuminate/support": "5.1.*", 19 | "illuminate/container": "5.1.*", 20 | "illuminate/view": "5.1.*", 21 | "illuminate/routing": "5.1.*" 22 | }, 23 | "require-dev": { 24 | "mockery/mockery": "~0.9", 25 | "phpunit/phpunit": "~4" 26 | }, 27 | "autoload": { 28 | "psr-4": { 29 | "Pingpong\\Widget\\": "" 30 | } 31 | }, 32 | "minimum-stability": "dev" 33 | } 34 | -------------------------------------------------------------------------------- /tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/tests/.gitkeep -------------------------------------------------------------------------------- /tests/Generators/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/tests/Generators/.gitkeep -------------------------------------------------------------------------------- /tests/Modules/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Test", 3 | "dependencies": { 4 | "pingpong\/modules": "1.*", 5 | "pingpong\/admin": "1.*" 6 | }, 7 | "alias": "test" 8 | } -------------------------------------------------------------------------------- /tests/PingpongTestCase.php: -------------------------------------------------------------------------------- 1 | model = new UserModel; 28 | } 29 | 30 | public function testPresenterUsingMagicAccess() 31 | { 32 | return $this->assertEquals('foo@domain.com', $this->model->present()->email); 33 | } 34 | 35 | public function testCallMethod() 36 | { 37 | return $this->assertEquals('foo@domain.com', $this->model->present()->email()); 38 | } 39 | } -------------------------------------------------------------------------------- /tests/Shortcode/FacadeTest.php: -------------------------------------------------------------------------------- 1 | 'Pingpong\Shortcode\ShortcodeFacade']; 8 | } 9 | 10 | protected function getPackageProviders() 11 | { 12 | return ['Pingpong\Shortcode\ShortcodeServiceProvider']; 13 | } 14 | 15 | } 16 | 17 | class FacadeTest extends ShortcodeTestCase { 18 | 19 | public function testUsingFacade() 20 | { 21 | Shortcode::register('foo', function () 22 | { 23 | return 'bar'; 24 | }); 25 | 26 | $this->assertEquals('foo', Shortcode::compile('foo')); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /tests/Themes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/tests/Themes/.gitkeep -------------------------------------------------------------------------------- /tests/Trusty/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pingpong-labs/sky/eaedc672c0f75a6c73b4ad89561ed6a3d1e3dfb6/tests/Trusty/.gitkeep --------------------------------------------------------------------------------