├── .env.example
├── .gitattributes
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SETUP.md
├── app
├── Console
│ ├── Commands
│ │ └── Inspire.php
│ └── Kernel.php
├── Events
│ └── Event.php
├── Exceptions
│ └── Handler.php
├── Facades
│ ├── EmailConfig.php
│ └── Mollie.php
├── Helpers
│ └── EmailConfig.php
├── Http
│ ├── Controllers
│ │ ├── AdminAuthController.php
│ │ ├── AdminController.php
│ │ ├── AdminGoalController.php
│ │ ├── AdminPageController.php
│ │ ├── AdminPostController.php
│ │ ├── AdminPreviousProjectsController.php
│ │ ├── AdminTierController.php
│ │ ├── Auth
│ │ │ ├── AuthController.php
│ │ │ └── PasswordController.php
│ │ ├── Controller.php
│ │ ├── DonationController.php
│ │ ├── HomeController.php
│ │ ├── PostController.php
│ │ ├── SetupController.php
│ │ └── UploadController.php
│ ├── Kernel.php
│ ├── Middleware
│ │ ├── Authenticate.php
│ │ ├── CheckIfEnvironmentIsReady.php
│ │ ├── CheckSetupInaccessible.php
│ │ ├── EncryptCookies.php
│ │ ├── PassProject.php
│ │ ├── RedirectIfAuthenticated.php
│ │ └── VerifyCsrfToken.php
│ ├── Requests
│ │ └── Request.php
│ ├── Traits
│ │ └── CanGetVideoInformation.php
│ └── routes.php
├── Jobs
│ └── Job.php
├── Listeners
│ └── .gitkeep
├── Models
│ ├── ArchivedProject.php
│ ├── Donation.php
│ ├── DonationItem.php
│ ├── DonationKind.php
│ ├── DonationType.php
│ ├── Page.php
│ ├── Post.php
│ ├── Project.php
│ ├── Setting.php
│ ├── SetupPrerequisite.php
│ └── Tier.php
├── Payment
│ └── Mollie.php
├── Policies
│ └── .gitkeep
└── Providers
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── EventServiceProvider.php
│ ├── PaymentServiceProvider.php
│ └── RouteServiceProvider.php
├── artisan
├── bootstrap
├── app.php
├── autoload.php
└── cache
│ └── .gitignore
├── composer.json
├── composer.lock
├── config
├── app.php
├── auth.php
├── broadcasting.php
├── cache.php
├── compile.php
├── database.php
├── debugbar.php
├── filesystems.php
├── image.php
├── mail.php
├── markdown.php
├── queue.php
├── services.php
├── session.php
└── view.php
├── database
├── .gitignore
├── factories
│ └── ModelFactory.php
├── migrations
│ ├── .gitkeep
│ ├── 2016_01_12_132315_create_settings_table.php
│ ├── 2016_01_12_132417_create_project_table.php
│ ├── 2016_01_12_132434_create_post_table.php
│ ├── 2016_01_14_122533_create_donation_table.php
│ ├── 2016_01_19_134515_create_tier_table.php
│ ├── 2016_01_20_102824_create_archivedproject_table.php
│ ├── 2016_01_22_131030_create_donation_type_table.php
│ ├── 2016_01_22_131044_create_donation_item_table.php
│ ├── 2016_03_16_104858_create_pages_table.php
│ ├── 2016_03_30_125119_modify_archivedproject_table.php
│ ├── 2016_03_30_132655_add_deleted_at_to_donations.php
│ ├── 2016_04_07_112634_migrate_organisation_fields.php
│ └── 2016_05_03_132655_add_summary_to_posts.php
└── seeds
│ ├── .gitkeep
│ ├── DatabaseSeeder.php
│ ├── DefaultPagesSeeder.php
│ └── SettingsTestSeeder.php
├── gulpfile.js
├── package.json
├── phpunit.xml
├── public
├── .htaccess
├── assets
│ ├── bg
│ │ └── bg_people.jpg
│ ├── icons
│ │ ├── icon_calendar.png
│ │ ├── icon_calendar@2x.png
│ │ ├── icon_checkmark.png
│ │ ├── icon_checkmark@2x.png
│ │ ├── icon_checkmark_checked.png
│ │ ├── icon_checkmark_checked@2x.png
│ │ ├── icon_checkmark_unchecked.png
│ │ ├── icon_checkmark_unchecked@2x.png
│ │ ├── icon_coaching_active.png
│ │ ├── icon_coaching_active@2x.png
│ │ ├── icon_coaching_inactive.png
│ │ ├── icon_coaching_inactive@2x.png
│ │ ├── icon_currency_active.png
│ │ ├── icon_currency_active@2x.png
│ │ ├── icon_currency_inactive.png
│ │ ├── icon_currency_inactive@2x.png
│ │ ├── icon_flag.png
│ │ ├── icon_flag@2x.png
│ │ ├── icon_manpower_active.png
│ │ ├── icon_manpower_active@2x.png
│ │ ├── icon_manpower_inactive.png
│ │ ├── icon_manpower_inactive@2x.png
│ │ ├── icon_material_active.png
│ │ ├── icon_material_active@2x.png
│ │ ├── icon_material_inactive.png
│ │ ├── icon_material_inactive@2x.png
│ │ ├── icon_person.png
│ │ ├── icon_person@2x.png
│ │ ├── icon_progress_coaching.png
│ │ ├── icon_progress_coaching@2x.png
│ │ ├── icon_progress_currency.png
│ │ ├── icon_progress_currency@2x.png
│ │ ├── icon_progress_manpower.png
│ │ ├── icon_progress_manpower@2x.png
│ │ ├── icon_progress_material.png
│ │ ├── icon_progress_material@2x.png
│ │ ├── icon_story_active.png
│ │ ├── icon_story_active@2x.png
│ │ ├── icon_story_inactive.png
│ │ ├── icon_story_inactive@2x.png
│ │ ├── icon_updates_active.png
│ │ ├── icon_updates_active@2x.png
│ │ ├── icon_updates_inactive.png
│ │ ├── icon_updates_inactive@2x.png
│ │ └── share_icons.png
│ └── logo
│ │ └── logo_w4p.png
├── favicon.ico
├── images
│ └── .gitkeep
├── index.php
├── organisation
│ └── .gitkeep
├── platform
│ └── .gitkeep
├── project
│ └── .gitkeep
├── robots.txt
└── web.config
├── resources
├── assets
│ ├── js
│ │ ├── admin
│ │ │ ├── config
│ │ │ │ └── inline-attachconfig.js
│ │ │ └── lib
│ │ │ │ ├── a-markdown.js
│ │ │ │ ├── aa-to-markdown.js
│ │ │ │ ├── bootstrap-markdown.js
│ │ │ │ ├── jquery.datetimepicker.js
│ │ │ │ └── jquery.inline-attachment.min.js
│ │ ├── core
│ │ │ └── lib
│ │ │ │ ├── 01_jquery-2.2.0.min.js
│ │ │ │ └── 02_bootstrap.min.js
│ │ └── pledge
│ │ │ └── pledge.js
│ └── sass
│ │ ├── _bootstrap.scss
│ │ ├── _colors.scss
│ │ ├── _config.scss
│ │ ├── _mediaqueries.scss
│ │ ├── _setup.scss
│ │ ├── _stickyfooter.scss
│ │ ├── _typo.scss
│ │ ├── app.scss
│ │ ├── bootstrap
│ │ ├── _alerts.scss
│ │ ├── _badges.scss
│ │ ├── _breadcrumbs.scss
│ │ ├── _button-groups.scss
│ │ ├── _buttons.scss
│ │ ├── _carousel.scss
│ │ ├── _close.scss
│ │ ├── _code.scss
│ │ ├── _component-animations.scss
│ │ ├── _dropdowns.scss
│ │ ├── _forms.scss
│ │ ├── _glyphicons.scss
│ │ ├── _grid.scss
│ │ ├── _input-groups.scss
│ │ ├── _jumbotron.scss
│ │ ├── _labels.scss
│ │ ├── _list-group.scss
│ │ ├── _media.scss
│ │ ├── _mixins.scss
│ │ ├── _modals.scss
│ │ ├── _navbar.scss
│ │ ├── _navs.scss
│ │ ├── _normalize.scss
│ │ ├── _pager.scss
│ │ ├── _pagination.scss
│ │ ├── _panels.scss
│ │ ├── _popovers.scss
│ │ ├── _print.scss
│ │ ├── _progress-bars.scss
│ │ ├── _responsive-embed.scss
│ │ ├── _responsive-utilities.scss
│ │ ├── _scaffolding.scss
│ │ ├── _tables.scss
│ │ ├── _theme.scss
│ │ ├── _thumbnails.scss
│ │ ├── _tooltip.scss
│ │ ├── _type.scss
│ │ ├── _utilities.scss
│ │ ├── _variables.scss
│ │ ├── _wells.scss
│ │ └── mixins
│ │ │ ├── _alerts.scss
│ │ │ ├── _background-variant.scss
│ │ │ ├── _border-radius.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _center-block.scss
│ │ │ ├── _clearfix.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _gradients.scss
│ │ │ ├── _grid-framework.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _hide-text.scss
│ │ │ ├── _image.scss
│ │ │ ├── _labels.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _nav-divider.scss
│ │ │ ├── _nav-vertical-align.scss
│ │ │ ├── _opacity.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _panels.scss
│ │ │ ├── _progress-bar.scss
│ │ │ ├── _reset-filter.scss
│ │ │ ├── _reset-text.scss
│ │ │ ├── _resize.scss
│ │ │ ├── _responsive-visibility.scss
│ │ │ ├── _size.scss
│ │ │ ├── _tab-focus.scss
│ │ │ ├── _table-row.scss
│ │ │ ├── _text-emphasis.scss
│ │ │ ├── _text-overflow.scss
│ │ │ └── _vendor-prefixes.scss
│ │ ├── components
│ │ ├── _btn4.scss
│ │ ├── _checkbox.scss
│ │ ├── _form.scss
│ │ ├── _gray.scss
│ │ ├── _icons.scss
│ │ ├── _radial-progress.scss
│ │ ├── _sharebtn.scss
│ │ ├── _tabs.scss
│ │ ├── _texteditor.scss
│ │ ├── _topnav.scss
│ │ └── lib
│ │ │ └── _jquery.datetimepicker.scss
│ │ ├── pages
│ │ ├── _donation.scss
│ │ ├── _home.scss
│ │ ├── _post.scss
│ │ └── _previous.scss
│ │ └── partials
│ │ └── _footer.scss
├── lang
│ ├── en
│ │ ├── auth.php
│ │ ├── backoffice.php
│ │ ├── donation.php
│ │ ├── footer.php
│ │ ├── generic.php
│ │ ├── home.php
│ │ ├── mails.php
│ │ ├── pages.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ ├── setup.php
│ │ └── validation.php
│ └── nl
│ │ ├── backoffice.php
│ │ ├── donation.php
│ │ ├── footer.php
│ │ ├── generic.php
│ │ ├── home.php
│ │ ├── mails.php
│ │ └── setup.php
└── views
│ ├── backoffice
│ ├── assets.blade.php
│ ├── dashboard.blade.php
│ ├── donations.blade.php
│ ├── email.blade.php
│ ├── goals
│ │ ├── currency.blade.php
│ │ ├── index.blade.php
│ │ ├── kind.blade.php
│ │ ├── type_edit.blade.php
│ │ └── weights.blade.php
│ ├── login.blade.php
│ ├── organisation.blade.php
│ ├── pages
│ │ └── edit.blade.php
│ ├── platform.blade.php
│ ├── posts
│ │ ├── edit.blade.php
│ │ └── index.blade.php
│ ├── previous
│ │ ├── import.blade.php
│ │ └── index.blade.php
│ ├── project.blade.php
│ ├── pw_reset.blade.php
│ ├── socialmedia.blade.php
│ └── tiers
│ │ ├── edit.blade.php
│ │ └── index.blade.php
│ ├── design.blade.php
│ ├── errors
│ └── 503.blade.php
│ ├── front
│ ├── donation
│ │ ├── confirmed.blade.php
│ │ ├── info.blade.php
│ │ ├── payment_status.blade.php
│ │ ├── start.blade.php
│ │ ├── thanks.blade.php
│ │ └── user.blade.php
│ ├── home.blade.php
│ ├── pages
│ │ ├── detail.blade.php
│ │ └── previous.blade.php
│ └── posts
│ │ ├── detail.blade.php
│ │ └── index.blade.php
│ ├── layouts
│ ├── backoffice.blade.php
│ ├── core.blade.php
│ ├── mails
│ │ └── default.blade.php
│ ├── setup.blade.php
│ └── setup_simple.blade.php
│ ├── mails
│ ├── donation_confirm.blade.php
│ ├── donation_money_success.blade.php
│ ├── donation_success.blade.php
│ ├── notification
│ │ └── donation_confirmed.blade.php
│ └── test.blade.php
│ ├── partials
│ ├── footer.blade.php
│ ├── ga.blade.php
│ ├── meta
│ │ ├── default.blade.php
│ │ ├── page.blade.php
│ │ └── post.blade.php
│ └── previous
│ │ └── v2016_03.blade.php
│ ├── setup
│ ├── prerequisite_failures.blade.php
│ ├── progress.blade.php
│ ├── step1.blade.php
│ ├── step2.blade.php
│ ├── step3.blade.php
│ ├── step4.blade.php
│ ├── step5.blade.php
│ ├── step6.blade.php
│ └── welcome.blade.php
│ └── vendor
│ └── .gitkeep
├── server.php
├── storage
├── app
│ └── .gitignore
├── debugbar
│ └── .gitignore
├── framework
│ ├── .gitignore
│ ├── cache
│ │ └── .gitignore
│ ├── sessions
│ │ └── .gitignore
│ └── views
│ │ └── .gitignore
└── logs
│ └── .gitignore
├── tests
├── Setup
│ ├── Controllers
│ │ ├── .gitkeep
│ │ ├── SetupStepsAdministrationTest.php
│ │ ├── SetupStepsEmailTest.php
│ │ ├── SetupStepsPlatformTest.php
│ │ └── SetupStepsProjectTest.php
│ └── Middleware
│ │ ├── .gitkeep
│ │ └── EnvironmentReadyTest.php
├── TestCase.php
└── W4P
│ ├── Controllers
│ └── .gitkeep
│ ├── Database
│ └── DonationTest.php
│ ├── Mails
│ ├── .gitkeep
│ └── MailTest.php
│ └── Middleware
│ ├── .gitkeep
│ └── SetupInaccessibleTest.php
└── vagrant
└── setup.sh
/.env.example:
--------------------------------------------------------------------------------
1 | APP_ENV=local
2 | APP_DEBUG=false
3 | APP_KEY=SomeRandomString
4 | APP_LOCALE=en
5 |
6 | DB_HOST=localhost
7 | DB_DATABASE=homestead
8 | DB_USERNAME=homestead
9 | DB_PASSWORD=secret
10 |
11 | CACHE_DRIVER=file
12 | SESSION_DRIVER=file
13 | QUEUE_DRIVER=sync
14 |
15 | REDIS_HOST=localhost
16 | REDIS_PASSWORD=null
17 | REDIS_PORT=6379
18 |
19 | # Please note that these mail settings will override your DB config!
20 | # MAIL_DRIVER=smtp
21 | # MAIL_HOST=127.0.0.1
22 | # MAIL_PORT=1025
23 | # MAIL_USERNAME=null
24 | # MAIL_PASSWORD=null
25 | # MAIL_ENCRYPTION=null
26 | # MAIL_FROM=test@w4p.org
27 | # MAIL_NAME=W4P
28 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.less linguist-vendored
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor
2 | /node_modules
3 | /public/css
4 | /public/js
5 | /public/build
6 | /public/images/*.png
7 | /public/images/*.gif
8 | /public/images/*.jpeg
9 | /public/images/*.jpg
10 | /public/images/*.jpg
11 | /public/images/*.tiff
12 | /public/platform
13 | /public/organisation
14 | /public/project
15 | Homestead.yaml
16 | Homestead.json
17 | .env
18 | /vagrant/Vagrantfile
19 | /vagrant/.vagrant
20 | /vagrant/puphpet
21 | /vagrant/html
22 | .idea
23 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to contribute
2 |
3 | Thanks for taking the time to take a look at contributing to W4P.
4 |
5 | ## Bug reports
6 |
7 | You can report bugs on the [GitHub issues](https://github.com/openknowledgebe/W4P/issues) page.
8 |
9 | ## Feature additions
10 |
11 | You can add a feature to W4P yourself, but it might be useful to discuss the topic first before starting development (if you intend for your changes to be applied to this repository). You are free to fork and forget, but meaningful changes are always welcomed via pull request.
12 |
13 | Remember, any additions or bug fixes **must have all tests passing**, with **new tests for new functionality**.
14 |
15 | ## Code style
16 |
17 | PSR-2.
18 |
19 | ## Unit tests
20 |
21 | Of course, W4P contains unit tests. There are two test suites included in the application:
22 |
23 | * setup: Creates the database and does migrations. Also tests the setup wizard.
24 | * application: Tests the W4P application (pledges, payments, etc). Assumes you ran 'setup' test suite at least once. (Does not do migrations etc.)
25 |
26 | By running `phpunit`, you will run both suites in the correct order (first 'setup', then 'application') and run all tests.
27 |
28 | **For any given pull request, all unit tests should pass.**
29 |
30 | ## Licensing
31 |
32 | By opening a pull request, you agree that your code is licensed under the same license as the project. (This ensures that all our code remais open-source.)
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2016 openknowledgebe
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | [WORK IN PROGRESS]
4 | W4P is an easy-to-setup crowdsourcing platform.
5 |
6 | ## How to use
7 | To use W4P, simply download the latest release or clone/fork for your editing pleasure. Then, follow the instructions in [SETUP](./SETUP.md).
8 |
9 | ## System requirements
10 |
11 | * You need a webserver running PHP 5.6 or higher. (PHP 7 is supported.)
12 | * You need a mail server so the application can send emails to backers.
13 | * Optional: If you are looking to incorporate payments, you need a Mollie API key. More information can be found during the setup process.
14 |
15 | ## Want to contribute?
16 | We're always looking to improve the core of W4P. You can contribute to the repository at [GitHub](https://github.com/openknowledgebe/W4P) by forking the main repository and opening a pull request with any code changes. For more information, see [CONTRIBUTING](./CONTRIBUTING.md).
--------------------------------------------------------------------------------
/app/Console/Commands/Inspire.php:
--------------------------------------------------------------------------------
1 | comment(PHP_EOL.Inspiring::quote().PHP_EOL);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/Console/Kernel.php:
--------------------------------------------------------------------------------
1 | command('inspire')
28 | ->hourly();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/Events/Event.php:
--------------------------------------------------------------------------------
1 | $settings['email.from'], 'name' => $settings['email.name']];
35 | Config::set('mail.from', $array);
36 | }
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/app/Http/Controllers/AdminAuthController.php:
--------------------------------------------------------------------------------
1 | withErrors(["This password is incorrect."]);
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/Http/Controllers/AdminPageController.php:
--------------------------------------------------------------------------------
1 | first();
32 | return View::make('backoffice.pages.edit')
33 | ->with('page', $page);
34 | }
35 |
36 | /**
37 | * Update an existing page
38 | * @param $slug
39 | * @return mixed
40 | */
41 | public function update($slug)
42 | {
43 | $success = true;
44 | $errors = [];
45 |
46 | // Validate
47 | $validator = Validator::make(
48 | Input::all(),
49 | [
50 | 'content' => 'required|min:4',
51 | ]
52 | );
53 |
54 | // Check if the validator fails
55 | if (!$validator->fails()) {
56 | // Save the tier
57 | Page::where('slug', $slug)->first()->update([
58 | "content" => Input::get('content')
59 | ]);
60 | Session::flash('info', trans('backoffice.flash.page_update_success'));
61 | } else {
62 | // Validation has failed. Set success to false. Set validator messages
63 | $success = false;
64 | $errors = $validator->messages();
65 | }
66 |
67 | if ($success) {
68 | return Redirect::route('admin::editPage', $slug);
69 | } else {
70 | return Redirect::back()->withErrors($errors)->withInput(Input::all());
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/AuthController.php:
--------------------------------------------------------------------------------
1 | middleware('guest', ['except' => 'logout']);
41 | }
42 |
43 | /**
44 | * Get a validator for an incoming registration request.
45 | *
46 | * @param array $data
47 | * @return \Illuminate\Contracts\Validation\Validator
48 | */
49 | protected function validator(array $data)
50 | {
51 | return Validator::make($data, [
52 | 'name' => 'required|max:255',
53 | 'email' => 'required|email|max:255|unique:users',
54 | 'password' => 'required|confirmed|min:6',
55 | ]);
56 | }
57 |
58 | /**
59 | * Create a new user instance after a valid registration.
60 | *
61 | * @param array $data
62 | * @return User
63 | */
64 | protected function create(array $data)
65 | {
66 | return User::create([
67 | 'name' => $data['name'],
68 | 'email' => $data['email'],
69 | 'password' => bcrypt($data['password']),
70 | ]);
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/PasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Controller.php:
--------------------------------------------------------------------------------
1 | sortByDesc('created_at');
22 | return View::make('front.posts.index')->with('posts', $posts);
23 | }
24 |
25 | /**
26 | * Get a specific post
27 | * @param $id
28 | * @return mixed
29 | */
30 | public function detail($id)
31 | {
32 | $post = Post::find($id);
33 | return View::make('front.posts.detail')->with('post', $post);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/Http/Controllers/UploadController.php:
--------------------------------------------------------------------------------
1 | json($response);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/Http/Kernel.php:
--------------------------------------------------------------------------------
1 | [
27 | \W4P\Http\Middleware\EncryptCookies::class,
28 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
29 | \Illuminate\Session\Middleware\StartSession::class,
30 | \Illuminate\View\Middleware\ShareErrorsFromSession::class,
31 | \W4P\Http\Middleware\PassProject::class,
32 | \W4P\Http\Middleware\VerifyCsrfToken::class,
33 | ],
34 |
35 | 'api' => [
36 | 'throttle:60,1',
37 | ],
38 | ];
39 |
40 | /**
41 | * The application's route middleware.
42 | *
43 | * These middleware may be assigned to groups or used individually.
44 | *
45 | * @var array
46 | */
47 | protected $routeMiddleware = [
48 | 'auth' => \W4P\Http\Middleware\Authenticate::class,
49 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
50 | 'guest' => \W4P\Http\Middleware\RedirectIfAuthenticated::class,
51 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
52 | 'env.ready' => \W4P\Http\Middleware\CheckIfEnvironmentIsReady::class,
53 | 'setup.restricted' => \W4P\Http\Middleware\CheckSetupInaccessible::class,
54 | ];
55 | }
56 |
--------------------------------------------------------------------------------
/app/Http/Middleware/Authenticate.php:
--------------------------------------------------------------------------------
1 | session()->get('token');
23 | // Make sure the token in session matches the token in db
24 | if ($token == null || $token != Setting::get('token')) {
25 | // If the token is null (empty) or incorrect, redirect to login
26 | if ($request->ajax()) {
27 | return response('Unauthorized.', 401);
28 | } else {
29 | return redirect()->route('admin::login');
30 | }
31 | }
32 | return $next($request);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/Http/Middleware/CheckSetupInaccessible.php:
--------------------------------------------------------------------------------
1 | key] = $setting->value;
26 | }
27 |
28 | // Check if the settings are valid
29 | if (array_key_exists('pwd', $settings) &&
30 | array_key_exists('platform.name', $settings) &&
31 | array_key_exists('email.valid', $settings) &&
32 | array_key_exists('organisation.valid', $settings) &&
33 | array_key_exists('setup.complete', $settings) &&
34 | Project::valid($request->project)) {
35 | // If the settings are valid, check if the URL isn't setup
36 | if (str_contains($request->route()->getName(), 'setup::')) {
37 | return redirect()->route('home');
38 | }
39 | }
40 | return $next($request);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/Http/Middleware/EncryptCookies.php:
--------------------------------------------------------------------------------
1 | project = Project::first();
26 |
27 | // Archived count
28 | View::share('archived_count', DB::table('archivedproject')->count());
29 |
30 | // Get the project
31 | $project = $request->project;
32 |
33 | // Only execute this if project is valid or exists
34 | if ($project) {
35 | View::share('W4P_project', $request->project);
36 | View::share('video_id', $project->getVideoId());
37 | View::share('video_provider', $project->getVideoProvider());
38 | }
39 |
40 | return $next($request);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/Http/Middleware/RedirectIfAuthenticated.php:
--------------------------------------------------------------------------------
1 | check()) {
21 | return redirect('/');
22 | }
23 |
24 | return $next($request);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/Http/Middleware/VerifyCsrfToken.php:
--------------------------------------------------------------------------------
1 | belongsTo(
19 | 'W4P\Models\Donation',
20 | 'id',
21 | 'donation_id'
22 | );
23 | }
24 |
25 | public function donationType()
26 | {
27 | return $this->hasOne(
28 | 'W4P\Models\DonationType',
29 | 'id',
30 | 'donation_type_id'
31 | );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/Models/DonationType.php:
--------------------------------------------------------------------------------
1 | hasMany(
22 | 'W4P\Models\DonationItem',
23 | 'donation_type_id',
24 | 'id'
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/Models/Page.php:
--------------------------------------------------------------------------------
1 | content);
18 | $lines = explode("\n", $markdown);
19 | // Character length < 300; continue
20 | $content = "";
21 | $totalChars = 0;
22 | $lineCount = 0;
23 | foreach ($lines as $line) {
24 | $totalChars += strlen($line);
25 | $lineCount++;
26 | // If the total characters exceed 200 or 3 lines (whichever is first) stop outputting text
27 | if ($totalChars < 500 && $lineCount < 4) {
28 | $content .= "\n" . $line;
29 | }
30 | }
31 | return $content;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/Models/Project.php:
--------------------------------------------------------------------------------
1 | first();
25 | }
26 |
27 | /**
28 | * Checks if the project is valid. In order for the project to be valid,
29 | * it must have a title that is at least 1 character long, and a brief
30 | * description that is at least 1 character long.
31 | *
32 | * @param $project Project: The project that needs to be checked.
33 | * @return bool: Returns true if the project is valid.
34 | */
35 | public static function valid($project)
36 | {
37 | if ($project != null) {
38 | if (strlen($project->title) > 0 && strlen($project->brief) > 0) {
39 | return true;
40 | }
41 | }
42 | return false;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/Models/SetupPrerequisite.php:
--------------------------------------------------------------------------------
1 | title = $title;
15 | $prerequisite->description = $description;
16 | $prerequisite->fails = $failed;
17 | return $prerequisite;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/Models/Tier.php:
--------------------------------------------------------------------------------
1 | select(
25 | DB::raw('tier_id, count(*) as count')
26 | )
27 | // Only donors with a completed payment status and not deleted donation count
28 | ->where(function ($query) {
29 | $query
30 | ->where('payment_status', '=', 'paid')
31 | ->where('deleted_at', '=', null);
32 | })
33 | ->groupBy('tier_id')
34 | ->get();
35 |
36 | foreach ($tiers as $tier) {
37 | if ($tier->tier_id != null) {
38 | $kvpArray[$tier->tier_id] = (int)$tier->count;
39 | }
40 | }
41 | $allTiers = Tier::all();
42 | foreach ($allTiers as $tier) {
43 | if (!isset($kvpArray[$tier->id])) {
44 | $kvpArray[$tier->id] = 0;
45 | }
46 | }
47 | return $kvpArray;
48 | }
49 |
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/app/Policies/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/app/Policies/.gitkeep
--------------------------------------------------------------------------------
/app/Providers/AppServiceProvider.php:
--------------------------------------------------------------------------------
1 | 'W4P\Policies\ModelPolicy',
17 | ];
18 |
19 | /**
20 | * Register any application authentication / authorization services.
21 | *
22 | * @param \Illuminate\Contracts\Auth\Access\Gate $gate
23 | * @return void
24 | */
25 | public function boot(GateContract $gate)
26 | {
27 | $this->registerPolicies($gate);
28 |
29 | //
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/Providers/EventServiceProvider.php:
--------------------------------------------------------------------------------
1 | [
17 | 'W4P\Listeners\EventListener',
18 | ],
19 | ];
20 |
21 | /**
22 | * Register any other events for your application.
23 | *
24 | * @param \Illuminate\Contracts\Events\Dispatcher $events
25 | * @return void
26 | */
27 | public function boot(DispatcherContract $events)
28 | {
29 | parent::boot($events);
30 |
31 | //
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/Providers/PaymentServiceProvider.php:
--------------------------------------------------------------------------------
1 | group(['namespace' => $this->namespace], function ($router) {
41 | require app_path('Http/routes.php');
42 | });
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | make(Illuminate\Contracts\Console\Kernel::class);
32 |
33 | $status = $kernel->handle(
34 | $input = new Symfony\Component\Console\Input\ArgvInput,
35 | new Symfony\Component\Console\Output\ConsoleOutput
36 | );
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Shutdown The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once Artisan has finished running. We will fire off the shutdown events
44 | | so that any final work may be done by the application before we shut
45 | | down the process. This is the last thing to happen to the request.
46 | |
47 | */
48 |
49 | $kernel->terminate($input, $status);
50 |
51 | exit($status);
52 |
--------------------------------------------------------------------------------
/bootstrap/app.php:
--------------------------------------------------------------------------------
1 | singleton(
30 | Illuminate\Contracts\Http\Kernel::class,
31 | W4P\Http\Kernel::class
32 | );
33 |
34 | $app->singleton(
35 | Illuminate\Contracts\Console\Kernel::class,
36 | W4P\Console\Kernel::class
37 | );
38 |
39 | $app->singleton(
40 | Illuminate\Contracts\Debug\ExceptionHandler::class,
41 | W4P\Exceptions\Handler::class
42 | );
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Return The Application
47 | |--------------------------------------------------------------------------
48 | |
49 | | This script returns the application instance. The instance is given to
50 | | the calling script so we can separate the building of the instances
51 | | from the actual running of the application and sending responses.
52 | |
53 | */
54 |
55 | return $app;
56 |
--------------------------------------------------------------------------------
/bootstrap/autoload.php:
--------------------------------------------------------------------------------
1 | =5.5.9",
9 | "laravel/framework": "5.2.*",
10 | "intervention/image": "^2.3",
11 | "graham-campbell/markdown": "^5.3",
12 | "barryvdh/laravel-debugbar": "^2.1",
13 | "mollie/mollie-api-php": "1.3.x",
14 | "mollie/oauth2-mollie-php": "^1.0",
15 | "doctrine/dbal": "~2.4",
16 | "guzzlehttp/guzzle": "^6.2"
17 | },
18 | "require-dev": {
19 | "fzaninotto/faker": "~1.4",
20 | "mockery/mockery": "0.9.*",
21 | "phpunit/phpunit": "~4.0",
22 | "symfony/css-selector": "2.8.*|3.0.*",
23 | "symfony/dom-crawler": "2.8.*|3.0.*"
24 | },
25 | "autoload": {
26 | "classmap": [
27 | "database"
28 | ],
29 | "psr-4": {
30 | "W4P\\": "app/"
31 | }
32 | },
33 | "autoload-dev": {
34 | "classmap": [
35 | "tests/TestCase.php"
36 | ]
37 | },
38 | "scripts": {
39 | "post-root-package-install": [
40 | "php -r \"copy('.env.example', '.env');\""
41 | ],
42 | "post-create-project-cmd": [
43 | "php artisan key:generate"
44 | ],
45 | "post-install-cmd": [
46 | "php artisan clear-compiled",
47 | "php artisan optimize"
48 | ],
49 | "pre-update-cmd": [
50 | "php artisan clear-compiled"
51 | ],
52 | "post-update-cmd": [
53 | "php artisan optimize"
54 | ]
55 | },
56 | "config": {
57 | "preferred-install": "dist"
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/config/broadcasting.php:
--------------------------------------------------------------------------------
1 | env('BROADCAST_DRIVER', 'pusher'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Broadcast Connections
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may define all of the broadcast connections that will be used
24 | | to broadcast events to other systems or over websockets. Samples of
25 | | each available type of connection are provided inside this array.
26 | |
27 | */
28 |
29 | 'connections' => [
30 |
31 | 'pusher' => [
32 | 'driver' => 'pusher',
33 | 'key' => env('PUSHER_KEY'),
34 | 'secret' => env('PUSHER_SECRET'),
35 | 'app_id' => env('PUSHER_APP_ID'),
36 | 'options' => [
37 | //
38 | ],
39 | ],
40 |
41 | 'redis' => [
42 | 'driver' => 'redis',
43 | 'connection' => 'default',
44 | ],
45 |
46 | 'log' => [
47 | 'driver' => 'log',
48 | ],
49 |
50 | ],
51 |
52 | ];
53 |
--------------------------------------------------------------------------------
/config/cache.php:
--------------------------------------------------------------------------------
1 | env('CACHE_DRIVER', 'file'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Cache Stores
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may define all of the cache "stores" for your application as
24 | | well as their drivers. You may even define multiple stores for the
25 | | same cache driver to group types of items stored in your caches.
26 | |
27 | */
28 |
29 | 'stores' => [
30 |
31 | 'apc' => [
32 | 'driver' => 'apc',
33 | ],
34 |
35 | 'array' => [
36 | 'driver' => 'array',
37 | ],
38 |
39 | 'database' => [
40 | 'driver' => 'database',
41 | 'table' => 'cache',
42 | 'connection' => null,
43 | ],
44 |
45 | 'file' => [
46 | 'driver' => 'file',
47 | 'path' => storage_path('framework/cache'),
48 | ],
49 |
50 | 'memcached' => [
51 | 'driver' => 'memcached',
52 | 'servers' => [
53 | [
54 | 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100,
55 | ],
56 | ],
57 | ],
58 |
59 | 'redis' => [
60 | 'driver' => 'redis',
61 | 'connection' => 'default',
62 | ],
63 |
64 | ],
65 |
66 | /*
67 | |--------------------------------------------------------------------------
68 | | Cache Key Prefix
69 | |--------------------------------------------------------------------------
70 | |
71 | | When utilizing a RAM based store such as APC or Memcached, there might
72 | | be other applications utilizing the same cache. So, we'll specify a
73 | | value to get prefixed to all our keys so we can avoid collisions.
74 | |
75 | */
76 |
77 | 'prefix' => 'laravel',
78 |
79 | ];
80 |
--------------------------------------------------------------------------------
/config/compile.php:
--------------------------------------------------------------------------------
1 | [
17 | //
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled File Providers
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may list service providers which define a "compiles" function
26 | | that returns additional files that should be compiled, providing an
27 | | easy way to get common files from any packages you are utilizing.
28 | |
29 | */
30 |
31 | 'providers' => [
32 | //
33 | ],
34 |
35 | ];
36 |
--------------------------------------------------------------------------------
/config/image.php:
--------------------------------------------------------------------------------
1 | 'gd'
19 |
20 | );
21 |
--------------------------------------------------------------------------------
/config/services.php:
--------------------------------------------------------------------------------
1 | [
18 | 'domain' => env('MAILGUN_DOMAIN'),
19 | 'secret' => env('MAILGUN_SECRET'),
20 | ],
21 |
22 | 'mandrill' => [
23 | 'secret' => env('MANDRILL_SECRET'),
24 | ],
25 |
26 | 'ses' => [
27 | 'key' => env('SES_KEY'),
28 | 'secret' => env('SES_SECRET'),
29 | 'region' => 'us-east-1',
30 | ],
31 |
32 | 'stripe' => [
33 | 'model' => W4P\User::class,
34 | 'key' => env('STRIPE_KEY'),
35 | 'secret' => env('STRIPE_SECRET'),
36 | ],
37 |
38 | ];
39 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 |
--------------------------------------------------------------------------------
/database/factories/ModelFactory.php:
--------------------------------------------------------------------------------
1 | increments('id');
19 | $table->string('key')->unique();
20 | $table->text('value');
21 | $table->timestamps();
22 | }
23 | );
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | Schema::drop('settings');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_12_132417_create_project_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
19 | $table->string('title'); // Title of the project
20 | $table->string('brief'); // Description in less than 255 characters
21 | $table->text('description')->nullable(); // Longer description, initially nullable
22 | $table->string('video_url')->nullable(); // Video URL
23 | $table->decimal('currency')->default(0); // Currency
24 | $table->dateTime('starts_at');
25 | $table->dateTime('ends_at');
26 | $table->timestamps();
27 | }
28 | );
29 | }
30 |
31 | /**
32 | * Reverse the migrations.
33 | *
34 | * @return void
35 | */
36 | public function down()
37 | {
38 | Schema::drop('project');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_12_132434_create_post_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
19 | $table->string('title'); // Title of the update or post
20 | $table->longText('content'); // Content of the update (in md)
21 | $table->timestamps();
22 | }
23 | );
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | Schema::drop('post');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_14_122533_create_donation_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
17 | $table->string('first_name');
18 | $table->string('last_name');
19 | $table->string('email');
20 | $table->decimal('currency');
21 | $table->string('payment_id')->nullable();
22 | $table->string('payment_status')->nullable();
23 | $table->string('secret_url')->unique();
24 | $table->string('confirm_url')->unique();
25 | $table->datetime('confirmed')->nullable();
26 | $table->unsignedInteger('tier_id')->nullable();
27 | $table->text('message')->nullable();
28 | $table->timestamps();
29 | });
30 | }
31 |
32 | /**
33 | * Reverse the migrations.
34 | *
35 | * @return void
36 | */
37 | public function down()
38 | {
39 | Schema::drop('donation');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_19_134515_create_tier_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
17 | $table->decimal('pledge')->unique();
18 | $table->text('description');
19 | $table->timestamps();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | Schema::drop('tier');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_20_102824_create_archivedproject_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
17 | $table->string('title'); // Title of the project
18 | $table->string('brief'); // Description in less than 255 characters
19 | $table->text('description')->nullable(); // Longer description, initially nullable
20 | $table->string('videoProvider'); // Longer description
21 | $table->string('videoUrl')->nullable(); // Video URL
22 | $table->dateTime('starts_at');
23 | $table->dateTime('ends_at');
24 | $table->boolean('success');
25 | $table->longText('backers'); // backers json
26 | $table->longText('goals'); // goals json
27 | $table->longText('meta'); // meta json
28 | $table->timestamps();
29 | });
30 | }
31 |
32 | /**
33 | * Reverse the migrations.
34 | *
35 | * @return void
36 | */
37 | public function down()
38 | {
39 | Schema::drop('archivedproject');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_22_131030_create_donation_type_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
17 | $table->string('name');
18 | $table->string('description');
19 | $table->string('unit_description');
20 | $table->unsignedInteger('required_amount');
21 | $table->enum('kind', ['manpower', 'material', 'coaching', 'currency']);
22 | $table->timestamps();
23 | });
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | Schema::drop('donation_type');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/migrations/2016_01_22_131044_create_donation_item_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
17 | $table->unsignedInteger('donation_id');
18 | $table->unsignedInteger('donation_type_id');
19 | $table->datetime('confirmed_at')->nullable()->default(null);
20 | $table->timestamps();
21 | });
22 | }
23 |
24 | /**
25 | * Reverse the migrations.
26 | *
27 | * @return void
28 | */
29 | public function down()
30 | {
31 | Schema::drop('donation_item');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/database/migrations/2016_03_16_104858_create_pages_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
19 | $table->string('title');
20 | $table->string('slug');
21 | $table->longText('content');
22 | $table->boolean('default');
23 | $table->timestamps();
24 | }
25 | );
26 | }
27 |
28 | /**
29 | * Reverse the migrations.
30 | *
31 | * @return void
32 | */
33 | public function down()
34 | {
35 | Schema::drop('pages');
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/database/migrations/2016_03_30_125119_modify_archivedproject_table.php:
--------------------------------------------------------------------------------
1 | dropColumn(['videoProvider', 'videoUrl', 'backers', 'goals']);
17 | });
18 | Schema::table('archivedproject', function ($table) {
19 | $table->string('video_url')->nullable();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | //
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2016_03_30_132655_add_deleted_at_to_donations.php:
--------------------------------------------------------------------------------
1 | timestamp('deleted_at')->nullable()->default(null);
17 | });
18 | }
19 |
20 | /**
21 | * Reverse the migrations.
22 | *
23 | * @return void
24 | */
25 | public function down()
26 | {
27 | Schema::table('donation', function ($table) {
28 | $table->dropColumn('deleted_at');
29 | });
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/database/migrations/2016_04_07_112634_migrate_organisation_fields.php:
--------------------------------------------------------------------------------
1 | first();
17 | if ($vat) {
18 | $vat->key = "platform.organisation.vat";
19 | $vat->save();
20 | }
21 | $address = Setting::where('key', 'organisation.address')->first();
22 | if ($address) {
23 | $address->key = "platform.organisation.address";
24 | $address->save();
25 | }
26 | $email = Setting::where('key', 'organisation.email')->first();
27 | if ($email) {
28 | $email->key = "platform.organisation.email";
29 | $email->save();
30 | }
31 | }
32 |
33 | /**
34 | * Reverse the migrations.
35 | *
36 | * @return void
37 | */
38 | public function down()
39 | {
40 | $vat = Setting::where('key', 'platform.organisation.vat')->first();
41 | if ($vat) {
42 | $vat->key = "organisation.vat";
43 | $vat->save();
44 | }
45 | $address = Setting::where('key', 'platform.organisation.address')->first();
46 | if ($address) {
47 | $address->key = "organisation.address";
48 | $address->save();
49 | }
50 | $email = Setting::where('key', 'platform.organisation.email')->first();
51 | if ($email) {
52 | $email->key = "organisation.email";
53 | $email->save();
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/database/migrations/2016_05_03_132655_add_summary_to_posts.php:
--------------------------------------------------------------------------------
1 | string('summary')->nullable()->default(null);
17 | });
18 | }
19 |
20 | /**
21 | * Reverse the migrations.
22 | *
23 | * @return void
24 | */
25 | public function down()
26 | {
27 | Schema::table('post', function ($table) {
28 | $table->dropColumn('summary');
29 | });
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/database/seeds/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/database/seeds/.gitkeep
--------------------------------------------------------------------------------
/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call(DefaultPagesSeeder::class);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/database/seeds/DefaultPagesSeeder.php:
--------------------------------------------------------------------------------
1 | 'how_does_it_work',
22 | "slug" => "how_it_works",
23 | "content" => "",
24 | "default" => true
25 | ]
26 | );
27 | Page::create(
28 | [
29 | "title" => 'press_materials',
30 | "slug" => "press",
31 | "content" => "",
32 | "default" => true
33 | ]
34 | );
35 | Page::create(
36 | [
37 | "title" => 'privacy_policy',
38 | "slug" => "privacy_policy",
39 | "content" => "",
40 | "default" => true
41 | ]
42 | );
43 | Page::create(
44 | [
45 | "title" => 'terms_of_use',
46 | "slug" => "terms_of_use",
47 | "content" => "",
48 | "default" => true
49 | ]
50 | );
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/database/seeds/SettingsTestSeeder.php:
--------------------------------------------------------------------------------
1 | "Test project",
27 | 'brief' => "Test project description",
28 | 'description' => "Long description",
29 | 'video_url' => "",
30 | 'starts_at' => Carbon::now(),
31 | 'ends_at' => Carbon::now()->addMonth()
32 | ]);
33 |
34 | Setting::set('organisation.name', 'Organisation Name');
35 | Setting::set('organisation.description', 'This is a short description');
36 | Setting::set('organisation.website', 'http://website.com');
37 | Setting::set('organisation.valid', 'true');
38 |
39 | Setting::set('email.host', '127.0.0.1');
40 | Setting::set('email.port', '1025');
41 | Setting::set('email.username', '');
42 | Setting::set('email.password', '');
43 | Setting::set('email.encryption', '');
44 | Setting::set('email.from', 'test@mail.okfnbe');
45 | Setting::set('email.name', 'Test mail');
46 | Setting::set('email.valid', 'true');
47 |
48 | Setting::set('setup.complete', 'done');
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/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 Sass
10 | | file for our application, as well as publishing vendor resources.
11 | |
12 | */
13 |
14 | elixir(function(mix) {
15 | mix.sass('app.scss');
16 | mix.scriptsIn("resources/assets/js/core", "public/js/core.js");
17 | mix.scriptsIn("resources/assets/js/admin", "public/js/admin.js");
18 | // use the --production flag with gulp to minify
19 | });
20 |
21 | elixir(function(mix) {
22 | mix.copy('resources/assets/js/pledge/pledge.js', 'public/js/pledge.js');
23 | mix.version([
24 | "js/core.js",
25 | "js/pledge.js",
26 | "js/admin.js",
27 | "css/app.css"
28 | ]);
29 | });
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "devDependencies": {
4 | "gulp": "^3.8.8"
5 | },
6 | "dependencies": {
7 | "laravel-elixir": "^4.0.0",
8 | "bootstrap-sass": "^3.0.0"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 |
15 |
16 | ./tests/Setup/
17 |
18 |
19 | ./tests/W4P/
20 |
21 |
22 |
23 |
24 | app/
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 |
2 |
3 | Options -MultiViews
4 |
5 |
6 | RewriteEngine On
7 |
8 | # Redirect Trailing Slashes If Not A Folder...
9 | RewriteCond %{REQUEST_FILENAME} !-d
10 | RewriteRule ^(.*)/$ /$1 [L,R=301]
11 |
12 | # Handle Front Controller...
13 | RewriteCond %{REQUEST_FILENAME} !-d
14 | RewriteCond %{REQUEST_FILENAME} !-f
15 | RewriteRule ^ index.php [L]
16 |
17 |
--------------------------------------------------------------------------------
/public/assets/bg/bg_people.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/bg/bg_people.jpg
--------------------------------------------------------------------------------
/public/assets/icons/icon_calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_calendar.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_calendar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_calendar@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_checkmark.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_checkmark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_checkmark@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_checkmark_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_checkmark_checked.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_checkmark_checked@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_checkmark_checked@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_checkmark_unchecked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_checkmark_unchecked.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_checkmark_unchecked@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_checkmark_unchecked@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_coaching_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_coaching_active.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_coaching_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_coaching_active@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_coaching_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_coaching_inactive.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_coaching_inactive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_coaching_inactive@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_currency_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_currency_active.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_currency_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_currency_active@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_currency_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_currency_inactive.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_currency_inactive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_currency_inactive@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_flag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_flag.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_flag@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_flag@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_manpower_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_manpower_active.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_manpower_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_manpower_active@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_manpower_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_manpower_inactive.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_manpower_inactive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_manpower_inactive@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_material_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_material_active.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_material_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_material_active@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_material_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_material_inactive.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_material_inactive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_material_inactive@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_person.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_person.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_person@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_person@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_coaching.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_coaching.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_coaching@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_coaching@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_currency.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_currency.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_currency@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_currency@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_manpower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_manpower.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_manpower@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_manpower@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_material.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_material.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_progress_material@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_progress_material@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_story_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_story_active.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_story_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_story_active@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_story_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_story_inactive.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_story_inactive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_story_inactive@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_updates_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_updates_active.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_updates_active@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_updates_active@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_updates_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_updates_inactive.png
--------------------------------------------------------------------------------
/public/assets/icons/icon_updates_inactive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/icon_updates_inactive@2x.png
--------------------------------------------------------------------------------
/public/assets/icons/share_icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/icons/share_icons.png
--------------------------------------------------------------------------------
/public/assets/logo/logo_w4p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/assets/logo/logo_w4p.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/favicon.ico
--------------------------------------------------------------------------------
/public/images/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/images/.gitkeep
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | /*
11 | |--------------------------------------------------------------------------
12 | | Register The Auto Loader
13 | |--------------------------------------------------------------------------
14 | |
15 | | Composer provides a convenient, automatically generated class loader for
16 | | our application. We just need to utilize it! We'll simply require it
17 | | into the script here so that we don't have to worry about manual
18 | | loading any of our classes later on. It feels nice to relax.
19 | |
20 | */
21 |
22 | require __DIR__.'/../bootstrap/autoload.php';
23 |
24 | /*
25 | |--------------------------------------------------------------------------
26 | | Turn On The Lights
27 | |--------------------------------------------------------------------------
28 | |
29 | | We need to illuminate PHP development, so let us turn on the lights.
30 | | This bootstraps the framework and gets it ready for use, then it
31 | | will load up this application so that we can run it and send
32 | | the responses back to the browser and delight our users.
33 | |
34 | */
35 |
36 | $app = require_once __DIR__.'/../bootstrap/app.php';
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Run The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once we have the application, we can handle the incoming request
44 | | through the kernel, and send the associated response back to
45 | | the client's browser allowing them to enjoy the creative
46 | | and wonderful application we have prepared for them.
47 | |
48 | */
49 |
50 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
51 |
52 | $response = $kernel->handle(
53 | $request = Illuminate\Http\Request::capture()
54 | );
55 |
56 | $response->send();
57 |
58 | $kernel->terminate($request, $response);
59 |
--------------------------------------------------------------------------------
/public/organisation/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/organisation/.gitkeep
--------------------------------------------------------------------------------
/public/platform/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/platform/.gitkeep
--------------------------------------------------------------------------------
/public/project/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/public/project/.gitkeep
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/public/web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/resources/assets/js/admin/config/inline-attachconfig.js:
--------------------------------------------------------------------------------
1 | var options = {
2 | /**
3 | * Name of the POST field where the file will be sent.
4 | * Defaults to 'file'.
5 | */
6 | uploadFieldName: 'file',
7 |
8 | /**
9 | * Name of the field from the response where the file can be downloaded.
10 | * Defaults to 'filename'
11 | */
12 | downloadFieldName: 'file',
13 |
14 | // List of allowed MIME types
15 | allowedTypes: [
16 | 'image/jpeg',
17 | 'image/png',
18 | 'image/jpg',
19 | 'image/gif'
20 | ],
21 |
22 | onFileUploadResponse: function(XMLHttpRequest) {
23 | var status = $.parseJSON(XMLHttpRequest.response);
24 | if (typeof status.error !== 'undefined') {
25 | alert(status.error);
26 | }
27 | }
28 | };
--------------------------------------------------------------------------------
/resources/assets/sass/_bootstrap.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.6 (http://getbootstrap.com)
3 | * Copyright 2011-2015 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | // Core variables and mixins
8 | @import "bootstrap/variables";
9 | @import "bootstrap/mixins";
10 |
11 | // Reset and dependencies
12 | @import "bootstrap/normalize";
13 | @import "bootstrap/print";
14 | @import "bootstrap/glyphicons";
15 |
16 | // Core CSS
17 | @import "bootstrap/scaffolding";
18 | @import "bootstrap/type";
19 | @import "bootstrap/code";
20 | @import "bootstrap/grid";
21 | @import "bootstrap/tables";
22 | @import "bootstrap/forms";
23 | @import "bootstrap/buttons";
24 |
25 | // Components
26 | @import "bootstrap/component-animations";
27 | @import "bootstrap/dropdowns";
28 | @import "bootstrap/button-groups";
29 | @import "bootstrap/input-groups";
30 | @import "bootstrap/navs";
31 | @import "bootstrap/navbar";
32 | @import "bootstrap/breadcrumbs";
33 | @import "bootstrap/pagination";
34 | @import "bootstrap/pager";
35 | @import "bootstrap/labels";
36 | @import "bootstrap/badges";
37 | @import "bootstrap/jumbotron";
38 | @import "bootstrap/thumbnails";
39 | @import "bootstrap/alerts";
40 | @import "bootstrap/progress-bars";
41 | @import "bootstrap/media";
42 | @import "bootstrap/list-group";
43 | @import "bootstrap/panels";
44 | @import "bootstrap/responsive-embed";
45 | @import "bootstrap/wells";
46 | @import "bootstrap/close";
47 |
48 | // Components w/ JavaScript
49 | @import "bootstrap/modals";
50 | @import "bootstrap/tooltip";
51 | @import "bootstrap/popovers";
52 | @import "bootstrap/carousel";
53 |
54 | // Utility classes
55 | @import "bootstrap/utilities";
56 | @import "bootstrap/responsive-utilities";
57 |
58 | .alert-danger {
59 | background-color: $color-orange;
60 | border-color: $color-orange;
61 | color: #fff;
62 |
63 | p{
64 | color: #fff;
65 | }
66 | }
67 |
68 | .alert-info {
69 | background-color: $color-primary;
70 | border-color: $color-primary;
71 | color: #fff;
72 |
73 | p{
74 | color: #fff;
75 | }
76 | }
--------------------------------------------------------------------------------
/resources/assets/sass/_colors.scss:
--------------------------------------------------------------------------------
1 | // Colors
2 |
3 | $color-primary: #42CFD2;
4 | $color-primary-light: #98D9DA;
5 | $color-primary-contrast: #222A44;
6 | $color-secondary: #444;
7 | $color-gray: #F7F7F7;
8 | $color-orange: #FC591F;
9 | $color-grey-text: #8E8E8E;
--------------------------------------------------------------------------------
/resources/assets/sass/_config.scss:
--------------------------------------------------------------------------------
1 | /**
2 | CONFIGURATION VARIABLES
3 | */
4 |
5 | // Font names
6 | $sans-serif: "Open Sans", "Helvetica Neue", "Arial", sans-serif;
7 | $serif: "Georgia", "Times", "Times New Roman", serif;
8 |
9 | // Preferred fixed height of the footer.
10 | $footer-height: 360px;
11 |
12 | // Additional spacing between the footer and body. Applied as padding to the body tag.
13 | $footer-additional-padding: 25px;
14 |
15 | // Banner height
16 | $banner-height: 300px;
--------------------------------------------------------------------------------
/resources/assets/sass/_stickyfooter.scss:
--------------------------------------------------------------------------------
1 | html {
2 | position: relative;
3 | min-height: 100%;
4 | }
5 |
6 | body {
7 | /* Margin bottom by footer height */
8 | margin-bottom: $footer-height;
9 |
10 | &.setup{
11 | margin-bottom: 0px;
12 | }
13 | }
14 |
15 | .footer {
16 | position: absolute;
17 | bottom: 0;
18 | width: 100%;
19 | /* Set the fixed height of the footer here */
20 | height: $footer-height;
21 | background-color: $color-gray;
22 |
23 | .container{
24 | // padding: 15px;
25 | }
26 | }
--------------------------------------------------------------------------------
/resources/assets/sass/_typo.scss:
--------------------------------------------------------------------------------
1 | // Typography
2 | *{
3 | outline: none;
4 | }
5 |
6 | .no-margin{
7 | margin: 0;
8 | }
9 |
10 | a{
11 | color: $color-primary;
12 |
13 | &:hover, &:focus{
14 | color: $color-primary;
15 | }
16 | }
17 |
18 | p, li{
19 | color: $color-grey-text;
20 | line-height: 1.8em;
21 |
22 | &:last-child{
23 | margin-bottom: 0;
24 | }
25 | }
26 |
27 | .campaign-over {
28 | color: #FFF;
29 | }
30 |
31 | h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
32 | color: #3E3E3E;
33 |
34 | &:first-child{
35 | margin-top: 0;
36 | }
37 | }
--------------------------------------------------------------------------------
/resources/assets/sass/app.scss:
--------------------------------------------------------------------------------
1 | // Core
2 | @import "config";
3 | @import "colors";
4 | @import "setup";
5 |
6 | // Libraries
7 | @import "bootstrap";
8 | @import "typo";
9 |
10 | // Page-specific CSS
11 | @import "pages/home";
12 | @import "pages/post";
13 | @import "pages/previous";
14 | @import "pages/donation";
15 |
16 | // Components
17 | @import "components/form";
18 | @import "components/topnav";
19 | @import "components/btn4";
20 | @import "components/sharebtn";
21 | @import "components/icons";
22 | @import "components/radial-progress";
23 | @import "components/checkbox";
24 | @import "components/gray";
25 | @import "components/tabs";
26 | @import "components/texteditor";
27 |
28 | // Partials
29 | @import "partials/footer";
30 |
31 | // 3rd party libs
32 | @import "components/lib/jquery.datetimepicker";
33 |
34 | // Sticky footer
35 | @import "stickyfooter";
36 |
37 | //media queries
38 | @import "mediaqueries";
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_alerts.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Alerts
3 | // --------------------------------------------------
4 |
5 |
6 | // Base styles
7 | // -------------------------
8 |
9 | .alert {
10 | padding: $alert-padding;
11 | margin-bottom: $line-height-computed;
12 | border: 1px solid transparent;
13 | border-radius: $alert-border-radius;
14 |
15 | // Headings for larger alerts
16 | h4 {
17 | margin-top: 0;
18 | // Specified for the h4 to prevent conflicts of changing $headings-color
19 | color: inherit;
20 | }
21 |
22 | // Provide class for links that match alerts
23 | .alert-link {
24 | font-weight: $alert-link-font-weight;
25 | }
26 |
27 | // Improve alignment and spacing of inner content
28 | > p,
29 | > ul {
30 | margin-bottom: 0;
31 | }
32 |
33 | > p + p {
34 | margin-top: 5px;
35 | }
36 | }
37 |
38 | // Dismissible alerts
39 | //
40 | // Expand the right padding and account for the close button's positioning.
41 |
42 | .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
43 | .alert-dismissible {
44 | padding-right: ($alert-padding + 20);
45 |
46 | // Adjust close link position
47 | .close {
48 | position: relative;
49 | top: -2px;
50 | right: -21px;
51 | color: inherit;
52 | }
53 | }
54 |
55 | // Alternate styles
56 | //
57 | // Generate contextual modifier classes for colorizing the alert.
58 |
59 | .alert-success {
60 | @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
61 | }
62 |
63 | .alert-info {
64 | @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
65 | }
66 |
67 | .alert-warning {
68 | @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
69 | }
70 |
71 | .alert-danger {
72 | @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
73 | }
74 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_badges.scss:
--------------------------------------------------------------------------------
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: middle;
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 |
32 | .btn-xs &,
33 | .btn-group-xs > .btn & {
34 | top: 0;
35 | padding: 1px 5px;
36 | }
37 |
38 | // [converter] extracted a& to a.badge
39 |
40 | // Account for badges in navs
41 | .list-group-item.active > &,
42 | .nav-pills > .active > a > & {
43 | color: $badge-active-color;
44 | background-color: $badge-active-bg;
45 | }
46 |
47 | .list-group-item > & {
48 | float: right;
49 | }
50 |
51 | .list-group-item > & + & {
52 | margin-right: 5px;
53 | }
54 |
55 | .nav-pills > li > a > & {
56 | margin-left: 3px;
57 | }
58 | }
59 |
60 | // Hover state, but only for links
61 | a.badge {
62 | &:hover,
63 | &:focus {
64 | color: $badge-link-hover-color;
65 | text-decoration: none;
66 | cursor: pointer;
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_breadcrumbs.scss:
--------------------------------------------------------------------------------
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 | // [converter] Workaround for https://github.com/sass/libsass/issues/1115
18 | $nbsp: "\00a0";
19 | content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space
20 | padding: 0 5px;
21 | color: $breadcrumb-color;
22 | }
23 | }
24 |
25 | > .active {
26 | color: $breadcrumb-active-color;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_close.scss:
--------------------------------------------------------------------------------
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 | @include opacity(.2);
14 |
15 | &:hover,
16 | &:focus {
17 | color: $close-color;
18 | text-decoration: none;
19 | cursor: pointer;
20 | @include opacity(.5);
21 | }
22 |
23 | // [converter] extracted button& to button.close
24 | }
25 |
26 | // Additional properties for button version
27 | // iOS requires the button element instead of an anchor tag.
28 | // If you want the anchor version, it requires `href="#"`.
29 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
30 | button.close {
31 | padding: 0;
32 | cursor: pointer;
33 | background: transparent;
34 | border: 0;
35 | -webkit-appearance: none;
36 | }
37 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_code.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Code (inline and block)
3 | // --------------------------------------------------
4 |
5 |
6 | // Inline and block code styles
7 | code,
8 | kbd,
9 | pre,
10 | samp {
11 | font-family: $font-family-monospace;
12 | }
13 |
14 | // Inline code
15 | code {
16 | padding: 2px 4px;
17 | font-size: 90%;
18 | color: $code-color;
19 | background-color: $code-bg;
20 | border-radius: $border-radius-base;
21 | }
22 |
23 | // User input typically entered via keyboard
24 | kbd {
25 | padding: 2px 4px;
26 | font-size: 90%;
27 | color: $kbd-color;
28 | background-color: $kbd-bg;
29 | border-radius: $border-radius-small;
30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
31 |
32 | kbd {
33 | padding: 0;
34 | font-size: 100%;
35 | font-weight: bold;
36 | box-shadow: none;
37 | }
38 | }
39 |
40 | // Blocks of code
41 | pre {
42 | display: block;
43 | padding: (($line-height-computed - 1) / 2);
44 | margin: 0 0 ($line-height-computed / 2);
45 | font-size: ($font-size-base - 1); // 14px to 13px
46 | line-height: $line-height-base;
47 | word-break: break-all;
48 | word-wrap: break-word;
49 | color: $pre-color;
50 | background-color: $pre-bg;
51 | border: 1px solid $pre-border-color;
52 | border-radius: $border-radius-base;
53 |
54 | // Account for some code outputs that place code tags in pre tags
55 | code {
56 | padding: 0;
57 | font-size: inherit;
58 | color: inherit;
59 | white-space: pre-wrap;
60 | background-color: transparent;
61 | border-radius: 0;
62 | }
63 | }
64 |
65 | // Enable scrollable blocks of code
66 | .pre-scrollable {
67 | max-height: $pre-scrollable-max-height;
68 | overflow-y: scroll;
69 | }
70 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_component-animations.scss:
--------------------------------------------------------------------------------
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 | @include transition(opacity .15s linear);
13 | &.in {
14 | opacity: 1;
15 | }
16 | }
17 |
18 | .collapse {
19 | display: none;
20 |
21 | &.in { display: block; }
22 | // [converter] extracted tr&.in to tr.collapse.in
23 | // [converter] extracted tbody&.in to tbody.collapse.in
24 | }
25 |
26 | tr.collapse.in { display: table-row; }
27 |
28 | tbody.collapse.in { display: table-row-group; }
29 |
30 | .collapsing {
31 | position: relative;
32 | height: 0;
33 | overflow: hidden;
34 | @include transition-property(height, visibility);
35 | @include transition-duration(.35s);
36 | @include transition-timing-function(ease);
37 | }
38 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_grid.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Grid system
3 | // --------------------------------------------------
4 |
5 |
6 | // Container widths
7 | //
8 | // Set the container width, and override it for fixed navbars in media queries.
9 |
10 | .container {
11 | @include container-fixed;
12 |
13 | @media (min-width: $screen-sm-min) {
14 | width: $container-sm;
15 | }
16 | @media (min-width: $screen-md-min) {
17 | width: $container-md;
18 | }
19 | @media (min-width: $screen-lg-min) {
20 | width: $container-lg;
21 | }
22 | }
23 |
24 |
25 | // Fluid container
26 | //
27 | // Utilizes the mixin meant for fixed width containers, but without any defined
28 | // width for fluid, full width layouts.
29 |
30 | .container-fluid {
31 | @include container-fixed;
32 | }
33 |
34 |
35 | // Row
36 | //
37 | // Rows contain and clear the floats of your columns.
38 |
39 | .row {
40 | @include make-row;
41 | }
42 |
43 |
44 | // Columns
45 | //
46 | // Common styles for small and large grid columns
47 |
48 | @include make-grid-columns;
49 |
50 |
51 | // Extra small grid
52 | //
53 | // Columns, offsets, pushes, and pulls for extra small devices like
54 | // smartphones.
55 |
56 | @include make-grid(xs);
57 |
58 |
59 | // Small grid
60 | //
61 | // Columns, offsets, pushes, and pulls for the small device range, from phones
62 | // to tablets.
63 |
64 | @media (min-width: $screen-sm-min) {
65 | @include make-grid(sm);
66 | }
67 |
68 |
69 | // Medium grid
70 | //
71 | // Columns, offsets, pushes, and pulls for the desktop device range.
72 |
73 | @media (min-width: $screen-md-min) {
74 | @include make-grid(md);
75 | }
76 |
77 |
78 | // Large grid
79 | //
80 | // Columns, offsets, pushes, and pulls for the large desktop device range.
81 |
82 | @media (min-width: $screen-lg-min) {
83 | @include make-grid(lg);
84 | }
85 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_jumbotron.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Jumbotron
3 | // --------------------------------------------------
4 |
5 |
6 | .jumbotron {
7 | padding-top: $jumbotron-padding;
8 | padding-bottom: $jumbotron-padding;
9 | margin-bottom: $jumbotron-padding;
10 | color: $jumbotron-color;
11 | background-color: $jumbotron-bg;
12 |
13 | h1,
14 | .h1 {
15 | color: $jumbotron-heading-color;
16 | }
17 |
18 | p {
19 | margin-bottom: ($jumbotron-padding / 2);
20 | font-size: $jumbotron-font-size;
21 | font-weight: 200;
22 | }
23 |
24 | > hr {
25 | border-top-color: darken($jumbotron-bg, 10%);
26 | }
27 |
28 | .container &,
29 | .container-fluid & {
30 | border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container
31 | padding-left: ($grid-gutter-width / 2);
32 | padding-right: ($grid-gutter-width / 2);
33 | }
34 |
35 | .container {
36 | max-width: 100%;
37 | }
38 |
39 | @media screen and (min-width: $screen-sm-min) {
40 | padding-top: ($jumbotron-padding * 1.6);
41 | padding-bottom: ($jumbotron-padding * 1.6);
42 |
43 | .container &,
44 | .container-fluid & {
45 | padding-left: ($jumbotron-padding * 2);
46 | padding-right: ($jumbotron-padding * 2);
47 | }
48 |
49 | h1,
50 | .h1 {
51 | font-size: $jumbotron-heading-font-size;
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_labels.scss:
--------------------------------------------------------------------------------
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 | // [converter] extracted a& to a.label
18 |
19 | // Empty labels collapse automatically (not available in IE8)
20 | &:empty {
21 | display: none;
22 | }
23 |
24 | // Quick fix for labels in buttons
25 | .btn & {
26 | position: relative;
27 | top: -1px;
28 | }
29 | }
30 |
31 | // Add hover effects, but only for links
32 | a.label {
33 | &:hover,
34 | &:focus {
35 | color: $label-link-hover-color;
36 | text-decoration: none;
37 | cursor: pointer;
38 | }
39 | }
40 |
41 | // Colors
42 | // Contextual variations (linked labels get darker on :hover)
43 |
44 | .label-default {
45 | @include label-variant($label-default-bg);
46 | }
47 |
48 | .label-primary {
49 | @include label-variant($label-primary-bg);
50 | }
51 |
52 | .label-success {
53 | @include label-variant($label-success-bg);
54 | }
55 |
56 | .label-info {
57 | @include label-variant($label-info-bg);
58 | }
59 |
60 | .label-warning {
61 | @include label-variant($label-warning-bg);
62 | }
63 |
64 | .label-danger {
65 | @include label-variant($label-danger-bg);
66 | }
67 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_media.scss:
--------------------------------------------------------------------------------
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,
11 | .media-body {
12 | zoom: 1;
13 | overflow: hidden;
14 | }
15 |
16 | .media-body {
17 | width: 10000px;
18 | }
19 |
20 | .media-object {
21 | display: block;
22 |
23 | // Fix collapse in webkit from max-width: 100% and display: table-cell.
24 | &.img-thumbnail {
25 | max-width: none;
26 | }
27 | }
28 |
29 | .media-right,
30 | .media > .pull-right {
31 | padding-left: 10px;
32 | }
33 |
34 | .media-left,
35 | .media > .pull-left {
36 | padding-right: 10px;
37 | }
38 |
39 | .media-left,
40 | .media-right,
41 | .media-body {
42 | display: table-cell;
43 | vertical-align: top;
44 | }
45 |
46 | .media-middle {
47 | vertical-align: middle;
48 | }
49 |
50 | .media-bottom {
51 | vertical-align: bottom;
52 | }
53 |
54 | // Reset margins on headings for tighter default spacing
55 | .media-heading {
56 | margin-top: 0;
57 | margin-bottom: 5px;
58 | }
59 |
60 | // Media list variation
61 | //
62 | // Undo default ul/ol styles
63 | .media-list {
64 | padding-left: 0;
65 | list-style: none;
66 | }
67 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------------------------------
3 |
4 | // Utilities
5 | @import "mixins/hide-text";
6 | @import "mixins/opacity";
7 | @import "mixins/image";
8 | @import "mixins/labels";
9 | @import "mixins/reset-filter";
10 | @import "mixins/resize";
11 | @import "mixins/responsive-visibility";
12 | @import "mixins/size";
13 | @import "mixins/tab-focus";
14 | @import "mixins/reset-text";
15 | @import "mixins/text-emphasis";
16 | @import "mixins/text-overflow";
17 | @import "mixins/vendor-prefixes";
18 |
19 | // Components
20 | @import "mixins/alerts";
21 | @import "mixins/buttons";
22 | @import "mixins/panels";
23 | @import "mixins/pagination";
24 | @import "mixins/list-group";
25 | @import "mixins/nav-divider";
26 | @import "mixins/forms";
27 | @import "mixins/progress-bar";
28 | @import "mixins/table-row";
29 |
30 | // Skins
31 | @import "mixins/background-variant";
32 | @import "mixins/border-radius";
33 | @import "mixins/gradients";
34 |
35 | // Layout
36 | @import "mixins/clearfix";
37 | @import "mixins/center-block";
38 | @import "mixins/nav-vertical-align";
39 | @import "mixins/grid-framework";
40 | @import "mixins/grid";
41 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_pager.scss:
--------------------------------------------------------------------------------
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 | @include clearfix;
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 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_progress-bars.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Progress bars
3 | // --------------------------------------------------
4 |
5 |
6 | // Bar animations
7 | // -------------------------
8 |
9 | // WebKit
10 | @-webkit-keyframes progress-bar-stripes {
11 | from { background-position: 40px 0; }
12 | to { background-position: 0 0; }
13 | }
14 |
15 | // Spec and IE10+
16 | @keyframes progress-bar-stripes {
17 | from { background-position: 40px 0; }
18 | to { background-position: 0 0; }
19 | }
20 |
21 |
22 | // Bar itself
23 | // -------------------------
24 |
25 | // Outer container
26 | .progress {
27 | overflow: hidden;
28 | height: $line-height-computed;
29 | margin-bottom: $line-height-computed;
30 | background-color: $progress-bg;
31 | border-radius: $progress-border-radius;
32 | @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
33 | }
34 |
35 | // Bar of progress
36 | .progress-bar {
37 | float: left;
38 | width: 0%;
39 | height: 100%;
40 | font-size: $font-size-small;
41 | line-height: $line-height-computed;
42 | color: $progress-bar-color;
43 | text-align: center;
44 | background-color: $progress-bar-bg;
45 | @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
46 | @include transition(width .6s ease);
47 | }
48 |
49 | // Striped bars
50 | //
51 | // `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
52 | // `.progress-bar-striped` class, which you just add to an existing
53 | // `.progress-bar`.
54 | .progress-striped .progress-bar,
55 | .progress-bar-striped {
56 | @include gradient-striped;
57 | background-size: 40px 40px;
58 | }
59 |
60 | // Call animation for the active one
61 | //
62 | // `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
63 | // `.progress-bar.active` approach.
64 | .progress.active .progress-bar,
65 | .progress-bar.active {
66 | @include animation(progress-bar-stripes 2s linear infinite);
67 | }
68 |
69 |
70 | // Variations
71 | // -------------------------
72 |
73 | .progress-bar-success {
74 | @include progress-bar-variant($progress-bar-success-bg);
75 | }
76 |
77 | .progress-bar-info {
78 | @include progress-bar-variant($progress-bar-info-bg);
79 | }
80 |
81 | .progress-bar-warning {
82 | @include progress-bar-variant($progress-bar-warning-bg);
83 | }
84 |
85 | .progress-bar-danger {
86 | @include progress-bar-variant($progress-bar-danger-bg);
87 | }
88 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_responsive-embed.scss:
--------------------------------------------------------------------------------
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 |
27 | // Modifier class for 16:9 aspect ratio
28 | .embed-responsive-16by9 {
29 | padding-bottom: 56.25%;
30 | }
31 |
32 | // Modifier class for 4:3 aspect ratio
33 | .embed-responsive-4by3 {
34 | padding-bottom: 75%;
35 | }
36 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_thumbnails.scss:
--------------------------------------------------------------------------------
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 | @include transition(border .2s ease-in-out);
16 |
17 | > img,
18 | a > img {
19 | @include img-responsive;
20 | margin-left: auto;
21 | margin-right: auto;
22 | }
23 |
24 | // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active
25 |
26 | // Image captions
27 | .caption {
28 | padding: $thumbnail-caption-padding;
29 | color: $thumbnail-caption-color;
30 | }
31 | }
32 |
33 | // Add a hover state for linked versions only
34 | a.thumbnail:hover,
35 | a.thumbnail:focus,
36 | a.thumbnail.active {
37 | border-color: $link-color;
38 | }
39 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_utilities.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Floats
7 | // -------------------------
8 |
9 | .clearfix {
10 | @include clearfix;
11 | }
12 | .center-block {
13 | @include 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 | @include text-hide;
38 | }
39 |
40 |
41 | // Hide from screenreaders and browsers
42 | //
43 | // Credit: HTML5 Boilerplate
44 |
45 | .hidden {
46 | display: none !important;
47 | }
48 |
49 |
50 | // For Affix plugin
51 | // -------------------------
52 |
53 | .affix {
54 | position: fixed;
55 | }
56 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/_wells.scss:
--------------------------------------------------------------------------------
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 | @include 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 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_alerts.scss:
--------------------------------------------------------------------------------
1 | // Alerts
2 |
3 | @mixin 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 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_background-variant.scss:
--------------------------------------------------------------------------------
1 | // Contextual backgrounds
2 |
3 | // [converter] $parent hack
4 | @mixin bg-variant($parent, $color) {
5 | #{$parent} {
6 | background-color: $color;
7 | }
8 | a#{$parent}:hover,
9 | a#{$parent}:focus {
10 | background-color: darken($color, 10%);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_border-radius.scss:
--------------------------------------------------------------------------------
1 | // Single side border-radius
2 |
3 | @mixin border-top-radius($radius) {
4 | border-top-right-radius: $radius;
5 | border-top-left-radius: $radius;
6 | }
7 | @mixin border-right-radius($radius) {
8 | border-bottom-right-radius: $radius;
9 | border-top-right-radius: $radius;
10 | }
11 | @mixin border-bottom-radius($radius) {
12 | border-bottom-right-radius: $radius;
13 | border-bottom-left-radius: $radius;
14 | }
15 | @mixin border-left-radius($radius) {
16 | border-bottom-left-radius: $radius;
17 | border-top-left-radius: $radius;
18 | }
19 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_buttons.scss:
--------------------------------------------------------------------------------
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 | @mixin button-variant($color, $background, $border) {
7 | color: $color;
8 | background-color: $background;
9 | border-color: $border;
10 |
11 | &:focus,
12 | &.focus {
13 | color: $color;
14 | background-color: darken($background, 10%);
15 | border-color: darken($border, 25%);
16 | }
17 | &:hover {
18 | color: $color;
19 | background-color: darken($background, 10%);
20 | border-color: darken($border, 12%);
21 | }
22 | &:active,
23 | &.active,
24 | .open > &.dropdown-toggle {
25 | color: $color;
26 | background-color: darken($background, 10%);
27 | border-color: darken($border, 12%);
28 |
29 | &:hover,
30 | &:focus,
31 | &.focus {
32 | color: $color;
33 | background-color: darken($background, 17%);
34 | border-color: darken($border, 25%);
35 | }
36 | }
37 | &:active,
38 | &.active,
39 | .open > &.dropdown-toggle {
40 | background-image: none;
41 | }
42 | &.disabled,
43 | &[disabled],
44 | fieldset[disabled] & {
45 | &:hover,
46 | &:focus,
47 | &.focus {
48 | background-color: $background;
49 | border-color: $border;
50 | }
51 | }
52 |
53 | .badge {
54 | color: $background;
55 | background-color: $color;
56 | }
57 | }
58 |
59 | // Button sizes
60 | @mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
61 | padding: $padding-vertical $padding-horizontal;
62 | font-size: $font-size;
63 | line-height: $line-height;
64 | border-radius: $border-radius;
65 | }
66 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_center-block.scss:
--------------------------------------------------------------------------------
1 | // Center-align a block level element
2 |
3 | @mixin center-block() {
4 | display: block;
5 | margin-left: auto;
6 | margin-right: auto;
7 | }
8 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_clearfix.scss:
--------------------------------------------------------------------------------
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 | @mixin clearfix() {
14 | &:before,
15 | &:after {
16 | content: " "; // 1
17 | display: table; // 2
18 | }
19 | &:after {
20 | clear: both;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_hide-text.scss:
--------------------------------------------------------------------------------
1 | // CSS image replacement
2 | //
3 | // Heads up! v3 launched 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 (has been removed in v4)
10 | @mixin 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 | @mixin text-hide() {
20 | @include hide-text;
21 | }
22 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_image.scss:
--------------------------------------------------------------------------------
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 | @mixin 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 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
21 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$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(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}"));
31 | background-size: $width-1x $height-1x;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_labels.scss:
--------------------------------------------------------------------------------
1 | // Labels
2 |
3 | @mixin label-variant($color) {
4 | background-color: $color;
5 |
6 | &[href] {
7 | &:hover,
8 | &:focus {
9 | background-color: darken($color, 10%);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_list-group.scss:
--------------------------------------------------------------------------------
1 | // List Groups
2 |
3 | @mixin list-group-item-variant($state, $background, $color) {
4 | .list-group-item-#{$state} {
5 | color: $color;
6 | background-color: $background;
7 |
8 | // [converter] extracted a&, button& to a.list-group-item-#{$state}, button.list-group-item-#{$state}
9 | }
10 |
11 | a.list-group-item-#{$state},
12 | button.list-group-item-#{$state} {
13 | color: $color;
14 |
15 | .list-group-item-heading {
16 | color: inherit;
17 | }
18 |
19 | &:hover,
20 | &:focus {
21 | color: $color;
22 | background-color: darken($background, 5%);
23 | }
24 | &.active,
25 | &.active:hover,
26 | &.active:focus {
27 | color: #fff;
28 | background-color: $color;
29 | border-color: $color;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_nav-divider.scss:
--------------------------------------------------------------------------------
1 | // Horizontal dividers
2 | //
3 | // Dividers (basically an hr) within dropdowns and nav lists
4 |
5 | @mixin nav-divider($color: #e5e5e5) {
6 | height: 1px;
7 | margin: (($line-height-computed / 2) - 1) 0;
8 | overflow: hidden;
9 | background-color: $color;
10 | }
11 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_nav-vertical-align.scss:
--------------------------------------------------------------------------------
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 | @mixin navbar-vertical-align($element-height) {
7 | margin-top: (($navbar-height - $element-height) / 2);
8 | margin-bottom: (($navbar-height - $element-height) / 2);
9 | }
10 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_opacity.scss:
--------------------------------------------------------------------------------
1 | // Opacity
2 |
3 | @mixin opacity($opacity) {
4 | opacity: $opacity;
5 | // IE8 filter
6 | $opacity-ie: ($opacity * 100);
7 | filter: alpha(opacity=$opacity-ie);
8 | }
9 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_pagination.scss:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
4 | > li {
5 | > a,
6 | > span {
7 | padding: $padding-vertical $padding-horizontal;
8 | font-size: $font-size;
9 | line-height: $line-height;
10 | }
11 | &:first-child {
12 | > a,
13 | > span {
14 | @include border-left-radius($border-radius);
15 | }
16 | }
17 | &:last-child {
18 | > a,
19 | > span {
20 | @include border-right-radius($border-radius);
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_panels.scss:
--------------------------------------------------------------------------------
1 | // Panels
2 |
3 | @mixin 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 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_progress-bar.scss:
--------------------------------------------------------------------------------
1 | // Progress bars
2 |
3 | @mixin progress-bar-variant($color) {
4 | background-color: $color;
5 |
6 | // Deprecated parent class requirement as of v3.2.0
7 | .progress-striped & {
8 | @include gradient-striped;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_reset-filter.scss:
--------------------------------------------------------------------------------
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 | @mixin reset-filter() {
7 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
8 | }
9 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_reset-text.scss:
--------------------------------------------------------------------------------
1 | @mixin reset-text() {
2 | font-family: $font-family-base;
3 | // We deliberately do NOT reset font-size.
4 | font-style: normal;
5 | font-weight: normal;
6 | letter-spacing: normal;
7 | line-break: auto;
8 | line-height: $line-height-base;
9 | text-align: left; // Fallback for where `start` is not supported
10 | text-align: start;
11 | text-decoration: none;
12 | text-shadow: none;
13 | text-transform: none;
14 | white-space: normal;
15 | word-break: normal;
16 | word-spacing: normal;
17 | word-wrap: normal;
18 | }
19 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_resize.scss:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | @mixin 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 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_responsive-visibility.scss:
--------------------------------------------------------------------------------
1 | // Responsive utilities
2 |
3 | //
4 | // More easily include all the states for responsive-utilities.less.
5 | // [converter] $parent hack
6 | @mixin responsive-visibility($parent) {
7 | #{$parent} {
8 | display: block !important;
9 | }
10 | table#{$parent} { display: table !important; }
11 | tr#{$parent} { display: table-row !important; }
12 | th#{$parent},
13 | td#{$parent} { display: table-cell !important; }
14 | }
15 |
16 | // [converter] $parent hack
17 | @mixin responsive-invisibility($parent) {
18 | #{$parent} {
19 | display: none !important;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_size.scss:
--------------------------------------------------------------------------------
1 | // Sizing shortcuts
2 |
3 | @mixin size($width, $height) {
4 | width: $width;
5 | height: $height;
6 | }
7 |
8 | @mixin square($size) {
9 | @include size($size, $size);
10 | }
11 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_tab-focus.scss:
--------------------------------------------------------------------------------
1 | // WebKit-style focus
2 |
3 | @mixin tab-focus() {
4 | // Default
5 | outline: thin dotted;
6 | // WebKit
7 | outline: 5px auto -webkit-focus-ring-color;
8 | outline-offset: -2px;
9 | }
10 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_table-row.scss:
--------------------------------------------------------------------------------
1 | // Tables
2 |
3 | @mixin 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 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_text-emphasis.scss:
--------------------------------------------------------------------------------
1 | // Typography
2 |
3 | // [converter] $parent hack
4 | @mixin text-emphasis-variant($parent, $color) {
5 | #{$parent} {
6 | color: $color;
7 | }
8 | a#{$parent}:hover,
9 | a#{$parent}:focus {
10 | color: darken($color, 10%);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/resources/assets/sass/bootstrap/mixins/_text-overflow.scss:
--------------------------------------------------------------------------------
1 | // Text overflow
2 | // Requires inline-block or block for proper styling
3 |
4 | @mixin text-overflow() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/resources/assets/sass/components/_btn4.scss:
--------------------------------------------------------------------------------
1 | .btn4 {
2 | display: inline-block;
3 | text-decoration: none !important;
4 | font-size: 0.95em;
5 | padding: 12px 20px 10px 20px;
6 | border-radius: 100px;
7 | border: 2px solid $color-orange;
8 | color: $color-orange;
9 | margin: 10px 0;
10 | text-transform: uppercase;
11 | background-color: transparent;
12 | outline: none !important;
13 |
14 | &:hover, &:active {
15 | text-decoration: none !important;
16 | border: 2px solid darken($color-orange, 10);
17 | color: darken($color-orange, 10);
18 | }
19 |
20 | .disabled {
21 | border: 2px solid #AAA;
22 | color: #AAA;
23 | }
24 |
25 | &.white {
26 | border: 2px solid #FFF;
27 | color: #FFF;
28 |
29 | &:hover, &:focus {
30 | background-color: white;
31 | text-decoration: none;
32 | color: $color-primary;
33 | }
34 | }
35 |
36 | &.main {
37 | border: 2px solid $color-primary;
38 | color: $color-primary;
39 |
40 | &:hover, &:active {
41 | text-decoration: none !important;
42 | border: 2px solid darken($color-primary, 10);
43 | color: darken($color-primary, 10);
44 | }
45 | }
46 |
47 | &.center {
48 | display: inline-block;
49 | text-align: center;
50 | }
51 | }
--------------------------------------------------------------------------------
/resources/assets/sass/components/_checkbox.scss:
--------------------------------------------------------------------------------
1 | .checkbox {
2 | width: 37px;
3 | height: 37px;
4 | background-image: url('../../assets/icons/icon_checkmark_unchecked@2x.png');
5 | background-size: contain;
6 | background-repeat: no-repeat;
7 | display: inline-block;
8 |
9 | &.checked {
10 | background-image: url('../../assets/icons/icon_checkmark_checked@2x.png');
11 | }
12 |
13 | &.disabled {
14 | background-image: url('../../assets/icons/icon_checkmark@2x.png');
15 | }
16 | }
--------------------------------------------------------------------------------
/resources/assets/sass/components/_form.scss:
--------------------------------------------------------------------------------
1 | textarea.markdown
2 | {
3 | font-family: monospace;
4 | }
5 |
6 | .form-control{
7 | outline: none !important;
8 | box-shadow: none !important;
9 |
10 | &:focus, &:active{
11 | border-color: $color-primary !important;
12 | }
13 | }
14 |
15 | input.form-control{
16 | // padding: 22px 14px;
17 | border-radius: 11px;
18 | }
19 |
20 | input[type=file]{
21 | padding: 0px;
22 | background: none;
23 | border: 0px none;
24 | }
25 |
26 | .form-group{
27 | label{
28 | font-size: 14px;
29 | font-weight: normal;
30 | }
31 | }
32 |
33 | #donation__start-form .row {
34 | margin-bottom:40px;
35 | }
--------------------------------------------------------------------------------
/resources/assets/sass/components/_gray.scss:
--------------------------------------------------------------------------------
1 | html.gray {
2 |
3 | /// If 'gray' class is applied to the html element, some elements will need to have their white backgrounds replaced
4 |
5 | background-color: $color-gray;
6 | .content {
7 | background-color: $color-gray;
8 | }
9 | body{
10 | padding-bottom: 0 !important;
11 | }
12 | .progress-radial .overlay {
13 | background-color: $color-gray;
14 | }
15 |
16 | }
--------------------------------------------------------------------------------
/resources/assets/sass/components/_sharebtn.scss:
--------------------------------------------------------------------------------
1 | .share-btn{
2 | text-decoration: none !important;
3 | width: 40px;
4 | height: 40px;
5 | background-image: url('../../assets/icons/share_icons.png');
6 | background-size: 120px 80px;
7 | display: inline-block;
8 |
9 | &.share-fb {
10 | background-position: 0px 0px;
11 |
12 | &:hover{
13 | background-position: 0px 40px;
14 | }
15 | }
16 |
17 | &.share-gp {
18 | background-position: 80px 0px;
19 |
20 | &:hover{
21 | background-position: 80px 40px;
22 | }
23 | }
24 |
25 | &.share-tw {
26 | background-position: 40px 0px;
27 |
28 | &:hover{
29 | background-position: 40px 40px;
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/resources/assets/sass/components/_tabs.scss:
--------------------------------------------------------------------------------
1 | $tabs-height: 70px;
2 |
3 | .nav-tabs{
4 | border: 0px none;
5 | height: $tabs-height;
6 |
7 | li{
8 | a{
9 | display: inline-block;
10 | height: $tabs-height;
11 | line-height: $tabs-height;
12 | padding: 0 18px;
13 | margin: 0;
14 | border: 0;
15 | border-radius: 0;
16 | position: relative;
17 |
18 | &:after{
19 | position: absolute;
20 | content: '';
21 | width: 1px;
22 | background: #E7E7E7;
23 | right: 0px;
24 | height: $tabs-height - 38px;
25 | top: 19px;
26 | }
27 |
28 | i{
29 | margin-right: 5px;
30 | }
31 |
32 | &:hover, &:focus{
33 | border: 0px;
34 | background: $color-gray;
35 | }
36 | }
37 |
38 | &:last-child{
39 | a{
40 | &:after{
41 | display: none;
42 | }
43 | }
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/resources/assets/sass/components/_topnav.scss:
--------------------------------------------------------------------------------
1 | .dropdown-menu{
2 |
3 | .separator
4 | {
5 | font-size: 0.85em;
6 | padding: 5px;
7 | margin-left: 10px;
8 | font-weight: bold;
9 | color: #555;
10 | text-transform: uppercase;
11 | cursor: default;
12 | }
13 |
14 | .disabled
15 | {
16 | cursor: default;
17 | color: #CCC;
18 |
19 | &:hover{
20 | background-color: #FFF;
21 | color: #CCC;
22 | }
23 | }
24 | }
25 |
26 | .navbar-default{
27 | .navbar-brand{
28 | padding: 0;
29 | }
30 |
31 | .navlogo {
32 | max-height: $navlogo-height;
33 | position: relative;
34 | margin-right: 100px;
35 | margin-top: ($navbar-height - $navlogo-height)/2;
36 | }
37 |
38 | .navbar-nav{
39 | li{
40 | a{
41 | box-sizing: border-box;
42 | padding: 0 30px;
43 | height: $navbar-height;
44 | line-height: $navbar-height;
45 |
46 | &:hover, &:focus{
47 | // border-bottom: 0px none;
48 | background-color: lighten($color-orange, 43%);
49 | }
50 | }
51 |
52 | &.active{
53 | a{
54 | // border-bottom: 0px none;
55 |
56 | &:hover, &:focus{
57 | // border-bottom: 0px none;
58 | }
59 | }
60 | }
61 | }
62 | }
63 | }
--------------------------------------------------------------------------------
/resources/assets/sass/pages/_donation.scss:
--------------------------------------------------------------------------------
1 | #donation__start, #donation__details{
2 | margin-bottom: 0;
3 |
4 | #donation__start-title, #donation__details-title{
5 | padding:50px 7% 50px 7%;
6 | }
7 |
8 | #donation__start-options, #donation__details-options{
9 | padding:7%;
10 | background-color: $color-gray;
11 | }
12 | }
13 |
14 | .grey-bg{
15 | background-color: $color-gray;
16 | }
17 |
18 | .white-bg{
19 | background-color: #fff;
20 | }
--------------------------------------------------------------------------------
/resources/assets/sass/pages/_post.scss:
--------------------------------------------------------------------------------
1 | .post, .post-brief {
2 | padding-top: 40px;
3 | padding-bottom: 40px;
4 |
5 | .row{
6 | padding-top: 40px;
7 | padding-bottom: 40px;
8 |
9 | &:first-child{
10 | padding-top: 0;
11 | }
12 |
13 | &:last-child{
14 | padding-bottom: 0;
15 | }
16 | }
17 |
18 | img {
19 | max-width: 100%;
20 | }
21 | }
--------------------------------------------------------------------------------
/resources/assets/sass/pages/_previous.scss:
--------------------------------------------------------------------------------
1 | .previous {
2 | padding-top: 100px;
3 | }
4 |
5 | .project-overview {
6 | h2 {
7 | margin: 0;
8 | margin-bottom: 15px;
9 | padding: 0;
10 | font-size: 48px;
11 | }
12 |
13 | .project-about {
14 | margin-top: 45px;
15 | margin-bottom: 25px;
16 | color: #ACACAC;
17 |
18 | .item {
19 | color: #7B7B7B;
20 | }
21 |
22 | span {
23 | margin-right: 25px;
24 | }
25 | }
26 |
27 | .radials {
28 | margin-top: 45px;
29 | margin-left: 15px;
30 | margin-bottom: 45px;
31 | }
32 |
33 | .stats {
34 | .stat {
35 | display: inline-block;
36 | margin-right: 50px;
37 | }
38 | }
39 |
40 | hr {
41 | width: 100%;
42 | }
43 |
44 | .previous-project {
45 | margin-bottom: 40px;
46 | }
47 | }
--------------------------------------------------------------------------------
/resources/assets/sass/partials/_footer.scss:
--------------------------------------------------------------------------------
1 | footer {
2 |
3 | padding-top: 50px;
4 | padding-bottom: 50px;
5 | font-weight: 300;
6 |
7 | ul {
8 | list-style: none;
9 | margin: 0;
10 | padding: 0;
11 |
12 | li a, li {
13 | color: #8A8A8A;
14 | font-weight: 300;
15 | }
16 |
17 | li {
18 | margin-bottom: 5px;
19 | }
20 |
21 | li.subtitle{
22 | color: #000;
23 | font-size: 0.9em;
24 | text-transform: uppercase;
25 | margin-bottom: 15px;
26 | font-weight: 400;
27 | }
28 |
29 | margin-bottom: 30px;
30 | }
31 |
32 | .gray {
33 | color: #8A8A8A;
34 | }
35 |
36 | .newsletter__textbox-icon {
37 | padding:3px 5px;
38 | background-color:$color-primary;
39 | }
40 | }
41 |
42 |
--------------------------------------------------------------------------------
/resources/lang/en/auth.php:
--------------------------------------------------------------------------------
1 | 'These credentials do not match our records.',
17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/resources/lang/en/footer.php:
--------------------------------------------------------------------------------
1 | "Homepage",
5 | "about" => "About",
6 | "projects" => "Projects",
7 | "previous_projects" => "Previous projects",
8 | "howdoesitwork" => "How does it work?",
9 | "press" => "Press materials",
10 | "termsofuse" => "Terms of use",
11 | "privacypolicy" => "Privacy policy",
12 | "administration" => "Administration",
13 | "poweredby" => "Powered by"
14 | ];
--------------------------------------------------------------------------------
/resources/lang/en/generic.php:
--------------------------------------------------------------------------------
1 | "Project",
11 | "homepage" => "Homepage",
12 | "pages" => "Pages",
13 | "how_does_it_work" => "How does it work?",
14 | "press_materials" => "Press materials",
15 | "terms_of_use" => "Terms of use",
16 | "privacy_policy" => "Privacy policy",
17 | "donate" => "Donate",
18 | "payment_status" => "Payment status",
19 | "donation_thanks" => "Thank you for your donation",
20 | "donation_detail" => "Your donation",
21 | "posted_on" => "Posted on",
22 | "read_more" => "Read more",
23 | "no_updates" => "The project's makers have not posted any updates yet!",
24 | "no_tiers" => "This project does not have any reward tiers.",
25 | "no_story" => "The project's makers have not posted a story yet!",
26 | "previous" => "Previous projects",
27 | "reached" => "reached",
28 | "donors" => "donors",
29 | "raised" => "total raised",
30 | "vat" => "VAT number",
31 | "address" => "Address",
32 | "contact" => "Contact",
33 | "or_more" => "or more"
34 | ];
--------------------------------------------------------------------------------
/resources/lang/en/home.php:
--------------------------------------------------------------------------------
1 | "Project by",
5 | "ends_at" => "Ends on",
6 | "ended_at" => "Ended on",
7 | "donations" => "donations",
8 | "funded" => "funded",
9 | "support" => "Support this project",
10 | "timeleft" => "There is :left the project ends.",
11 | "aboutproject" => "About this project",
12 | "tier" => [
13 | "pledge" => ":currency:pledgeAmount"
14 | ],
15 | "rewards" => "Rewards",
16 | "of" => "of",
17 | "daysleft" => "days left",
18 | "hoursleft" => "hours left",
19 | "minutesleft" => "minutes left",
20 | "over" => "This campaign has ended.",
21 | "story" => "Our story",
22 | "updates" => "Updates",
23 | "howdoesitwork" => "How does it work?",
24 | "previousprojects" => "Previous projects",
25 | "complete" => "complete",
26 | "share" => "Share",
27 | "donors" => "donors",
28 | "more_required" => "more required",
29 | "what_we_need" => "What we need",
30 | "reached" => "reached",
31 | "completed" => "completed"
32 | ];
--------------------------------------------------------------------------------
/resources/lang/en/pages.php:
--------------------------------------------------------------------------------
1 | [
5 | "content" => "
Content here Content here
"
6 | ]
7 | ];
--------------------------------------------------------------------------------
/resources/lang/en/pagination.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 | 'next' => 'Next »',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/resources/lang/en/passwords.php:
--------------------------------------------------------------------------------
1 | 'Passwords must be at least six characters and match the confirmation.',
17 | 'reset' => 'Your password has been reset!',
18 | 'sent' => 'We have e-mailed your password reset link!',
19 | 'token' => 'This password reset token is invalid.',
20 | 'user' => "We can't find a user with that e-mail address.",
21 |
22 | ];
23 |
--------------------------------------------------------------------------------
/resources/lang/nl/backoffice.php:
--------------------------------------------------------------------------------
1 | "Mensen",
5 | "material" => "Materiaal",
6 | "coaching" => "Coaching",
7 | "currency" => "Geld",
8 | ];
9 |
--------------------------------------------------------------------------------
/resources/lang/nl/footer.php:
--------------------------------------------------------------------------------
1 | "Over",
5 | "projects" => "Projecten",
6 | "previous_projects" => "Vorige projecten",
7 | "homepage" => "Homepagina",
8 | "howdoesitwork" => "Hoe werkt het?",
9 | "press" => "Voor de pers",
10 | "termsofuse" => "Gebruikersovereenkomst",
11 | "privacypolicy" => "Privacybeleid",
12 | "administration" => "Administratie",
13 | "poweredby" => "Mogelijk gemaakt door"
14 | ];
--------------------------------------------------------------------------------
/resources/lang/nl/generic.php:
--------------------------------------------------------------------------------
1 | "Project",
11 | "homepage" => "Homepage",
12 | "pages" => "Pagina's",
13 | "how_does_it_work" => "Hoe werkt het?",
14 | "press_materials" => "Voor de pers",
15 | "terms_of_use" => "Gebruikersovereenkomst",
16 | "privacy_policy" => "Privacybeleid",
17 | "donate" => "Doneer",
18 | "payment_status" => "Betaalstatus",
19 | "donation_thanks" => "Bedankt voor uw donatie",
20 | "donation_detail" => "Uw donatie",
21 | "posted_on" => "Gepost op",
22 | "read_more" => "Lees meer",
23 | "no_updates" => "De makers van dit project hebben nog geen updates gepost!",
24 | "no_tiers" => "Dit project heeft nog geen rewards.",
25 | "no_story" => "De makers van dit project hebben nog geen verhaal gepost.",
26 | "previous" => "Vorige projecten",
27 | "reached" => "bereikt",
28 | "donors" => "donoren",
29 | "raised" => "totaal ingezameld",
30 | "vat" => "BTW-nummer",
31 | "address" => "Adres",
32 | "contact" => "Contact",
33 | "or_more" => "of meer"
34 | ];
--------------------------------------------------------------------------------
/resources/lang/nl/home.php:
--------------------------------------------------------------------------------
1 | "Project door",
5 | "ends_at" => "Eindigt op",
6 | "ended_at" => "Eindigde op",
7 | "donations" => "donaties",
8 | "funded" => "funded",
9 | "support" => "Steun dit project",
10 | "timeleft" => "Er zijn :left voor het fundraisen stopt.",
11 | "aboutproject" => "Over dit project",
12 | "tier" => [
13 | "pledge" => ":currency:pledgeAmount"
14 | ],
15 | "rewards" => "Rewards",
16 | "of" => "van",
17 | "daysleft" => "dagen over",
18 | "hoursleft" => "uren over",
19 | "minutesleft" => "minuten over",
20 | "over" => "Deze campagne is voorbij.",
21 | "story" => "Ons verhaal",
22 | "updates" => "Updates",
23 | "howdoesitwork" => "Hoe werkt het?",
24 | "previousprojects" => "Vorige projecten",
25 | "complete" => "klaar",
26 | "share" => "Delen",
27 | "donors" => "donoren",
28 | "more_required" => "meer nodig",
29 | "what_we_need" => "Wat we nodig hebben",
30 | "reached" => "bereikt",
31 | "completed" => "compleet"
32 | ];
--------------------------------------------------------------------------------
/resources/lang/nl/mails.php:
--------------------------------------------------------------------------------
1 | [
9 | "subject" => "Bevestig uw donatie",
10 | "teaser" => "Uw donatie werd geregistreerd, maar is nog niet bevestigd.",
11 | "content" => [
12 | "header" => "Gelieve uw donatie te bevestigen",
13 | "intro" => "Hello, :name.
We hebben succesvol uw donatieregistratie voor :project ontvangen.
Als een onderdeel van het systeem verwachten wij dat donors hun donaties bevestigen voordat deze erbij geteld worden.
U heeft het volgende beloofd:
",
14 | "confirm" => "Om uw donatie te bevestigen, kan u op de link hieronder klikken:",
15 | "confirm_action" => "Bevestig deze donatie"
16 | ],
17 | ],
18 |
19 | "donation_success" => [
20 | "subject" => "Donatie bevestigd",
21 | "teaser" => "Uw donatie is bevestigd.",
22 | "content" => [
23 | "header" => "Bedankt!",
24 | "intro" => "Hello, :name.
We hebben successvol uw donatiebevestiging voor :project ontvangen.
",
25 | "confirm" => "Om uw beloofde items te raadplegen (samen met uw rewards) klikt u op de link hieronder:",
26 | "confirm_action" => "Bekijk mijn donatie"
27 | ],
28 | ],
29 |
30 | "donation_money_success" => [
31 | "subject" => "Betaald voor donatie!",
32 | "teaser" => "Uw betaling is afgerond.",
33 | "content" => [
34 | "header" => "Hartelijk bedankt voor uw donatie!",
35 | "intro" => "Hello, :name.
We hebben uw donatie-betaling succesvol ontvangen. Dit gaat over €:amount voor :project .
",
36 | "additional_pledge" => "Hierbij heeft u ook het volgende beloofd:",
37 | "additional_pledge_disclaimer" => "Uw betaling werd reeds bevestigd: de maker van dit project neemt mogelijk contact met u op over de bovenstaande items.",
38 | "confirm" => "Om uw beloofde items te raadplegen (samen met uw rewards) klikt u op de link hieronder:",
39 | "confirm_action" => "Bekijk mijn donatie"
40 | ],
41 | ],
42 | ];
43 |
--------------------------------------------------------------------------------
/resources/lang/nl/setup.php:
--------------------------------------------------------------------------------
1 | [
7 | 'back' => 'Vorige',
8 | 'next' => 'Volgende',
9 | 'finish' => 'Afronden',
10 | 'change' => 'Wijzigen',
11 | 'oops' => 'Oeps!',
12 | ],
13 |
14 | ];
15 |
--------------------------------------------------------------------------------
/resources/views/backoffice/assets.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.dashboard'))
4 |
5 | @section('content')
6 | {{ trans('backoffice.assets') }}
7 |
8 |
9 |
10 | Image
11 | Actions
12 |
13 |
14 |
15 | @foreach ($images as $image)
16 |
17 |
18 | Delete
19 |
20 | @endforeach
21 |
22 |
23 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/goals/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.goals'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
10 |
11 | {{ trans('backoffice.goals') }}
12 |
13 |
{{ trans('backoffice.goals') }}
14 |
{{ trans('backoffice.page.goals.about') }}
15 |
16 |
17 |
18 | {{ trans("backoffice.currency") }}
19 | [Amount: €{{ round($currency) }}]
20 |
21 | @foreach ($donationKinds as $kind)
22 | @if ($kind != "currency")
23 |
24 | {{ trans("backoffice." . $kind) }}
25 | @if (isset($donationTypes[$kind]))
26 | [{{ count($donationTypes[$kind]) }}
27 | {{ Lang::choice('backoffice.subcategories', count($donationTypes[$kind])) }}]
28 | @else
29 | [0 {{ Lang::choice('backoffice.subcategories', 0) }}]
30 | @endif
31 |
32 | @endif
33 | @endforeach
34 |
35 |
36 |
{{ trans('backoffice.manage_weights') }}
37 |
38 |
39 |
40 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/goals/kind.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.goals'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
10 |
11 | {{ trans('backoffice.goals') }}
12 | {{ trans('backoffice.' . $kind) }}
13 |
14 |
15 |
{{ trans('backoffice.' . $kind) }}
16 |
{{ trans('backoffice.page.goal_kind.about') }}
17 |
18 |
{{ trans('backoffice.create') }}
19 |
20 | @if(Session::has('info'))
21 |
22 | {{ Session::get('info') }}
23 |
24 | @endif
25 |
26 | @foreach ($donationTypes as $type)
27 |
28 |
29 |
30 | {{ $type->name }}
31 |
32 |
Edit
33 |
34 |
35 |
{{ trans('backoffice.page.goals.desc') }}
36 |
{{ $type->description }}
37 |
{{ trans('backoffice.page.goals.unit_desc') }}
38 |
{{ $type->unit_description }}
39 |
{{ trans('backoffice.page.goals.required_amount') }}
40 |
{{ $type->required_amount }}x
41 |
42 |
43 | @endforeach
44 |
45 |
46 |
47 |
48 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/goals/weights.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.goals'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
10 |
11 | {{ trans('backoffice.goals') }}
12 | {{ trans('backoffice.weight') }}
13 |
14 |
{{ trans('backoffice.goals_weight') }}
15 |
{{ trans('backoffice.page.goals_weight.about') }}
16 |
17 |
18 | @if($errors->any())
19 |
20 | {{ trans('setup.generic.oops') }}
21 | {{$errors->first()}}
22 |
23 | @endif
24 |
25 |
52 |
53 |
54 |
55 |
56 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/login.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', 'Log In')
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
10 |
11 |
12 |
34 | @if($errors->has())
35 |
36 |
37 | @foreach ($errors->all() as $error)
38 |
{{ $error }}
39 | @endforeach
40 |
41 | @endif
42 |
43 |
44 |
45 |
46 | @endsection
47 |
48 |
--------------------------------------------------------------------------------
/resources/views/backoffice/posts/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.posts'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
{{ trans('backoffice.posts') }}
10 |
11 | {{ trans('backoffice.page.posts.about') }}
12 |
13 |
14 | @if(count($posts) == 0)
15 |
16 | {{ trans('backoffice.warnings.no_posts') }}
17 |
18 | @endif
19 | @if(Session::has('info'))
20 |
21 | {{ Session::get('info') }}
22 |
23 | @endif
24 | @if($errors->any())
25 |
26 | {{ trans('setup.generic.oops') }}
27 | {{$errors->first()}}
28 |
29 | @endif
30 |
31 |
{{ trans('backoffice.create_post') }}
32 |
33 | @foreach ($posts as $post)
34 |
35 |
36 |
37 | {{ trans('backoffice.edit') }}
38 |
39 |
{{ $post->title }}
40 |
41 | {!! Markdown::convertToHtml($post->content) !!}
42 |
43 |
44 |
45 | @endforeach
46 |
47 |
48 |
49 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/previous/import.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.tiers'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
{{ trans('backoffice.import.title') }}
10 |
{{ trans('backoffice.import.about') }}
11 |
12 |
13 | @if(Session::has('info'))
14 |
15 | {{ Session::get('info') }}
16 |
17 | @endif
18 |
19 | @if($errors->any())
20 |
21 | {{ trans('setup.generic.oops') }}
22 | {{$errors->first()}}
23 |
24 | @endif
25 |
26 |
53 |
54 |
55 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/previous/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.posts'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
{{ trans('backoffice.previous_projects') }}
10 |
11 | {{ trans('backoffice.page.previous_projects.about') }}
12 |
13 |
14 | @if(count($archived) == 0)
15 |
16 | {{ trans('backoffice.warnings.no_archived') }}
17 |
18 | @endif
19 | @if(Session::has('info'))
20 |
21 | {{ Session::get('info') }}
22 |
23 | @endif
24 | @if($errors->any())
25 |
26 | {{ trans('setup.generic.oops') }}
27 | {{$errors->first()}}
28 |
29 | @endif
30 |
31 |
{{ trans('backoffice.import_previous_project') }}
32 |
33 | @foreach ($archived as $archived)
34 |
35 |
36 |
37 | {{ trans('backoffice.delete') }}
38 |
39 |
{{ $archived->title }}
40 |
41 | {{ $archived->description }}
42 |
43 |
Completed: @if ($archived->success) YES @else NO @endif
44 |
45 |
46 | @endforeach
47 |
48 |
49 |
50 | @endsection
--------------------------------------------------------------------------------
/resources/views/backoffice/tiers/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.backoffice')
2 |
3 | @section('title', trans('backoffice.tiers'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
{{ trans('backoffice.tiers') }}
10 |
11 | {{ trans('backoffice.page.tiers.about') }}
12 |
13 |
14 | @if(count($tiers) == 0)
15 |
16 | {{ trans('backoffice.warnings.no_tiers') }}
17 |
18 | @endif
19 | @if(Session::has('info'))
20 |
21 | {{ Session::get('info') }}
22 |
23 | @endif
24 | @if($errors->any())
25 |
26 | {{ trans('setup.generic.oops') }}
27 | {{$errors->first()}}
28 |
29 | @endif
30 |
31 |
{{ trans('backoffice.create_tier') }}
32 |
33 | @foreach ($tiers as $tier)
34 |
35 |
36 |
37 | {{ trans('backoffice.edit') }}
38 |
39 |
40 |
41 | {{ trans('home.tier.pledge', [
42 | "currency" => "€",
43 | "pledgeAmount" => $tier->pledge
44 | ]) }}
45 |
46 |
47 |
48 | {!! nl2br(htmlspecialchars($tier->description)) !!}
49 |
50 |
51 |
52 | @endforeach
53 |
54 |
55 |
56 | @endsection
--------------------------------------------------------------------------------
/resources/views/design.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', trans('generic.homepage'))
4 |
5 | @section('content')
6 |
7 |
8 |
9 |
10 |
Reusable components
11 |
btn4
12 |
13 |
14 | .btn4
15 |
16 |
17 |
18 | Button text
19 |
20 |
21 |
22 |
23 |
24 |
25 | @endsection
--------------------------------------------------------------------------------
/resources/views/errors/503.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Be right back.
5 |
6 |
7 |
8 |
39 |
40 |
41 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/resources/views/front/donation/payment_status.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', trans('generic.payment_status'))
4 |
5 | @section('content')
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
{{ trans('donation.payment_status_page.title') }}
17 | {!! trans('donation.payment_status_page.description', ['status' => trans('donation.payment_status.' . $paymentStatus)]) !!}
18 |
19 |
20 |
21 |
22 | @endsection
--------------------------------------------------------------------------------
/resources/views/front/donation/thanks.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', trans('generic.donation_thanks'))
4 |
5 | @section('content')
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
{{ trans('donation.thanks.title') }}
17 |
18 | {!! trans('donation.thanks.description') !!}
19 |
20 |
21 |
22 |
23 | @endsection
--------------------------------------------------------------------------------
/resources/views/front/pages/detail.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @if ($page->default)
4 | title = trans('generic.' . $page->title) ?>
5 | @endif
6 |
7 | @section('title', $page->title)
8 |
9 | @section('meta')
10 | @include('partials.meta.page')
11 | @endsection
12 |
13 | @section('content')
14 |
15 |
16 |
17 |
18 | {{ $page->title }}
19 |
20 |
21 |
22 |
23 |
24 |
25 | {!! Markdown::convertToHtml($page->content) !!}
26 |
27 |
28 |
29 |
30 |
31 | @endsection
--------------------------------------------------------------------------------
/resources/views/front/pages/previous.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', trans('generic.previous'))
4 |
5 | @section('meta')
6 | @include('partials.meta.default')
7 | @endsection
8 |
9 | @section('html', 'class="gray"')
10 |
11 | @section('content')
12 |
13 |
14 | @foreach ($previous as $project)
15 |
16 |
17 | {{--
18 | PREVIOUS PROJECTS
19 | First, we find out what version of the previous project was deployed on.
20 | This version is used to render the box with relevant information. If a newer
21 | or unknown version is used, the project will not be displayed here.
22 | --}}
23 | meta)->version;
25 | $available_partials = scandir(base_path() . '/resources/views/partials/previous/');
26 | ?>
27 | @if (in_array($version . ".blade.php", $available_partials))
28 | @include('partials.previous.' . $version)
29 | @endif
30 |
31 |
32 |
33 | @endforeach
34 |
35 | @endsection
36 |
--------------------------------------------------------------------------------
/resources/views/front/posts/detail.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', $post->title)
4 |
5 | @section('meta')
6 | @include('partials.meta.post')
7 | @endsection
8 |
9 | @section('content')
10 |
11 |
12 |
13 |
14 | {{ $post->title }}
15 |
16 |
17 |
18 |
19 |
20 |
21 | {{ trans('generic.posted_on') }} {{ $post->created_at->format("d/m/Y") }}
22 |
23 |
24 | {!! Markdown::convertToHtml($post->content) !!}
25 |
26 |
27 |
28 |
29 |
30 | @endsection
--------------------------------------------------------------------------------
/resources/views/front/posts/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.core')
2 |
3 | @section('title', trans('generic.homepage'))
4 |
5 | @section('content')
6 |
7 | @endsection
--------------------------------------------------------------------------------
/resources/views/layouts/setup.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | @yield('title')
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | @include('setup.progress')
17 |
18 |
19 |
20 |
21 | @yield('content')
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/resources/views/layouts/setup_simple.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | @yield('title')
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | @yield('content')
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/resources/views/mails/donation_confirm.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.mails.default')
2 |
3 | @section('subject')
4 | {{ trans('mails.donation_confirm.subject') }} | {{ $projectTitle }}
5 | @endsection
6 |
7 | @section('teaser')
8 | {{ trans('mails.donation_confirm.teaser') }}
9 | @endsection
10 |
11 | @section('content')
12 | {{ trans('mails.donation_confirm.content.header') }}
13 | {!! trans('mails.donation_confirm.content.intro', ['name' => $name, 'project' => $projectTitle]) !!}
14 |
15 | @foreach ($types as $type)
16 | @if (is_array($type))
17 | {{ trans('backoffice.' . $type['kind']) }}
18 | {{ $type['amount'] }}x {{ $type['name'] }}
19 | @endif
20 | @endforeach
21 | @if (isset($types['currency']))
22 | {{ trans('backoffice.currency') }}
23 | {{ trans('donation.money_pledge') }} €{{ $types['currency'] }}
24 | @endif
25 |
26 | {{ trans('mails.donation_confirm.content.confirm') }}
27 | {{ trans('mails.donation_confirm.content.confirm_action') }}
28 | @endsection
--------------------------------------------------------------------------------
/resources/views/mails/donation_money_success.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.mails.default')
2 |
3 | @section('subject')
4 | {{ trans('mails.donation_money_success.subject') }} | {{ $projectTitle }}
5 | @endsection
6 |
7 | @section('teaser')
8 | {{ trans('mails.donation_money_success.teaser') }}
9 | @endsection
10 |
11 | @section('content')
12 | {{ trans('mails.donation_money_success.content.header') }}
13 | {!! trans('mails.donation_money_success.content.intro', ['name' => $name, 'project' => $projectTitle, 'amount' => $amount]) !!}
14 | @if (count($donationContents) > 0)
15 | {{ trans('mails.donation_money_success.content.additional_pledge') }}
16 |
17 | @foreach ($donationContents as $kind => $kindContent)
18 | {{ trans('backoffice.' . $kind) }}
19 | @foreach ($kindContent as $item)
20 | {{ $item["count"] }}x {{ $item["name"] }}
21 | @endforeach
22 | @endforeach
23 |
24 | {{ trans('mails.donation_money_success.content.additional_pledge_disclaimer') }}
25 | @endif
26 | {{ trans('mails.donation_money_success.content.confirm') }}
27 | {{ trans('mails.donation_money_success.content.confirm_action') }}
28 | @endsection
--------------------------------------------------------------------------------
/resources/views/mails/donation_success.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.mails.default')
2 |
3 | @section('subject')
4 | {{ trans('mails.donation_confirm.subject') }} | {{ $projectTitle }}
5 | @endsection
6 |
7 | @section('teaser')
8 | {{ trans('mails.donation_confirm.teaser') }}
9 | @endsection
10 |
11 | @section('content')
12 | {{ trans('mails.donation_success.content.header') }}
13 | {!! trans('mails.donation_success.content.intro', ['name' => $name, 'project' => $projectTitle]) !!}
14 | {{ trans('mails.donation_success.content.confirm') }}
15 | {{ trans('mails.donation_success.content.confirm_action') }}
16 | @endsection
--------------------------------------------------------------------------------
/resources/views/mails/notification/donation_confirmed.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.mails.default')
2 |
3 | @section('subject')
4 | {{ trans('mails.notification_donation_confirmed.subject') }} | {{ $projectTitle }}
5 | @endsection
6 |
7 | @section('teaser')
8 | {{ trans('mails.notification_donation_confirmed.teaser') }}
9 | @endsection
10 |
11 | @section('content')
12 | {{ trans('mails.notification_donation_confirmed.content.header') }}
13 | {!! trans('mails.notification_donation_confirmed.content.intro', ['project' => $projectTitle]) !!}
14 |
15 | @if ($amount > 0)
16 | {{ trans('backoffice.currency') }}
17 | {{ trans('donation.money_pledge') }} €{{ $amount }}
18 | @endif
19 | @if (count($donationContents) > 0)
20 | @foreach ($donationContents as $kind => $kindContent)
21 | {{ trans('backoffice.' . $kind) }}
22 | @foreach ($kindContent as $item)
23 | {{ $item["count"] }}x {{ $item["name"] }}
24 | @endforeach
25 | @endforeach
26 | @endif
27 |
28 | @if ($userMessage != null && $userMessage != "")
29 | {{ trans('mails.notification_donation_confirmed.content.message', ['name' => $name]) }}:
30 | {!! nl2br(htmlspecialchars($userMessage)) !!}
31 | @endif
32 | {{ trans('mails.notification_donation_confirmed.content.closing', ['name' => $name]) }}: {{ $email }} .
33 | @endsection
--------------------------------------------------------------------------------
/resources/views/mails/test.blade.php:
--------------------------------------------------------------------------------
1 | You have correctly set up the mail server for your W4P installation.
--------------------------------------------------------------------------------
/resources/views/partials/ga.blade.php:
--------------------------------------------------------------------------------
1 | @if (property_exists($settings, 'analytics_id') &&
2 | !empty($settings->analytics_id))
3 |
12 | @endif
--------------------------------------------------------------------------------
/resources/views/partials/meta/page.blade.php:
--------------------------------------------------------------------------------
1 | {{-- Facebook OpenGraph --}}
2 |
3 |
4 |
5 | {{-- Dublin Core --}}
6 |
7 |
8 |
9 | {{-- Twitter cards --}}
10 | @if ($settings->social->twitter_handle != null)
11 |
12 |
13 |
14 | @if ($settings->social->seo_image)
15 |
16 | @else
17 |
18 | @endif
19 | @endif
--------------------------------------------------------------------------------
/resources/views/partials/meta/post.blade.php:
--------------------------------------------------------------------------------
1 |
2 | {{-- Facebook OpenGraph --}}
3 |
4 |
5 |
6 | @if ($settings->social->seo_image)
7 |
8 | @else
9 |
10 | @endif
11 |
12 | {{-- Dublin Core --}}
13 |
14 |
15 |
16 | {{-- Twitter cards --}}
17 | @if ($settings->social->twitter_handle != null)
18 |
19 |
20 |
21 |
22 | @if ($settings->social->seo_image)
23 |
24 | @else
25 |
26 | @endif
27 | @endif
--------------------------------------------------------------------------------
/resources/views/setup/prerequisite_failures.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.setup_simple')
2 | @section('title', trans('setup.steps.admin') . " | " . trans('setup.generic.wizard'))
3 | @section('content')
4 |
5 |
6 |
{{ trans('setup.preq.prerequisite_page_title') }}
7 |
{{ trans('setup.preq.prerequisite_page_description') }}
8 |
9 |
10 |
11 |
12 | {{ trans('setup.preq.prerequisite') }}
13 | {{ trans('setup.preq.status') }}
14 |
15 |
16 |
17 | @foreach ($preqs as $preq)
18 | fails) class="danger" @else class="success" @endif>
19 | {{ $preq->title }}
20 |
21 | {!! $preq->description !!}
22 |
23 |
24 | @endforeach
25 |
26 |
27 |
28 |
29 | @endsection
--------------------------------------------------------------------------------
/resources/views/setup/progress.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ trans('setup.steps.welcome') }}
4 | {{ trans('setup.steps.admin') }}
5 | {{ trans('setup.steps.platform') }}
6 | {{ trans('setup.steps.organisation') }}
7 | {{ trans('setup.steps.project') }}
8 | {{ trans('setup.steps.mail') }}
9 | {{ trans('setup.steps.finish') }}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/resources/views/setup/step6.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.setup')
2 |
3 | @section('title', trans('setup.steps.finish') . " | " . trans('setup.generic.wizard'))
4 |
5 | @section('content')
6 |
7 |
8 |
{{ trans('setup.detail.finish.title') }}
9 |
10 |
{{ trans('setup.detail.finish.paragraph') }}
11 |
23 |
24 |
25 | @endsection
--------------------------------------------------------------------------------
/resources/views/setup/welcome.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.setup')
2 |
3 | @section('title', trans('setup.steps.welcome') . " | " . trans('setup.generic.wizard'))
4 |
5 | @section('content')
6 |
13 | @endsection
--------------------------------------------------------------------------------
/resources/views/vendor/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/resources/views/vendor/.gitkeep
--------------------------------------------------------------------------------
/server.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | $uri = urldecode(
11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
12 | );
13 |
14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the
15 | // built-in PHP web server. This provides a convenient way to test a Laravel
16 | // application without having installed a "real" web server software here.
17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
18 | return false;
19 | }
20 |
21 | require_once __DIR__.'/public/index.php';
22 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
--------------------------------------------------------------------------------
/storage/debugbar/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
--------------------------------------------------------------------------------
/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | config.php
2 | routes.php
3 | compiled.php
4 | services.json
5 | events.scanned.php
6 | routes.scanned.php
7 | down
8 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/tests/Setup/Controllers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/tests/Setup/Controllers/.gitkeep
--------------------------------------------------------------------------------
/tests/Setup/Controllers/SetupStepsAdministrationTest.php:
--------------------------------------------------------------------------------
1 | visit('/setup')
16 | ->see('Welcome');
17 | }
18 |
19 | public function testAdministrationStep()
20 | {
21 | $this->visit('/setup/1')
22 | ->see('Password')
23 | ->see('Confirm password');
24 |
25 | // Check if the pwd setting exists
26 | $this->assertFalse(Setting::exists('pwd'));
27 | }
28 |
29 | public function testPasswordSubmitNotLongEnough() {
30 | $this->visit('/setup/1')
31 | ->see('Password')
32 | ->see('Confirm password');
33 |
34 | // Start a new session
35 | $this->startSession();
36 |
37 | // POST a new password (not long enough)
38 | $crawler = $this->call('POST', '/setup/1', [
39 | "password" => "root",
40 | "passwordConfirm" => "root"
41 | ]);
42 |
43 | // Check we are being redirected back
44 | $this->assertRedirectedToRoute('setup::step', 1);
45 | $this->followRedirects();
46 | $this->see('must be 6 characters or longer');
47 |
48 | // Check if the pwd setting exists
49 | $this->assertFalse(Setting::exists('pwd'));
50 | }
51 |
52 | public function testPasswordSubmit() {
53 | // POST a new password
54 | $crawler = $this->call('POST', '/setup/1', [
55 | "password" => "rootroot",
56 | "passwordConfirm" => "rootroot"
57 | ]);
58 |
59 | // Check if we are redirected to the next step
60 | $this->assertRedirectedToRoute('setup::step', 2);
61 |
62 | // Check if the pwd setting exists
63 | $this->assertTrue(Setting::exists('pwd'));
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/tests/Setup/Controllers/SetupStepsEmailTest.php:
--------------------------------------------------------------------------------
1 | visit('/setup/5')
16 | ->see('Email Setup');
17 | $this->assertFalse(Setting::exists('email.host'));
18 | $this->assertFalse(Setting::exists('email.port'));
19 | $this->assertFalse(Setting::exists('email.username'));
20 | $this->assertFalse(Setting::exists('email.password'));
21 | $this->assertFalse(Setting::exists('email.encryption'));
22 | $this->assertFalse(Setting::exists('email.from'));
23 | $this->assertFalse(Setting::exists('email.name'));
24 | $this->assertFalse(Setting::exists('email.valid'));
25 | }
26 |
27 | // TODO: Unit test form submission
28 | }
--------------------------------------------------------------------------------
/tests/Setup/Controllers/SetupStepsPlatformTest.php:
--------------------------------------------------------------------------------
1 | visit('/setup/2')
16 | ->see('Platform Setup');
17 | $this->assertFalse(Setting::exists('platform.owner'));
18 | $this->assertFalse(Setting::exists('platform.analytics-id'));
19 | $this->assertFalse(Setting::exists('platform.mollie-key'));
20 | }
21 |
22 | // TODO: Unit test form submission
23 | }
--------------------------------------------------------------------------------
/tests/Setup/Controllers/SetupStepsProjectTest.php:
--------------------------------------------------------------------------------
1 | visit('/setup/4')
16 | ->see('Project Setup');
17 | $this->assertFalse(Setting::exists('project.title'));
18 | $this->assertFalse(Setting::exists('project.brief'));
19 | }
20 |
21 | // TODO: Unit test form submission
22 | }
--------------------------------------------------------------------------------
/tests/Setup/Middleware/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/tests/Setup/Middleware/.gitkeep
--------------------------------------------------------------------------------
/tests/Setup/Middleware/EnvironmentReadyTest.php:
--------------------------------------------------------------------------------
1 | startSession();
15 | // Environment is not ready, but request homepage
16 | $crawler = $this->call('GET', '/');
17 | // Assert we're being redirected
18 | // TODO: If all the setup steps are completed, this should redirect elsewhere (pwd is the only tested setting so far)
19 | $this->assertRedirectedToRoute('setup::step', 2);
20 | // Follow the redirects
21 | $this->followRedirects();
22 | // Assert that the response is OK
23 | $this->assertResponseOk();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tests/W4P/Controllers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/tests/W4P/Controllers/.gitkeep
--------------------------------------------------------------------------------
/tests/W4P/Mails/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/tests/W4P/Mails/.gitkeep
--------------------------------------------------------------------------------
/tests/W4P/Mails/MailTest.php:
--------------------------------------------------------------------------------
1 | markTestSkipped("MailCatcher is not running. Test skipped.");
19 | } else {
20 | Mail::queue('mails.test', [], function($message) {
21 | $message->to("test@dev.test", "test")
22 | ->subject('Test message');
23 | });
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/W4P/Middleware/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openknowledgebe/W4P/c8cbf69178a301f7b478bce0cf984243642d46a7/tests/W4P/Middleware/.gitkeep
--------------------------------------------------------------------------------
/tests/W4P/Middleware/SetupInaccessibleTest.php:
--------------------------------------------------------------------------------
1 | startSession();
15 | // Environment is not ready, but request homepage
16 | $crawler = $this->call('GET', '/setup');
17 | // Assert we're being redirected
18 | $this->assertRedirectedToRoute('home');
19 | // Follow the redirects
20 | $this->followRedirects();
21 | // Assert that the response is OK
22 | $this->assertResponseOk();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------