Showing preview only (4,742K chars total). Download the full file or copy to clipboard to get everything.
Repository: msalom28/Larasocial
Branch: master
Commit: e83931f20a86
Files: 660
Total size: 4.4 MB
Directory structure:
gitextract_dls4m2sb/
├── .gitattributes
├── .gitignore
├── .sass-cache/
│ ├── 80cd008003879d44acec920c547dff0670c3505e/
│ │ └── main.scssc
│ ├── c8522c10524b43c482a341522b10062e5b9ade65/
│ │ └── main.scssc
│ └── d9b885ff6b56267e4f2b8573fca9e47b444b1d39/
│ └── main.scssc
├── app/
│ ├── Commands/
│ │ ├── Command.php
│ │ ├── CreateFeedCommand.php
│ │ ├── CreateFriendRequestCommand.php
│ │ ├── CreateMessageCommand.php
│ │ ├── CreateMessageResponseCommand.php
│ │ ├── LoginUserCommand.php
│ │ ├── LogoutUserCommand.php
│ │ ├── RegisterUserCommand.php
│ │ ├── RemoveFriendCommand.php
│ │ ├── SendChatMessageCommand.php
│ │ └── UpdateChatStatusCommand.php
│ ├── Console/
│ │ ├── Commands/
│ │ │ └── Inspire.php
│ │ └── Kernel.php
│ ├── Events/
│ │ ├── Event.php
│ │ ├── FriendRequestWasSent.php
│ │ └── UserWasRegistered.php
│ ├── Exceptions/
│ │ └── Handler.php
│ ├── Feed.php
│ ├── FriendRequest.php
│ ├── Handlers/
│ │ ├── Commands/
│ │ │ └── .gitkeep
│ │ └── Events/
│ │ ├── .gitkeep
│ │ ├── EmailFriendRequest.php
│ │ └── EmailRegistrationConfirmation.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── ChatController.php
│ │ │ ├── ChatStatusController.php
│ │ │ ├── Controller.php
│ │ │ ├── FeedController.php
│ │ │ ├── FriendController.php
│ │ │ ├── FriendRequestController.php
│ │ │ ├── MessageController.php
│ │ │ ├── MessageResponseController.php
│ │ │ ├── RegistrationController.php
│ │ │ ├── SessionController.php
│ │ │ └── UserController.php
│ │ ├── Kernel.php
│ │ ├── Middleware/
│ │ │ ├── Authenticate.php
│ │ │ ├── CustomVerifyCsrfToken.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ └── VerifyCsrfToken.php
│ │ ├── Requests/
│ │ │ ├── CreateMessageRequest.php
│ │ │ ├── CreateMessageResponseRequest.php
│ │ │ ├── CreateSessionRequest.php
│ │ │ ├── RegisterUserRequest.php
│ │ │ └── Request.php
│ │ └── routes.php
│ ├── Mailers/
│ │ ├── Mailer.php
│ │ └── UserMailer.php
│ ├── Message.php
│ ├── MessageResponse.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── BusServiceProvider.php
│ │ ├── ConfigServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php
│ ├── Realtime/
│ │ ├── Chat.php
│ │ ├── Events.php
│ │ └── Realtime.php
│ ├── Repositories/
│ │ ├── Feed/
│ │ │ ├── EloquentFeedRepository.php
│ │ │ └── FeedRepository.php
│ │ ├── FriendRequest/
│ │ │ ├── EloquentFriendRequestRepository.php
│ │ │ └── FriendRequestRepository.php
│ │ ├── Message/
│ │ │ ├── EloquentMessageRepository.php
│ │ │ └── MessageRepository.php
│ │ └── User/
│ │ ├── CachingUserRepository.php
│ │ ├── EloquentUserRepository.php
│ │ └── UserRepository.php
│ ├── Services/
│ │ └── ProcessImage.php
│ └── User.php
├── artisan
├── bootstrap/
│ ├── app.php
│ └── autoload.php
├── bower_components/
│ ├── bootstrap/
│ │ ├── .bower.json
│ │ ├── Gruntfile.js
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bower.json
│ │ ├── dist/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ ├── bootstrap.js
│ │ │ └── npm.js
│ │ ├── grunt/
│ │ │ ├── .jshintrc
│ │ │ ├── bs-commonjs-generator.js
│ │ │ ├── bs-glyphicons-data-generator.js
│ │ │ ├── bs-lessdoc-parser.js
│ │ │ ├── bs-raw-files-generator.js
│ │ │ ├── configBridge.json
│ │ │ └── sauce_browsers.yml
│ │ ├── js/
│ │ │ ├── .jscsrc
│ │ │ ├── .jshintrc
│ │ │ ├── affix.js
│ │ │ ├── alert.js
│ │ │ ├── button.js
│ │ │ ├── carousel.js
│ │ │ ├── collapse.js
│ │ │ ├── dropdown.js
│ │ │ ├── modal.js
│ │ │ ├── popover.js
│ │ │ ├── scrollspy.js
│ │ │ ├── tab.js
│ │ │ ├── tooltip.js
│ │ │ └── transition.js
│ │ ├── less/
│ │ │ ├── .csscomb.json
│ │ │ ├── .csslintrc
│ │ │ ├── alerts.less
│ │ │ ├── badges.less
│ │ │ ├── bootstrap.less
│ │ │ ├── breadcrumbs.less
│ │ │ ├── button-groups.less
│ │ │ ├── buttons.less
│ │ │ ├── carousel.less
│ │ │ ├── close.less
│ │ │ ├── code.less
│ │ │ ├── component-animations.less
│ │ │ ├── dropdowns.less
│ │ │ ├── forms.less
│ │ │ ├── glyphicons.less
│ │ │ ├── grid.less
│ │ │ ├── input-groups.less
│ │ │ ├── jumbotron.less
│ │ │ ├── labels.less
│ │ │ ├── list-group.less
│ │ │ ├── media.less
│ │ │ ├── mixins/
│ │ │ │ ├── alerts.less
│ │ │ │ ├── background-variant.less
│ │ │ │ ├── border-radius.less
│ │ │ │ ├── buttons.less
│ │ │ │ ├── center-block.less
│ │ │ │ ├── clearfix.less
│ │ │ │ ├── forms.less
│ │ │ │ ├── gradients.less
│ │ │ │ ├── grid-framework.less
│ │ │ │ ├── grid.less
│ │ │ │ ├── hide-text.less
│ │ │ │ ├── image.less
│ │ │ │ ├── labels.less
│ │ │ │ ├── list-group.less
│ │ │ │ ├── nav-divider.less
│ │ │ │ ├── nav-vertical-align.less
│ │ │ │ ├── opacity.less
│ │ │ │ ├── pagination.less
│ │ │ │ ├── panels.less
│ │ │ │ ├── progress-bar.less
│ │ │ │ ├── reset-filter.less
│ │ │ │ ├── resize.less
│ │ │ │ ├── responsive-visibility.less
│ │ │ │ ├── size.less
│ │ │ │ ├── tab-focus.less
│ │ │ │ ├── table-row.less
│ │ │ │ ├── text-emphasis.less
│ │ │ │ ├── text-overflow.less
│ │ │ │ └── vendor-prefixes.less
│ │ │ ├── mixins.less
│ │ │ ├── modals.less
│ │ │ ├── navbar.less
│ │ │ ├── navs.less
│ │ │ ├── normalize.less
│ │ │ ├── pager.less
│ │ │ ├── pagination.less
│ │ │ ├── panels.less
│ │ │ ├── popovers.less
│ │ │ ├── print.less
│ │ │ ├── progress-bars.less
│ │ │ ├── responsive-embed.less
│ │ │ ├── responsive-utilities.less
│ │ │ ├── scaffolding.less
│ │ │ ├── tables.less
│ │ │ ├── theme.less
│ │ │ ├── thumbnails.less
│ │ │ ├── tooltip.less
│ │ │ ├── type.less
│ │ │ ├── utilities.less
│ │ │ ├── variables.less
│ │ │ └── wells.less
│ │ ├── package.js
│ │ └── package.json
│ ├── bootstrap-switch/
│ │ ├── .bower.json
│ │ ├── .bowerrc
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bower.json
│ │ ├── dist/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap2/
│ │ │ │ │ └── bootstrap-switch.css
│ │ │ │ └── bootstrap3/
│ │ │ │ └── bootstrap-switch.css
│ │ │ └── js/
│ │ │ └── bootstrap-switch.js
│ │ ├── documentation-2.html
│ │ ├── events.html
│ │ ├── examples.html
│ │ ├── karma.json
│ │ ├── main.html
│ │ ├── methods.html
│ │ ├── options.html
│ │ └── src/
│ │ ├── coffee/
│ │ │ ├── bootstrap-switch.coffee
│ │ │ └── bootstrap-switch.tests.coffee
│ │ └── less/
│ │ ├── bootstrap2/
│ │ │ ├── bootstrap-switch.less
│ │ │ ├── build.less
│ │ │ ├── mixins.less
│ │ │ └── variables.less
│ │ └── bootstrap3/
│ │ ├── bootstrap-switch.less
│ │ ├── build.less
│ │ ├── mixins.less
│ │ └── variables.less
│ ├── jquery/
│ │ ├── .bower.json
│ │ ├── MIT-LICENSE.txt
│ │ ├── bower.json
│ │ ├── dist/
│ │ │ └── jquery.js
│ │ └── src/
│ │ ├── ajax/
│ │ │ ├── jsonp.js
│ │ │ ├── load.js
│ │ │ ├── parseJSON.js
│ │ │ ├── parseXML.js
│ │ │ ├── script.js
│ │ │ ├── var/
│ │ │ │ ├── nonce.js
│ │ │ │ └── rquery.js
│ │ │ └── xhr.js
│ │ ├── ajax.js
│ │ ├── attributes/
│ │ │ ├── attr.js
│ │ │ ├── classes.js
│ │ │ ├── prop.js
│ │ │ ├── support.js
│ │ │ └── val.js
│ │ ├── attributes.js
│ │ ├── callbacks.js
│ │ ├── core/
│ │ │ ├── access.js
│ │ │ ├── init.js
│ │ │ ├── parseHTML.js
│ │ │ ├── ready.js
│ │ │ └── var/
│ │ │ └── rsingleTag.js
│ │ ├── core.js
│ │ ├── css/
│ │ │ ├── addGetHookIf.js
│ │ │ ├── curCSS.js
│ │ │ ├── defaultDisplay.js
│ │ │ ├── hiddenVisibleSelectors.js
│ │ │ ├── support.js
│ │ │ ├── swap.js
│ │ │ └── var/
│ │ │ ├── cssExpand.js
│ │ │ ├── getStyles.js
│ │ │ ├── isHidden.js
│ │ │ ├── rmargin.js
│ │ │ └── rnumnonpx.js
│ │ ├── css.js
│ │ ├── data/
│ │ │ ├── Data.js
│ │ │ ├── accepts.js
│ │ │ └── var/
│ │ │ ├── data_priv.js
│ │ │ └── data_user.js
│ │ ├── data.js
│ │ ├── deferred.js
│ │ ├── deprecated.js
│ │ ├── dimensions.js
│ │ ├── effects/
│ │ │ ├── Tween.js
│ │ │ └── animatedSelector.js
│ │ ├── effects.js
│ │ ├── event/
│ │ │ ├── ajax.js
│ │ │ ├── alias.js
│ │ │ └── support.js
│ │ ├── event.js
│ │ ├── exports/
│ │ │ ├── amd.js
│ │ │ └── global.js
│ │ ├── intro.js
│ │ ├── jquery.js
│ │ ├── manipulation/
│ │ │ ├── _evalUrl.js
│ │ │ ├── support.js
│ │ │ └── var/
│ │ │ └── rcheckableType.js
│ │ ├── manipulation.js
│ │ ├── offset.js
│ │ ├── outro.js
│ │ ├── queue/
│ │ │ └── delay.js
│ │ ├── queue.js
│ │ ├── selector-native.js
│ │ ├── selector-sizzle.js
│ │ ├── selector.js
│ │ ├── serialize.js
│ │ ├── sizzle/
│ │ │ └── dist/
│ │ │ └── sizzle.js
│ │ ├── traversing/
│ │ │ ├── findFilter.js
│ │ │ └── var/
│ │ │ └── rneedsContext.js
│ │ ├── traversing.js
│ │ ├── var/
│ │ │ ├── arr.js
│ │ │ ├── class2type.js
│ │ │ ├── concat.js
│ │ │ ├── hasOwn.js
│ │ │ ├── indexOf.js
│ │ │ ├── pnum.js
│ │ │ ├── push.js
│ │ │ ├── rnotwhite.js
│ │ │ ├── slice.js
│ │ │ ├── strundefined.js
│ │ │ ├── support.js
│ │ │ └── toString.js
│ │ └── wrap.js
│ ├── jquery-timeago/
│ │ ├── .bower.json
│ │ ├── .gitignore
│ │ ├── CNAME
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE.txt
│ │ ├── README.markdown
│ │ ├── Rakefile
│ │ ├── bower.json
│ │ ├── contrib/
│ │ │ └── timeago-koext.js
│ │ ├── index.html
│ │ ├── jquery.timeago.js
│ │ ├── locales/
│ │ │ ├── README.md
│ │ │ ├── jquery.timeago.ar.js
│ │ │ ├── jquery.timeago.bg.js
│ │ │ ├── jquery.timeago.bs.js
│ │ │ ├── jquery.timeago.ca.js
│ │ │ ├── jquery.timeago.cs.js
│ │ │ ├── jquery.timeago.cy.js
│ │ │ ├── jquery.timeago.da.js
│ │ │ ├── jquery.timeago.de.js
│ │ │ ├── jquery.timeago.el.js
│ │ │ ├── jquery.timeago.en-short.js
│ │ │ ├── jquery.timeago.en.js
│ │ │ ├── jquery.timeago.es-short.js
│ │ │ ├── jquery.timeago.es.js
│ │ │ ├── jquery.timeago.et.js
│ │ │ ├── jquery.timeago.fa.js
│ │ │ ├── jquery.timeago.fi.js
│ │ │ ├── jquery.timeago.fr-short.js
│ │ │ ├── jquery.timeago.fr.js
│ │ │ ├── jquery.timeago.gl.js
│ │ │ ├── jquery.timeago.he.js
│ │ │ ├── jquery.timeago.hr.js
│ │ │ ├── jquery.timeago.hu.js
│ │ │ ├── jquery.timeago.hy.js
│ │ │ ├── jquery.timeago.id.js
│ │ │ ├── jquery.timeago.is.js
│ │ │ ├── jquery.timeago.it.js
│ │ │ ├── jquery.timeago.ja.js
│ │ │ ├── jquery.timeago.jv.js
│ │ │ ├── jquery.timeago.ko.js
│ │ │ ├── jquery.timeago.lt.js
│ │ │ ├── jquery.timeago.mk.js
│ │ │ ├── jquery.timeago.nl.js
│ │ │ ├── jquery.timeago.no.js
│ │ │ ├── jquery.timeago.pl.js
│ │ │ ├── jquery.timeago.pt-br.js
│ │ │ ├── jquery.timeago.pt.js
│ │ │ ├── jquery.timeago.ro.js
│ │ │ ├── jquery.timeago.rs.js
│ │ │ ├── jquery.timeago.ru.js
│ │ │ ├── jquery.timeago.sk.js
│ │ │ ├── jquery.timeago.sl.js
│ │ │ ├── jquery.timeago.sv.js
│ │ │ ├── jquery.timeago.th.js
│ │ │ ├── jquery.timeago.tr.js
│ │ │ ├── jquery.timeago.uk.js
│ │ │ ├── jquery.timeago.uz.js
│ │ │ ├── jquery.timeago.vi.js
│ │ │ ├── jquery.timeago.zh-CN.js
│ │ │ └── jquery.timeago.zh-TW.js
│ │ └── timeago.jquery.json
│ └── jqueryui/
│ ├── .bower.json
│ ├── .gitignore
│ ├── AUTHORS.txt
│ ├── LICENSE.txt
│ ├── README.md
│ ├── bower.json
│ ├── component.json
│ ├── composer.json
│ ├── jquery-ui.js
│ ├── package.json
│ ├── themes/
│ │ ├── base/
│ │ │ ├── accordion.css
│ │ │ ├── all.css
│ │ │ ├── autocomplete.css
│ │ │ ├── base.css
│ │ │ ├── button.css
│ │ │ ├── core.css
│ │ │ ├── datepicker.css
│ │ │ ├── dialog.css
│ │ │ ├── draggable.css
│ │ │ ├── jquery-ui.css
│ │ │ ├── menu.css
│ │ │ ├── progressbar.css
│ │ │ ├── resizable.css
│ │ │ ├── selectable.css
│ │ │ ├── selectmenu.css
│ │ │ ├── slider.css
│ │ │ ├── sortable.css
│ │ │ ├── spinner.css
│ │ │ ├── tabs.css
│ │ │ ├── theme.css
│ │ │ └── tooltip.css
│ │ ├── black-tie/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── blitzer/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── cupertino/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── dark-hive/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── dot-luv/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── eggplant/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── excite-bike/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── flick/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── hot-sneaks/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── humanity/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── le-frog/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── mint-choc/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── overcast/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── pepper-grinder/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── redmond/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── smoothness/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── south-street/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── start/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── sunny/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── swanky-purse/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── trontastic/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── ui-darkness/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── ui-lightness/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ └── vader/
│ │ ├── jquery-ui.css
│ │ └── theme.css
│ └── ui/
│ ├── .jshintrc
│ ├── accordion.js
│ ├── autocomplete.js
│ ├── button.js
│ ├── core.js
│ ├── datepicker.js
│ ├── dialog.js
│ ├── draggable.js
│ ├── droppable.js
│ ├── effect-blind.js
│ ├── effect-bounce.js
│ ├── effect-clip.js
│ ├── effect-drop.js
│ ├── effect-explode.js
│ ├── effect-fade.js
│ ├── effect-fold.js
│ ├── effect-highlight.js
│ ├── effect-puff.js
│ ├── effect-pulsate.js
│ ├── effect-scale.js
│ ├── effect-shake.js
│ ├── effect-size.js
│ ├── effect-slide.js
│ ├── effect-transfer.js
│ ├── effect.js
│ ├── i18n/
│ │ ├── datepicker-af.js
│ │ ├── datepicker-ar-DZ.js
│ │ ├── datepicker-ar.js
│ │ ├── datepicker-az.js
│ │ ├── datepicker-be.js
│ │ ├── datepicker-bg.js
│ │ ├── datepicker-bs.js
│ │ ├── datepicker-ca.js
│ │ ├── datepicker-cs.js
│ │ ├── datepicker-cy-GB.js
│ │ ├── datepicker-da.js
│ │ ├── datepicker-de.js
│ │ ├── datepicker-el.js
│ │ ├── datepicker-en-AU.js
│ │ ├── datepicker-en-GB.js
│ │ ├── datepicker-en-NZ.js
│ │ ├── datepicker-eo.js
│ │ ├── datepicker-es.js
│ │ ├── datepicker-et.js
│ │ ├── datepicker-eu.js
│ │ ├── datepicker-fa.js
│ │ ├── datepicker-fi.js
│ │ ├── datepicker-fo.js
│ │ ├── datepicker-fr-CA.js
│ │ ├── datepicker-fr-CH.js
│ │ ├── datepicker-fr.js
│ │ ├── datepicker-gl.js
│ │ ├── datepicker-he.js
│ │ ├── datepicker-hi.js
│ │ ├── datepicker-hr.js
│ │ ├── datepicker-hu.js
│ │ ├── datepicker-hy.js
│ │ ├── datepicker-id.js
│ │ ├── datepicker-is.js
│ │ ├── datepicker-it-CH.js
│ │ ├── datepicker-it.js
│ │ ├── datepicker-ja.js
│ │ ├── datepicker-ka.js
│ │ ├── datepicker-kk.js
│ │ ├── datepicker-km.js
│ │ ├── datepicker-ko.js
│ │ ├── datepicker-ky.js
│ │ ├── datepicker-lb.js
│ │ ├── datepicker-lt.js
│ │ ├── datepicker-lv.js
│ │ ├── datepicker-mk.js
│ │ ├── datepicker-ml.js
│ │ ├── datepicker-ms.js
│ │ ├── datepicker-nb.js
│ │ ├── datepicker-nl-BE.js
│ │ ├── datepicker-nl.js
│ │ ├── datepicker-nn.js
│ │ ├── datepicker-no.js
│ │ ├── datepicker-pl.js
│ │ ├── datepicker-pt-BR.js
│ │ ├── datepicker-pt.js
│ │ ├── datepicker-rm.js
│ │ ├── datepicker-ro.js
│ │ ├── datepicker-ru.js
│ │ ├── datepicker-sk.js
│ │ ├── datepicker-sl.js
│ │ ├── datepicker-sq.js
│ │ ├── datepicker-sr-SR.js
│ │ ├── datepicker-sr.js
│ │ ├── datepicker-sv.js
│ │ ├── datepicker-ta.js
│ │ ├── datepicker-th.js
│ │ ├── datepicker-tj.js
│ │ ├── datepicker-tr.js
│ │ ├── datepicker-uk.js
│ │ ├── datepicker-vi.js
│ │ ├── datepicker-zh-CN.js
│ │ ├── datepicker-zh-HK.js
│ │ └── datepicker-zh-TW.js
│ ├── menu.js
│ ├── mouse.js
│ ├── position.js
│ ├── progressbar.js
│ ├── resizable.js
│ ├── selectable.js
│ ├── selectmenu.js
│ ├── slider.js
│ ├── sortable.js
│ ├── spinner.js
│ ├── tabs.js
│ ├── tooltip.js
│ └── widget.js
├── composer.json
├── config/
│ ├── app.php
│ ├── auth.php
│ ├── cache.php
│ ├── compile.php
│ ├── database.php
│ ├── filesystems.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ └── view.php
├── database/
│ ├── .gitignore
│ ├── migrations/
│ │ ├── .gitkeep
│ │ ├── 2015_04_10_210346_create_users_table.php
│ │ ├── 2015_04_12_221129_create_feeds_table.php
│ │ ├── 2015_04_13_001524_create_friends_table.php
│ │ ├── 2015_04_15_160303_create_friend_requests_table.php
│ │ ├── 2015_04_20_150638_create_messages_table.php
│ │ ├── 2015_04_20_151158_create_message_user_table.php
│ │ ├── 2015_04_20_163654_create_message_responses_table.php
│ │ └── 2015_04_20_165854_create_message_response_user_table.php
│ └── seeds/
│ ├── .gitkeep
│ ├── DatabaseSeeder.php
│ ├── FeedTableSeeder.php
│ ├── FriendRequestTableSeeder.php
│ ├── MessageResponseUserTableSeeder.php
│ ├── MessageResponsesTableSeeder.php
│ ├── MessageUserTableSeeder.php
│ ├── MessagesTableSeeder.php
│ └── UserTableSeeder.php
├── gulpfile.js
├── main.js
├── package.json
├── phpspec.yml
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── css/
│ │ ├── fonts/
│ │ │ ├── font-awesome.css
│ │ │ └── registration.css
│ │ ├── libs.css
│ │ └── main.css
│ ├── index.php
│ ├── js/
│ │ ├── libs.js
│ │ └── main.js
│ └── robots.txt
├── readme.md
├── resources/
│ ├── assets/
│ │ └── sass/
│ │ └── main.scss
│ ├── lang/
│ │ └── en/
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── views/
│ ├── email-alerts/
│ │ ├── friend-request.blade.php
│ │ └── registration-confirm.blade.php
│ ├── errors/
│ │ └── 503.blade.php
│ ├── feeds/
│ │ ├── index.blade.php
│ │ └── partials/
│ │ └── feed-list.blade.php
│ ├── friend-requests/
│ │ └── index.blade.php
│ ├── friends/
│ │ ├── index.blade.php
│ │ └── partials/
│ │ └── friend-chat-list.blade.php
│ ├── layouts/
│ │ ├── default.blade.php
│ │ └── partials/
│ │ ├── center-alert.blade.php
│ │ ├── center-form.blade.php
│ │ ├── nav.blade.php
│ │ └── welcome-alert.blade.php
│ ├── messages/
│ │ ├── create.blade.php
│ │ ├── index.blade.php
│ │ ├── partials/
│ │ │ └── send-email-button.blade.php
│ │ └── show.blade.php
│ ├── registration/
│ │ └── index.blade.php
│ ├── users/
│ │ ├── index.blade.php
│ │ ├── partials/
│ │ │ ├── profile-section.blade.php
│ │ │ └── userid.blade.php
│ │ └── show.blade.php
│ ├── vendor/
│ │ └── .gitkeep
│ └── welcome.blade.php
├── server.js
├── server.php
├── storage/
│ ├── .gitignore
│ ├── app/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ └── logs/
│ └── .gitignore
└── tests/
├── ExampleTest.php
├── TestCase.php
├── commands/
│ ├── TestCreateFeedCommand.php
│ ├── TestCreateFriendRequestCommand.php
│ ├── TestCreateMessageCommand.php
│ ├── TestLoginUserCommand.php
│ ├── TestLogoutUserCommand.php
│ ├── TestRegisterUserCommand.php
│ └── TestRemoveFriendCommand.php
├── controllers/
│ ├── TestFeedController.php
│ ├── TestFriendController.php
│ ├── TestFriendRequestController.php
│ ├── TestMessageController.php
│ ├── TestRegistrationController.php
│ ├── TestSessionController.php
│ └── TestUserController.php
├── events/
│ ├── TestFriendRequestWasSent.php
│ └── TestUserWasRegistered.php
├── factories/
│ └── factories.php
├── functional/
│ ├── FriendRequestTest.php
│ ├── LoginTest.php
│ ├── MessagesTest.php
│ ├── PostFeedTest.php
│ └── RegistrationTest.php
├── handlers/
│ ├── TestEmailFriendRequest.php
│ └── TestEmailRegistrationConfirmation.php
├── logs/
│ └── output.txt
└── repositories/
├── TestFeedRepository.php
├── TestFriendRequestRepository.php
├── TestMessageRepository.php
└── TestUserRepository.php
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
* text=auto
*.css linguist-vendored
*.less linguist-vendored
================================================
FILE: .gitignore
================================================
/vendor
/node_modules
.env
================================================
FILE: app/Commands/Command.php
================================================
<?php namespace App\Commands;
abstract class Command {
//
}
================================================
FILE: app/Commands/CreateFeedCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use App\Feed;
use Illuminate\Contracts\Bus\SelfHandling;
use Auth;
class CreateFeedCommand extends Command implements SelfHandling {
/**
* @var string
*/
protected $body;
/**
* @var string
*/
protected $posterFirstname;
/**
* @var string
*/
protected $posterProfileImage;
/**
* Create a new command instance.
*
*
* @param string $body
*
* @param string $posterFirstname
*
* @param string $posterProfileImage
*
* @return void
*/
public function __construct($body, $posterFirstname, $posterProfileImage)
{
$this->body = $body;
$this->posterFirstname = $posterFirstname;
$this->posterProfileImage = $posterProfileImage;
}
/**
* Execute the command.
*
* @param FeedRepository $feedRepository
*
* @return void
*/
public function handle()
{
$feed = Feed::publish($this->body, $this->posterFirstname, $this->posterProfileImage);
Auth::user()->feeds()->save($feed);
return $feed;
}
}
================================================
FILE: app/Commands/CreateFriendRequestCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use App\Repositories\User\UserRepository;
use App\Events\FriendRequestWasSent;
use Illuminate\Contracts\Bus\SelfHandling;
use App\FriendRequest;
use Auth;
class CreateFriendRequestCommand extends Command implements SelfHandling {
/**
* @var int
*/
protected $requestedId;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct($requestedId)
{
$this->requestedId = $requestedId;
}
/**
* Execute the command.
*
* @param UserRepository $userRepository
*
* @return void
*/
public function handle(UserRepository $userRepository)
{
$requestedUser = $userRepository->findById($this->requestedId);
$requesterUser = Auth::user();
$friendRequest = FriendRequest::prepareFriendRequest($requesterUser->id);
$requestedUser->friendRequests()->save($friendRequest);
event(new FriendRequestWasSent($requestedUser, $requesterUser));
return true;
}
}
================================================
FILE: app/Commands/CreateMessageCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use App\Repositories\User\UserRepository;
use App\Repositories\Message\MessageRepository;
use Illuminate\Contracts\Bus\SelfHandling;
use App\Message;
use App\MessageResponse;
class CreateMessageCommand extends Command implements SelfHandling {
/**
* @var int
*/
public $receiverId;
/**
* @var string
*/
public $body;
/**
* @var int
*/
public $senderId;
/**
* @var string
*/
public $senderProfileImage;
/**
* @var string
*/
public $senderName;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct($receiverId, $body, $senderId, $senderProfileImage, $senderName)
{
$this->receiverId = $receiverId;
$this->body = $body;
$this->senderId = $senderId;
$this->senderProfileImage = $senderProfileImage;
$this->senderName = $senderName;
}
/**
* Execute the command.
*
* @param UserRepository $userRepository
*
* @param ResponseRepository $responseRepository
*
* @return void
*/
public function handle(UserRepository $userRepository, MessageRepository $messageRepository)
{
$message = Message::createMessage($this->body, $this->senderId, $this->senderProfileImage, $this->senderName);
$response = MessageResponse::createMessageResponse(
$this->body,
$this->senderId,
$this->receiverId,
$this->senderProfileImage,
$this->senderName
);
$userRepository->findById($this->receiverId)->messages()->save($message);
$messageRepository->findById($message->id)->messageResponses()->save($response);
$userRepository->findById($this->receiverId)->messageResponses()->save($response);
return true;
}
}
================================================
FILE: app/Commands/CreateMessageResponseCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use Illuminate\Contracts\Bus\SelfHandling;
use App\Repositories\User\UserRepository;
use App\Repositories\Message\MessageRepository;
use App\MessageResponse;
class CreateMessageResponseCommand extends Command implements SelfHandling {
/**
* @var int
*/
public $receiverId;
/**
* @var string
*/
public $emailbody;
/**
* @var int
*/
public $senderId;
/**
* @var string
*/
public $senderProfileImage;
/**
* @var string
*/
public $senderName;
/**
* @var int
*/
public $emailId;
/**
* @var Object
*/
public $currentUser;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct($receiverId, $body, $senderId, $senderProfileImage, $senderName, $messageId, $currentUser)
{
$this->receiverId = $receiverId;
$this->body = $body;
$this->senderId = $senderId;
$this->senderProfileImage = $senderProfileImage;
$this->senderName = $senderName;
$this->messageId = $messageId;
$this->currentUser = $currentUser;
}
/**
* Execute the command.
*
* @param UserRepository, $userRepository
*
* @param EmailRepository $emailRepository
*
* @return void
*/
public function handle(UserRepository $userRepository, MessageRepository $messageRepository)
{
$user = $userRepository->findById($this->receiverId);
$message = $messageRepository->findById($this->messageId);
if(! $message->belongsToUser($this->receiverId)) $user->messages()->save($message);
if($this->receiverId == $this->senderId)
{
$userIdToSaveTo = $message->getLastReceiverId();
$messageResponse = MessageResponse::createMessageResponse(
$this->body,
$this->senderId,
$userIdToSaveTo,
$this->senderProfileImage,
$this->senderName
);
$messageRepository->findById($this->messageId)->messageResponses()->save($messageResponse);
$userRepository->findById($userIdToSaveTo)->messageResponses()->save($messageResponse);
}
else
{
$messageResponse = MessageResponse::createMessageResponse(
$this->body,
$this->senderId,
$this->receiverId,
$this->senderProfileImage,
$this->senderName
);
$messageRepository->findById($this->messageId)->messageResponses()->save($messageResponse);
$user->messageResponses()->save($messageResponse);
}
}
}
================================================
FILE: app/Commands/LoginUserCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use Auth;
use App\Realtime\Events as SocketClient;
use Illuminate\Contracts\Bus\SelfHandling;
class LoginUserCommand extends Command implements SelfHandling {
/**
* @var string
*/
public $email;
/**
* @var string
*/
public $password;
/**
* @var Object
*/
public $socketClient;
/**
* Create a new command instance.
*
* @param string $email
*
* @param string $password
*
* @return void
*/
public function __construct($email, $password)
{
$this->email = $email;
$this->password = $password;
$this->socketClient = new SocketClient;
}
/**
* Execute the command.
*
* @return void
*/
public function handle()
{
if(! Auth::attempt(['email' => $this->email, 'password' => $this->password])) return false;
$user = Auth::user();
$friendsUserIds = $user->friends()->where('onlinestatus', 1)->lists('requester_id');
$relatedToId = $user->id;
$clientCode = 22;
$message = true;
$this->socketClient->updateChatStatusBar($friendsUserIds, $clientCode, $relatedToId, $message);
$user->updateOnlineStatus(1);
return true;
}
}
================================================
FILE: app/Commands/LogoutUserCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use App\Realtime\Events as SocketClient;
use App\User;
use Auth;
use Illuminate\Contracts\Bus\SelfHandling;
class LogoutUserCommand extends Command implements SelfHandling {
/**
* @var User
*/
public $user;
/**
* @var Object
*/
public $socketClient;
/**
* Create a new command instance.
*
* @param int $userId
*
* @return void
*/
public function __construct($userId)
{
$this->user = User::find($userId);
$this->socketClient = new SocketClient;
}
/**
* Execute the command.
*
* @return void
*/
public function handle()
{
$this->user->updateOnlineStatus(0);
$friendsUserIds = $this->user->friends()->where('onlinestatus', 1)->lists('requester_id');
$relatedToId = $this->user->id;
$this->socketClient->updateChatStatusBar($friendsUserIds, 22, $relatedToId, false);
Auth::logout();
return Auth::check();
}
}
================================================
FILE: app/Commands/RegisterUserCommand.php
================================================
<?php namespace App\Commands;
use App\Events\UserWasRegistered;
use App\Commands\Command;
use Illuminate\Contracts\Bus\SelfHandling;
use App\User;
use Auth;
class RegisterUserCommand extends Command implements SelfHandling {
protected $firstname;
protected $lastname;
protected $email;
protected $password;
protected $password_confirmation;
protected $gender;
protected $month;
protected $day;
protected $year;
protected $profileimage;
protected $profileImagePath;
protected $birthday;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(
$firstname,
$lastname,
$email,
$password,
$password_confirmation,
$gender,
$month,
$day,
$year,
$profileimage,
$profileImagePath,
$birthday
)
{
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->email = $email;
$this->password = $password;
$this->password_confirmation = $password_confirmation;
$this->gender = $gender;
$this->month = $month;
$this->day = $day;
$this->year = $year;
$this->profileimage = $profileimage;
$this->profileImagePath = $profileImagePath;
$this->birthday = $birthday;
}
/**
* Handle the request
* @param UserRepository $userRepository
*
* return void
*/
public function handle()
{
$user = User::register(
$this->firstname,
$this->lastname,
$this->email,
bcrypt($this->password),
$this->gender,
$this->birthday,
$this->profileImagePath
);
$user->save();
event(new UserWasRegistered($user));
Auth::login($user);
$user->updateOnlineStatus(1);
return $user;
}
}
================================================
FILE: app/Commands/RemoveFriendCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use App\Repositories\User\UserRepository;
use App\Realtime\Events as SocketClient;
use Illuminate\Contracts\Bus\SelfHandling;
use Auth;
class RemoveFriendCommand extends Command implements SelfHandling {
/**
* @var int
*/
protected $userId;
/**
* @var Object
*/
protected $socketClient;
/**
* Create a new command instance.
*
* @param User $user
*
* @return void
*/
public function __construct($userId)
{
$this->userId = $userId;
$this->socketClient = new SocketClient;
}
/**
* Execute the command.
*
* @param FriendRepository $friendRepository
*
* @return void
*/
public function handle(UserRepository $userRepository)
{
$otherUser = $userRepository->findById($this->userId);
$currentUser = Auth::user();
$currentUser->finishFriendshipWith($this->userId);
$otherUser->finishFriendshipWith(Auth::user()->id);
$this->socketClient->updateChatListFriendRemoved($otherUser->id, 24, $currentUser->id, $otherUser->friends()->count());
return true;
}
}
================================================
FILE: app/Commands/SendChatMessageCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use App\Realtime\Chat as SocketClient;
use Illuminate\Contracts\Bus\SelfHandling;
use Auth;
class SendChatMessageCommand extends Command implements SelfHandling {
/**
* @var int
*/
protected $receiverId;
/**
* @var string
*/
protected $message;
/**
* @var Object
*/
protected $socketClient;
/**
* Create a new command instance.
*
* @param int $receiverId
*
* @param string $message
*
* @return void
*/
public function __construct($receiverId, $message)
{
$this->receiverId = $receiverId;
$this->message = $message;
$this->socketClient = new SocketClient;
}
/**
* Execute the command.
*
* @return void
*/
public function handle()
{
$senderId = Auth::user()->id;
$this->socketClient->sendMessageTo($this->receiverId, 23, $senderId, $this->message);
}
}
================================================
FILE: app/Commands/UpdateChatStatusCommand.php
================================================
<?php namespace App\Commands;
use App\Commands\Command;
use Auth;
use Illuminate\Contracts\Bus\SelfHandling;
use App\Realtime\Events as SocketClient;
class UpdateChatStatusCommand extends Command implements SelfHandling {
/**
* @var boolean
*/
protected $chatStatus;
/**
* @var Object
*/
// protected $socketClient;
/**
* @var Object
*/
protected $currentUser;
/**
* @var Object
*/
protected $socketClient;
/**
* Create a new command instance.
*
* @param boolean $chatStatus
*
* @return void
*/
public function __construct($chatStatus)
{
$this->chatStatus = $chatStatus;
$this->socketClient = new SocketClient;
$this->currentUser = Auth::user();
}
/**
* Execute the command.
*
* @return void
*/
public function handle()
{
$this->currentUser->updateChatStatus($this->chatStatus);
$relatedToId = $this->currentUser->id;
$friendsUserIds = $this->currentUser->friends()->where('onlinestatus', 1)->lists('requester_id');
$friendsUserIds[] = $relatedToId;
$this->socketClient->updateChatStatusBar($friendsUserIds, 21, $relatedToId, $this->chatStatus);
}
}
================================================
FILE: app/Console/Commands/Inspire.php
================================================
<?php namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Foundation\Inspiring;
class Inspire extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'inspire';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Display an inspiring quote';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->comment(PHP_EOL.Inspiring::quote().PHP_EOL);
}
}
================================================
FILE: app/Console/Kernel.php
================================================
<?php namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel {
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
'App\Console\Commands\Inspire',
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('inspire')
->hourly();
}
}
================================================
FILE: app/Events/Event.php
================================================
<?php namespace App\Events;
abstract class Event {
//
}
================================================
FILE: app/Events/FriendRequestWasSent.php
================================================
<?php namespace App\Events;
use App\Events\Event;
use App\User;
use Illuminate\Queue\SerializesModels;
class FriendRequestWasSent extends Event {
use SerializesModels;
/**
* @var User
*/
public $requestedUser;
/**
* @var User
*/
public $requesterUser;
/**
* Create a new event instance.
*
* @param User $requestedUser
*
* @param User $requesterUser
*
* @return void
*/
public function __construct(User $requestedUser, User $requesterUser)
{
$this->requestedUser = $requestedUser;
$this->requesterUser = $requesterUser;
}
}
================================================
FILE: app/Events/UserWasRegistered.php
================================================
<?php namespace App\Events;
use App\Events\Event;
use App\User;
use Illuminate\Queue\SerializesModels;
class UserWasRegistered extends Event {
use SerializesModels;
/**
* @var Object
*/
public $user;
/**
* Create a new event instance.
*
* @param Object $user
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}
================================================
FILE: app/Exceptions/Handler.php
================================================
<?php namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler {
/**
* A list of the exception types that should not be reported.
*
* @var array
*/
protected $dontReport = [
'Symfony\Component\HttpKernel\Exception\HttpException'
];
/**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $e
* @return void
*/
public function report(Exception $e)
{
return parent::report($e);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
return parent::render($request, $e);
}
}
================================================
FILE: app/Feed.php
================================================
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Feed extends Model {
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['body', 'poster_firstname', 'poster_profile_image'];
/**
* A feed belongs to a User.
*
* @return User
*/
public function user()
{
return $this->belongsTo('App\User');
}
/**
* Publish a new feed.
*
* @param string body
*
* @param string $poster_firstname
*
* @param string $poster_profile_image
*
* @return static
*/
public static function publish($body, $poster_firstname, $poster_profile_image)
{
$feed = new static(compact('body', 'poster_firstname', 'poster_profile_image'));
return $feed;
}
/**
* Get the amount of feeds related to current User.
*
* @param array $userIds
*
* @return int
*/
public static function getTotalCountFeedsForUser($userIds)
{
return self::whereIn('user_id', $userIds)->count();
}
}
================================================
FILE: app/FriendRequest.php
================================================
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class FriendRequest extends Model {
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['requester_id'];
/**
* A feed belongs to a User.
*
* @return User
*/
public function user()
{
return $this->belongsTo('App\User');
}
/**
* Send a friend request to a user
*
*
* @attr int $requester_id
*
*/
public static function prepareFriendRequest($requester_id)
{
$FriendRequest = new static(compact('requester_id'));
return $FriendRequest;
}
}
================================================
FILE: app/Handlers/Commands/.gitkeep
================================================
================================================
FILE: app/Handlers/Events/.gitkeep
================================================
================================================
FILE: app/Handlers/Events/EmailFriendRequest.php
================================================
<?php namespace App\Handlers\Events;
use App\Events\FriendRequestWasSent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldBeQueued;
use App\Mailers\UserMailer;
class EmailFriendRequest
{
/**
* @var UserMailer
*/
public $mailer;
/**
* Create the event handler.
*
* @param UserMailer $mailer
*
* @return void
*/
public function __construct(UserMailer $mailer)
{
$this->mailer = $mailer;
}
/**
* Handle the event.
*
* @param FriendRequestWasSent $event
* @return void
*/
public function handle(FriendRequestWasSent $event)
{
$this->mailer->sendFriendRequestAlertTo($event->requestedUser, $event->requesterUser);
}
}
================================================
FILE: app/Handlers/Events/EmailRegistrationConfirmation.php
================================================
<?php namespace App\Handlers\Events;
use App\Events\UserWasRegistered;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldBeQueued;
use App\Mailers\UserMailer;
class EmailRegistrationConfirmation {
/**
* @var Object
*/
public $mailer;
/**
* Create the event handler.
*
* @param UserMailer $mailer
*
* @return void
*/
public function __construct(UserMailer $mailer)
{
$this->mailer = $mailer;
}
/**
* Handle the event.
*
* @param UserWasRegistered $event
* @return void
*/
public function handle(UserWasRegistered $event)
{
return $this->mailer->sendWelcomeMessageTo($event->user);
}
}
================================================
FILE: app/Http/Controllers/ChatController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Repositories\User\UserRepository;
use Illuminate\Http\Request;
use Validator;
use App\Commands\SendChatMessageCommand;
class ChatController extends Controller {
/**
* Create a new ChatController instance
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Send chat message to another user.
*
* @param Request $request
*
* @return mixed
*/
public function sendMessage(Request $request, UserRepository $userRepository)
{
$validator = Validator::make($request->all(), ['receiverId' => 'required', 'message' => 'required']);
if($validator->fails())
{
if($validator->fails()) return abort(403);
}
else
{
$this->dispatchFrom(SendChatMessageCommand::class, $request);
return response()->json(['response' => 'success', 'availableToChat' => $userRepository->findById($request->receiverId)->chatstatus]);
}
}
}
================================================
FILE: app/Http/Controllers/ChatStatusController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Validator;
use Illuminate\Http\Request;
use App\Commands\UpdateChatStatusCommand;
class ChatStatusController extends Controller {
/**
* Create a new StatusController instance.
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Update current user's chat status.
*
* @param Request $request
*
* @return Mixed
*/
public function update(Request $request)
{
$validator = Validator::make($request->all(), ['chatStatus' => 'required']);
if($validator->fails()) return abort(403);
$this->dispatchFrom(UpdateChatStatusCommand::class, $request);
}
}
================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
abstract class Controller extends BaseController {
use DispatchesCommands, ValidatesRequests;
}
================================================
FILE: app/Http/Controllers/FeedController.php
================================================
<?php namespace App\Http\Controllers;
use App\Commands\CreateFeedCommand;
use App\Http\Controllers\Controller;
use App\Repositories\Feed\FeedRepository;
use Auth;
use Illuminate\Http\Request;
use Validator;
use App\Feed;
class FeedController extends Controller {
/**
* var FeedRepository
*/
protected $feedRepository;
/**
* Create a new instance of FeedController.
*
*
*/
public function __construct()
{
$this->currentUser = Auth::user();
$this->middleware('auth');
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(FeedRepository $feedRepository)
{
$user = $this->currentUser;
$feeds = $feedRepository->getPublishedByUserAndFriends($user);
$friendsUserIds[] = $user->id;
$feedsCount = Feed::getTotalCountFeedsForUser($friendsUserIds);
return view('feeds.index', compact('user', 'feeds', 'feedsCount'));
}
/**
* Display more feeds via ajax.
*
* @param Request $request
*
* @return Response
*/
public function more(Request $request, FeedRepository $feedRepository)
{
$validator = Validator::make($request->all(), ['skipQty' => 'required']);
if($validator->fails()) return abort(403);
$feeds = $feedRepository->getPublishedByUserAndFriendsAjax($this->currentUser, $request->skipQty);
return response()->json(['feeds' => $feeds]);
}
/**
* Store a newly created feed in storage.
*
* @return Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), ['body' => 'required']);
if($validator->fails()) return response()->json(['response' => 'failed']);
$feed = $this->dispatchFrom(CreateFeedCommand::class, $request, [
'body' => $request->body,
'posterFirstname' => $this->currentUser->firstname,
'posterProfileImage' => $this->currentUser->profileimage
]);
return response()->json([
'response' => 'success',
'userProfileImage' => $feed->poster_profile_image,
'userFirstname' => $feed->poster_firstname,
'feedBody' => $feed->body ]);
}
}
================================================
FILE: app/Http/Controllers/FriendController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
use Illuminate\Http\Request;
use App\Repositories\User\UserRepository;
use App\Commands\RemoveFriendCommand;
use Validator;
use App\FriendRequest;
class FriendController extends Controller {
public function __construct()
{
$this->currentUser = Auth::user();
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(UserRepository $repository)
{
$user = $this->currentUser;
$friends = $repository->findByIdWithFriends($user->id);
return view('friends.index', compact('friends', 'user'));
}
/**
* Store a newly created friend
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request, UserRepository $repository)
{
$validator = Validator::make($request->all(), ['userId' => 'required']);
if($validator->fails())
{
return response()->json(['response' => 'failed', 'message' => 'Something went wrong please try again.']);
}
else
{
$this->currentUser->createFriendShipWith($request->userId);
$repository->findById($request->userId)->createFriendShipWith($this->currentUser->id);
FriendRequest::where('user_id', $this->currentUser->id)->where('requester_id', $request->userId)->delete();
$friendRequestCount = $this->currentUser->friendRequests()->count();
return response()->json(['response' => 'success', 'count' => $friendRequestCount, 'message' => 'Friend request accepted.']);
}
}
/**
* Terminate friendship between 2 users.
*
* @param Request $request
*
* @return Response
*/
public function destroy(Request $request)
{
$validator = Validator::make($request->all(), ['userId' => 'required']);
if($validator->fails())
{
return response()->json(['response' => 'failed', 'message' => 'Something went wrong please try again.']);
}
else
{
$this->dispatchFrom(RemoveFriendCommand::class, $request, ['userId' => $request->userId]);
$friendsCount = $this->currentUser->friends()->count();
return response()->json(['response' => 'success', 'count' => $friendsCount, 'message' => 'This friend has been removed']);
}
}
}
================================================
FILE: app/Http/Controllers/FriendRequestController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Validator;
use Illuminate\Http\Request;
use App\Commands\CreateFriendRequestCommand;
use App\Repositories\FriendRequest\FriendRequestRepository;
use App\Repositories\User\UserRepository;
use Illuminate\Pagination\LengthAwarePaginator;
use App\FriendRequest;
use Auth;
class FriendRequestController extends Controller {
/**
* @var User
*/
protected $currentUser;
/**
* Create a new instance of FriendRequestController.
*/
public function __construct()
{
$this->middleware('auth');
$this->currentUser = Auth::user();
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(FriendRequestRepository $friendRequestRepository, UserRepository $userRepository)
{
$user = $this->currentUser;
$requesterIds = $friendRequestRepository->getIdsThatSentRequestToCurrentUser($user->id);
$userObjects = $userRepository->findManyById($requesterIds);
$usersWhoRequested = new LengthAwarePaginator($userObjects, count($userObjects), 10, 1, ['path' => '/friend-requests']);
return view('friend-requests.index', compact('user', 'usersWhoRequested'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created Friend Request.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), ['userId' => 'required']);
if($validator->fails())
{
return response()->json(['response' => 'failed', 'message' => 'Something went wrong please try again.']);
}
else
{
$this->dispatchFrom(CreateFriendRequestCommand::class, $request, [ 'requestedId' => $request->userId ]);
return response()->json(['response' => 'success', 'message' => 'Friend request submitted']);
}
}
/**
* Remove a friend request.
*
* @param Request $request
*
*
* @return Response
*/
public function destroy(Request $request)
{
$validator = Validator::make($request->all(), ['userId' => 'required']);
if($validator->fails())
{
return response()->json(['response' => 'failed', 'message' => 'Something went wrong please try again.']);
}
else
{
FriendRequest::where('user_id', $this->currentUser->id)->where('requester_id', $request->userId)->delete();
$friendRequestCount = $this->currentUser->friendRequests()->count();
return response()->json(['response' => 'success', 'count' => $friendRequestCount, 'message' => 'friend request removed']);
}
}
}
================================================
FILE: app/Http/Controllers/MessageController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Repositories\User\UserRepository;
use App\Repositories\Message\MessageRepository;
use App\Commands\CreateMessageCommand;
use Illuminate\Http\Request;
use Validator;
use Auth;
use App;
class MessageController extends Controller {
public function __construct()
{
$this->currentUser = Auth::user();
$this->middleware('auth');
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(UserRepository $userRepository)
{
$user = $this->currentUser;
$messages = $userRepository->findByIdWithMessages($this->currentUser->id);
return view('messages.index', compact('messages', 'user'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create($id, UserRepository $userRepository)
{
$currentUser = $this->currentUser;
$user = $userRepository->findById($id);
return view('messages.create', compact('currentUser', 'user'));
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), ['body' => 'required']);
if($validator->fails())
{
return response()->json(['response' => 'failed', 'message' => $validator->messages()->first('body')]);
}
else
{
$this->dispatchFrom(CreateMessageCommand::class, $request);
return response()->json(['response' => 'success', 'message' => 'Your message was sent.']);
}
}
/**
* Display the specified message.
*
* @param int $id
*
* @return Response
*/
public function show($id, MessageRepository $messageRepository)
{
$user = $this->currentUser;
$message = $messageRepository->findByIdWithMessageResponses($id);
return view('messages.show', compact('user', 'message'));
}
/**
* Remove the specified email from storage.
*
* @param Request $request
*
* @return Response
*/
public function destroy(Request $request)
{
$validator = Validator::make($request->all(), ['messageId' => 'required']);
if($validator->fails()) return abort(403);
$this->currentUser->messages()->detach($request->messageId);
$messageCount = $this->currentUser->messages()->count();
return response()->json(['count' => $messageCount ]);
}
}
================================================
FILE: app/Http/Controllers/MessageResponseController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;
use App\Commands\CreateMessageResponseCommand;
use Auth;
use App;
use Validator;
class MessageResponseController extends Controller {
/**
* Create a new instance of ResponsesController
*/
public function __construct()
{
$this->middleware('auth');
$this->currentUser = Auth::user();
}
/**
* Store a newly created response in storage.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), ['body' => 'required']);
if($validator->fails()) return response()->json(['response' => 'failed']);
$this->dispatchFrom(CreateMessageResponseCommand::class, $request, [
'receiverId' => $request->receiverId,
'body' => $request->body,
'senderId' => $request->senderId,
'senderProfileImage' => $request->senderProfileImage,
'senderName' => $request->senderName,
'messageId' => $request->messageId,
'currentUser' => $this->currentUser
]);
return response()->json(['response' => 'success', 'message' => 'Your message was sent.']);
}
/**
* Update the specified message response in storage.
*
* @param Request $request
* @return mixed
*/
public function update(Request $request)
{
DB::table('message_response_user')
->where('user_id', $this->currentUser->id)
->where('message_response_id', $request->messageResponseId)
->update(['open' => $request->openValue]);
return response()->json(['response' => 'success']);
}
}
================================================
FILE: app/Http/Controllers/RegistrationController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests\RegisterUserRequest;
use App\Http\Controllers\Controller;
use App\Commands\RegisterUserCommand;
use App;
use Carbon\Carbon;
use App\User;
use Illuminate\Http\Request;
class RegistrationController extends Controller {
/**
* Create a new instance of RegistrationController.
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Show a form to register a LaraSocial user.
*
* @return Response
*/
public function create()
{
$loginIdsRange = range(1, 30);
shuffle($loginIdsRange);
$loginIds = array_slice($loginIdsRange, 0, 2);
$randomLogins = [];
foreach ($loginIds as $loginId) {
$randomLogins[] = User::find($loginId);
}
return view('registration.index', compact('randomLogins'));
}
/**
* Store a new LaraSocial user.
*
* @return Response
*/
public function store(RegisterUserRequest $request)
{
$newUserProfileImagePath = $profileImagePath = App::make('ProcessImage')->execute($request->file('profileimage'), 'images/profileimages/', 180, 180);
$newUserBirthday = Carbon::createFromDate($request->year, $request->month, $request->day);
$newUser = $this->dispatchFrom(RegisterUserCommand::class, $request, [
'birthday' => $newUserBirthday,
'profileImagePath' => $newUserProfileImagePath
]);
return redirect()->route('feeds_path');
}
}
================================================
FILE: app/Http/Controllers/SessionController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests\CreateSessionRequest;
use App\Http\Controllers\Controller;
use App\Commands\LoginUserCommand;
use App\Commands\LogoutUserCommand;
use Auth;
use Illuminate\Http\Request;
class SessionController extends Controller {
/**
* Store a new session.
*
* @return Response
*/
public function store(CreateSessionRequest $request)
{
$response = $this->dispatchFrom(LoginUserCommand::class, $request);
if($response) return redirect()->route('feeds_path')->with('welcome-message', 'You are now logged in.');
return redirect()->back()->withInput()->with('error', 'We were unable to sign you in. Please check your credentials and try again.');
}
/**
* Logout the user.
*
* @param Request $request
*
* @return Response
*/
public function destroy(Request $request)
{
$this->dispatchFrom(LogoutUserCommand::class, $request, ['userId' => Auth::user()->id]);
return response()->json(['response' => 'success']);
}
}
================================================
FILE: app/Http/Controllers/UserController.php
================================================
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Repositories\User\UserRepository;
use App\Repositories\Feed\FeedRepository;
use Illuminate\Http\Request;
use Auth;
class UserController extends Controller {
/**
* Create a new instance of UsersController
*
* @param Object $userRepository
*
*/
public function __construct()
{
$this->middleware('auth');
$this->currentUser = Auth::user();
}
/**
* Display a listing of all the users.
*
* @param Request $request
*
* @return Response
*/
public function index(Request $request, UserRepository $userRepository)
{
$user = $this->currentUser;
$users = $userRepository->getPaginated(null, $request->firstname);
return view('users.index', compact('users', 'user'));
}
/**
* Display the specified user.
*
* @param int $id
*
* @return Response
*/
public function show($id, UserRepository $userRepository, FeedRepository $feedRepository)
{
$currentUser = $this->currentUser;
$user = $userRepository->findById($id);
$feeds = $feedRepository->getPublishedByUser($user);
return view('users.show', compact('currentUser', 'user', 'feeds'));
}
}
================================================
FILE: app/Http/Kernel.php
================================================
<?php namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel {
/**
* The application's global HTTP middleware stack.
*
* @var array
*/
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'App\Http\Middleware\VerifyCsrfToken',
'App\Http\Middleware\CustomVerifyCsrfToken',
];
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
];
}
================================================
FILE: app/Http/Middleware/Authenticate.php
================================================
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Authenticate {
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
return redirect()->guest('/');
}
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/CustomVerifyCsrfToken.php
================================================
<?php namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class CustomVerifyCsrfToken extends BaseVerifier
{
/**
* Routes we want to exclude.
*
* @var array
*/
protected $routes = [
'chatstatus',
'chat',
'message-response',
'friend-requests',
'friends',
'logout',
'message-delete'
];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Illuminate\Session\TokenMismatchException
*/
public function handle($request, \Closure $next)
{
if ($this->isReading($request)
|| $this->excludedRoutes($request)
|| $this->tokensMatch($request))
{
return $this->addCookieToResponse($request, $next($request));
}
throw new \TokenMismatchException;
}
/**
* This will return a bool value based on route checking.
* @param Request $request
* @return boolean
*/
protected function excludedRoutes($request)
{
foreach($this->routes as $route)
if ($request->is($route))
return true;
return false;
}
}
================================================
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
================================================
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Http\RedirectResponse;
class RedirectIfAuthenticated {
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->check())
{
return new RedirectResponse(url('/feeds'));
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/VerifyCsrfToken.php
================================================
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return parent::handle($request, $next);
}
}
================================================
FILE: app/Http/Requests/CreateMessageRequest.php
================================================
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreateMessageRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'receiverId' => 'required',
'body' => 'required',
'senderId' => 'required',
'senderProfileImage' => 'required',
'senderName' => 'required'
];
}
}
================================================
FILE: app/Http/Requests/CreateMessageResponseRequest.php
================================================
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreateMessageResponseRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'receiverId'=> 'required',
'body' => 'required',
'messageId' => 'required',
'senderId' => 'required',
'senderProfileImage' => 'required',
'senderName' => 'required'
];
}
}
================================================
FILE: app/Http/Requests/CreateSessionRequest.php
================================================
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreateSessionRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email',
'password' => 'required'
];
}
}
================================================
FILE: app/Http/Requests/RegisterUserRequest.php
================================================
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class RegisterUserRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$timestamp = strtotime('-15 years');
return [
'firstname' => 'required|min:2|alpha',
'lastname' => 'required|min:2|alpha',
'email' => 'required|email|unique:users',
'password' => 'required|confirmed|between:4,12',
'password_confirmation' => 'required',
'gender' => 'required|alpha|size:1',
'month' => 'required|numeric|between:01,12',
'day' => 'required|numeric|between:01,31',
'year' => 'required|numeric|before:'.date('Y', $timestamp),
'profileimage' => 'required|image|mimes:jpeg,jpg,bmp,png,gif'
];
}
}
================================================
FILE: app/Http/Requests/Request.php
================================================
<?php namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
abstract class Request extends FormRequest {
//
}
================================================
FILE: app/Http/routes.php
================================================
<?php
/**
* Registration
*/
Route::get('/', ['as' => 'registration_path', 'uses' => 'RegistrationController@create']);
Route::post('/', ['as' => 'registration_path', 'uses' => 'RegistrationController@store']);
/**
* Session
*/
Route::post('login', ['as' => 'login_path', 'uses' => 'SessionController@store']);
Route::delete('logout', ['as' => 'logout_path', 'uses' => 'SessionController@destroy']);
/**
* Feeds
*/
Route::get('feeds', ['as' => 'feeds_path', 'uses' => 'FeedController@index']);
Route::post('feeds', ['as' => 'feeds_path', 'uses' => 'FeedController@store']);
Route::get('feeds/more', ['as' => 'feeds_path_more', 'uses' => 'FeedController@more']);
/**
* Users
*/
Route::get('users', ['as' => 'users_path', 'uses' => 'UserController@index']);
Route::get('users/{id}', ['as' => 'user_profile_path', 'uses' => 'UserController@show']);
Route::post('users', ['as' => 'users_path', 'uses' => 'UserController@index']);
/**
* Friend-requests
*/
Route::get('friend-requests', ['as' => 'friend_request_path', 'uses' => 'FriendRequestController@index']);
Route::post('friend-requests', ['as' => 'friend_request_path', 'uses' => 'FriendRequestController@store']);
Route::delete('friend-requests', ['as' => 'friend_request_path', 'uses' => 'FriendRequestController@destroy']);
/**
* Friends
*/
Route::post('friends', ['as' => 'friends_path', 'uses' => 'FriendController@store']);
Route::get('friends', ['as' => 'friends_path', 'uses' => 'FriendController@index']);
Route::delete('friends', ['as' => 'friends_path', 'uses' => 'FriendController@destroy']);
/**
* Messages
*/
Route::get('messages/{id}', ['as' => 'show_message_path', 'uses' => 'MessageController@show'])->where('id', '[0-9]+');
Route::get('messages', ['as' => 'message_path', 'uses' => 'MessageController@index']);
Route::post('messages', ['as' => 'save_message_path', 'uses' => 'MessageController@store']);
Route::get('messages/compose/{id}', ['as' => 'compose_message_path', 'uses' => 'MessageController@create']);
Route::delete('message-delete', ['as' => 'delete_message_path', 'uses' => 'MessageController@destroy']);
/**
* MessageResponses
*/
Route::put('message-response', ['as' => 'message_responses_path', 'uses' => 'MessageResponseController@update']);
Route::post('message-response', ['as' => 'message_responses_path', 'uses' => 'MessageResponseController@store']);
/**
* Chat Status
*/
Route::post('chatstatus', ['as' => 'chat_status_path', 'uses' => 'ChatStatusController@update']);
/**
* Chat Message
*/
Route::post('chat', ['as' => 'conversation_path', 'uses' => 'ChatController@sendMessage']);
================================================
FILE: app/Mailers/Mailer.php
================================================
<?php namespace App\Mailers;
use Illuminate\Mail\Mailer as Mail;
abstract class Mailer
{
/**
* @var Object
*/
public $mail;
/**
* @param Object $mail
*/
public function __construct(Mail $mail)
{
$this->mail = $mail;
}
/**
* @param Object $user
*
* @param string $subject
*
* @param string $view
*
* @param array $data
*
*/
public function sendTo($user, $subject, $view, $data = [])
{
$this->mail->queue($view, $data, function($message) use ($user, $subject)
{
$message->to($user->email)->subject($subject);
});
return true;
}
}
================================================
FILE: app/Mailers/UserMailer.php
================================================
<?php namespace App\Mailers;
use App\User;
class UserMailer extends Mailer
{
/**
* Sending a welcome message to new User of Larasocial.
*
* @param User $user
*
*/
public function sendWelcomeMessageTo(User $user)
{
$subject = 'Welcome to Larasocial';
$view = 'email-alerts.registration-confirm';
$data = [];
return $this->sendTo($user, $subject, $view);
}
/**
* Send alert to user when friend request is sent to him.
*
* @param User $requestedUser
*
* @param User $requesterUser
*
*/
public function sendFriendRequestAlertTo(User $requestedUser, User $requesterUser)
{
$subject = 'Someone would like to be your friend';
$view = 'email-alerts.friend-request';
$data = ['userFirstname' => $requestedUser->firstname, 'requesterFirstname' => $requesterUser->firstname];
return $this->sendTo($requestedUser, $subject, $view, $data);
}
}
================================================
FILE: app/Message.php
================================================
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model {
/**
* These fields could be mass assigned
*/
protected $fillable = ['user_id', 'body', 'senderid', 'senderprofileimage', 'sendername'];
/**
* A message belongs to Many Users.
*
* @return Collection
*/
public function users()
{
return $this->belongsToMany('App\User')->withTimestamps();
}
/**
* Create a new message object.
*
* @param string body
* @param int senderId
* @param string senderProfileImage
* @param string senderName
*
* @return static
*/
public static function createMessage($body, $senderId, $senderProfileImage, $senderName)
{
$message = new static([
'body' => $body,
'senderid' => $senderId,
'senderprofileimage' => $senderProfileImage,
'sendername' => $senderName]);
return $message;
}
/**
* A Message has a many message responses.
*
* @return Collection
*/
public function messageResponses()
{
return $this->hasMany('App\MessageResponse')->orderBy('created_at', 'desc');
}
/**
* Get the last receiver id from the first response attached to an message.
*
* @return mixed
*/
public function getLastReceiverId()
{
return $this->messageResponses()->first()->receiverid;
}
/**
* Determine if a message belongs to a user.
*
* @param int $userId
*
* @return mixed
*/
public function belongsToUser($userId)
{
$users = $this->users()->get();
$userIds = [];
foreach ($users as $user) {
$userIds[] = $user->id;
}
return in_array($userId, $userIds);
}
}
================================================
FILE: app/MessageResponse.php
================================================
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
use DB;
class MessageResponse extends Model {
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['message_id','open', 'body', 'senderid', 'receiverid', 'senderprofileimage', 'sendername'];
/**
* Many Responses belong to many users.
*
* @return Collection
*/
public function users()
{
return $this->belongsToMany('App\User')->withTimestamps();
}
/**
* Many Responses belong to one Message
*
* @return Email
*/
public function message()
{
return $this->belongsTo('App\Message')->withTimestamps();
}
/**
* Create a new response object.
*
* @param string body
* @param int senderId
* @param string senderProfileImage
* @param string senderName
*
* @return static
*/
public static function createMessageResponse($body, $senderId, $receiverId, $senderProfileImage, $senderName)
{
$response = new static([
'body' => $body,
'senderid' => $senderId,
'receiverid' => $receiverId,
'senderprofileimage' => $senderProfileImage,
'sendername' => $senderName]);
return $response;
}
/**
* Get the message response subject.
*
* @return string
*/
public function getMessageResponseSubject()
{
return substr($this->body, 0, 35)."...";
}
/**
* Determine if message response was opened by current user.
*
* @param int userId
*
* @return boolean
*/
public function hasBeenOpenedBy($userId)
{
return DB::table('message_response_user')->where('user_id', $userId)->where('message_response_id', $this->id)->pluck('open');
}
/**
* Determine if message response was sent by a user.
*
* @param int userId
*
* @return boolean
*/
public function wasSentByThisUser($userId)
{
return ($this->senderid == $userId) ? true : false;
}
}
================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Repositories\User\CachingUserRepository;
use App\Repositories\User\EloquentUserRepository;
class AppServiceProvider extends ServiceProvider {
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->app->bind(
'ProcessImage',
'App\Services\ProcessImage'
);
$this->app->bind(
'App\Repositories\Feed\FeedRepository',
'App\Repositories\Feed\EloquentFeedRepository'
);
//Uncomment if you don't wish to cache all users
$this->app->bind(
'App\Repositories\User\UserRepository',
'App\Repositories\User\EloquentUserRepository'
);
$this->app->bind(
'App\Repositories\FriendRequest\FriendRequestRepository',
'App\Repositories\FriendRequest\EloquentFriendRequestRepository'
);
$this->app->bind(
'App\Repositories\Message\MessageRepository',
'App\Repositories\Message\EloquentMessageRepository'
);
$this->app->bind(
'MessageRequest',
'App\Http\Requests\CreateMessageRequest'
);
$this->app->bind(
'MessageResponseRequest',
'App\Http\Requests\CreateMessageResponseRequest'
);
//Uncomment if you wish to cache all users
// $this->app->bind('App\Repositories\User\UserRepository', function(){
// return new CachingUserRepository(new EloquentUserRepository, $this->app['cache.store']);
// });
}
}
================================================
FILE: app/Providers/BusServiceProvider.php
================================================
<?php namespace App\Providers;
use Illuminate\Bus\Dispatcher;
use Illuminate\Support\ServiceProvider;
class BusServiceProvider extends ServiceProvider {
/**
* Bootstrap any application services.
*
* @param \Illuminate\Bus\Dispatcher $dispatcher
* @return void
*/
public function boot(Dispatcher $dispatcher)
{
$dispatcher->mapUsing(function($command)
{
return Dispatcher::simpleMapping(
$command, 'App\Commands', 'App\Handlers\Commands'
);
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
================================================
FILE: app/Providers/ConfigServiceProvider.php
================================================
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ConfigServiceProvider extends ServiceProvider {
/**
* Overwrite any vendor / package configuration.
*
* This service provider is intended to provide a convenient location for you
* to overwrite any "vendor" or package configuration that you may want to
* modify before the application handles the incoming request / command.
*
* @return void
*/
public function register()
{
config([
//
]);
}
}
================================================
FILE: app/Providers/EventServiceProvider.php
================================================
<?php namespace App\Providers;
use App\Events\UserWasRegistered;
use App\Events\FriendRequestWasSent;
use App\Handlers\Events\EmailRegistrationConfirmation;
use App\Handlers\Events\EmailFriendRequest;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider {
/**
* The event handler mappings for the application.
*
* @var array
*/
protected $listen = [
UserWasRegistered::class => [
EmailRegistrationConfirmation::class,
],
FriendRequestWasSent::class => [
EmailFriendRequest::class,
],
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
//
}
}
================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
<?php namespace App\Providers;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider {
/**
* This namespace is applied to the controller routes in your routes file.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function boot(Router $router)
{
parent::boot($router);
//
}
/**
* Define the routes for the application.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function map(Router $router)
{
$router->group(['namespace' => $this->namespace], function($router)
{
require app_path('Http/routes.php');
});
}
}
================================================
FILE: app/Realtime/Chat.php
================================================
<?php namespace App\Realtime;
class Chat extends Realtime
{
/**
* Send chat message
*
* @param int $userId
*
* @param int $clientCode
*
* @param int $fromId
*
* @param string $message
*
*/
public function sendMessageTo($userId = "", $clientCode = "", $fromId = "", $message = "")
{
$this->broadcastTo($userId, $clientCode, $fromId, $message);
}
}
================================================
FILE: app/Realtime/Events.php
================================================
<?php namespace App\Realtime;
class Events extends Realtime
{
/**
* Update chat status bar of current user and her friends with chat status update.
*
* @param array $userIds
*
* @param int $clientCode
*
* @param int $relatedToId
*
* @param string $message
* return void
*
*/
public function updateChatStatusBar($userIds = [], $clientCode = "", $relatedToId = "", $message = "")
{
$this->broadcastToAll($userIds, $clientCode, $relatedToId, $message);
}
/**
* Update the chat list of a connected user when a friend has unfriended her.
*
* @param int $userId
*
* @param int $clientCode
*
* @param int $relatedToId
*
* @param string $message
*
* return void
*/
public function updateChatListFriendRemoved($userId = "", $clientCode = "", $relatedToId = "", $message = "")
{
$this->broadcastTo($userId, $clientCode, $relatedToId, $message);
}
}
================================================
FILE: app/Realtime/Realtime.php
================================================
<?php namespace App\Realtime;
use ElephantIO\Client;
use ElephantIO\Engine\SocketIO\Version1X;
abstract class Realtime
{
/**
* @var Object
*/
protected $socketClient;
/**
* Create a new Realtime instance.
*/
public function __construct()
{
$this->socketClient = new Client(new Version1X('http://localhost:3000'));
}
/**
* Send a websocket broadcast to all connected users.
* @param array $userIds
* @param int clientCode
* @param int relatedToId
* @param string message
*
*/
public function broadcastToAll($userIds = [], $clientCode = "", $relatedToId = "", $message = "")
{
$this->socketClient->initialize();
foreach ($userIds as $userId) {
$this->socketClient->emit('broadcast', [
'userId' => $userId,
'receiverId' => $userId,
'relatedToId' => $relatedToId,
'clientcode' => $clientCode,
'message' => $message
]);
}
$this->socketClient->close();
}
/**
* Send a websocket broadcast to one connected user.
* @param int $userId
* @param int clientCode
* @param int relatedToId
* @param string message
*
*/
public function broadcastTo($userId = "", $clientCode = "", $relatedToId = "", $message = "")
{
$this->socketClient->initialize();
$this->socketClient->emit('broadcast', [
'userId' => $userId,
'receiverId' => $userId,
'relatedToId' => $relatedToId,
'clientcode' => $clientCode,
'message' => $message
]);
$this->socketClient->close();
}
}
================================================
FILE: app/Repositories/Feed/EloquentFeedRepository.php
================================================
<?php namespace App\Repositories\Feed;
use App\User;
use App\Feed;
class EloquentFeedRepository implements FeedRepository
{
/**
* Get feeds posted by current user and friends.
*
* @param User $user
*
* @return mixed
*/
public function getPublishedByUserAndFriends(User $user)
{
$friendsUserIds = $user->friends()->lists('requester_id');
$friendsUserIds[] = $user->id;
return Feed::whereIn('user_id', $friendsUserIds)->latest()->take(10)->get();
}
public function getPublishedByUser(User $user)
{
return $user->feeds()->paginate(8);
}
/**
* Get feeds posted by current user and friends via ajax.
*
* @param User $user
*
* @param int $startingPoint
*
* @return mixed
*/
public function getPublishedByUserAndFriendsAjax(User $user, $skipQty)
{
$friendsUserIds = $user->friends()->lists('requester_id');
$friendsUserIds[] = $user->id;
return Feed::whereIn('user_id', $friendsUserIds)->latest()->skip($skipQty)->take(10)->get();
}
}
================================================
FILE: app/Repositories/Feed/FeedRepository.php
================================================
<?php namespace App\Repositories\Feed;
use App\User;
interface FeedRepository
{
public function getPublishedByUserAndFriends(User $user);
public function getPublishedByUser(User $user);
public function getPublishedByUserAndFriendsAjax(User $user, $skipQty);
}
================================================
FILE: app/Repositories/FriendRequest/EloquentFriendRequestRepository.php
================================================
<?php namespace App\Repositories\FriendRequest;
use App\User;
use App\FriendRequest;
use DB;
class EloquentFriendRequestRepository implements FriendRequestRepository
{
public function getIdsThatSentRequestToCurrentUser($id)
{
return DB::table('friend_requests')->where('user_id', $id)->lists('requester_id');
}
}
================================================
FILE: app/Repositories/FriendRequest/FriendRequestRepository.php
================================================
<?php namespace App\Repositories\FriendRequest;
use App\User;
interface FriendRequestRepository
{
public function getIdsThatSentRequestToCurrentUser($id);
}
================================================
FILE: app/Repositories/Message/EloquentMessageRepository.php
================================================
<?php namespace App\Repositories\Message;
use App\Message;
class EloquentMessageRepository implements MessageRepository
{
/**
* Fetch a message by id.
*
* @param int $id
*
* @return mixed
*/
public function findById($id)
{
return Message::find($id);
}
/**
* Fetch a message with all responses attached.
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithMessageResponses($id)
{
return Message::with(['MessageResponses'])->find($id);
}
}
================================================
FILE: app/Repositories/Message/MessageRepository.php
================================================
<?php namespace App\Repositories\Message;
use App\Message;
use App\User;
interface MessageRepository
{
public function findById($id);
public function findByIdWithMessageResponses($id);
}
================================================
FILE: app/Repositories/User/CachingUserRepository.php
================================================
<?php namespace App\Repositories\User;
use Illuminate\Contracts\Cache\Repository as Cache;
use App\User;
class CachingUserRepository implements UserRepository
{
/**
* @var App\Repositories\UserRepository
*/
private $repository;
/**
* @var Illuminate\Contracts\Cache\Repository
*/
private $cache;
/**
* @var int
*/
private $howMany;
/**
* @var byFirstname
*/
private $byFirstname;
/**
* Create a new instance of CachingUserRepository
*/
public function __construct(UserRepository $repository, Cache $cache)
{
$this->repository = $repository;
$this->cache = $cache;
}
/**
* Get a cached paginated list of all users
*
* @param int $howMany
*
* @param string $byFirstname
*
* @return mixed
*/
public function getPaginated($howMany = 10, $byFirstname = null)
{
$this->howMany = $howMany;
$this->byFirstname = $byFirstname;
if(! $this->byFirstname)
{
return $this->cache->remember('users.all', 20, function(){
});
}
else
{
return $this->repository->getPaginated($this->howMany, $this->byFirstname);
}
}
/**
* Fetch a user by id
*
* @param int $id
*
* @return mixed
*/
public function findById($id)
{
return $this->repository->findById($id);
}
/**
* Fetch a list of users by their ids
*
* @param array $id
*
* @return mixed
*/
public function findManyById(array $ids)
{
return $this->repository->findManyById($id);
}
/**
* Fetch a user by id with feeds attached
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithFeeds($id)
{
return $this->repository->findByIdWithFeeds($id);
}
/**
* Fetch a user by id with emails attached
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithMessages($id)
{
return $this->repository->findByIdWithMessages($id);
}
/**
* Fetch friend requests for a user
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithFriendRequests($id)
{
return $this->repository->findByIdWithFriendRequests($id);
}
/**
* Fetch friends for a user
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithFriends($id)
{
return $this->repository->findByIdWithFriends($id);
}
}
================================================
FILE: app/Repositories/User/EloquentUserRepository.php
================================================
<?php namespace App\Repositories\User;
use App\User;
use Auth;
class EloquentUserRepository implements UserRepository
{
/**
* Get a paginated list of all users
*
* @param int $howMany
*
* @param string $byKeyword
*
* @return mixed
*/
public function getPaginated($howMany = 10, $byFirstname = null)
{
if(is_null($byFirstname))
{
return User::whereNotIn('id', [Auth::user()->id])->orderBy('firstname', 'asc')->paginate($howMany);
}
return User::whereNotIn('id', [Auth::user()->id])->where('firstname', 'like', '%'.$byFirstname.'%')->orderBy('firstname', 'asc')->paginate($howMany);
}
/**
* Fetch a user by id
*
* @param int $id
*
* @return mixed
*/
public function findById($id)
{
return User::find($id);
}
/**
* Fetch many users by id
*
* @param int $id
*
* @return mixed
*/
public function findManyById(array $ids)
{
$users = [];
foreach ($ids as $id) {
$users[] = User::find($id);
}
return $users;
}
/**
* Fetch a user by id with feeds attached
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithFeeds($id)
{
return User::with([
'feeds' => function($query){
$query->latest();
}])->findOrFail($id);
}
/**
* Fetch a user by id with emails attached
*
* @param int $id
*
* @return mixed
*/
public function findByIdWithMessages($id)
{
return User::find($id)->messages()->paginate(10);
}
/**
* Fetch friend requests for a user
*
* @param int $userId
*
* @return mixed
*/
public function findByIdWithFriendRequests($userId)
{
$user = User::with([
'friendRequests' => function($query){
$query->latest();
}])->findOrFail($userId)->toArray();
return $user['friend_requests'];
}
/**
* Fetch friends for a user
*
* @param int $userId
*
* @return mixed
*/
public function findByIdWithFriends($userId)
{
$user = User::with([
'friends' => function($query){
$query->orderBy('firstname', 'desc');
}])->findOrFail($userId)->toArray();
return $user['friends'];
}
}
================================================
FILE: app/Repositories/User/UserRepository.php
================================================
<?php namespace App\Repositories\User;
use App\User;
interface UserRepository
{
public function getPaginated($howMany, $byKeyword);
public function findById($id);
public function findManyById(array $ids);
public function findByIdWithFeeds($id);
public function findByIdWithMessages($id);
public function findByIdWithFriends($userId);
}
================================================
FILE: app/Services/ProcessImage.php
================================================
<?php namespace App\Services;
use Faker\Factory as Faker;
use Image;
class ProcessImage
{
/**
* Save Image to the public folder
*
* @param $file, $path, $width, $height
*
* @return $filePath
*/
public function execute($file, $path, $width, $height)
{
$filename = $this->rename($file);
Image::make($file)->resize($width, $height)->save($path.$filename);
return asset('images/profileimages/'.$filename);
}
/**
* Rename image
*
* @param $file
*
* @return $filename
*/
public function rename($file)
{
$faker = Faker::create();
switch(exif_imagetype($file))
{
case IMAGETYPE_GIF : return $faker->sha1.'.gif';
break;
case IMAGETYPE_JPEG : return $faker->sha1.'.jpg';
break;
case IMAGETYPE_PNG : return $faker->sha1.'.png';
break;
case IMAGETYPE_BMP : return $faker->sha1.'.bmp';
}
}
}
================================================
FILE: app/User.php
================================================
<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use DB;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['firstname', 'lastname', 'email', 'password', 'gender', 'birthday', 'profileimage'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
/**
* A User can have many feeds.
*
* @return collection
*/
public function feeds()
{
return $this->hasMany('App\Feed')->latest();
}
/**
* A User can have many friend requests.
*
* @return collection
*/
public function friendRequests()
{
return $this->hasMany('App\FriendRequest');
}
/**
* A user can have many friends.
*
* @return Collection
*
*/
public function friends()
{
return $this->belongsToMany(Self::class, 'friends', 'requested_id', 'requester_id')->withTimestamps();
}
/**
* A user belons to many messages.
*
* @return Collection
*/
public function messages()
{
return $this->belongsToMany('App\Message')->withTimestamps();
}
/**
* A user has many message responses.
*
* @return Collection
*/
public function messageResponses()
{
return $this->belongsToMany('App\MessageResponse')->withTimestamps();
}
/**
* Register a new Larasocial user.
*
* @param string $firstname
*
* @param string $lastname
*
* @param string $email
*
* @param string $password
*
* @param string $gender
*
* @param string $birthday
*
* @param string $profileimage
*
* @return User $user
*/
public static function register($firstname, $lastname, $email, $password, $gender, $birthday, $profileimage)
{
$user = new static(compact('firstname', 'lastname', 'email', 'password', 'gender', 'birthday', 'profileimage'));
return $user;
}
/**
* Add a friend to a user.
*
* @param int $requestedUserId
*
* @return mixed
*/
public function createFriendShipWith($requesterUserId)
{
return $this->friends()->attach($requesterUserId, ['requested_id' => $this->id, 'requester_id' => $requesterUserId]);
}
/**
* Remove a friend from a user.
*
* @param int $requestedUserId
*
* @return mixed
*/
public function finishFriendshipWith($requesterUserId)
{
return $this->friends()->detach($requesterUserId, ['requested_id' => $this->id, 'requester_id' => $requesterUserId]);
}
/**
* Update the online status of current user
*
* @param int $status
*
* @return mixed
*/
public function updateOnlineStatus($status)
{
$this->onlinestatus = $status;
$this->save();
}
/**
* Determine if current user is friends with another user.
*
* @param int $otherUserId
*
* @return boolean
*/
public function isFriendsWith($otherUserId)
{
$currentUserFriends = DB::table('friends')->where('requester_id', $this->id)->lists('requested_id');
return in_array($otherUserId, $currentUserFriends);
}
/**
* Determine if current user has sent a friend request to another user.
*
* @param int $otherUserId
*
* @return boolean
*/
public function sentFriendRequestTo($otherUserId)
{
$friendRequestedByCurrentUser = DB::table('friend_requests')->where('requester_id', $this->id)->lists('user_id');
return in_array($otherUserId, $friendRequestedByCurrentUser);
}
/**
* Determine if current user has received a friend request from another user.
*
* @param int $otherUserId
*
* @return boolean
*/
public function receivedFriendRequestFrom($otherUserId)
{
$friendRequestsReceivedByCurrentUser = DB::table('friend_requests')->where('user_id', $this->id)->lists('requester_id');
return in_array($otherUserId, $friendRequestsReceivedByCurrentUser);
}
/**
* Determine if the current user is the same as the given one.
*
* @param int $id
*
* @return boolean
*
*/
public function is($id)
{
return $this->id == $id;
}
/**
* Determine if current user is available to chat.
*
* @return boolean
*/
public function isAvailableToChat()
{
return $this->chatstatus;
}
/**
* Update current user's chat status.
*
* @param boolean $chatStatus
*
* @return mixed
*/
public function updateChatStatus($chatStatus)
{
$this->chatstatus = $chatStatus;
$this->save();
}
/**
* Determine if current user is online.
*
* @return boolean
*/
public function isOnline()
{
return $this->onlinestatus;
}
}
================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make('Illuminate\Contracts\Console\Kernel');
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running. We will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
================================================
FILE: bootstrap/app.php
================================================
<?php
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
'Illuminate\Contracts\Http\Kernel',
'App\Http\Kernel'
);
$app->singleton(
'Illuminate\Contracts\Console\Kernel',
'App\Console\Kernel'
);
$app->singleton(
'Illuminate\Contracts\Debug\ExceptionHandler',
'App\Exceptions\Handler'
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;
================================================
FILE: bootstrap/autoload.php
================================================
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Composer Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/../vendor/autoload.php';
/*
|--------------------------------------------------------------------------
| Include The Compiled Class File
|--------------------------------------------------------------------------
|
| To dramatically increase your application's performance, you may use a
| compiled class file which contains all of the classes commonly used
| by a request. The Artisan "optimize" is used to create this file.
|
*/
$compiledPath = __DIR__.'/../vendor/compiled.php';
if (file_exists($compiledPath))
{
require $compiledPath;
}
================================================
FILE: bower_components/bootstrap/.bower.json
================================================
{
"name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.4",
"keywords": [
"css",
"js",
"less",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "http://getbootstrap.com",
"main": [
"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff",
"dist/fonts/glyphicons-halflings-regular.woff2"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"jquery": ">= 1.9.1"
},
"_release": "3.3.4",
"_resolution": {
"type": "version",
"tag": "v3.3.4",
"commit": "a10eb60bc0b07b747fa0c4ebd8821eb7307bd07f"
},
"_source": "git://github.com/twbs/bootstrap.git",
"_target": "~3.3.4",
"_originalSource": "bootstrap",
"_direct": true
}
================================================
FILE: bower_components/bootstrap/Gruntfile.js
================================================
/*!
* Bootstrap's Gruntfile
* http://getbootstrap.com
* Copyright 2013-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
module.exports = function (grunt) {
'use strict';
// Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function (string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
var fs = require('fs');
var path = require('path');
var npmShrinkwrap = require('npm-shrinkwrap');
var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var getLessVarsData = function () {
var filePath = path.join(__dirname, 'less/variables.less');
var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
var parser = new BsLessdocParser(fileContent);
return { sections: parser.parseFile() };
};
var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' });
Object.keys(configBridge.paths).forEach(function (key) {
configBridge.paths[key].forEach(function (val, i, arr) {
arr[i] = path.join('./docs/assets', val);
});
});
// Project configuration.
grunt.initConfig({
// Metadata.
pkg: grunt.file.readJSON('package.json'),
banner: '/*!\n' +
' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n' +
' */\n',
jqueryCheck: configBridge.config.jqueryCheck.join('\n'),
jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'),
// Task configuration.
clean: {
dist: 'dist',
docs: 'docs/dist'
},
jshint: {
options: {
jshintrc: 'js/.jshintrc'
},
grunt: {
options: {
jshintrc: 'grunt/.jshintrc'
},
src: ['Gruntfile.js', 'grunt/*.js']
},
core: {
src: 'js/*.js'
},
test: {
options: {
jshintrc: 'js/tests/unit/.jshintrc'
},
src: 'js/tests/unit/*.js'
},
assets: {
src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
}
},
jscs: {
options: {
config: 'js/.jscsrc'
},
grunt: {
src: '<%= jshint.grunt.src %>'
},
core: {
src: '<%= jshint.core.src %>'
},
test: {
src: '<%= jshint.test.src %>'
},
assets: {
options: {
requireCamelCaseOrUpperCaseIdentifiers: null
},
src: '<%= jshint.assets.src %>'
}
},
concat: {
options: {
banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
stripBanners: false
},
bootstrap: {
src: [
'js/transition.js',
'js/alert.js',
'js/button.js',
'js/carousel.js',
'js/collapse.js',
'js/dropdown.js',
'js/modal.js',
'js/tooltip.js',
'js/popover.js',
'js/scrollspy.js',
'js/tab.js',
'js/affix.js'
],
dest: 'dist/js/<%= pkg.name %>.js'
}
},
uglify: {
options: {
preserveComments: 'some'
},
core: {
src: '<%= concat.bootstrap.dest %>',
dest: 'dist/js/<%= pkg.name %>.min.js'
},
customize: {
src: configBridge.paths.customizerJs,
dest: 'docs/assets/js/customize.min.js'
},
docsJs: {
src: configBridge.paths.docsJs,
dest: 'docs/assets/js/docs.min.js'
}
},
qunit: {
options: {
inject: 'js/tests/unit/phantom.js'
},
files: 'js/tests/index.html'
},
less: {
compileCore: {
options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: '<%= pkg.name %>.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
},
src: 'less/bootstrap.less',
dest: 'dist/css/<%= pkg.name %>.css'
},
compileTheme: {
options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: '<%= pkg.name %>-theme.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
},
src: 'less/theme.less',
dest: 'dist/css/<%= pkg.name %>-theme.css'
}
},
autoprefixer: {
options: {
browsers: configBridge.config.autoprefixerBrowsers
},
core: {
options: {
map: true
},
src: 'dist/css/<%= pkg.name %>.css'
},
theme: {
options: {
map: true
},
src: 'dist/css/<%= pkg.name %>-theme.css'
},
docs: {
src: ['docs/assets/css/anchor.css', 'docs/assets/css/src/docs.css']
},
examples: {
expand: true,
cwd: 'docs/examples/',
src: ['**/*.css'],
dest: 'docs/examples/'
}
},
csslint: {
options: {
csslintrc: 'less/.csslintrc'
},
dist: [
'dist/css/bootstrap.css',
'dist/css/bootstrap-theme.css'
],
examples: [
'docs/examples/**/*.css'
],
docs: {
options: {
ids: false,
'overqualified-elements': false
},
src: 'docs/assets/css/src/docs.css'
}
},
cssmin: {
options: {
// TODO: disable `zeroUnits` optimization once clean-css 3.2 is released
// and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly
compatibility: 'ie8',
keepSpecialComments: '*',
advanced: false
},
minifyCore: {
src: 'dist/css/<%= pkg.name %>.css',
dest: 'dist/css/<%= pkg.name %>.min.css'
},
minifyTheme: {
src: 'dist/css/<%= pkg.name %>-theme.css',
dest: 'dist/css/<%= pkg.name %>-theme.min.css'
},
docs: {
src: [
'docs/assets/css/src/pygments-manni.css',
'docs/assets/css/src/anchor.css',
'docs/assets/css/src/docs.css'
],
dest: 'docs/assets/css/docs.min.css'
}
},
usebanner: {
options: {
position: 'top',
banner: '<%= banner %>'
},
files: {
src: 'dist/css/*.css'
}
},
csscomb: {
options: {
config: 'less/.csscomb.json'
},
dist: {
expand: true,
cwd: 'dist/css/',
src: ['*.css', '!*.min.css'],
dest: 'dist/css/'
},
examples: {
expand: true,
cwd: 'docs/examples/',
src: '**/*.css',
dest: 'docs/examples/'
},
docs: {
src: 'docs/assets/css/src/docs.css',
dest: 'docs/assets/css/src/docs.css'
}
},
copy: {
fonts: {
expand: true,
src: 'fonts/*',
dest: 'dist/'
},
docs: {
expand: true,
cwd: 'dist/',
src: [
'**/*'
],
dest: 'docs/dist/'
}
},
connect: {
server: {
options: {
port: 3000,
base: '.'
}
}
},
jekyll: {
options: {
config: '_config.yml'
},
docs: {},
github: {
options: {
raw: 'github: true'
}
}
},
jade: {
options: {
pretty: true,
data: getLessVarsData
},
customizerVars: {
src: 'docs/_jade/customizer-variables.jade',
dest: 'docs/_includes/customizer-variables.html'
},
customizerNav: {
src: 'docs/_jade/customizer-nav.jade',
dest: 'docs/_includes/nav/customize.html'
}
},
htmllint: {
options: {
ignore: [
'Attribute "autocomplete" not allowed on element "button" at this point.',
'Attribute "autocomplete" not allowed on element "input" at this point.',
'Element "img" is missing required attribute "src".'
]
},
src: '_gh_pages/**/*.html'
},
watch: {
src: {
files: '<%= jshint.core.src %>',
tasks: ['jshint:src', 'qunit', 'concat']
},
test: {
files: '<%= jshint.test.src %>',
tasks: ['jshint:test', 'qunit']
},
less: {
files: 'less/**/*.less',
tasks: 'less'
}
},
sed: {
versionNumber: {
pattern: (function () {
var old = grunt.option('oldver');
return old ? RegExp.quote(old) : old;
})(),
replacement: grunt.option('newver'),
recursive: true
}
},
'saucelabs-qunit': {
all: {
options: {
build: process.env.TRAVIS_JOB_ID,
throttled: 10,
maxRetries: 3,
maxPollRetries: 4,
urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
}
}
},
exec: {
npmUpdate: {
command: 'npm update'
}
},
compress: {
main: {
options: {
archive: 'bootstrap-<%= pkg.version %>-dist.zip',
mode: 'zip',
level: 9,
pretty: true
},
files: [
{
expand: true,
cwd: 'dist/',
src: ['**'],
dest: 'bootstrap-<%= pkg.version %>-dist'
}
]
}
}
});
// These plugins provide necessary tasks.
require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
require('time-grunt')(grunt);
// Docs HTML validation task
grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']);
var runSubset = function (subset) {
return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
};
var isUndefOrNonZero = function (val) {
return val === undefined || val !== '0';
};
// Test task.
var testSubtasks = [];
// Skip core tests if running a different subset of the test suite
if (runSubset('core') &&
// Skip core tests if this is a Savage build
process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']);
}
// Skip HTML validation if running a different subset of the test suite
if (runSubset('validate-html') &&
// Skip HTML5 validator on Travis when [skip validator] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
testSubtasks.push('validate-html');
}
// Only run Sauce Labs tests if there's a Sauce access key
if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
// Skip Sauce if running a different subset of the test suite
runSubset('sauce-js-unit') &&
// Skip Sauce on Travis when [skip sauce] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
testSubtasks.push('connect');
testSubtasks.push('saucelabs-qunit');
}
grunt.registerTask('test', testSubtasks);
grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']);
// JS distribution task.
grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
// CSS distribution task.
grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']);
grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'usebanner', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
// Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
// Default task.
grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
// Version numbering task.
// grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
// This can be overzealous, so its changes should always be manually reviewed!
grunt.registerTask('change-version-number', 'sed');
grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
// task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'jade');
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
var banner = grunt.template.process('<%= banner %>');
generateRawFiles(grunt, banner);
});
grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
var srcFiles = grunt.config.get('concat.bootstrap.src');
var destFilepath = 'dist/js/npm.js';
generateCommonJSModule(grunt, srcFiles, destFilepath);
});
// Docs task.
grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']);
grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']);
grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('prep-release', ['jekyll:github', 'compress']);
// Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
// This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
grunt.registerTask('_update-shrinkwrap', function () {
var done = this.async();
npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
if (err) {
grunt.fail.warn(err);
}
var dest = 'test-infra/npm-shrinkwrap.json';
fs.renameSync('npm-shrinkwrap.json', dest);
grunt.log.writeln('File ' + dest.cyan + ' updated.');
done();
});
});
};
================================================
FILE: bower_components/bootstrap/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2011-2015 Twitter, Inc
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:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
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.
================================================
FILE: bower_components/bootstrap/README.md
================================================
# [Bootstrap](http://getbootstrap.com)

[](https://www.npmjs.com/package/bootstrap)
[](https://travis-ci.org/twbs/bootstrap)
[](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[](https://saucelabs.com/u/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
To get started, check out <http://getbootstrap.com>!
## Table of contents
- [Quick start](#quick-start)
- [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [Community](#community)
- [Versioning](#versioning)
- [Creators](#creators)
- [Copyright and license](#copyright-and-license)
## Quick start
Five quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.4.zip).
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
- Install with [Bower](http://bower.io): `bower install bootstrap`.
- Install with [npm](https://www.npmjs.com): `npm install bootstrap`.
- Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`.
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
### What's included
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
```
bootstrap/
├── css/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ └── bootstrap-theme.min.css
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── fonts/
├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf
├── glyphicons-halflings-regular.woff
└── glyphicons-halflings-regular.woff2
```
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/chrome-developer-tools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
## Bugs and feature requests
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
## Documentation
Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getbootstrap.com>. The docs may also be run locally.
### Running documentation locally
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x).
- **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
4. Open <http://localhost:9001> in your browser, and voilà.
Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
### Documentation for previous releases
Documentation for v2.3.2 has been made available for the time being at <http://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
## Community
Keep track of development and community news.
- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
## Creators
**Mark Otto**
- <https://twitter.com/mdo>
- <https://github.com/mdo>
**Jacob Thornton**
- <https://twitter.com/fat>
- <https://github.com/fat>
## Copyright and license
Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
================================================
FILE: bower_components/bootstrap/bower.json
================================================
{
"name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.4",
"keywords": [
"css",
"js",
"less",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "http://getbootstrap.com",
"main": [
"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff",
"dist/fonts/glyphicons-halflings-regular.woff2"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"jquery": ">= 1.9.1"
}
}
================================================
FILE: bower_components/bootstrap/dist/css/bootstrap-theme.css
================================================
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default:disabled,
.btn-default[disabled] {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary:disabled,
.btn-primary[disabled] {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success:disabled,
.btn-success[disabled] {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info:disabled,
.btn-info[disabled] {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning:disabled,
.btn-warning[disabled] {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger:disabled,
.btn-danger[disabled] {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-color: #2e6da4;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */
================================================
FILE: bower_components/bootstrap/dist/css/bootstrap.css
================================================
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
padding: .35em .625em .75em;
margin: 0 2px;
border: 1px solid #c0c0c0;
}
legend {
padding: 0;
border: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
select {
background: #fff !important;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../fonts/glyphicons-halflings-regular.eot');
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
content: "\2a";
}
.glyphicon-plus:before {
content: "\2b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
content: "\20ac";
}
.glyphicon-minus:before {
content: "\2212";
}
.glyphicon-cloud:before {
content: "\2601";
}
.glyphicon-envelope:before {
content: "\2709";
}
.glyphicon-pencil:before {
content: "\270f";
}
.glyphicon-glass:before {
content: "\e001";
}
.glyphicon-music:before {
content: "\e002";
}
.glyphicon-search:before {
content: "\e003";
}
.glyphicon-heart:before {
content: "\e005";
}
.glyphicon-star:before {
content: "\e006";
}
.glyphicon-star-empty:before {
content: "\e007";
}
.glyphicon-user:before {
content: "\e008";
}
.glyphicon-film:before {
content: "\e009";
}
.glyphicon-th-large:before {
content: "\e010";
}
.glyphicon-th:before {
content: "\e011";
}
.glyphicon-th-list:before {
content: "\e012";
}
.glyphicon-ok:before {
content: "\e013";
}
.glyphicon-remove:before {
content: "\e014";
}
.glyphicon-zoom-in:before {
content: "\e015";
}
.glyphicon-zoom-out:before {
content: "\e016";
}
.glyphicon-off:before {
content: "\e017";
}
.glyphicon-signal:before {
content: "\e018";
}
.glyphicon-cog:before {
content: "\e019";
}
.glyphicon-trash:before {
content: "\e020";
}
.glyphicon-home:before {
content: "\e021";
}
.glyphicon-file:before {
content: "\e022";
}
.glyphicon-time:before {
content: "\e023";
}
.glyphicon-road:before {
content: "\e024";
}
.glyphicon-download-alt:before {
content: "\e025";
}
.glyphicon-download:before {
content: "\e026";
}
.glyphicon-upload:before {
content: "\e027";
}
.glyphicon-inbox:before {
content: "\e028";
}
.glyphicon-play-circle:before {
content: "\e029";
}
.glyphicon-repeat:before {
content: "\e030";
}
.glyphicon-refresh:before {
content: "\e031";
}
.glyphicon-list-alt:before {
content: "\e032";
}
.glyphicon-lock:before {
content: "\e033";
}
.glyphicon-flag:before {
content: "\e034";
}
.glyphicon-headphones:before {
content: "\e035";
}
.glyphicon-volume-off:before {
content: "\e036";
}
.glyphicon-volume-down:before {
content: "\e037";
}
.glyphicon-volume-up:before {
content: "\e038";
}
.glyphicon-qrcode:before {
content: "\e039";
}
.glyphicon-barcode:before {
content: "\e040";
}
.glyphicon-tag:before {
content: "\e041";
}
.glyphicon-tags:before {
content: "\e042";
}
.glyphicon-book:before {
content: "\e043";
}
.glyphicon-bookmark:before {
content: "\e044";
}
.glyphicon-print:before {
content: "\e045";
}
.glyphicon-camera:before {
content: "\e046";
}
.glyphicon-font:before {
content: "\e047";
}
.glyphicon-bold:before {
content: "\e048";
}
.glyphicon-italic:before {
content: "\e049";
}
.glyphicon-text-height:before {
content: "\e050";
}
.glyphicon-text-width:before {
content: "\e051";
}
.glyphicon-align-left:before {
content: "\e052";
}
.glyphicon-align-center:before {
content: "\e053";
}
.glyphicon-align-right:before {
content: "\e054";
}
.glyphicon-align-justify:before {
content: "\e055";
}
.glyphicon-list:before {
content: "\e056";
}
.glyphicon-indent-left:before {
content: "\e057";
}
.glyphicon-indent-right:before {
content: "\e058";
}
.glyphicon-facetime-video:before {
content: "\e059";
}
.glyphicon-picture:before {
content: "\e060";
}
.glyphicon-map-marker:before {
content: "\e062";
}
.glyphicon-adjust:before {
content: "\e063";
}
.glyphicon-tint:before {
content: "\e064";
}
.glyphicon-edit:before {
content: "\e065";
}
.glyphicon-share:before {
content: "\e066";
}
.glyphicon-check:before {
content: "\e067";
}
.glyphicon-move:before {
content: "\e068";
}
.glyphicon-step-backward:before {
content: "\e069";
}
.glyphicon-fast-backward:before {
content: "\e070";
}
.glyphicon-backward:before {
content: "\e071";
}
.glyphicon-play:before {
content: "\e072";
}
.glyphicon-pause:before {
content: "\e073";
}
.glyphicon-stop:before {
content: "\e074";
}
.glyphicon-forward:before {
content: "\e075";
}
.glyphicon-fast-forward:before {
content: "\e076";
}
.glyphicon-step-forward:before {
content: "\e077";
}
.glyphicon-eject:before {
content: "\e078";
}
.glyphicon-chevron-left:before {
content: "\e079";
}
.glyphicon-chevron-right:before {
content: "\e080";
}
.glyphicon-plus-sign:before {
content: "\e081";
}
.glyphicon-minus-sign:before {
content: "\e082";
}
.glyphicon-remove-sign:before {
content: "\e083";
}
.glyphicon-ok-sign:before {
content: "\e084";
}
.glyphicon-question-sign:before {
content: "\e085";
}
.glyphicon-info-sign:before {
content: "\e086";
}
.glyphicon-screenshot:before {
content: "\e087";
}
.glyphicon-remove-circle:before {
content: "\e088";
}
.glyphicon-ok-circle:before {
content: "\e089";
}
.glyphicon-ban-circle:before {
content: "\e090";
}
.glyphicon-arrow-left:before {
content: "\e091";
}
.glyphicon-arrow-right:before {
content: "\e092";
}
.glyphicon-arrow-up:before {
content: "\e093";
}
.glyphicon-arrow-down:before {
content: "\e094";
}
.glyphicon-share-alt:before {
content: "\e095";
}
.glyphicon-resize-full:before {
content: "\e096";
}
.glyphicon-resize-small:before {
content: "\e097";
}
.glyphicon-exclamation-sign:before {
content: "\e101";
}
.glyphicon-gift:before {
content: "\e102";
}
.glyphicon-leaf:before {
content: "\e103";
}
.glyphicon-fire:before {
content: "\e104";
}
.glyphicon-eye-open:before {
content: "\e105";
}
.glyphicon-eye-close:before {
content: "\e106";
}
.glyphicon-warning-sign:before {
content: "\e107";
}
.glyphicon-plane:before {
content: "\e108";
}
.glyphicon-calendar:before {
content: "\e109";
}
.glyphicon-random:before {
content: "\e110";
}
.glyphicon-comment:before {
content: "\e111";
}
.glyphicon-magnet:before {
content: "\e112";
}
.glyphicon-chevron-up:before {
content: "\e113";
}
.glyphicon-chevron-down:before {
content: "\e114";
}
.glyphicon-retweet:before {
content: "\e115";
}
.glyphicon-shopping-cart:before {
content: "\e116";
}
.glyphicon-folder-close:before {
content: "\e117";
}
.glyphicon-folder-open:before {
content: "\e118";
}
.glyphicon-resize-vertical:before {
content: "\e119";
}
.glyphicon-resize-horizontal:before {
content: "\e120";
}
.glyphicon-hdd:before {
content: "\e121";
}
.glyphicon-bullhorn:before {
content: "\e122";
}
.glyphicon-bell:before {
content: "\e123";
}
.glyphicon-certificate:before {
content: "\e124";
}
.glyphicon-thumbs-up:before {
content: "\e125";
}
.glyphicon-thumbs-down:before {
content: "\e126";
}
.glyphicon-hand-right:before {
content: "\e127";
}
.glyphicon-hand-left:before {
content: "\e128";
}
.glyphicon-hand-up:before {
content: "\e129";
}
.glyphicon-hand-down:before {
content: "\e130";
}
.glyphicon-circle-arrow-right:before {
content: "\e131";
}
.glyphicon-circle-arrow-left:before {
content: "\e132";
}
.glyphicon-circle-arrow-up:before {
content: "\e133";
}
.glyphicon-circle-arrow-down:before {
content: "\e134";
}
.glyphicon-globe:before {
content: "\e135";
}
.glyphicon-wrench:before {
content: "\e136";
}
.glyphicon-tasks:before {
content: "\e137";
}
.glyphicon-filter:before {
content: "\e138";
}
.glyphicon-briefcase:before {
content: "\e139";
}
.glyphicon-fullscreen:before {
content: "\e140";
}
.glyphicon-dashboard:before {
content: "\e141";
}
.glyphicon-paperclip:before {
content: "\e142";
}
.glyphicon-heart-empty:before {
content: "\e143";
}
.glyphicon-link:before {
content: "\e144";
}
.glyphicon-phone:before {
content: "\e145";
}
.glyphicon-pushpin:before {
content: "\e146";
}
.glyphicon-usd:before {
content: "\e148";
}
.glyphicon-gbp:before {
content: "\e149";
}
.glyphicon-sort:before {
content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
content: "\e152";
}
.glyphicon-sort-by-order:before {
content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
content: "\e154";
}
.glyphicon-sort-by-attributes:before {
content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
content: "\e156";
}
.glyphicon-unchecked:before {
content: "\e157";
}
.glyphicon-expand:before {
content: "\e158";
}
.glyphicon-collapse-down:before {
content: "\e159";
}
.glyphicon-collapse-up:before {
content: "\e160";
}
.glyphicon-log-in:before {
content: "\e161";
}
.glyphicon-flash:before {
content: "\e162";
}
.glyphicon-log-out:before {
content: "\e163";
}
.glyphicon-new-window:before {
content: "\e164";
}
.glyphicon-record:before {
content: "\e165";
}
.glyphicon-save:before {
content: "\e166";
}
.glyphicon-open:before {
content: "\e167";
}
.glyphicon-saved:before {
content: "\e168";
}
.glyphicon-import:before {
content: "\e169";
}
.glyphicon-export:before {
content: "\e170";
}
.glyphicon-send:before {
content: "\e171";
}
.glyphicon-floppy-disk:before {
content: "\e172";
}
.glyphicon-floppy-saved:before {
content: "\e173";
}
.glyphicon-floppy-remove:before {
content: "\e174";
}
.glyphicon-floppy-save:before {
content: "\e175";
}
.glyphicon-floppy-open:before {
content: "\e176";
}
.glyphicon-credit-card:before {
content: "\e177";
}
.glyphicon-transfer:before {
content: "\e178";
}
.glyphicon-cutlery:before {
content: "\e179";
}
.glyphicon-header:before {
content: "\e180";
}
.glyphicon-compressed:before {
content: "\e181";
}
.glyphicon-earphone:before {
content: "\e182";
}
.glyphicon-phone-alt:before {
content: "\e183";
}
.glyphicon-tower:before {
content: "\e184";
}
.glyphicon-stats:before {
content: "\e185";
}
.glyphicon-sd-video:before {
content: "\e186";
}
.glyphicon-hd-video:before {
content: "\e187";
}
.glyphicon-subtitles:before {
content: "\e188";
}
.glyphicon-sound-stereo:before {
content: "\e189";
}
.glyphicon-sound-dolby:before {
content: "\e190";
}
.glyphicon-sound-5-1:before {
content: "\e191";
}
.glyphicon-sound-6-1:before {
content: "\e192";
}
.glyphicon-sound-7-1:before {
content: "\e193";
}
.glyphicon-copyright-mark:before {
content: "\e194";
}
.glyphicon-registration-mark:before {
content: "\e195";
}
.glyphicon-cloud-download:before {
content: "\e197";
}
.glyphicon-cloud-upload:before {
content: "\e198";
}
.glyphicon-tree-conifer:before {
content: "\e199";
}
.glyphicon-tree-deciduous:before {
content: "\e200";
}
.glyphicon-cd:before {
content: "\e201";
}
.glyphicon-save-file:before {
content: "\e202";
}
.glyphicon-open-file:before {
content: "\e203";
}
.glyphicon-level-up:before {
content: "\e204";
}
.glyphicon-copy:before {
content: "\e205";
}
.glyphicon-paste:before {
content: "\e206";
}
.glyphicon-alert:before {
content: "\e209";
}
.glyphicon-equalizer:before {
content: "\e210";
}
.glyphicon-king:before {
content: "\e211";
}
.glyphicon-queen:before {
content: "\e212";
}
.glyphicon-pawn:before {
content: "\e213";
}
.glyphicon-bishop:before {
content: "\e214";
}
.glyphicon-knight:before {
content: "\e215";
}
.glyphicon-baby-formula:before {
content: "\e216";
}
.glyphicon-tent:before {
content: "\26fa";
}
.glyphicon-blackboard:before {
content: "\e218";
}
.glyphicon-bed:before {
content: "\e219";
}
.glyphicon-apple:before {
content: "\f8ff";
}
.glyphicon-erase:before {
content: "\e221";
}
.glyphicon-hourglass:before {
content: "\231b";
}
.glyphicon-lamp:before {
content: "\e223";
}
.glyphicon-duplicate:before {
content: "\e224";
}
.glyphicon-piggy-bank:before {
content: "\e225";
}
.glyphicon-scissors:before {
content: "\e226";
}
.glyphicon-bitcoin:before {
content: "\e227";
}
.glyphicon-btc:before {
content: "\e227";
}
.glyphicon-xbt:before {
content: "\e227";
}
.glyphicon-yen:before {
content: "\00a5";
}
.glyphicon-jpy:before {
content: "\00a5";
}
.glyphicon-ruble:before {
content: "\20bd";
}
.glyphicon-rub:before {
content: "\20bd";
}
.glyphicon-scale:before {
content: "\e230";
}
.glyphicon-ice-lolly:before {
content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
content: "\e232";
}
.glyphicon-education:before {
content: "\e233";
}
.glyphicon-option-horizontal:before {
content: "\e234";
}
.glyphicon-option-vertical:before {
content: "\e235";
}
.glyphicon-menu-hamburger:before {
content: "\e236";
}
.glyphicon-modal-window:before {
content: "\e237";
}
.glyphicon-oil:before {
content: "\e238";
}
.glyphicon-grain:before {
content: "\e239";
}
.glyphicon-sunglasses:before {
content: "\e240";
}
.glyphicon-text-size:before {
content: "\e241";
}
.glyphicon-text-color:before {
content: "\e242";
}
.glyphicon-text-background:before {
content: "\e243";
}
.glyphicon-object-align-top:before {
content: "\e244";
}
.glyphicon-object-align-bottom:before {
content: "\e245";
}
.glyphicon-object-align-horizontal:before {
content: "\e246";
}
.glyphicon-object-align-left:before {
content: "\e247";
}
.glyphicon-object-align-vertical:before {
content: "\e248";
}
.glyphicon-object-align-right:before {
content: "\e249";
}
.glyphicon-triangle-right:before {
content: "\e250";
}
.glyphicon-triangle-left:before {
content: "\e251";
}
.glyphicon-triangle-bottom:before {
content: "\e252";
}
.glyphicon-triangle-top:before {
content: "\e253";
}
.glyphicon-console:before {
content: "\e254";
}
.glyphicon-superscript:before {
content: "\e255";
}
.glyphicon-subscript:before {
content: "\e256";
}
.glyphicon-menu-left:before {
content: "\e257";
}
.glyphicon-menu-right:before {
content: "\e258";
}
.glyphicon-menu-down:before {
content: "\e259";
}
.glyphicon-menu-up:before {
content: "\e260";
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.42857143;
color: #333;
background-color: #fff;
}
input,
button,
select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
color: #337ab7;
text-decoration: none;
}
a:hover,
a:focus {
color: #23527c;
text-decoration: underline;
}
a:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
figure {
margin: 0;
}
img {
vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
display: block;
max-width: 100%;
height: auto;
}
.img-rounded {
border-radius: 6px;
}
.img-thumbnail {
display: inline-block;
max-width: 100%;
height: auto;
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
.img-circle {
border-radius: 50%;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
[role="button"] {
cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family: inherit;
font-weight: 500;
line-height: 1.1;
color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
font-weight: normal;
line-height: 1;
color: #777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
margin-top: 20px;
margin-bottom: 10px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
margin-top: 10px;
margin-bottom: 10px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
font-size: 75%;
}
h1,
.h1 {
font-size: 36px;
}
h2,
.h2 {
font-size: 30px;
}
h3,
.h3 {
font-size: 24px;
}
h4,
.h4 {
font-size: 18px;
}
h5,
.h5 {
font-size: 14px;
}
h6,
.h6 {
font-size: 12px;
}
p {
margin: 0 0 10px;
}
.lead {
margin-bottom: 20px;
font-size: 16px;
font-weight: 300;
line-height: 1.4;
}
@media (min-width: 768px) {
.lead {
font-size: 21px;
}
}
small,
.small {
font-size: 85%;
}
mark,
.mark {
padding: .2em;
background-color: #fcf8e3;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-justify {
text-align: justify;
}
.text-nowrap {
white-space: nowrap;
}
.text-lowercase {
text-transform: lowercase;
}
.text-uppercase {
text-transform: uppercase;
}
.text-capitalize {
text-transform: capitalize;
}
.text-muted {
color: #777;
}
.text-primary {
color: #337ab7;
}
a.text-primary:hover {
color: #286090;
}
.text-success {
color: #3c763d;
}
a.text-success:hover {
color: #2b542c;
}
.text-info {
color: #31708f;
}
a.text-info:hover {
color: #245269;
}
.text-warning {
color: #8a6d3b;
}
a.text-warning:hover {
color: #66512c;
}
.text-danger {
color: #a94442;
}
a.text-danger:hover {
color: #843534;
}
.bg-primary {
color: #fff;
background-color: #337ab7;
}
a.bg-primary:hover {
background-color: #286090;
}
.bg-success {
background-color: #dff0d8;
}
a.bg-success:hover {
background-color: #c1e2b3;
}
.bg-info {
background-color: #d9edf7;
}
a.bg-info:hover {
background-color: #afd9ee;
}
.bg-warning {
background-color: #fcf8e3;
}
a.bg-warning:hover {
background-color: #f7ecb5;
}
.bg-danger {
background-color: #f2dede;
}
a.bg-danger:hover {
background-color: #e4b9b9;
}
.page-header {
padding-bottom: 9px;
margin: 40px 0 20px;
border-bottom: 1px solid #eee;
}
ul,
ol {
margin-top: 0;
margin-bottom: 10px;
}
ul ul,
ol ul,
ul ol,
ol ol {
margin-bottom: 0;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
margin-left: -5px;
list-style: none;
}
.list-inline > li {
display: inline-block;
padding-right: 5px;
padding-left: 5px;
}
dl {
margin-top: 0;
margin-bottom: 20px;
}
dt,
dd {
line-height: 1.42857143;
}
dt {
font-weight: bold;
}
dd {
margin-left: 0;
}
@media (min-width: 768px) {
.dl-horizontal dt {
float: left;
width: 160px;
overflow: hidden;
clear: left;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
}
.dl-horizontal dd {
margin-left: 180px;
}
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #777;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
blockquote {
padding: 10px 20px;
margin: 0 0 20px;
font-size: 17.5px;
border-left: 5px solid #eee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
display: block;
font-size: 80%;
line-height: 1.42857143;
color: #777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
padding-right: 15px;
padding-left: 0;
text-align: right;
border-right: 5px solid #eee;
border-left: 0;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
content: '\00A0 \2014';
}
address {
margin-bottom: 20px;
font-style: normal;
line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 4px;
}
kbd {
padding: 2px 4px;
font-size: 90%;
color: #fff;
background-color: #333;
border-radius: 3px;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: bold;
-webkit-box-shadow: none;
box-shadow: none;
}
pre {
display: block;
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
line-height: 1.42857143;
color: #333;
word-break: break-all;
word-wrap: break-word;
background-color: #f5f5f5;
border: 1px solid #ccc;
border-radius: 4px;
}
pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 768px) {
.container {
width: 750px;
}
}
@media (min-width: 992px) {
.container {
width: 970px;
}
}
@media (min-width: 1200px) {
.container {
width: 1170px;
}
}
.container-fluid {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.row {
margin-right: -15px;
margin-left: -15px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
float: left;
}
.col-xs-12 {
width: 100%;
}
.col-xs-11 {
width: 91.66666667%;
}
.col-xs-10 {
width: 83.33333333%;
}
.col-xs-9 {
width: 75%;
}
.col-xs-8 {
width: 66.66666667%;
}
.col-xs-7 {
width: 58.33333333%;
}
.col-xs-6 {
width: 50%;
}
.col-xs-5 {
width: 41.66666667%;
}
.col-xs-4 {
width: 33.33333333%;
}
.col-xs-3 {
width: 25%;
}
.col-xs-2 {
width: 16.66666667%;
}
.col-xs-1 {
width: 8.33333333%;
}
.col-xs-pull-12 {
right: 100%;
}
.col-xs-pull-11 {
right: 91.66666667%;
}
.col-xs-pull-10 {
right: 83.33333333%;
}
.col-xs-pull-9 {
right: 75%;
}
.col-xs-pull-8 {
right: 66.66666667%;
}
.col-xs-pull-7 {
right: 58.33333333%;
}
.col-xs-pull-6 {
right: 50%;
}
.col-xs-pull-5 {
right: 41.66666667%;
}
.col-xs-pull-4 {
right: 33.33333333%;
}
.col-xs-pull-3 {
right: 25%;
}
.col-xs-pull-2 {
right: 16.66666667%;
}
.col-xs-pull-1 {
right: 8.33333333%;
}
.col-xs-pull-0 {
right: auto;
}
.col-xs-push-12 {
left: 100%;
}
.col-xs-push-11 {
left: 91.66666667%;
}
.col-xs-push-10 {
left: 83.33333333%;
}
.col-xs-push-9 {
left: 75%;
}
.col-xs-push-8 {
left: 66.66666667%;
}
.col-xs-push-7 {
left: 58.33333333%;
}
.col-xs-push-6 {
left: 50%;
}
.col-xs-push-5 {
left: 41.66666667%;
}
.col-xs-push-4 {
left: 33.33333333%;
}
.col-xs-push-3 {
left: 25%;
}
.col-xs-push-2 {
left: 16.66666667%;
}
.col-xs-push-1 {
left: 8.33333333%;
}
.col-xs-push-0 {
left: auto;
}
.col-xs-offset-12 {
margin-left: 100%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-offset-0 {
margin-left: 0;
}
@media (min-width: 768px) {
.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
float: left;
}
.col-sm-12 {
width: 100%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-8 {
width: 66.66666667%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-2 {
width: 16.66666667%;
}
.col-sm-1 {
width: 8.33333333%;
}
.col-sm-pull-12 {
right: 100%;
}
.col-sm-pull-11 {
right: 91.66666667%;
}
.col-sm-pull-10 {
right: 83.33333333%;
}
.col-sm-pull-9 {
right: 75%;
}
.col-sm-pull-8 {
right: 66.66666667%;
}
.col-sm-pull-7 {
right: 58.33333333%;
}
.col-sm-pull-6 {
right: 50%;
}
.col-sm-pull-5 {
right: 41.66666667%;
}
.col-sm-pull-4 {
right: 33.33333333%;
}
.col-sm-pull-3 {
right: 25%;
}
.col-sm-pull-2 {
right: 16.66666667%;
}
.col-sm-pull-1 {
right: 8.33333333%;
}
.col-sm-pull-0 {
right: auto;
}
.col-sm-push-12 {
left: 100%;
}
.col-sm-push-11 {
left: 91.66666667%;
}
.col-sm-push-10 {
left: 83.33333333%;
}
.col-sm-push-9 {
left: 75%;
}
.col-sm-push-8 {
left: 66.66666667%;
}
.col-sm-push-7 {
left: 58.33333333%;
}
.col-sm-push-6 {
left: 50%;
}
.col-sm-push-5 {
left: 41.66666667%;
}
.col-sm-push-4 {
left: 33.33333333%;
}
.col-sm-push-3 {
left: 25%;
}
.col-sm-push-2 {
left: 16.66666667%;
}
.col-sm-push-1 {
left: 8.33333333%;
}
.col-sm-push-0 {
left: auto;
}
.col-sm-offset-12 {
margin-left: 100%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-offset-0 {
margin-left: 0;
}
}
@media (min-width: 992px) {
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
float: left;
}
.col-md-12 {
width: 100%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-9 {
width: 75%;
}
.col-md-8 {
width: 66.66666667%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-6 {
width: 50%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-3 {
width: 25%;
}
.col-md-2 {
width: 16.66666667%;
}
.col-md-1 {
width: 8.33333333%;
}
.col-md-pull-12 {
right: 100%;
}
.col-md-pull-11 {
right: 91.66666667%;
}
.col-md-pull-10 {
right: 83.33333333%;
}
.col-md-pull-9 {
right: 75%;
}
.col-md-pull-8 {
right: 66.66666667%;
}
.col-md-pull-7 {
right: 58.33333333%;
}
.col-md-pull-6 {
right: 50%;
}
.col-md-pull-5 {
right: 41.66666667%;
}
.col-md-pull-4 {
right: 33.33333333%;
}
.col-md-pull-3 {
right: 25%;
}
.col-md-pull-2 {
right: 16.66666667%;
}
.col-md-pull-1 {
right: 8.33333333%;
}
.col-md-pull-0 {
right: auto;
}
.col-md-push-12 {
left: 100%;
}
.col-md-push-11 {
left: 91.66666667%;
}
.col-md-push-10 {
left: 83.33333333%;
}
.col-md-push-9 {
left: 75%;
}
.col-md-push-8 {
left: 66.66666667%;
}
.col-md-push-7 {
left: 58.33333333%;
}
.col-md-push-6 {
left: 50%;
}
.col-md-push-5 {
left: 41.66666667%;
}
.col-md-push-4 {
left: 33.33333333%;
}
.col-md-push-3 {
left: 25%;
}
.col-md-push-2 {
left: 16.66666667%;
}
.col-md-push-1 {
left: 8.33333333%;
}
.col-md-push-0 {
left: auto;
}
.col-md-offset-12 {
margin-left: 100%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-offset-0 {
margin-left: 0;
}
}
@media (min-width: 1200px) {
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
float: left;
}
.col-lg-12 {
width: 100%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-8 {
width: 66.66666667%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-2 {
width: 16.66666667%;
}
.col-lg-1 {
width: 8.33333333%;
}
.col-lg-pull-12 {
right: 100%;
}
.col-lg-pull-11 {
right: 91.66666667%;
}
.col-lg-pull-10 {
right: 83.33333333%;
}
.col-lg-pull-9 {
right: 75%;
}
.col-lg-pull-8 {
right: 66.66666667%;
}
.col-lg-pull-7 {
right: 58.33333333%;
}
.col-lg-pull-6 {
right: 50%;
}
.col-lg-pull-5 {
right: 41.66666667%;
}
.col-lg-pull-4 {
right: 33.33333333%;
}
.col-lg-pull-3 {
right: 25%;
}
.col-lg-pull-2 {
right: 16.66666667%;
}
.col-lg-pull-1 {
right: 8.33333333%;
}
.col-lg-pull-0 {
right: auto;
}
.col-lg-push-12 {
left: 100%;
}
.col-lg-push-11 {
left: 91.66666667%;
}
.col-lg-push-10 {
left: 83.33333333%;
}
.col-lg-push-9 {
left: 75%;
}
.col-lg-push-8 {
left: 66.66666667%;
}
.col-lg-push-7 {
left: 58.33333333%;
}
.col-lg-push-6 {
left: 50%;
}
.col-lg-push-5 {
left: 41.66666667%;
}
.col-lg-push-4 {
left: 33.33333333%;
}
.col-lg-push-3 {
left: 25%;
}
.col-lg-push-2 {
left: 16.66666667%;
}
.col-lg-push-1 {
left: 8.33333333%;
}
.col-lg-push-0 {
left: auto;
}
.col-lg-offset-12 {
margin-left: 100%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-offset-0 {
margin-left: 0;
}
}
table {
background-color: transparent;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #777;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #ddd;
}
.table .table {
background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
background-color: #f5f5f5;
}
table col[class*="col-"] {
position: static;
display: table-column;
float: none;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
display: table-cell;
float: none;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ebcccc;
}
.table-responsive {
min-height: .01%;
overflow-x: auto;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 15px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #ddd;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: 20px;
font-size: 21px;
line-height: inherit;
color: #333;
border: 0;
border-bottom: 1px solid #e5e5e5;
}
label {
display: inline-block;
max-width: 100%;
margin-bottom: 5px;
font-weight: bold;
}
input[type="search"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
margin: 4px 0 0;
margin-top: 1px \9;
line-height: normal;
}
input[type="file"] {
display: block;
}
input[type="range"] {
display: block;
width: 100%;
}
select[multiple],
select[size] {
height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
output {
display: block;
padding-top: 7px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
}
.form-control {
display: block;
width: 100%;
height: 34px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
}
.form-control::-moz-placeholder {
color: #999;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #999;
}
.form-control::-webkit-input-placeholder {
color: #999;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eee;
opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed;
}
textarea.form-control {
height: auto;
}
input[type="search"] {
-webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
line-height: 34px;
}
input[type="date"].input-sm,
input[type="time"].input-sm,
input[type="datetime-local"].input-sm,
input[type="month"].input-sm,
.input-group-sm input[type="date"],
.input-group-sm input[type="time"],
.input-group-sm input[type="datetime-local"],
.input-group-sm input[type="month"] {
line-height: 30px;
}
input[type="date"].input-lg,
input[type="time"].input-lg,
input[type="datetime-local"].input-lg,
input[type="month"].input-lg,
.input-group-lg input[type="date"],
.input-group-lg input[type="time"],
.input-group-lg input[type="datetime-local"],
.input-group-lg input[type="month"] {
line-height: 46px;
}
}
.form-group {
margin-bottom: 15px;
}
.radio,
.checkbox {
position: relative;
display: block;
margin-top: 10px;
margin-bottom: 10px;
}
.radio label,
.checkbox label {
min-height: 20px;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
position: absolute;
margin-top: 4px \9;
margin-left: -20px;
}
.radio + .radio,
.checkbox + .checkbox {
margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
position: relative;
display: inline-block;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
vertical-align: middle;
cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
margin-top: 0;
margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
cursor: not-allowed;
}
.form-control-static {
min-height: 34px;
padding-top: 7px;
padding-bottom: 7px;
margin-bottom: 0;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
padding-right: 0;
padding-left: 0;
}
.input-sm {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.input-sm {
height: 30px;
line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
height: auto;
}
.form-group-sm .form-control {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.form-group-sm .form-control {
height: 30px;
line-height: 30px;
}
textarea.form-group-sm .form-control,
select[multiple].form-group-sm .form-control {
height: auto;
}
.form-group-sm .form-control-static {
height: 30px;
min-height: 32px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
}
.input-lg {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.input-lg {
height: 46px;
line-height: 46px;
}
textarea.input-lg,
select[multiple].input-lg {
height: auto;
}
.form-group-lg .form-control {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.form-group-lg .form-control {
height: 46px;
line-height: 46px;
}
textarea.form-group-lg .form-control,
select[multiple].form-group-lg .form-control {
height: auto;
}
.form-group-lg .form-control-static {
height: 46px;
min-height: 38px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
}
.has-feedback {
position: relative;
}
.has-feedback .form-control {
padding-right: 42.5px;
}
.form-control-feedback {
position: absolute;
top: 0;
right: 0;
z-index: 2;
display: block;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px;
}
.input-sm + .form-control-feedback {
width: 30px;
height: 30px;
line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
color: #3c763d;
}
.has-success .form-control {
border-color: #3c763d;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-success .form-control:focus {
border-color: #2b542c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
color: #3c763d;
background-color: #dff0d8;
border-color: #3c763d;
}
.has-success .form-control-feedback {
color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
color: #8a6d3b;
}
.has-warning .form-control {
border-color: #8a6d3b;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-warning .form-control:focus {
border-color: #66512c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #8a6d3b;
}
.has-warning .form-control-feedback {
color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
color: #a94442;
}
.has-error .form-control {
border-color: #a94442;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-error .form-control:focus {
border-color: #843534;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
color: #a94442;
background-color: #f2dede;
border-color: #a94442;
}
.has-error .form-control-feedback {
color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
top: 25px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
top: 0;
}
.help-block {
display: block;
margin-top: 5px;
margin-bottom: 10px;
color: #737373;
}
@media (min-width: 768px) {
.form-inline .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-static {
display: inline-block;
}
.form-inline .input-group {
display: inline-table;
vertical-align: middle;
}
.form-inline .input-group .input-group-addon,
.form-inline .input-group .input-group-btn,
.form-inline .input-group .form-control {
width: auto;
}
.form-inline .input-group > .form-control {
width: 100%;
}
.form-inline .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio,
.form-inline .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio label,
.form-inline .checkbox label {
padding-left: 0;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
padding-top: 7px;
margin-top: 0;
margin-bottom: 0;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
min-height: 27px;
}
.form-horizontal .form-group {
margin-right: -15px;
margin-left: -15px;
}
@media (min-width: 768px) {
.form-horizontal .control-label {
padding-top: 7px;
margin-bottom: 0;
text-align: right;
}
}
.form-horizontal .has-feedback .form-control-feedback {
right: 15px;
}
@media (min-width: 768px) {
.form-horizontal .form-group-lg .control-label {
padding-top: 14.333333px;
}
}
@media (min-width: 768px) {
.form-horizontal .form-group-sm .control-label {
padding-top: 6px;
}
}
.btn {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: normal;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
color: #333;
text-decoration: none;
}
.btn:active,
.btn.active {
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
opacity: .65;
}
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus,
.btn-default.focus,
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #fff;
border-color: #ccc;
}
.btn-default .badge {
color: #fff;
background-color: #333;
}
.btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.focus,
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
background-image: none;
}
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary .badge {
color: #337ab7;
background-color: #fff;
}
.btn-success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success:hover,
.btn-success:focus,
.btn-success.focus,
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
background-image: none;
}
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success .badge {
color: #5cb85c;
background-color: #fff;
}
.btn-info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info:hover,
.btn-info:focus,
.btn-info.focus,
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
background-image: none;
}
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info .badge {
color: #5bc0de;
background-color: #fff;
}
.btn-warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning:hover,
.btn-warning:focus,
.btn-warning.focus,
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
background-image: none;
}
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.btn-danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger:hover,
.btn-danger:focus,
.btn-danger.focus,
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
background-image: none;
}
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger .badge {
color: #d9534f;
background-color: #fff;
}
.btn-link {
font-weight: normal;
color: #337ab7;
border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
color: #23527c;
text-decoration: underline;
background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
color: #777;
text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
padding: 1px 5px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
opacity: 0;
-webkit-transition: opacity .15s linear;
-o-transition: opacity .15s linear;
transition: opacity .15s linear;
}
.fade.in {
opacity: 1;
}
.collapse {
display: none;
}
.collapse.in {
display: block;
}
tr.collapse.in {
display: table-row;
}
tbody.collapse.in {
display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
-webkit-transition-timing-function: ease;
-o-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-duration: .35s;
-o-transition-duration: .35s;
transition-duration: .35s;
-webkit-transition-property: height, visibility;
-o-transition-property: height, visibility;
transition-property: height, visibility;
}
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-top: 4px dashed;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
}
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle:focus {
outline: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
font-size: 14px;
text-align: left;
list-style: none;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
.dropdown-menu.pull-right {
right: 0;
left: auto;
}
.dropdown-menu .divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.42857143;
color: #333;
white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
color: #262626;
text-decoration: none;
background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: #fff;
text-decoration: none;
background-color: #337ab7;
outline: 0;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
color: #777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.open > .dropdown-menu {
display: block;
}
.open > a {
outline: 0;
}
.dropdown-menu-right {
right: 0;
left: auto;
}
.dropdown-menu-left {
right: auto;
left: 0;
}
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
color: #777;
white-space: nowrap;
}
.dropdown-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 990;
}
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
content: "";
border-top: 0;
border-bottom: 4px solid;
}
.dropup .dropdown-menu,
.navbar-fi
gitextract_dls4m2sb/
├── .gitattributes
├── .gitignore
├── .sass-cache/
│ ├── 80cd008003879d44acec920c547dff0670c3505e/
│ │ └── main.scssc
│ ├── c8522c10524b43c482a341522b10062e5b9ade65/
│ │ └── main.scssc
│ └── d9b885ff6b56267e4f2b8573fca9e47b444b1d39/
│ └── main.scssc
├── app/
│ ├── Commands/
│ │ ├── Command.php
│ │ ├── CreateFeedCommand.php
│ │ ├── CreateFriendRequestCommand.php
│ │ ├── CreateMessageCommand.php
│ │ ├── CreateMessageResponseCommand.php
│ │ ├── LoginUserCommand.php
│ │ ├── LogoutUserCommand.php
│ │ ├── RegisterUserCommand.php
│ │ ├── RemoveFriendCommand.php
│ │ ├── SendChatMessageCommand.php
│ │ └── UpdateChatStatusCommand.php
│ ├── Console/
│ │ ├── Commands/
│ │ │ └── Inspire.php
│ │ └── Kernel.php
│ ├── Events/
│ │ ├── Event.php
│ │ ├── FriendRequestWasSent.php
│ │ └── UserWasRegistered.php
│ ├── Exceptions/
│ │ └── Handler.php
│ ├── Feed.php
│ ├── FriendRequest.php
│ ├── Handlers/
│ │ ├── Commands/
│ │ │ └── .gitkeep
│ │ └── Events/
│ │ ├── .gitkeep
│ │ ├── EmailFriendRequest.php
│ │ └── EmailRegistrationConfirmation.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── ChatController.php
│ │ │ ├── ChatStatusController.php
│ │ │ ├── Controller.php
│ │ │ ├── FeedController.php
│ │ │ ├── FriendController.php
│ │ │ ├── FriendRequestController.php
│ │ │ ├── MessageController.php
│ │ │ ├── MessageResponseController.php
│ │ │ ├── RegistrationController.php
│ │ │ ├── SessionController.php
│ │ │ └── UserController.php
│ │ ├── Kernel.php
│ │ ├── Middleware/
│ │ │ ├── Authenticate.php
│ │ │ ├── CustomVerifyCsrfToken.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ └── VerifyCsrfToken.php
│ │ ├── Requests/
│ │ │ ├── CreateMessageRequest.php
│ │ │ ├── CreateMessageResponseRequest.php
│ │ │ ├── CreateSessionRequest.php
│ │ │ ├── RegisterUserRequest.php
│ │ │ └── Request.php
│ │ └── routes.php
│ ├── Mailers/
│ │ ├── Mailer.php
│ │ └── UserMailer.php
│ ├── Message.php
│ ├── MessageResponse.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── BusServiceProvider.php
│ │ ├── ConfigServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php
│ ├── Realtime/
│ │ ├── Chat.php
│ │ ├── Events.php
│ │ └── Realtime.php
│ ├── Repositories/
│ │ ├── Feed/
│ │ │ ├── EloquentFeedRepository.php
│ │ │ └── FeedRepository.php
│ │ ├── FriendRequest/
│ │ │ ├── EloquentFriendRequestRepository.php
│ │ │ └── FriendRequestRepository.php
│ │ ├── Message/
│ │ │ ├── EloquentMessageRepository.php
│ │ │ └── MessageRepository.php
│ │ └── User/
│ │ ├── CachingUserRepository.php
│ │ ├── EloquentUserRepository.php
│ │ └── UserRepository.php
│ ├── Services/
│ │ └── ProcessImage.php
│ └── User.php
├── artisan
├── bootstrap/
│ ├── app.php
│ └── autoload.php
├── bower_components/
│ ├── bootstrap/
│ │ ├── .bower.json
│ │ ├── Gruntfile.js
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bower.json
│ │ ├── dist/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ ├── bootstrap.js
│ │ │ └── npm.js
│ │ ├── grunt/
│ │ │ ├── .jshintrc
│ │ │ ├── bs-commonjs-generator.js
│ │ │ ├── bs-glyphicons-data-generator.js
│ │ │ ├── bs-lessdoc-parser.js
│ │ │ ├── bs-raw-files-generator.js
│ │ │ ├── configBridge.json
│ │ │ └── sauce_browsers.yml
│ │ ├── js/
│ │ │ ├── .jscsrc
│ │ │ ├── .jshintrc
│ │ │ ├── affix.js
│ │ │ ├── alert.js
│ │ │ ├── button.js
│ │ │ ├── carousel.js
│ │ │ ├── collapse.js
│ │ │ ├── dropdown.js
│ │ │ ├── modal.js
│ │ │ ├── popover.js
│ │ │ ├── scrollspy.js
│ │ │ ├── tab.js
│ │ │ ├── tooltip.js
│ │ │ └── transition.js
│ │ ├── less/
│ │ │ ├── .csscomb.json
│ │ │ ├── .csslintrc
│ │ │ ├── alerts.less
│ │ │ ├── badges.less
│ │ │ ├── bootstrap.less
│ │ │ ├── breadcrumbs.less
│ │ │ ├── button-groups.less
│ │ │ ├── buttons.less
│ │ │ ├── carousel.less
│ │ │ ├── close.less
│ │ │ ├── code.less
│ │ │ ├── component-animations.less
│ │ │ ├── dropdowns.less
│ │ │ ├── forms.less
│ │ │ ├── glyphicons.less
│ │ │ ├── grid.less
│ │ │ ├── input-groups.less
│ │ │ ├── jumbotron.less
│ │ │ ├── labels.less
│ │ │ ├── list-group.less
│ │ │ ├── media.less
│ │ │ ├── mixins/
│ │ │ │ ├── alerts.less
│ │ │ │ ├── background-variant.less
│ │ │ │ ├── border-radius.less
│ │ │ │ ├── buttons.less
│ │ │ │ ├── center-block.less
│ │ │ │ ├── clearfix.less
│ │ │ │ ├── forms.less
│ │ │ │ ├── gradients.less
│ │ │ │ ├── grid-framework.less
│ │ │ │ ├── grid.less
│ │ │ │ ├── hide-text.less
│ │ │ │ ├── image.less
│ │ │ │ ├── labels.less
│ │ │ │ ├── list-group.less
│ │ │ │ ├── nav-divider.less
│ │ │ │ ├── nav-vertical-align.less
│ │ │ │ ├── opacity.less
│ │ │ │ ├── pagination.less
│ │ │ │ ├── panels.less
│ │ │ │ ├── progress-bar.less
│ │ │ │ ├── reset-filter.less
│ │ │ │ ├── resize.less
│ │ │ │ ├── responsive-visibility.less
│ │ │ │ ├── size.less
│ │ │ │ ├── tab-focus.less
│ │ │ │ ├── table-row.less
│ │ │ │ ├── text-emphasis.less
│ │ │ │ ├── text-overflow.less
│ │ │ │ └── vendor-prefixes.less
│ │ │ ├── mixins.less
│ │ │ ├── modals.less
│ │ │ ├── navbar.less
│ │ │ ├── navs.less
│ │ │ ├── normalize.less
│ │ │ ├── pager.less
│ │ │ ├── pagination.less
│ │ │ ├── panels.less
│ │ │ ├── popovers.less
│ │ │ ├── print.less
│ │ │ ├── progress-bars.less
│ │ │ ├── responsive-embed.less
│ │ │ ├── responsive-utilities.less
│ │ │ ├── scaffolding.less
│ │ │ ├── tables.less
│ │ │ ├── theme.less
│ │ │ ├── thumbnails.less
│ │ │ ├── tooltip.less
│ │ │ ├── type.less
│ │ │ ├── utilities.less
│ │ │ ├── variables.less
│ │ │ └── wells.less
│ │ ├── package.js
│ │ └── package.json
│ ├── bootstrap-switch/
│ │ ├── .bower.json
│ │ ├── .bowerrc
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bower.json
│ │ ├── dist/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap2/
│ │ │ │ │ └── bootstrap-switch.css
│ │ │ │ └── bootstrap3/
│ │ │ │ └── bootstrap-switch.css
│ │ │ └── js/
│ │ │ └── bootstrap-switch.js
│ │ ├── documentation-2.html
│ │ ├── events.html
│ │ ├── examples.html
│ │ ├── karma.json
│ │ ├── main.html
│ │ ├── methods.html
│ │ ├── options.html
│ │ └── src/
│ │ ├── coffee/
│ │ │ ├── bootstrap-switch.coffee
│ │ │ └── bootstrap-switch.tests.coffee
│ │ └── less/
│ │ ├── bootstrap2/
│ │ │ ├── bootstrap-switch.less
│ │ │ ├── build.less
│ │ │ ├── mixins.less
│ │ │ └── variables.less
│ │ └── bootstrap3/
│ │ ├── bootstrap-switch.less
│ │ ├── build.less
│ │ ├── mixins.less
│ │ └── variables.less
│ ├── jquery/
│ │ ├── .bower.json
│ │ ├── MIT-LICENSE.txt
│ │ ├── bower.json
│ │ ├── dist/
│ │ │ └── jquery.js
│ │ └── src/
│ │ ├── ajax/
│ │ │ ├── jsonp.js
│ │ │ ├── load.js
│ │ │ ├── parseJSON.js
│ │ │ ├── parseXML.js
│ │ │ ├── script.js
│ │ │ ├── var/
│ │ │ │ ├── nonce.js
│ │ │ │ └── rquery.js
│ │ │ └── xhr.js
│ │ ├── ajax.js
│ │ ├── attributes/
│ │ │ ├── attr.js
│ │ │ ├── classes.js
│ │ │ ├── prop.js
│ │ │ ├── support.js
│ │ │ └── val.js
│ │ ├── attributes.js
│ │ ├── callbacks.js
│ │ ├── core/
│ │ │ ├── access.js
│ │ │ ├── init.js
│ │ │ ├── parseHTML.js
│ │ │ ├── ready.js
│ │ │ └── var/
│ │ │ └── rsingleTag.js
│ │ ├── core.js
│ │ ├── css/
│ │ │ ├── addGetHookIf.js
│ │ │ ├── curCSS.js
│ │ │ ├── defaultDisplay.js
│ │ │ ├── hiddenVisibleSelectors.js
│ │ │ ├── support.js
│ │ │ ├── swap.js
│ │ │ └── var/
│ │ │ ├── cssExpand.js
│ │ │ ├── getStyles.js
│ │ │ ├── isHidden.js
│ │ │ ├── rmargin.js
│ │ │ └── rnumnonpx.js
│ │ ├── css.js
│ │ ├── data/
│ │ │ ├── Data.js
│ │ │ ├── accepts.js
│ │ │ └── var/
│ │ │ ├── data_priv.js
│ │ │ └── data_user.js
│ │ ├── data.js
│ │ ├── deferred.js
│ │ ├── deprecated.js
│ │ ├── dimensions.js
│ │ ├── effects/
│ │ │ ├── Tween.js
│ │ │ └── animatedSelector.js
│ │ ├── effects.js
│ │ ├── event/
│ │ │ ├── ajax.js
│ │ │ ├── alias.js
│ │ │ └── support.js
│ │ ├── event.js
│ │ ├── exports/
│ │ │ ├── amd.js
│ │ │ └── global.js
│ │ ├── intro.js
│ │ ├── jquery.js
│ │ ├── manipulation/
│ │ │ ├── _evalUrl.js
│ │ │ ├── support.js
│ │ │ └── var/
│ │ │ └── rcheckableType.js
│ │ ├── manipulation.js
│ │ ├── offset.js
│ │ ├── outro.js
│ │ ├── queue/
│ │ │ └── delay.js
│ │ ├── queue.js
│ │ ├── selector-native.js
│ │ ├── selector-sizzle.js
│ │ ├── selector.js
│ │ ├── serialize.js
│ │ ├── sizzle/
│ │ │ └── dist/
│ │ │ └── sizzle.js
│ │ ├── traversing/
│ │ │ ├── findFilter.js
│ │ │ └── var/
│ │ │ └── rneedsContext.js
│ │ ├── traversing.js
│ │ ├── var/
│ │ │ ├── arr.js
│ │ │ ├── class2type.js
│ │ │ ├── concat.js
│ │ │ ├── hasOwn.js
│ │ │ ├── indexOf.js
│ │ │ ├── pnum.js
│ │ │ ├── push.js
│ │ │ ├── rnotwhite.js
│ │ │ ├── slice.js
│ │ │ ├── strundefined.js
│ │ │ ├── support.js
│ │ │ └── toString.js
│ │ └── wrap.js
│ ├── jquery-timeago/
│ │ ├── .bower.json
│ │ ├── .gitignore
│ │ ├── CNAME
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE.txt
│ │ ├── README.markdown
│ │ ├── Rakefile
│ │ ├── bower.json
│ │ ├── contrib/
│ │ │ └── timeago-koext.js
│ │ ├── index.html
│ │ ├── jquery.timeago.js
│ │ ├── locales/
│ │ │ ├── README.md
│ │ │ ├── jquery.timeago.ar.js
│ │ │ ├── jquery.timeago.bg.js
│ │ │ ├── jquery.timeago.bs.js
│ │ │ ├── jquery.timeago.ca.js
│ │ │ ├── jquery.timeago.cs.js
│ │ │ ├── jquery.timeago.cy.js
│ │ │ ├── jquery.timeago.da.js
│ │ │ ├── jquery.timeago.de.js
│ │ │ ├── jquery.timeago.el.js
│ │ │ ├── jquery.timeago.en-short.js
│ │ │ ├── jquery.timeago.en.js
│ │ │ ├── jquery.timeago.es-short.js
│ │ │ ├── jquery.timeago.es.js
│ │ │ ├── jquery.timeago.et.js
│ │ │ ├── jquery.timeago.fa.js
│ │ │ ├── jquery.timeago.fi.js
│ │ │ ├── jquery.timeago.fr-short.js
│ │ │ ├── jquery.timeago.fr.js
│ │ │ ├── jquery.timeago.gl.js
│ │ │ ├── jquery.timeago.he.js
│ │ │ ├── jquery.timeago.hr.js
│ │ │ ├── jquery.timeago.hu.js
│ │ │ ├── jquery.timeago.hy.js
│ │ │ ├── jquery.timeago.id.js
│ │ │ ├── jquery.timeago.is.js
│ │ │ ├── jquery.timeago.it.js
│ │ │ ├── jquery.timeago.ja.js
│ │ │ ├── jquery.timeago.jv.js
│ │ │ ├── jquery.timeago.ko.js
│ │ │ ├── jquery.timeago.lt.js
│ │ │ ├── jquery.timeago.mk.js
│ │ │ ├── jquery.timeago.nl.js
│ │ │ ├── jquery.timeago.no.js
│ │ │ ├── jquery.timeago.pl.js
│ │ │ ├── jquery.timeago.pt-br.js
│ │ │ ├── jquery.timeago.pt.js
│ │ │ ├── jquery.timeago.ro.js
│ │ │ ├── jquery.timeago.rs.js
│ │ │ ├── jquery.timeago.ru.js
│ │ │ ├── jquery.timeago.sk.js
│ │ │ ├── jquery.timeago.sl.js
│ │ │ ├── jquery.timeago.sv.js
│ │ │ ├── jquery.timeago.th.js
│ │ │ ├── jquery.timeago.tr.js
│ │ │ ├── jquery.timeago.uk.js
│ │ │ ├── jquery.timeago.uz.js
│ │ │ ├── jquery.timeago.vi.js
│ │ │ ├── jquery.timeago.zh-CN.js
│ │ │ └── jquery.timeago.zh-TW.js
│ │ └── timeago.jquery.json
│ └── jqueryui/
│ ├── .bower.json
│ ├── .gitignore
│ ├── AUTHORS.txt
│ ├── LICENSE.txt
│ ├── README.md
│ ├── bower.json
│ ├── component.json
│ ├── composer.json
│ ├── jquery-ui.js
│ ├── package.json
│ ├── themes/
│ │ ├── base/
│ │ │ ├── accordion.css
│ │ │ ├── all.css
│ │ │ ├── autocomplete.css
│ │ │ ├── base.css
│ │ │ ├── button.css
│ │ │ ├── core.css
│ │ │ ├── datepicker.css
│ │ │ ├── dialog.css
│ │ │ ├── draggable.css
│ │ │ ├── jquery-ui.css
│ │ │ ├── menu.css
│ │ │ ├── progressbar.css
│ │ │ ├── resizable.css
│ │ │ ├── selectable.css
│ │ │ ├── selectmenu.css
│ │ │ ├── slider.css
│ │ │ ├── sortable.css
│ │ │ ├── spinner.css
│ │ │ ├── tabs.css
│ │ │ ├── theme.css
│ │ │ └── tooltip.css
│ │ ├── black-tie/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── blitzer/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── cupertino/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── dark-hive/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── dot-luv/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── eggplant/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── excite-bike/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── flick/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── hot-sneaks/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── humanity/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── le-frog/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── mint-choc/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── overcast/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── pepper-grinder/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── redmond/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── smoothness/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── south-street/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── start/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── sunny/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── swanky-purse/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── trontastic/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── ui-darkness/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ ├── ui-lightness/
│ │ │ ├── jquery-ui.css
│ │ │ └── theme.css
│ │ └── vader/
│ │ ├── jquery-ui.css
│ │ └── theme.css
│ └── ui/
│ ├── .jshintrc
│ ├── accordion.js
│ ├── autocomplete.js
│ ├── button.js
│ ├── core.js
│ ├── datepicker.js
│ ├── dialog.js
│ ├── draggable.js
│ ├── droppable.js
│ ├── effect-blind.js
│ ├── effect-bounce.js
│ ├── effect-clip.js
│ ├── effect-drop.js
│ ├── effect-explode.js
│ ├── effect-fade.js
│ ├── effect-fold.js
│ ├── effect-highlight.js
│ ├── effect-puff.js
│ ├── effect-pulsate.js
│ ├── effect-scale.js
│ ├── effect-shake.js
│ ├── effect-size.js
│ ├── effect-slide.js
│ ├── effect-transfer.js
│ ├── effect.js
│ ├── i18n/
│ │ ├── datepicker-af.js
│ │ ├── datepicker-ar-DZ.js
│ │ ├── datepicker-ar.js
│ │ ├── datepicker-az.js
│ │ ├── datepicker-be.js
│ │ ├── datepicker-bg.js
│ │ ├── datepicker-bs.js
│ │ ├── datepicker-ca.js
│ │ ├── datepicker-cs.js
│ │ ├── datepicker-cy-GB.js
│ │ ├── datepicker-da.js
│ │ ├── datepicker-de.js
│ │ ├── datepicker-el.js
│ │ ├── datepicker-en-AU.js
│ │ ├── datepicker-en-GB.js
│ │ ├── datepicker-en-NZ.js
│ │ ├── datepicker-eo.js
│ │ ├── datepicker-es.js
│ │ ├── datepicker-et.js
│ │ ├── datepicker-eu.js
│ │ ├── datepicker-fa.js
│ │ ├── datepicker-fi.js
│ │ ├── datepicker-fo.js
│ │ ├── datepicker-fr-CA.js
│ │ ├── datepicker-fr-CH.js
│ │ ├── datepicker-fr.js
│ │ ├── datepicker-gl.js
│ │ ├── datepicker-he.js
│ │ ├── datepicker-hi.js
│ │ ├── datepicker-hr.js
│ │ ├── datepicker-hu.js
│ │ ├── datepicker-hy.js
│ │ ├── datepicker-id.js
│ │ ├── datepicker-is.js
│ │ ├── datepicker-it-CH.js
│ │ ├── datepicker-it.js
│ │ ├── datepicker-ja.js
│ │ ├── datepicker-ka.js
│ │ ├── datepicker-kk.js
│ │ ├── datepicker-km.js
│ │ ├── datepicker-ko.js
│ │ ├── datepicker-ky.js
│ │ ├── datepicker-lb.js
│ │ ├── datepicker-lt.js
│ │ ├── datepicker-lv.js
│ │ ├── datepicker-mk.js
│ │ ├── datepicker-ml.js
│ │ ├── datepicker-ms.js
│ │ ├── datepicker-nb.js
│ │ ├── datepicker-nl-BE.js
│ │ ├── datepicker-nl.js
│ │ ├── datepicker-nn.js
│ │ ├── datepicker-no.js
│ │ ├── datepicker-pl.js
│ │ ├── datepicker-pt-BR.js
│ │ ├── datepicker-pt.js
│ │ ├── datepicker-rm.js
│ │ ├── datepicker-ro.js
│ │ ├── datepicker-ru.js
│ │ ├── datepicker-sk.js
│ │ ├── datepicker-sl.js
│ │ ├── datepicker-sq.js
│ │ ├── datepicker-sr-SR.js
│ │ ├── datepicker-sr.js
│ │ ├── datepicker-sv.js
│ │ ├── datepicker-ta.js
│ │ ├── datepicker-th.js
│ │ ├── datepicker-tj.js
│ │ ├── datepicker-tr.js
│ │ ├── datepicker-uk.js
│ │ ├── datepicker-vi.js
│ │ ├── datepicker-zh-CN.js
│ │ ├── datepicker-zh-HK.js
│ │ └── datepicker-zh-TW.js
│ ├── menu.js
│ ├── mouse.js
│ ├── position.js
│ ├── progressbar.js
│ ├── resizable.js
│ ├── selectable.js
│ ├── selectmenu.js
│ ├── slider.js
│ ├── sortable.js
│ ├── spinner.js
│ ├── tabs.js
│ ├── tooltip.js
│ └── widget.js
├── composer.json
├── config/
│ ├── app.php
│ ├── auth.php
│ ├── cache.php
│ ├── compile.php
│ ├── database.php
│ ├── filesystems.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ └── view.php
├── database/
│ ├── .gitignore
│ ├── migrations/
│ │ ├── .gitkeep
│ │ ├── 2015_04_10_210346_create_users_table.php
│ │ ├── 2015_04_12_221129_create_feeds_table.php
│ │ ├── 2015_04_13_001524_create_friends_table.php
│ │ ├── 2015_04_15_160303_create_friend_requests_table.php
│ │ ├── 2015_04_20_150638_create_messages_table.php
│ │ ├── 2015_04_20_151158_create_message_user_table.php
│ │ ├── 2015_04_20_163654_create_message_responses_table.php
│ │ └── 2015_04_20_165854_create_message_response_user_table.php
│ └── seeds/
│ ├── .gitkeep
│ ├── DatabaseSeeder.php
│ ├── FeedTableSeeder.php
│ ├── FriendRequestTableSeeder.php
│ ├── MessageResponseUserTableSeeder.php
│ ├── MessageResponsesTableSeeder.php
│ ├── MessageUserTableSeeder.php
│ ├── MessagesTableSeeder.php
│ └── UserTableSeeder.php
├── gulpfile.js
├── main.js
├── package.json
├── phpspec.yml
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── css/
│ │ ├── fonts/
│ │ │ ├── font-awesome.css
│ │ │ └── registration.css
│ │ ├── libs.css
│ │ └── main.css
│ ├── index.php
│ ├── js/
│ │ ├── libs.js
│ │ └── main.js
│ └── robots.txt
├── readme.md
├── resources/
│ ├── assets/
│ │ └── sass/
│ │ └── main.scss
│ ├── lang/
│ │ └── en/
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── views/
│ ├── email-alerts/
│ │ ├── friend-request.blade.php
│ │ └── registration-confirm.blade.php
│ ├── errors/
│ │ └── 503.blade.php
│ ├── feeds/
│ │ ├── index.blade.php
│ │ └── partials/
│ │ └── feed-list.blade.php
│ ├── friend-requests/
│ │ └── index.blade.php
│ ├── friends/
│ │ ├── index.blade.php
│ │ └── partials/
│ │ └── friend-chat-list.blade.php
│ ├── layouts/
│ │ ├── default.blade.php
│ │ └── partials/
│ │ ├── center-alert.blade.php
│ │ ├── center-form.blade.php
│ │ ├── nav.blade.php
│ │ └── welcome-alert.blade.php
│ ├── messages/
│ │ ├── create.blade.php
│ │ ├── index.blade.php
│ │ ├── partials/
│ │ │ └── send-email-button.blade.php
│ │ └── show.blade.php
│ ├── registration/
│ │ └── index.blade.php
│ ├── users/
│ │ ├── index.blade.php
│ │ ├── partials/
│ │ │ ├── profile-section.blade.php
│ │ │ └── userid.blade.php
│ │ └── show.blade.php
│ ├── vendor/
│ │ └── .gitkeep
│ └── welcome.blade.php
├── server.js
├── server.php
├── storage/
│ ├── .gitignore
│ ├── app/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ └── logs/
│ └── .gitignore
└── tests/
├── ExampleTest.php
├── TestCase.php
├── commands/
│ ├── TestCreateFeedCommand.php
│ ├── TestCreateFriendRequestCommand.php
│ ├── TestCreateMessageCommand.php
│ ├── TestLoginUserCommand.php
│ ├── TestLogoutUserCommand.php
│ ├── TestRegisterUserCommand.php
│ └── TestRemoveFriendCommand.php
├── controllers/
│ ├── TestFeedController.php
│ ├── TestFriendController.php
│ ├── TestFriendRequestController.php
│ ├── TestMessageController.php
│ ├── TestRegistrationController.php
│ ├── TestSessionController.php
│ └── TestUserController.php
├── events/
│ ├── TestFriendRequestWasSent.php
│ └── TestUserWasRegistered.php
├── factories/
│ └── factories.php
├── functional/
│ ├── FriendRequestTest.php
│ ├── LoginTest.php
│ ├── MessagesTest.php
│ ├── PostFeedTest.php
│ └── RegistrationTest.php
├── handlers/
│ ├── TestEmailFriendRequest.php
│ └── TestEmailRegistrationConfirmation.php
├── logs/
│ └── output.txt
└── repositories/
├── TestFeedRepository.php
├── TestFriendRequestRepository.php
├── TestMessageRepository.php
└── TestUserRepository.php
SYMBOL INDEX (746 symbols across 170 files)
FILE: app/Commands/Command.php
class Command (line 3) | abstract class Command {
FILE: app/Commands/CreateFeedCommand.php
class CreateFeedCommand (line 8) | class CreateFeedCommand extends Command implements SelfHandling {
method __construct (line 34) | public function __construct($body, $posterFirstname, $posterProfileImage)
method handle (line 48) | public function handle()
FILE: app/Commands/CreateFriendRequestCommand.php
class CreateFriendRequestCommand (line 10) | class CreateFriendRequestCommand extends Command implements SelfHandling {
method __construct (line 22) | public function __construct($requestedId)
method handle (line 33) | public function handle(UserRepository $userRepository)
FILE: app/Commands/CreateMessageCommand.php
class CreateMessageCommand (line 10) | class CreateMessageCommand extends Command implements SelfHandling {
method __construct (line 39) | public function __construct($receiverId, $body, $senderId, $senderProf...
method handle (line 57) | public function handle(UserRepository $userRepository, MessageReposito...
FILE: app/Commands/CreateMessageResponseCommand.php
class CreateMessageResponseCommand (line 9) | class CreateMessageResponseCommand extends Command implements SelfHandli...
method __construct (line 45) | public function __construct($receiverId, $body, $senderId, $senderProf...
method handle (line 65) | public function handle(UserRepository $userRepository, MessageReposito...
FILE: app/Commands/LoginUserCommand.php
class LoginUserCommand (line 8) | class LoginUserCommand extends Command implements SelfHandling {
method __construct (line 32) | public function __construct($email, $password)
method handle (line 45) | public function handle()
FILE: app/Commands/LogoutUserCommand.php
class LogoutUserCommand (line 9) | class LogoutUserCommand extends Command implements SelfHandling {
method __construct (line 28) | public function __construct($userId)
method handle (line 40) | public function handle()
FILE: app/Commands/RegisterUserCommand.php
class RegisterUserCommand (line 9) | class RegisterUserCommand extends Command implements SelfHandling {
method __construct (line 28) | public function __construct(
method handle (line 63) | public function handle()
FILE: app/Commands/RemoveFriendCommand.php
class RemoveFriendCommand (line 9) | class RemoveFriendCommand extends Command implements SelfHandling {
method __construct (line 30) | public function __construct($userId)
method handle (line 44) | public function handle(UserRepository $userRepository)
FILE: app/Commands/SendChatMessageCommand.php
class SendChatMessageCommand (line 8) | class SendChatMessageCommand extends Command implements SelfHandling {
method __construct (line 30) | public function __construct($receiverId, $message)
method handle (line 41) | public function handle()
FILE: app/Commands/UpdateChatStatusCommand.php
class UpdateChatStatusCommand (line 8) | class UpdateChatStatusCommand extends Command implements SelfHandling {
method __construct (line 36) | public function __construct($chatStatus)
method handle (line 47) | public function handle()
FILE: app/Console/Commands/Inspire.php
class Inspire (line 6) | class Inspire extends Command {
method handle (line 27) | public function handle()
FILE: app/Console/Kernel.php
class Kernel (line 6) | class Kernel extends ConsoleKernel {
method schedule (line 23) | protected function schedule(Schedule $schedule)
FILE: app/Events/Event.php
class Event (line 3) | abstract class Event {
FILE: app/Events/FriendRequestWasSent.php
class FriendRequestWasSent (line 7) | class FriendRequestWasSent extends Event {
method __construct (line 30) | public function __construct(User $requestedUser, User $requesterUser)
FILE: app/Events/UserWasRegistered.php
class UserWasRegistered (line 8) | class UserWasRegistered extends Event {
method __construct (line 24) | public function __construct(User $user)
FILE: app/Exceptions/Handler.php
class Handler (line 6) | class Handler extends ExceptionHandler {
method report (line 25) | public function report(Exception $e)
method render (line 37) | public function render($request, Exception $e)
FILE: app/Feed.php
class Feed (line 5) | class Feed extends Model {
method user (line 18) | public function user()
method publish (line 34) | public static function publish($body, $poster_firstname, $poster_profi...
method getTotalCountFeedsForUser (line 48) | public static function getTotalCountFeedsForUser($userIds)
FILE: app/FriendRequest.php
class FriendRequest (line 5) | class FriendRequest extends Model {
method user (line 20) | public function user()
method prepareFriendRequest (line 33) | public static function prepareFriendRequest($requester_id)
FILE: app/Handlers/Events/EmailFriendRequest.php
class EmailFriendRequest (line 9) | class EmailFriendRequest
method __construct (line 24) | public function __construct(UserMailer $mailer)
method handle (line 34) | public function handle(FriendRequestWasSent $event)
FILE: app/Handlers/Events/EmailRegistrationConfirmation.php
class EmailRegistrationConfirmation (line 9) | class EmailRegistrationConfirmation {
method __construct (line 23) | public function __construct(UserMailer $mailer)
method handle (line 34) | public function handle(UserWasRegistered $event)
FILE: app/Http/Controllers/ChatController.php
class ChatController (line 10) | class ChatController extends Controller {
method __construct (line 15) | public function __construct()
method sendMessage (line 27) | public function sendMessage(Request $request, UserRepository $userRepo...
FILE: app/Http/Controllers/ChatStatusController.php
class ChatStatusController (line 9) | class ChatStatusController extends Controller {
method __construct (line 15) | public function __construct()
method update (line 28) | public function update(Request $request)
FILE: app/Http/Controllers/Controller.php
class Controller (line 7) | abstract class Controller extends BaseController {
FILE: app/Http/Controllers/FeedController.php
class FeedController (line 11) | class FeedController extends Controller {
method __construct (line 23) | public function __construct()
method index (line 35) | public function index(FeedRepository $feedRepository)
method more (line 56) | public function more(Request $request, FeedRepository $feedRepository)
method store (line 72) | public function store(Request $request)
FILE: app/Http/Controllers/FriendController.php
class FriendController (line 13) | class FriendController extends Controller {
method __construct (line 16) | public function __construct()
method index (line 26) | public function index(UserRepository $repository)
method store (line 42) | public function store(Request $request, UserRepository $repository)
method destroy (line 74) | public function destroy(Request $request)
FILE: app/Http/Controllers/FriendRequestController.php
class FriendRequestController (line 15) | class FriendRequestController extends Controller {
method __construct (line 25) | public function __construct()
method index (line 37) | public function index(FriendRequestRepository $friendRequestRepository...
method create (line 55) | public function create()
method store (line 67) | public function store(Request $request)
method destroy (line 92) | public function destroy(Request $request)
FILE: app/Http/Controllers/MessageController.php
class MessageController (line 13) | class MessageController extends Controller {
method __construct (line 16) | public function __construct()
method index (line 28) | public function index(UserRepository $userRepository)
method create (line 43) | public function create($id, UserRepository $userRepository)
method store (line 58) | public function store(Request $request)
method show (line 82) | public function show($id, MessageRepository $messageRepository)
method destroy (line 99) | public function destroy(Request $request)
FILE: app/Http/Controllers/MessageResponseController.php
class MessageResponseController (line 12) | class MessageResponseController extends Controller {
method __construct (line 18) | public function __construct()
method store (line 32) | public function store(Request $request)
method update (line 59) | public function update(Request $request)
FILE: app/Http/Controllers/RegistrationController.php
class RegistrationController (line 12) | class RegistrationController extends Controller {
method __construct (line 17) | public function __construct()
method create (line 27) | public function create()
method store (line 50) | public function store(RegisterUserRequest $request)
FILE: app/Http/Controllers/SessionController.php
class SessionController (line 10) | class SessionController extends Controller {
method store (line 18) | public function store(CreateSessionRequest $request)
method destroy (line 36) | public function destroy(Request $request)
FILE: app/Http/Controllers/UserController.php
class UserController (line 10) | class UserController extends Controller {
method __construct (line 18) | public function __construct()
method index (line 33) | public function index(Request $request, UserRepository $userRepository)
method show (line 50) | public function show($id, UserRepository $userRepository, FeedReposito...
FILE: app/Http/Kernel.php
class Kernel (line 5) | class Kernel extends HttpKernel {
FILE: app/Http/Middleware/Authenticate.php
class Authenticate (line 6) | class Authenticate {
method __construct (line 21) | public function __construct(Guard $auth)
method handle (line 33) | public function handle($request, Closure $next)
FILE: app/Http/Middleware/CustomVerifyCsrfToken.php
class CustomVerifyCsrfToken (line 5) | class CustomVerifyCsrfToken extends BaseVerifier
method handle (line 30) | public function handle($request, \Closure $next)
method excludedRoutes (line 45) | protected function excludedRoutes($request)
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
class RedirectIfAuthenticated (line 7) | class RedirectIfAuthenticated {
method __construct (line 22) | public function __construct(Guard $auth)
method handle (line 34) | public function handle($request, Closure $next)
FILE: app/Http/Middleware/VerifyCsrfToken.php
class VerifyCsrfToken (line 6) | class VerifyCsrfToken extends BaseVerifier {
method handle (line 15) | public function handle($request, Closure $next)
FILE: app/Http/Requests/CreateMessageRequest.php
class CreateMessageRequest (line 5) | class CreateMessageRequest extends Request {
method authorize (line 12) | public function authorize()
method rules (line 22) | public function rules()
FILE: app/Http/Requests/CreateMessageResponseRequest.php
class CreateMessageResponseRequest (line 5) | class CreateMessageResponseRequest extends Request {
method authorize (line 12) | public function authorize()
method rules (line 22) | public function rules()
FILE: app/Http/Requests/CreateSessionRequest.php
class CreateSessionRequest (line 5) | class CreateSessionRequest extends Request {
method authorize (line 12) | public function authorize()
method rules (line 22) | public function rules()
FILE: app/Http/Requests/RegisterUserRequest.php
class RegisterUserRequest (line 5) | class RegisterUserRequest extends Request {
method authorize (line 12) | public function authorize()
method rules (line 22) | public function rules()
FILE: app/Http/Requests/Request.php
class Request (line 5) | abstract class Request extends FormRequest {
FILE: app/Mailers/Mailer.php
class Mailer (line 5) | abstract class Mailer
method __construct (line 15) | public function __construct(Mail $mail)
method sendTo (line 29) | public function sendTo($user, $subject, $view, $data = [])
FILE: app/Mailers/UserMailer.php
class UserMailer (line 5) | class UserMailer extends Mailer
method sendWelcomeMessageTo (line 13) | public function sendWelcomeMessageTo(User $user)
method sendFriendRequestAlertTo (line 33) | public function sendFriendRequestAlertTo(User $requestedUser, User $re...
FILE: app/Message.php
class Message (line 5) | class Message extends Model {
method users (line 17) | public function users()
method createMessage (line 32) | public static function createMessage($body, $senderId, $senderProfileI...
method messageResponses (line 48) | public function messageResponses()
method getLastReceiverId (line 58) | public function getLastReceiverId()
method belongsToUser (line 70) | public function belongsToUser($userId)
FILE: app/MessageResponse.php
class MessageResponse (line 6) | class MessageResponse extends Model {
method users (line 20) | public function users()
method message (line 31) | public function message()
method createMessageResponse (line 46) | public static function createMessageResponse($body, $senderId, $receiv...
method getMessageResponseSubject (line 64) | public function getMessageResponseSubject()
method hasBeenOpenedBy (line 77) | public function hasBeenOpenedBy($userId)
method wasSentByThisUser (line 90) | public function wasSentByThisUser($userId)
FILE: app/Providers/AppServiceProvider.php
class AppServiceProvider (line 8) | class AppServiceProvider extends ServiceProvider {
method boot (line 15) | public function boot()
method register (line 25) | public function register()
FILE: app/Providers/BusServiceProvider.php
class BusServiceProvider (line 6) | class BusServiceProvider extends ServiceProvider {
method boot (line 14) | public function boot(Dispatcher $dispatcher)
method register (line 29) | public function register()
FILE: app/Providers/ConfigServiceProvider.php
class ConfigServiceProvider (line 5) | class ConfigServiceProvider extends ServiceProvider {
method register (line 16) | public function register()
FILE: app/Providers/EventServiceProvider.php
class EventServiceProvider (line 10) | class EventServiceProvider extends ServiceProvider {
method boot (line 36) | public function boot(DispatcherContract $events)
FILE: app/Providers/RouteServiceProvider.php
class RouteServiceProvider (line 6) | class RouteServiceProvider extends ServiceProvider {
method boot (line 23) | public function boot(Router $router)
method map (line 36) | public function map(Router $router)
FILE: app/Realtime/Chat.php
class Chat (line 3) | class Chat extends Realtime
method sendMessageTo (line 17) | public function sendMessageTo($userId = "", $clientCode = "", $fromId ...
FILE: app/Realtime/Events.php
class Events (line 3) | class Events extends Realtime
method updateChatStatusBar (line 18) | public function updateChatStatusBar($userIds = [], $clientCode = "", $...
method updateChatListFriendRemoved (line 35) | public function updateChatListFriendRemoved($userId = "", $clientCode ...
FILE: app/Realtime/Realtime.php
class Realtime (line 6) | abstract class Realtime
method __construct (line 15) | public function __construct()
method broadcastToAll (line 27) | public function broadcastToAll($userIds = [], $clientCode = "", $relat...
method broadcastTo (line 51) | public function broadcastTo($userId = "", $clientCode = "", $relatedTo...
FILE: app/Repositories/Feed/EloquentFeedRepository.php
class EloquentFeedRepository (line 6) | class EloquentFeedRepository implements FeedRepository
method getPublishedByUserAndFriends (line 15) | public function getPublishedByUserAndFriends(User $user)
method getPublishedByUser (line 25) | public function getPublishedByUser(User $user)
method getPublishedByUserAndFriendsAjax (line 41) | public function getPublishedByUserAndFriendsAjax(User $user, $skipQty)
FILE: app/Repositories/Feed/FeedRepository.php
type FeedRepository (line 5) | interface FeedRepository
method getPublishedByUserAndFriends (line 7) | public function getPublishedByUserAndFriends(User $user);
method getPublishedByUser (line 9) | public function getPublishedByUser(User $user);
method getPublishedByUserAndFriendsAjax (line 11) | public function getPublishedByUserAndFriendsAjax(User $user, $skipQty);
FILE: app/Repositories/FriendRequest/EloquentFriendRequestRepository.php
class EloquentFriendRequestRepository (line 7) | class EloquentFriendRequestRepository implements FriendRequestRepository
method getIdsThatSentRequestToCurrentUser (line 9) | public function getIdsThatSentRequestToCurrentUser($id)
FILE: app/Repositories/FriendRequest/FriendRequestRepository.php
type FriendRequestRepository (line 5) | interface FriendRequestRepository
method getIdsThatSentRequestToCurrentUser (line 7) | public function getIdsThatSentRequestToCurrentUser($id);
FILE: app/Repositories/Message/EloquentMessageRepository.php
class EloquentMessageRepository (line 5) | class EloquentMessageRepository implements MessageRepository
method findById (line 14) | public function findById($id)
method findByIdWithMessageResponses (line 26) | public function findByIdWithMessageResponses($id)
FILE: app/Repositories/Message/MessageRepository.php
type MessageRepository (line 6) | interface MessageRepository
method findById (line 8) | public function findById($id);
method findByIdWithMessageResponses (line 9) | public function findByIdWithMessageResponses($id);
FILE: app/Repositories/User/CachingUserRepository.php
class CachingUserRepository (line 6) | class CachingUserRepository implements UserRepository
method __construct (line 33) | public function __construct(UserRepository $repository, Cache $cache)
method getPaginated (line 49) | public function getPaginated($howMany = 10, $byFirstname = null)
method findById (line 75) | public function findById($id)
method findManyById (line 87) | public function findManyById(array $ids)
method findByIdWithFeeds (line 99) | public function findByIdWithFeeds($id)
method findByIdWithMessages (line 111) | public function findByIdWithMessages($id)
method findByIdWithFriendRequests (line 123) | public function findByIdWithFriendRequests($id)
method findByIdWithFriends (line 135) | public function findByIdWithFriends($id)
FILE: app/Repositories/User/EloquentUserRepository.php
class EloquentUserRepository (line 6) | class EloquentUserRepository implements UserRepository
method getPaginated (line 17) | public function getPaginated($howMany = 10, $byFirstname = null)
method findById (line 34) | public function findById($id)
method findManyById (line 46) | public function findManyById(array $ids)
method findByIdWithFeeds (line 66) | public function findByIdWithFeeds($id)
method findByIdWithMessages (line 82) | public function findByIdWithMessages($id)
method findByIdWithFriendRequests (line 93) | public function findByIdWithFriendRequests($userId)
method findByIdWithFriends (line 109) | public function findByIdWithFriends($userId)
FILE: app/Repositories/User/UserRepository.php
type UserRepository (line 5) | interface UserRepository
method getPaginated (line 7) | public function getPaginated($howMany, $byKeyword);
method findById (line 8) | public function findById($id);
method findManyById (line 9) | public function findManyById(array $ids);
method findByIdWithFeeds (line 10) | public function findByIdWithFeeds($id);
method findByIdWithMessages (line 11) | public function findByIdWithMessages($id);
method findByIdWithFriends (line 12) | public function findByIdWithFriends($userId);
FILE: app/Services/ProcessImage.php
class ProcessImage (line 6) | class ProcessImage
method execute (line 15) | public function execute($file, $path, $width, $height)
method rename (line 28) | public function rename($file)
FILE: app/User.php
class User (line 10) | class User extends Model implements AuthenticatableContract, CanResetPas...
method feeds (line 39) | public function feeds()
method friendRequests (line 49) | public function friendRequests()
method friends (line 60) | public function friends()
method messages (line 70) | public function messages()
method messageResponses (line 80) | public function messageResponses()
method register (line 105) | public static function register($firstname, $lastname, $email, $passwo...
method createFriendShipWith (line 119) | public function createFriendShipWith($requesterUserId)
method finishFriendshipWith (line 132) | public function finishFriendshipWith($requesterUserId)
method updateOnlineStatus (line 146) | public function updateOnlineStatus($status)
method isFriendsWith (line 160) | public function isFriendsWith($otherUserId)
method sentFriendRequestTo (line 174) | public function sentFriendRequestTo($otherUserId)
method receivedFriendRequestFrom (line 188) | public function receivedFriendRequestFrom($otherUserId)
method is (line 204) | public function is($id)
method isAvailableToChat (line 214) | public function isAvailableToChat()
method updateChatStatus (line 226) | public function updateChatStatus($chatStatus)
method isOnline (line 238) | public function isOnline()
FILE: bower_components/bootstrap-switch/dist/js/bootstrap-switch.js
function BootstrapSwitch (line 29) | function BootstrapSwitch(element, options) {
FILE: bower_components/bootstrap/dist/js/bootstrap.js
function transitionEnd (line 34) | function transitionEnd() {
function removeElement (line 126) | function removeElement() {
function Plugin (line 142) | function Plugin(option) {
function Plugin (line 247) | function Plugin(option) {
function Plugin (line 466) | function Plugin(option) {
function getTargetFromTrigger (line 685) | function getTargetFromTrigger($trigger) {
function Plugin (line 697) | function Plugin(option) {
function clearMenus (line 829) | function clearMenus(e) {
function getParent (line 848) | function getParent($this) {
function Plugin (line 865) | function Plugin(option) {
function Plugin (line 1194) | function Plugin(option, _relatedTarget) {
function complete (line 1540) | function complete() {
function Plugin (line 1692) | function Plugin(option) {
function Plugin (line 1801) | function Plugin(option) {
function ScrollSpy (line 1844) | function ScrollSpy(element, options) {
function Plugin (line 1964) | function Plugin(option) {
function next (line 2071) | function next() {
function Plugin (line 2117) | function Plugin(option) {
function Plugin (line 2274) | function Plugin(option) {
FILE: bower_components/bootstrap/grunt/bs-commonjs-generator.js
function srcPathToDestRequire (line 10) | function srcPathToDestRequire(srcFilepath) {
FILE: bower_components/bootstrap/grunt/bs-lessdoc-parser.js
function markdown2html (line 11) | function markdown2html(markdownString) {
function Section (line 42) | function Section(heading, customizable) {
function SubSection (line 54) | function SubSection(heading) {
function VarDocstring (line 64) | function VarDocstring(markdownString) {
function SectionDocstring (line 68) | function SectionDocstring(markdownString) {
function Variable (line 72) | function Variable(name, defaultValue) {
function Tokenizer (line 78) | function Tokenizer(fileContent) {
function Parser (line 142) | function Parser(fileContent) {
FILE: bower_components/bootstrap/grunt/bs-raw-files-generator.js
function getFiles (line 15) | function getFiles(type) {
FILE: bower_components/bootstrap/js/affix.js
function Plugin (line 119) | function Plugin(option) {
FILE: bower_components/bootstrap/js/alert.js
function removeElement (line 48) | function removeElement() {
function Plugin (line 64) | function Plugin(option) {
FILE: bower_components/bootstrap/js/button.js
function Plugin (line 74) | function Plugin(option) {
FILE: bower_components/bootstrap/js/carousel.js
function Plugin (line 176) | function Plugin(option) {
FILE: bower_components/bootstrap/js/collapse.js
function getTargetFromTrigger (line 157) | function getTargetFromTrigger($trigger) {
function Plugin (line 169) | function Plugin(option) {
FILE: bower_components/bootstrap/js/dropdown.js
function clearMenus (line 89) | function clearMenus(e) {
function getParent (line 108) | function getParent($this) {
function Plugin (line 125) | function Plugin(option) {
FILE: bower_components/bootstrap/js/modal.js
function Plugin (line 292) | function Plugin(option, _relatedTarget) {
FILE: bower_components/bootstrap/js/popover.js
function Plugin (line 82) | function Plugin(option) {
FILE: bower_components/bootstrap/js/scrollspy.js
function ScrollSpy (line 16) | function ScrollSpy(element, options) {
function Plugin (line 136) | function Plugin(option) {
FILE: bower_components/bootstrap/js/tab.js
function next (line 70) | function next() {
function Plugin (line 116) | function Plugin(option) {
FILE: bower_components/bootstrap/js/tooltip.js
function complete (line 298) | function complete() {
function Plugin (line 450) | function Plugin(option) {
FILE: bower_components/bootstrap/js/transition.js
function transitionEnd (line 16) | function transitionEnd() {
FILE: bower_components/jquery-timeago/jquery.timeago.js
function substitute (line 93) | function substitute(stringOrFunction, number) {
function refresh (line 177) | function refresh() {
function prepareData (line 189) | function prepareData(element) {
function inWords (line 203) | function inWords(date) {
function distance (line 207) | function distance(date) {
FILE: bower_components/jquery-timeago/locales/jquery.timeago.ar.js
function numpf (line 2) | function numpf(n, a) {
FILE: bower_components/jquery-timeago/locales/jquery.timeago.pl.js
function numpf (line 3) | function numpf(n, s, t) {
FILE: bower_components/jquery-timeago/locales/jquery.timeago.ru.js
function numpf (line 3) | function numpf(n, f, s, t) {
FILE: bower_components/jquery-timeago/locales/jquery.timeago.uk.js
function numpf (line 3) | function numpf(n, f, s, t) {
FILE: bower_components/jquery/dist/jquery.js
function isArraylike (line 533) | function isArraylike( obj ) {
function Sizzle (line 745) | function Sizzle( selector, context, results, seed ) {
function createCache (line 859) | function createCache() {
function markFunction (line 877) | function markFunction( fn ) {
function assert (line 886) | function assert( fn ) {
function addHandle (line 908) | function addHandle( attrs, handler ) {
function siblingCheck (line 923) | function siblingCheck( a, b ) {
function createInputPseudo (line 950) | function createInputPseudo( type ) {
function createButtonPseudo (line 961) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 972) | function createPositionalPseudo( fn ) {
function testContext (line 995) | function testContext( context ) {
function setFilters (line 2004) | function setFilters() {}
function toSelector (line 2075) | function toSelector( tokens ) {
function addCombinator (line 2085) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2138) | function elementMatcher( matchers ) {
function multipleContexts (line 2152) | function multipleContexts( selector, contexts, results ) {
function condense (line 2161) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2182) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2275) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2333) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2629) | function winnow( elements, qualifier, not ) {
function sibling (line 2953) | function sibling( cur, dir ) {
function createOptions (line 3031) | function createOptions( options ) {
function completed (line 3425) | function completed() {
function Data (line 3530) | function Data() {
function dataAttr (line 3721) | function dataAttr( elem, key, data ) {
function returnTrue (line 4061) | function returnTrue() {
function returnFalse (line 4065) | function returnFalse() {
function safeActiveElement (line 4069) | function safeActiveElement() {
function manipulationTarget (line 4941) | function manipulationTarget( elem, content ) {
function disableScript (line 4951) | function disableScript( elem ) {
function restoreScript (line 4955) | function restoreScript( elem ) {
function setGlobalEval (line 4968) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 4979) | function cloneCopyEvent( src, dest ) {
function getAll (line 5013) | function getAll( context, tag ) {
function fixInput (line 5024) | function fixInput( src, dest ) {
function actualDisplay (line 5479) | function actualDisplay( name, doc ) {
function defaultDisplay (line 5501) | function defaultDisplay( nodeName ) {
function curCSS (line 5548) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 5596) | function addGetHookIf( conditionFn, hookFn ) {
function computePixelPositionAndBoxSizingReliable (line 5636) | function computePixelPositionAndBoxSizingReliable() {
function vendorPropName (line 5741) | function vendorPropName( style, name ) {
function setPositiveNumber (line 5763) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 5771) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 5810) | function getWidthOrHeight( elem, name, extra ) {
function showHide (line 5854) | function showHide( elements, show ) {
function Tween (line 6152) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 6321) | function createFxNow() {
function genFx (line 6329) | function genFx( type, includeWidth ) {
function createTween (line 6349) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 6363) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 6496) | function propFilter( props, specialEasing ) {
function Animation (line 6533) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 7581) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7613) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7640) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 7660) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 7716) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 8174) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 8418) | function buildParams( prefix, obj, traditional, add ) {
function getWindow (line 8912) | function getWindow( elem ) {
FILE: bower_components/jquery/src/ajax.js
function addToPrefiltersOrTransports (line 50) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 82) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 109) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 129) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 185) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 643) | function done( status, nativeStatusText, responses, headers ) {
FILE: bower_components/jquery/src/callbacks.js
function createOptions (line 10) | function createOptions( options ) {
FILE: bower_components/jquery/src/core.js
function isArraylike (line 480) | function isArraylike( obj ) {
FILE: bower_components/jquery/src/core/ready.js
function completed (line 64) | function completed() {
FILE: bower_components/jquery/src/css.js
function vendorPropName (line 39) | function vendorPropName( style, name ) {
function setPositiveNumber (line 61) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 69) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 108) | function getWidthOrHeight( elem, name, extra ) {
function showHide (line 152) | function showHide( elements, show ) {
FILE: bower_components/jquery/src/css/addGetHookIf.js
function addGetHookIf (line 3) | function addGetHookIf( conditionFn, hookFn ) {
FILE: bower_components/jquery/src/css/curCSS.js
function curCSS (line 9) | function curCSS( elem, name, computed ) {
FILE: bower_components/jquery/src/css/defaultDisplay.js
function actualDisplay (line 15) | function actualDisplay( name, doc ) {
function defaultDisplay (line 37) | function defaultDisplay( nodeName ) {
FILE: bower_components/jquery/src/css/support.js
function computePixelPositionAndBoxSizingReliable (line 28) | function computePixelPositionAndBoxSizingReliable() {
FILE: bower_components/jquery/src/data.js
function dataAttr (line 22) | function dataAttr( elem, key, data ) {
FILE: bower_components/jquery/src/data/Data.js
function Data (line 7) | function Data() {
FILE: bower_components/jquery/src/effects.js
function createFxNow (line 75) | function createFxNow() {
function genFx (line 83) | function genFx( type, includeWidth ) {
function createTween (line 103) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 117) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 250) | function propFilter( props, specialEasing ) {
function Animation (line 287) | function Animation( elem, properties, options ) {
FILE: bower_components/jquery/src/effects/Tween.js
function Tween (line 6) | function Tween( elem, options, prop, end, easing ) {
FILE: bower_components/jquery/src/event.js
function returnTrue (line 21) | function returnTrue() {
function returnFalse (line 25) | function returnFalse() {
function safeActiveElement (line 29) | function safeActiveElement() {
FILE: bower_components/jquery/src/manipulation.js
function manipulationTarget (line 51) | function manipulationTarget( elem, content ) {
function disableScript (line 61) | function disableScript( elem ) {
function restoreScript (line 65) | function restoreScript( elem ) {
function setGlobalEval (line 78) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 89) | function cloneCopyEvent( src, dest ) {
function getAll (line 123) | function getAll( context, tag ) {
function fixInput (line 134) | function fixInput( src, dest ) {
FILE: bower_components/jquery/src/offset.js
function getWindow (line 20) | function getWindow( elem ) {
FILE: bower_components/jquery/src/serialize.js
function buildParams (line 15) | function buildParams( prefix, obj, traditional, add ) {
FILE: bower_components/jquery/src/sizzle/dist/sizzle.js
function Sizzle (line 197) | function Sizzle( selector, context, results, seed ) {
function createCache (line 311) | function createCache() {
function markFunction (line 329) | function markFunction( fn ) {
function assert (line 338) | function assert( fn ) {
function addHandle (line 360) | function addHandle( attrs, handler ) {
function siblingCheck (line 375) | function siblingCheck( a, b ) {
function createInputPseudo (line 402) | function createInputPseudo( type ) {
function createButtonPseudo (line 413) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 424) | function createPositionalPseudo( fn ) {
function testContext (line 447) | function testContext( context ) {
function setFilters (line 1456) | function setFilters() {}
function toSelector (line 1527) | function toSelector( tokens ) {
function addCombinator (line 1537) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 1590) | function elementMatcher( matchers ) {
function multipleContexts (line 1604) | function multipleContexts( selector, contexts, results ) {
function condense (line 1613) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 1634) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 1727) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 1785) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
FILE: bower_components/jquery/src/traversing.js
function sibling (line 127) | function sibling( cur, dir ) {
FILE: bower_components/jquery/src/traversing/findFilter.js
function winnow (line 11) | function winnow( elements, qualifier, not ) {
FILE: bower_components/jqueryui/jquery-ui.js
function focusable (line 94) | function focusable( element, isTabIndexNotNaN ) {
function visible (line 115) | function visible( element ) {
function reduce (line 157) | function reduce( elem, size, border, margin ) {
function handlerProxy (line 716) | function handlerProxy() {
function handlerProxy (line 758) | function handlerProxy() {
function getOffsets (line 1071) | function getOffsets( offsets, width, height ) {
function parseCss (line 1078) | function parseCss( element, property ) {
function getDimensions (line 1082) | function getDimensions( elem ) {
function datepicker_getZindex (line 3784) | function datepicker_getZindex( elem ) {
function Datepicker (line 3811) | function Datepicker() {
function datepicker_bindHover (line 5754) | function datepicker_bindHover(dpDiv) {
function datepicker_handleMouseover (line 5768) | function datepicker_handleMouseover() {
function datepicker_extendRemove (line 5782) | function datepicker_extendRemove(target, props) {
function checkFocus (line 8386) | function checkFocus() {
function filteredUi (line 8570) | function filteredUi( ui ) {
function filteredUi (line 8617) | function filteredUi( ui ) {
function isOverAxis (line 9161) | function isOverAxis( x, reference, size ) {
function clamp (line 9517) | function clamp( value, prop, allowEmpty ) {
function stringParse (line 9543) | function stringParse( string ) {
function hue2rgb (line 9793) | function hue2rgb( p, q, h ) {
function getElementStyles (line 10059) | function getElementStyles( elem ) {
function styleDifference (line 10086) | function styleDifference( oldStyle, newStyle ) {
function _normalizeArguments (line 10406) | function _normalizeArguments( effect, options, speed, callback ) {
function standardAnimationOption (line 10458) | function standardAnimationOption( option ) {
function run (line 10503) | function run( next ) {
function childComplete (line 10983) | function childComplete() {
function animComplete (line 11032) | function animComplete() {
function addItems (line 14129) | function addItems() {
function delayEvent (line 14710) | function delayEvent( type, instance, container ) {
function spinner_modifier (line 14799) | function spinner_modifier( fn ) {
function checkFocus (line 14923) | function checkFocus() {
function constrain (line 15517) | function constrain() {
function complete (line 15893) | function complete() {
function show (line 15898) | function show() {
function position (line 16428) | function position( event ) {
FILE: bower_components/jqueryui/ui/core.js
function focusable (line 88) | function focusable( element, isTabIndexNotNaN ) {
function visible (line 109) | function visible( element ) {
function reduce (line 151) | function reduce( elem, size, border, margin ) {
FILE: bower_components/jqueryui/ui/datepicker.js
function datepicker_getZindex (line 30) | function datepicker_getZindex( elem ) {
function Datepicker (line 57) | function Datepicker() {
function datepicker_bindHover (line 2000) | function datepicker_bindHover(dpDiv) {
function datepicker_handleMouseover (line 2014) | function datepicker_handleMouseover() {
function datepicker_extendRemove (line 2028) | function datepicker_extendRemove(target, props) {
FILE: bower_components/jqueryui/ui/dialog.js
function checkFocus (line 313) | function checkFocus() {
function filteredUi (line 497) | function filteredUi( ui ) {
function filteredUi (line 544) | function filteredUi( ui ) {
FILE: bower_components/jqueryui/ui/droppable.js
function isOverAxis (line 228) | function isOverAxis( x, reference, size ) {
FILE: bower_components/jqueryui/ui/effect-explode.js
function childComplete (line 46) | function childComplete() {
function animComplete (line 95) | function animComplete() {
FILE: bower_components/jqueryui/ui/effect.js
function clamp (line 181) | function clamp( value, prop, allowEmpty ) {
function stringParse (line 207) | function stringParse( string ) {
function hue2rgb (line 457) | function hue2rgb( p, q, h ) {
function getElementStyles (line 723) | function getElementStyles( elem ) {
function styleDifference (line 750) | function styleDifference( oldStyle, newStyle ) {
function _normalizeArguments (line 1070) | function _normalizeArguments( effect, options, speed, callback ) {
function standardAnimationOption (line 1122) | function standardAnimationOption( option ) {
function run (line 1167) | function run( next ) {
FILE: bower_components/jqueryui/ui/position.js
function getOffsets (line 37) | function getOffsets( offsets, width, height ) {
function parseCss (line 44) | function parseCss( element, property ) {
function getDimensions (line 48) | function getDimensions( elem ) {
FILE: bower_components/jqueryui/ui/sortable.js
function addItems (line 658) | function addItems() {
function delayEvent (line 1239) | function delayEvent( type, instance, container ) {
FILE: bower_components/jqueryui/ui/spinner.js
function spinner_modifier (line 28) | function spinner_modifier( fn ) {
function checkFocus (line 152) | function checkFocus() {
FILE: bower_components/jqueryui/ui/tabs.js
function constrain (line 246) | function constrain() {
function complete (line 622) | function complete() {
function show (line 627) | function show() {
FILE: bower_components/jqueryui/ui/tooltip.js
function position (line 286) | function position( event ) {
FILE: bower_components/jqueryui/ui/widget.js
function handlerProxy (line 416) | function handlerProxy() {
function handlerProxy (line 458) | function handlerProxy() {
FILE: database/migrations/2015_04_10_210346_create_users_table.php
class CreateUsersTable (line 6) | class CreateUsersTable extends Migration {
method up (line 13) | public function up()
method down (line 37) | public function down()
FILE: database/migrations/2015_04_12_221129_create_feeds_table.php
class CreateFeedsTable (line 6) | class CreateFeedsTable extends Migration {
method up (line 13) | public function up()
method down (line 32) | public function down()
FILE: database/migrations/2015_04_13_001524_create_friends_table.php
class CreateFriendsTable (line 6) | class CreateFriendsTable extends Migration {
method up (line 13) | public function up()
method down (line 29) | public function down()
FILE: database/migrations/2015_04_15_160303_create_friend_requests_table.php
class CreateFriendRequestsTable (line 6) | class CreateFriendRequestsTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/migrations/2015_04_20_150638_create_messages_table.php
class CreateMessagesTable (line 6) | class CreateMessagesTable extends Migration {
method up (line 13) | public function up()
method down (line 31) | public function down()
FILE: database/migrations/2015_04_20_151158_create_message_user_table.php
class CreateMessageUserTable (line 6) | class CreateMessageUserTable extends Migration {
method up (line 13) | public function up()
method down (line 29) | public function down()
FILE: database/migrations/2015_04_20_163654_create_message_responses_table.php
class CreateMessageResponsesTable (line 6) | class CreateMessageResponsesTable extends Migration {
method up (line 13) | public function up()
method down (line 33) | public function down()
FILE: database/migrations/2015_04_20_165854_create_message_response_user_table.php
class CreateMessageResponseUserTable (line 6) | class CreateMessageResponseUserTable extends Migration {
method up (line 13) | public function up()
method down (line 30) | public function down()
FILE: database/seeds/DatabaseSeeder.php
class DatabaseSeeder (line 7) | class DatabaseSeeder extends Seeder {
method run (line 34) | public function run()
method cleanDatabase (line 48) | public function cleanDatabase()
FILE: database/seeds/FeedTableSeeder.php
class FeedTableSeeder (line 7) | class FeedTableSeeder extends Seeder {
method run (line 13) | public function run()
FILE: database/seeds/FriendRequestTableSeeder.php
class FriendRequestTableSeeder (line 8) | class FriendRequestTableSeeder extends Seeder {
method run (line 14) | public function run()
FILE: database/seeds/MessageResponseUserTableSeeder.php
class MessageResponseUserTableSeeder (line 5) | class MessageResponseUserTableSeeder extends Seeder {
method run (line 12) | public function run()
FILE: database/seeds/MessageResponsesTableSeeder.php
class MessageResponsesTableSeeder (line 7) | class MessageResponsesTableSeeder extends Seeder {
method run (line 13) | public function run()
FILE: database/seeds/MessageUserTableSeeder.php
class MessageUserTableSeeder (line 5) | class MessageUserTableSeeder extends Seeder {
method run (line 11) | public function run()
FILE: database/seeds/MessagesTableSeeder.php
class MessagesTableSeeder (line 6) | class MessagesTableSeeder extends Seeder {
method run (line 12) | public function run()
FILE: database/seeds/UserTableSeeder.php
class UserTableSeeder (line 6) | class UserTableSeeder extends Seeder {
method run (line 12) | public function run()
FILE: gulpfile.js
function errorLog (line 10) | function errorLog(error)
FILE: main.js
function handleFormSubmisions (line 182) | function handleFormSubmisions()
function handleAjaxRequests (line 301) | function handleAjaxRequests()
function getChatConversationData (line 608) | function getChatConversationData(userId)
function handleChatMessages (line 621) | function handleChatMessages(params)
function openChatBox (line 669) | function openChatBox(params)
function generateChatForm (line 700) | function generateChatForm(friendProfileImage, friendName, friendId, marg...
FILE: public/js/libs.js
function n (line 1) | function n(e){var t=e.length,n=Z.type(e);return"function"===n||Z.isWindo...
function r (line 1) | function r(e,t,n){if(Z.isFunction(t))return Z.grep(e,function(e,r){retur...
function i (line 1) | function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}
function o (line 1) | function o(e){var t=ht[e]={};return Z.each(e.match(dt)||[],function(e,n)...
function s (line 1) | function s(){J.removeEventListener("DOMContentLoaded",s,!1),e.removeEven...
function a (line 1) | function a(){Object.defineProperty(this.cache={},0,{get:function(){retur...
function u (line 1) | function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.rep...
function l (line 1) | function l(){return!0}
function c (line 1) | function c(){return!1}
function f (line 1) | function f(){try{return J.activeElement}catch(e){}}
function p (line 1) | function p(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType...
function d (line 1) | function d(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}
function h (line 1) | function h(e){var t=Pt.exec(e.type);return t?e.type=t[1]:e.removeAttribu...
function g (line 1) | function g(e,t){for(var n=0,r=e.length;r>n;n++)vt.set(e[n],"globalEval",...
function m (line 1) | function m(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(vt.hasData(e)&...
function v (line 1) | function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"...
function y (line 1) | function y(e,t){var n=t.nodeName.toLowerCase();"input"===n&&Nt.test(e.ty...
function x (line 1) | function x(t,n){var r,i=Z(n.createElement(t)).appendTo(n.body),o=e.getDe...
function b (line 1) | function b(e){var t=J,n=$t[e];return n||(n=x(e,t),"none"!==n&&n||(Wt=(Wt...
function w (line 1) | function w(e,t,n){var r,i,o,s,a=e.style;return n=n||_t(e),n&&(s=n.getPro...
function T (line 1) | function T(e,t){return{get:function(){return e()?void delete this.get:(t...
function C (line 1) | function C(e,t){if(t in e)return t;for(var n=t[0].toUpperCase()+t.slice(...
function N (line 1) | function N(e,t,n){var r=Xt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2...
function k (line 1) | function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t...
function E (line 1) | function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=...
function S (line 1) | function S(e,t){for(var n,r,i,o=[],s=0,a=e.length;a>s;s++)r=e[s],r.style...
function D (line 1) | function D(e,t,n,r,i){return new D.prototype.init(e,t,n,r,i)}
function j (line 1) | function j(){return setTimeout(function(){Qt=void 0}),Qt=Z.now()}
function A (line 1) | function A(e,t){var n,r=0,i={height:e};for(t=t?1:0;4>r;r+=2-t)n=Tt[r],i[...
function L (line 1) | function L(e,t,n){for(var r,i=(nn[t]||[]).concat(nn["*"]),o=0,s=i.length...
function q (line 1) | function q(e,t,n){var r,i,o,s,a,u,l,c,f=this,p={},d=e.style,h=e.nodeType...
function H (line 1) | function H(e,t){var n,r,i,o,s;for(n in e)if(r=Z.camelCase(n),i=t[r],o=e[...
function O (line 1) | function O(e,t,n){var r,i,o=0,s=tn.length,a=Z.Deferred().always(function...
function F (line 1) | function F(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r...
function P (line 1) | function P(e,t,n,r){function i(a){var u;return o[a]=!0,Z.each(e[a]||[],f...
function R (line 1) | function R(e,t){var n,r,i=Z.ajaxSettings.flatOptions||{};for(n in t)void...
function M (line 1) | function M(e,t,n){for(var r,i,o,s,a=e.contents,u=e.dataTypes;"*"===u[0];...
function W (line 1) | function W(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for...
function $ (line 1) | function $(e,t,n,r){var i;if(Z.isArray(t))Z.each(t,function(t,i){n||kn.t...
function I (line 1) | function I(e){return Z.isWindow(e)?e:9===e.nodeType&&e.defaultView}
function t (line 1) | function t(e,t,n,r){var i,o,s,a,u,l,f,d,h,g;if((t?t.ownerDocument||t:$)!...
function n (line 1) | function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete ...
function r (line 1) | function r(e){return e[W]=!0,e}
function i (line 1) | function i(e){var t=q.createElement("div");try{return!!e(t)}catch(n){ret...
function o (line 1) | function o(e,t){for(var n=e.split("|"),r=e.length;r--;)T.attrHandle[n[r]...
function s (line 1) | function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sour...
function a (line 1) | function a(e){return function(t){var n=t.nodeName.toLowerCase();return"i...
function u (line 1) | function u(e){return function(t){var n=t.nodeName.toLowerCase();return("...
function l (line 1) | function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i...
function c (line 1) | function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}
function f (line 1) | function f(){}
function p (line 1) | function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}
function d (line 1) | function d(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=B++;return t.first...
function h (line 1) | function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)...
function g (line 1) | function g(e,n,r){for(var i=0,o=n.length;o>i;i++)t(e,n[i],r);return r}
function m (line 1) | function m(e,t,n,r,i){for(var o,s=[],a=0,u=e.length,l=null!=t;u>a;a++)(o...
function v (line 1) | function v(e,t,n,i,o,s){return i&&!i[W]&&(i=v(i)),o&&!o[W]&&(o=v(o,s)),r...
function y (line 1) | function y(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],s=o||T.re...
function x (line 1) | function x(e,n){var i=n.length>0,o=e.length>0,s=function(r,s,a,u,l){var ...
function t (line 2) | function t(){s.style.cssText="-webkit-box-sizing:border-box;-moz-box-siz...
function n (line 3) | function n(e,t,n,s){var u,c,v,y,b,T=t;2!==x&&(x=2,a&&clearTimeout(a),r=v...
function e (line 4) | function e(e,s){var n,o,a,r=e.nodeName.toLowerCase();return"area"===r?(n...
function i (line 4) | function i(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack(...
function s (line 4) | function s(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("positi...
function n (line 4) | function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[...
function o (line 4) | function o(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, ....
function a (line 4) | function a(){t.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent(...
function r (line 4) | function r(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);ret...
function h (line 4) | function h(t){return function(){var e=this.element.val();t.apply(this,ar...
function s (line 4) | function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"pa...
function r (line 4) | function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-st...
function i (line 4) | function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}
function e (line 4) | function e(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFl...
function i (line 4) | function i(e,i){return parseInt(t.css(e,i),10)||0}
function s (line 4) | function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e...
function i (line 7) | function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e...
function e (line 8) | function e(t){return{position:t.position,offset:t.offset}}
function e (line 8) | function e(t){return{originalPosition:t.originalPosition,originalSize:t....
function t (line 8) | function t(t,e,i){return t>=e&&e+i>t}
function i (line 8) | function i(t,e,i){var s=c[e.type]||{};return null==t?i||!e.def?null:e.de...
function s (line 8) | function s(e){var i=l(),s=i._rgba=[];return e=e.toLowerCase(),f(h,functi...
function n (line 8) | function n(t,e,i){return i=(i+1)%1,1>6*i?t+(e-t)*i*6:1>2*i?e:2>3*i?t+(e-...
function e (line 8) | function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defa...
function i (line 8) | function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.st...
function e (line 8) | function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effec...
function i (line 8) | function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=...
function i (line 8) | function i(e){function i(){t.isFunction(o)&&o.call(n[0]),t.isFunction(e)...
function s (line 8) | function s(){b.push(this),b.length===c*d&&n()}
function n (line 8) | function n(){p.css({visibility:"visible"}),t(b).remove(),m||p.hide(),i()}
function i (line 10) | function i(){r.push(this)}
function i (line 10) | function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}
function i (line 10) | function i(){var t=this.element[0]===this.document[0].activeElement;t||(...
function s (line 10) | function s(){return e>n&&(e=0),0>e&&(e=n),e}
function s (line 11) | function s(){o.running=!1,o._trigger("activate",e,i)}
function n (line 11) | function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-ac...
function n (line 11) | function n(t){l.of=t,a.is(":hidden")||a.position(l)}
function e (line 12) | function e(){var t=document.createElement("bootstrap"),e={WebkitTransiti...
function e (line 12) | function e(e){return this.each(function(){var i=t(this),n=i.data("bs.ale...
function i (line 12) | function i(){a.detach().trigger("closed.bs.alert").remove()}
function e (line 12) | function e(e){return this.each(function(){var o=t(this),n=o.data("bs.but...
function e (line 12) | function e(e){return this.each(function(){var o=t(this),n=o.data("bs.car...
function e (line 12) | function e(e){var i,o=e.attr("data-target")||(i=e.attr("href"))&&i.repla...
function i (line 12) | function i(e){return this.each(function(){var i=t(this),n=i.data("bs.col...
function e (line 12) | function e(e){e&&3===e.which||(t(n).remove(),t(s).each(function(){var o=...
function i (line 12) | function i(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#[A...
function o (line 12) | function o(e){return this.each(function(){var i=t(this),o=i.data("bs.dro...
function e (line 12) | function e(e,o){return this.each(function(){var n=t(this),s=n.data("bs.m...
function e (line 12) | function e(e){return this.each(function(){var o=t(this),n=o.data("bs.too...
function o (line 12) | function o(){"in"!=n.hoverState&&s.detach(),n.$element.removeAttr("aria-...
function e (line 12) | function e(e){return this.each(function(){var o=t(this),n=o.data("bs.pop...
function e (line 12) | function e(i,o){this.$body=t(document.body),this.$scrollElement=t(t(i).i...
function i (line 12) | function i(i){return this.each(function(){var o=t(this),n=o.data("bs.scr...
function e (line 12) | function e(e){return this.each(function(){var o=t(this),n=o.data("bs.tab...
function s (line 13) | function s(){a.removeClass("active").find("> .dropdown-menu > .active")....
function e (line 13) | function e(e){return this.each(function(){var o=t(this),n=o.data("bs.aff...
function t (line 14) | function t(t,i){null==i&&(i={}),this.$element=e(t),this.options=e.extend...
function e (line 15) | function e(){var e=a(this),o=r.settings;return isNaN(e.datetime)||(0==o....
function a (line 15) | function a(e){if(e=t(e),!e.data("timeago")){e.data("timeago",{datetime:r...
function i (line 15) | function i(t){return r.inWords(n(t))}
function n (line 15) | function n(t){return(new Date).getTime()-t.getTime()}
function a (line 15) | function a(a,n){var r=t.isFunction(a)?a(n,e):a,o=i.numbers&&i.numbers[n]...
FILE: public/js/main.js
function e (line 1) | function e(){var e=$(this),a=e.prop("action"),t=e.find('input[name="_met...
function a (line 1) | function a(){var e=$(this),a=e.attr("data-userid"),t=e.attr("href"),s=e....
function t (line 1) | function t(e){if(localStorage){var a=[];return a=JSON.parse(sessionStora...
function s (line 1) | function s(e){var a=t(e.friendId);a?(a.messages.push(e.message),sessionS...
function d (line 1) | function d(e){var a=e.friendProfileImage,t=e.friendName,s=e.friendId,i="...
function n (line 1) | function n(e,a,t,d){var n=$("<div></div>").attr("id","chatwithuser"+t).c...
FILE: tests/ExampleTest.php
class ExampleTest (line 3) | class ExampleTest extends TestCase {
method testBasicExample (line 10) | public function testBasicExample()
FILE: tests/TestCase.php
class TestCase (line 6) | class TestCase extends IntegrationTest {
method createApplication (line 15) | public function createApplication()
FILE: tests/commands/TestCreateFeedCommand.php
class TestCreateFeedCommand (line 7) | class TestCreateFeedCommand extends TestCase
method testHandleReturnsTheNewlyCreatedFeed (line 9) | public function testHandleReturnsTheNewlyCreatedFeed()
FILE: tests/commands/TestCreateFriendRequestCommand.php
class TestCreateFriendRequestCommand (line 7) | class TestCreateFriendRequestCommand extends TestCase
method testHandleReturnsTrueOnSuccesfulFriendRequest (line 9) | public function testHandleReturnsTrueOnSuccesfulFriendRequest()
FILE: tests/commands/TestCreateMessageCommand.php
class TestCreateMessageCommand (line 9) | class TestCreateMessageCommand extends TestCase
method testHandleReturnsTrue (line 11) | public function testHandleReturnsTrue()
FILE: tests/commands/TestLoginUserCommand.php
class TestLoginCommand (line 6) | class TestLoginCommand extends TestCase
method testHandleReturnsTrueOnsuccesfulLogin (line 8) | public function testHandleReturnsTrueOnsuccesfulLogin()
method testHandleReturnsFalseOnFailedLogin (line 24) | public function testHandleReturnsFalseOnFailedLogin()
FILE: tests/commands/TestLogoutUserCommand.php
class TestLogoutUserCommand (line 6) | class TestLogoutUserCommand extends TestCase
method testHandleReturnsLogout (line 8) | public function testHandleReturnsLogout()
FILE: tests/commands/TestRegisterUserCommand.php
class TestRegisterUserCommand (line 5) | class TestRegisterUserCommand
method testHandleReturnsUserAfterRegisteringSuccessfully (line 7) | public function testHandleReturnsUserAfterRegisteringSuccessfully()
FILE: tests/commands/TestRemoveFriendCommand.php
class TestRemoveFriendCommand (line 7) | class TestRemoveFriendCommand extends TestCase
method testHandleReturnsTrue (line 9) | public function testHandleReturnsTrue()
FILE: tests/controllers/TestFeedController.php
class TestFeedController (line 9) | class TestFeedController extends TestCase
method testIndexReturnsViewInstance (line 13) | public function testIndexReturnsViewInstance()
method testStoreReturnsJsonResponseInstance (line 30) | public function testStoreReturnsJsonResponseInstance()
FILE: tests/controllers/TestFriendController.php
class TestFriendController (line 9) | class TestFriendController extends TestCase
method testIndexReturnsViewInstance (line 11) | public function testIndexReturnsViewInstance()
method testStoreReturnsJsonResponseInstance (line 29) | public function testStoreReturnsJsonResponseInstance()
method testDestroyReturnsJsonResponseInstance (line 49) | public function testDestroyReturnsJsonResponseInstance()
FILE: tests/controllers/TestFriendRequestController.php
class TestFriendRequestController (line 9) | class TestFriendRequestController extends TestCase
method testStoreReturnsJsonReponseInstance (line 11) | public function testStoreReturnsJsonReponseInstance()
method testIndexReturnsViewInstance (line 31) | public function testIndexReturnsViewInstance()
FILE: tests/controllers/TestMessageController.php
class TestMessageController (line 7) | class TestMessageController extends TestCase
method testCreateReturnsViewInstance (line 9) | public function testCreateReturnsViewInstance()
FILE: tests/controllers/TestRegistrationController.php
class TestRegistrationController (line 6) | class TestRegistrationController extends TestCase
method setUpBeforeClass (line 11) | public static function setUpBeforeClass()
method tearDownAfterClass (line 16) | public static function tearDownAfterClass()
method testCreateReturnsViewInstance (line 22) | public function testCreateReturnsViewInstance()
FILE: tests/controllers/TestSessionController.php
class testSessionController (line 8) | class testSessionController extends TestCase
method setUpBeforeClass (line 13) | public static function setUpBeforeClass()
method tearDownAfterClass (line 18) | public static function tearDownAfterClass()
method testStoreReturnsRedirectResponseInstance (line 23) | public function testStoreReturnsRedirectResponseInstance()
method testStoreReturnsRedirectResponseInstanceLoginWrong (line 36) | public function testStoreReturnsRedirectResponseInstanceLoginWrong()
method testDestroyReturnsJsonResponseInstance (line 48) | public function testDestroyReturnsJsonResponseInstance()
FILE: tests/controllers/TestUserController.php
class TestUserController (line 9) | class TestUserController extends testCase
method testIndexReturnsViewInstance (line 11) | public function testIndexReturnsViewInstance()
method testShowReturnsViewInstance (line 28) | public function testShowReturnsViewInstance()
FILE: tests/events/TestFriendRequestWasSent.php
class TestFriendRequestWasSent (line 6) | class TestFriendRequestWasSent extends TestCase
method testBothUserObjectsExistInClass (line 8) | public function testBothUserObjectsExistInClass()
FILE: tests/events/TestUserWasRegistered.php
class TestUserWasRegistered (line 6) | class TestUserWasRegistered extends TestCase
method testUserObjectExistinClass (line 8) | public function testUserObjectExistinClass()
FILE: tests/functional/FriendRequestTest.php
class FriendRequestTest (line 5) | class FriendRequestTest extends TestCase
method testAddNewFriendRequest (line 7) | public function testAddNewFriendRequest()
FILE: tests/functional/LoginTest.php
class LoginTest (line 5) | class LoginTest extends TestCase
method testEmptyEmailShowsErrorOnSubmit (line 8) | public function testEmptyEmailShowsErrorOnSubmit()
method testInvalidEmailShowsErrorOnSubmit (line 16) | public function testInvalidEmailShowsErrorOnSubmit()
method testEmptyPasswordShowsErrorOnSubmit (line 24) | public function testEmptyPasswordShowsErrorOnSubmit()
method testLoginWithWrongCedentialsShowsError (line 32) | public function testLoginWithWrongCedentialsShowsError()
FILE: tests/functional/MessagesTest.php
class MessagesTest (line 7) | class MessagesTest extends TestCase
method testSendingAmessageToAnotherUser (line 9) | public function testSendingAmessageToAnotherUser()
FILE: tests/functional/PostFeedTest.php
class PostFeedTest (line 5) | class PostFeedTest extends TestCase
method testSuccesfulPostFeed (line 7) | public function testSuccesfulPostFeed()
FILE: tests/functional/RegistrationTest.php
class RegistrationTest (line 5) | class RegistrationTest extends TestCase
method testEmptyFirstnameShowsErrorOnSubmit (line 7) | public function testEmptyFirstnameShowsErrorOnSubmit()
method testFirstNameTooShortShowsErrorOnSubmit (line 27) | public function testFirstNameTooShortShowsErrorOnSubmit()
method testFirstNameContainNumberShowsErrorOnSubmit (line 47) | public function testFirstNameContainNumberShowsErrorOnSubmit()
method testLastNameEmptyShowsErrorOnSubmit (line 67) | public function testLastNameEmptyShowsErrorOnSubmit()
method testLastNameTooShortShowsErrorOnSubmit (line 87) | public function testLastNameTooShortShowsErrorOnSubmit()
method testLastNameContainNumberShowsErrorOnSubmit (line 107) | public function testLastNameContainNumberShowsErrorOnSubmit()
method testEmptyEmailShowsErrorOnSubmit (line 127) | public function testEmptyEmailShowsErrorOnSubmit()
method testTakenEmailShowsErrorOnSubmit (line 147) | public function testTakenEmailShowsErrorOnSubmit()
method testEmptyPasswordShowsErrorOnSubmit (line 170) | public function testEmptyPasswordShowsErrorOnSubmit()
method testConfirmPasswordShowsErrorOnSubmit (line 190) | public function testConfirmPasswordShowsErrorOnSubmit()
method testPasswordTooShortShowsErrorOnSubmit (line 210) | public function testPasswordTooShortShowsErrorOnSubmit()
method testEmptyPasswordConfirmationShowsErrorOnSubmit (line 230) | public function testEmptyPasswordConfirmationShowsErrorOnSubmit()
method testEmptyYearShowsErrorOnSubmit (line 250) | public function testEmptyYearShowsErrorOnSubmit()
method testNumericYearShowsErrorOnSubmit (line 270) | public function testNumericYearShowsErrorOnSubmit()
method testYearBeforeCurrentShowsErrorOnSubmit (line 290) | public function testYearBeforeCurrentShowsErrorOnSubmit()
method testEmptyImageShowsErrorOnSubmit (line 310) | public function testEmptyImageShowsErrorOnSubmit()
FILE: tests/handlers/TestEmailFriendRequest.php
class TestEmailFriendRequest (line 6) | class TestEmailFriendRequest extends TestCase
method testHandleReturnsTrueAfterFriendRequestWasSent (line 8) | public function testHandleReturnsTrueAfterFriendRequestWasSent()
FILE: tests/handlers/TestEmailRegistrationConfirmation.php
class TestEmailRegistrationConfirmation (line 6) | class TestEmailRegistrationConfirmation extends TestCase
method testHandleReturnsTrueAfterUserWasRegistered (line 8) | public function testHandleReturnsTrueAfterUserWasRegistered()
FILE: tests/repositories/TestFeedRepository.php
class TestFeedRepository (line 7) | class TestFeedRepository extends TestCase
method testGetPublishedByUserAndFriendsReturnArrayWithResults (line 10) | public function testGetPublishedByUserAndFriendsReturnArrayWithResults()
method testGetPublishedByUserReturnArrayWithResults (line 25) | public function testGetPublishedByUserReturnArrayWithResults()
method testGetPublishedByUserAndFriendsAjaxReturnArrayWithResults (line 40) | public function testGetPublishedByUserAndFriendsAjaxReturnArrayWithRes...
FILE: tests/repositories/TestFriendRequestRepository.php
class TestFriendRequestRepository (line 7) | class TestFriendRequestRepository extends TestCase
method testGetIdsThatSentRequestToCurrentUser (line 10) | public function testGetIdsThatSentRequestToCurrentUser()
FILE: tests/repositories/TestMessageRepository.php
class TestMessageRepository (line 7) | class TestMessageRepository extends TestCase
method testFindByidReTurnsMessageInstance (line 9) | public function testFindByidReTurnsMessageInstance()
method testFindByIdWithResponsesReturnsCollection (line 21) | public function testFindByIdWithResponsesReturnsCollection()
FILE: tests/repositories/TestUserRepository.php
class TestUserRepository (line 6) | class TestUserRepository extends TestCase
method testGetPaginatedReturnsACollectionSuccesfully (line 9) | public function testGetPaginatedReturnsACollectionSuccesfully()
method testFindManyById (line 23) | public function testFindManyById()
Condensed preview — 660 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,995K chars).
[
{
"path": ".gitattributes",
"chars": 61,
"preview": "* text=auto\n*.css linguist-vendored\n*.less linguist-vendored\n"
},
{
"path": ".gitignore",
"chars": 27,
"preview": "/vendor\n/node_modules\n.env\n"
},
{
"path": "app/Commands/Command.php",
"chars": 64,
"preview": "<?php namespace App\\Commands;\n\nabstract class Command {\n\n\t//\n\n}\n"
},
{
"path": "app/Commands/CreateFeedCommand.php",
"chars": 1013,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse App\\Feed;\nuse Illuminate\\Contracts\\Bus\\SelfHandling;\nuse Au"
},
{
"path": "app/Commands/CreateFriendRequestCommand.php",
"chars": 978,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse App\\Repositories\\User\\UserRepository;\nuse App\\Events\\Friend"
},
{
"path": "app/Commands/CreateMessageCommand.php",
"chars": 1686,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse App\\Repositories\\User\\UserRepository;\nuse App\\Repositories\\"
},
{
"path": "app/Commands/CreateMessageResponseCommand.php",
"chars": 2350,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse Illuminate\\Contracts\\Bus\\SelfHandling;\nuse App\\Repositories"
},
{
"path": "app/Commands/LoginUserCommand.php",
"chars": 1148,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse Auth;\nuse App\\Realtime\\Events as SocketClient;\nuse Illumina"
},
{
"path": "app/Commands/LogoutUserCommand.php",
"chars": 926,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse App\\Realtime\\Events as SocketClient;\nuse App\\User;\nuse Auth"
},
{
"path": "app/Commands/RegisterUserCommand.php",
"chars": 1615,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Events\\UserWasRegistered;\nuse App\\Commands\\Command;\nuse Illuminate\\Contracts\\Bus\\"
},
{
"path": "app/Commands/RemoveFriendCommand.php",
"chars": 1077,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse App\\Repositories\\User\\UserRepository;\nuse App\\Realtime\\Even"
},
{
"path": "app/Commands/SendChatMessageCommand.php",
"chars": 871,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse App\\Realtime\\Chat as SocketClient;\nuse Illuminate\\Contracts"
},
{
"path": "app/Commands/UpdateChatStatusCommand.php",
"chars": 1126,
"preview": "<?php namespace App\\Commands;\n\nuse App\\Commands\\Command;\nuse Auth;\nuse Illuminate\\Contracts\\Bus\\SelfHandling;\nuse App\\Re"
},
{
"path": "app/Console/Commands/Inspire.php",
"chars": 511,
"preview": "<?php namespace App\\Console\\Commands;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Foundation\\Inspiring;\n\nclass Inspi"
},
{
"path": "app/Console/Kernel.php",
"chars": 568,
"preview": "<?php namespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as Co"
},
{
"path": "app/Events/Event.php",
"chars": 60,
"preview": "<?php namespace App\\Events;\n\nabstract class Event {\n\n\t//\n\n}\n"
},
{
"path": "app/Events/FriendRequestWasSent.php",
"chars": 569,
"preview": "<?php namespace App\\Events;\n\nuse App\\Events\\Event;\nuse App\\User;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass FriendReq"
},
{
"path": "app/Events/UserWasRegistered.php",
"chars": 377,
"preview": "<?php namespace App\\Events;\n\nuse App\\Events\\Event;\nuse App\\User;\n\nuse Illuminate\\Queue\\SerializesModels;\n\nclass UserWasR"
},
{
"path": "app/Exceptions/Handler.php",
"chars": 844,
"preview": "<?php namespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\n\nclass"
},
{
"path": "app/Feed.php",
"chars": 968,
"preview": "<?php namespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Feed extends Model {\n\t\n\t/**\n\t * The attributes that"
},
{
"path": "app/FriendRequest.php",
"chars": 587,
"preview": "<?php namespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass FriendRequest extends Model {\n\n\t/**\n\t * The attribu"
},
{
"path": "app/Handlers/Commands/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "app/Handlers/Events/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "app/Handlers/Events/EmailFriendRequest.php",
"chars": 693,
"preview": "<?php namespace App\\Handlers\\Events;\n\nuse App\\Events\\FriendRequestWasSent;\n\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse"
},
{
"path": "app/Handlers/Events/EmailRegistrationConfirmation.php",
"chars": 662,
"preview": "<?php namespace App\\Handlers\\Events;\n\nuse App\\Events\\UserWasRegistered;\n\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Il"
},
{
"path": "app/Http/Controllers/ChatController.php",
"chars": 982,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Repositories\\"
},
{
"path": "app/Http/Controllers/ChatStatusController.php",
"chars": 701,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse Validator;\nuse Il"
},
{
"path": "app/Http/Controllers/Controller.php",
"chars": 298,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Bus\\DispatchesCommands;\nuse Illuminate\\Routing\\Controll"
},
{
"path": "app/Http/Controllers/FeedController.php",
"chars": 2056,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Commands\\CreateFeedCommand;\nuse App\\Http\\Controllers\\Controller;\nuse App\\"
},
{
"path": "app/Http/Controllers/FriendController.php",
"chars": 2226,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse Auth;\nuse Illumin"
},
{
"path": "app/Http/Controllers/FriendRequestController.php",
"chars": 2645,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse Validator;\nuse Il"
},
{
"path": "app/Http/Controllers/MessageController.php",
"chars": 2368,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Repositories\\"
},
{
"path": "app/Http/Controllers/MessageResponseController.php",
"chars": 1649,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse DB;\nuse Illuminat"
},
{
"path": "app/Http/Controllers/RegistrationController.php",
"chars": 1413,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests\\RegisterUserRequest;\nuse App\\Http\\Controllers\\Controller;\nu"
},
{
"path": "app/Http/Controllers/SessionController.php",
"chars": 1005,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests\\CreateSessionRequest;\nuse App\\Http\\Controllers\\Controller;\n"
},
{
"path": "app/Http/Controllers/UserController.php",
"chars": 1214,
"preview": "<?php namespace App\\Http\\Controllers;\n\nuse App\\Http\\Requests;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Repositories\\"
},
{
"path": "app/Http/Kernel.php",
"chars": 890,
"preview": "<?php namespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel {\n\n\t/**"
},
{
"path": "app/Http/Middleware/Authenticate.php",
"chars": 742,
"preview": "<?php namespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Contracts\\Auth\\Guard;\n\nclass Authenticate {\n\n\t/**\n\t * "
},
{
"path": "app/Http/Middleware/CustomVerifyCsrfToken.php",
"chars": 1345,
"preview": "<?php namespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as BaseVerifier;\n\nclass "
},
{
"path": "app/Http/Middleware/RedirectIfAuthenticated.php",
"chars": 707,
"preview": "<?php namespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Contracts\\Auth\\Guard;\nuse Illuminate\\Http\\RedirectResp"
},
{
"path": "app/Http/Middleware/VerifyCsrfToken.php",
"chars": 412,
"preview": "<?php namespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as BaseVeri"
},
{
"path": "app/Http/Requests/CreateMessageRequest.php",
"chars": 569,
"preview": "<?php namespace App\\Http\\Requests;\n\nuse App\\Http\\Requests\\Request;\n\nclass CreateMessageRequest extends Request {\n\n\t/**\n\t"
},
{
"path": "app/Http/Requests/CreateMessageResponseRequest.php",
"chars": 594,
"preview": "<?php namespace App\\Http\\Requests;\n\nuse App\\Http\\Requests\\Request;\n\nclass CreateMessageResponseRequest extends Request {"
},
{
"path": "app/Http/Requests/CreateSessionRequest.php",
"chars": 459,
"preview": "<?php namespace App\\Http\\Requests;\n\nuse App\\Http\\Requests\\Request;\n\nclass CreateSessionRequest extends Request {\n\n\t/**\n\t"
},
{
"path": "app/Http/Requests/RegisterUserRequest.php",
"chars": 955,
"preview": "<?php namespace App\\Http\\Requests;\n\nuse App\\Http\\Requests\\Request;\n\nclass RegisterUserRequest extends Request {\n\n\t/**\n\t "
},
{
"path": "app/Http/Requests/Request.php",
"chars": 134,
"preview": "<?php namespace App\\Http\\Requests;\n\nuse Illuminate\\Foundation\\Http\\FormRequest;\n\nabstract class Request extends FormRequ"
},
{
"path": "app/Http/routes.php",
"chars": 2627,
"preview": "<?php\n\n/**\n * Registration\n */\nRoute::get('/', ['as' => 'registration_path', 'uses' => 'RegistrationController@create'])"
},
{
"path": "app/Mailers/Mailer.php",
"chars": 586,
"preview": "<?php namespace App\\Mailers;\n\nuse Illuminate\\Mail\\Mailer as Mail;\n\nabstract class Mailer\n{\n\t/**\n\t * @var Object\n\t */\n\tpu"
},
{
"path": "app/Mailers/UserMailer.php",
"chars": 889,
"preview": "<?php namespace App\\Mailers;\n\nuse App\\User;\n\nclass UserMailer extends Mailer\n{\n\t/**\n\t * Sending a welcome message to new"
},
{
"path": "app/Message.php",
"chars": 1632,
"preview": "<?php namespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Message extends Model {\n\n\t/**\n\t * These fields coul"
},
{
"path": "app/MessageResponse.php",
"chars": 1886,
"preview": "<?php namespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse DB;\n\nclass MessageResponse extends Model {\n\n\t/**\n\t * T"
},
{
"path": "app/Providers/AppServiceProvider.php",
"chars": 1522,
"preview": "<?php namespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse App\\Repositories\\User\\CachingUserRepository;"
},
{
"path": "app/Providers/BusServiceProvider.php",
"chars": 594,
"preview": "<?php namespace App\\Providers;\n\nuse Illuminate\\Bus\\Dispatcher;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass BusService"
},
{
"path": "app/Providers/ConfigServiceProvider.php",
"chars": 502,
"preview": "<?php namespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass ConfigServiceProvider extends ServiceProv"
},
{
"path": "app/Providers/EventServiceProvider.php",
"chars": 904,
"preview": "<?php namespace App\\Providers;\n\nuse App\\Events\\UserWasRegistered;\nuse App\\Events\\FriendRequestWasSent;\nuse App\\Handlers\\"
},
{
"path": "app/Providers/RouteServiceProvider.php",
"chars": 931,
"preview": "<?php namespace App\\Providers;\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Foundation\\Support\\Providers\\RouteServiceP"
},
{
"path": "app/Realtime/Chat.php",
"chars": 376,
"preview": "<?php namespace App\\Realtime;\n\nclass Chat extends Realtime\n{\n\t/**\n\t * Send chat message\n\t * \n\t * @param int $userId\n\t *\n"
},
{
"path": "app/Realtime/Events.php",
"chars": 901,
"preview": "<?php namespace App\\Realtime;\n\nclass Events extends Realtime\n{\n\t/**\n\t * Update chat status bar of current user and her f"
},
{
"path": "app/Realtime/Realtime.php",
"chars": 1464,
"preview": "<?php namespace App\\Realtime;\n\nuse ElephantIO\\Client;\nuse ElephantIO\\Engine\\SocketIO\\Version1X;\n\nabstract class Realtime"
},
{
"path": "app/Repositories/Feed/EloquentFeedRepository.php",
"chars": 997,
"preview": "<?php namespace App\\Repositories\\Feed;\n\nuse App\\User;\nuse App\\Feed;\n\nclass EloquentFeedRepository implements FeedReposit"
},
{
"path": "app/Repositories/Feed/FeedRepository.php",
"chars": 269,
"preview": "<?php namespace App\\Repositories\\Feed;\n\nuse App\\User;\n\ninterface FeedRepository\n{\n\tpublic function getPublishedByUserAnd"
},
{
"path": "app/Repositories/FriendRequest/EloquentFriendRequestRepository.php",
"chars": 319,
"preview": "<?php namespace App\\Repositories\\FriendRequest;\n\nuse App\\User;\nuse App\\FriendRequest;\nuse DB;\n\nclass EloquentFriendReque"
},
{
"path": "app/Repositories/FriendRequest/FriendRequestRepository.php",
"chars": 159,
"preview": "<?php namespace App\\Repositories\\FriendRequest;\n\nuse App\\User;\n\ninterface FriendRequestRepository\n{\n\tpublic function get"
},
{
"path": "app/Repositories/Message/EloquentMessageRepository.php",
"chars": 499,
"preview": "<?php namespace App\\Repositories\\Message;\n\nuse App\\Message;\n\nclass EloquentMessageRepository implements MessageRepositor"
},
{
"path": "app/Repositories/Message/MessageRepository.php",
"chars": 192,
"preview": "<?php namespace App\\Repositories\\Message;\n\nuse App\\Message;\nuse App\\User;\n\ninterface MessageRepository\n{\n\tpublic functio"
},
{
"path": "app/Repositories/User/CachingUserRepository.php",
"chars": 2257,
"preview": "<?php namespace App\\Repositories\\User;\n\nuse Illuminate\\Contracts\\Cache\\Repository as Cache;\nuse App\\User;\n\nclass Caching"
},
{
"path": "app/Repositories/User/EloquentUserRepository.php",
"chars": 2086,
"preview": "<?php namespace App\\Repositories\\User;\n\nuse App\\User;\nuse Auth;\n\nclass EloquentUserRepository implements UserRepository\n"
},
{
"path": "app/Repositories/User/UserRepository.php",
"chars": 344,
"preview": "<?php namespace App\\Repositories\\User;\n\nuse App\\User;\n\ninterface UserRepository\n{\t\n\tpublic function getPaginated($howMan"
},
{
"path": "app/Services/ProcessImage.php",
"chars": 861,
"preview": "<?php namespace App\\Services;\n\nuse Faker\\Factory as Faker;\nuse Image;\n\nclass ProcessImage\n{\t\n\t/**\n\t * Save Image to the "
},
{
"path": "app/User.php",
"chars": 4958,
"preview": "<?php namespace App;\n\nuse Illuminate\\Auth\\Authenticatable;\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Auth\\P"
},
{
"path": "artisan",
"chars": 1635,
"preview": "#!/usr/bin/env php\n<?php\n\n/*\n|--------------------------------------------------------------------------\n| Register The "
},
{
"path": "bootstrap/app.php",
"chars": 1551,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------"
},
{
"path": "bootstrap/autoload.php",
"chars": 1080,
"preview": "<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|------------------------------------------------------------------"
},
{
"path": "bower_components/bootstrap/.bower.json",
"chars": 1178,
"preview": "{\n \"name\": \"bootstrap\",\n \"description\": \"The most popular front-end framework for developing responsive, mobile first "
},
{
"path": "bower_components/bootstrap/Gruntfile.js",
"chars": 14424,
"preview": "/*!\n * Bootstrap's Gruntfile\n * http://getbootstrap.com\n * Copyright 2013-2015 Twitter, Inc.\n * Licensed under MIT (http"
},
{
"path": "bower_components/bootstrap/LICENSE",
"chars": 1084,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2011-2015 Twitter, Inc\n\nPermission is hereby granted, free of charge, to any person"
},
{
"path": "bower_components/bootstrap/README.md",
"chars": 6624,
"preview": "# [Bootstrap](http://getbootstrap.com)\n\n[![npm "
},
{
"path": "bower_components/bootstrap/bower.json",
"chars": 903,
"preview": "{\n \"name\": \"bootstrap\",\n \"description\": \"The most popular front-end framework for developing responsive, mobile first "
},
{
"path": "bower_components/bootstrap/dist/css/bootstrap-theme.css",
"chars": 22608,
"preview": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "bower_components/bootstrap/dist/css/bootstrap.css",
"chars": 141622,
"preview": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "bower_components/bootstrap/dist/js/bootstrap.js",
"chars": 67546,
"preview": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "bower_components/bootstrap/dist/js/npm.js",
"chars": 484,
"preview": "// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequ"
},
{
"path": "bower_components/bootstrap/grunt/.jshintrc",
"chars": 119,
"preview": "{\n \"extends\" : \"../js/.jshintrc\",\n \"asi\" : false,\n \"browser\" : false,\n \"es3\" : false,\n \"node\" : true\n}\n"
},
{
"path": "bower_components/bootstrap/grunt/bs-commonjs-generator.js",
"chars": 781,
"preview": "'use strict';\nvar fs = require('fs');\nvar path = require('path');\n\nvar COMMONJS_BANNER = '// This file is autogenerated "
},
{
"path": "bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js",
"chars": 1400,
"preview": "/*!\n * Bootstrap Grunt task for Glyphicons data generation\n * http://getbootstrap.com\n * Copyright 2014 Twitter, Inc.\n *"
},
{
"path": "bower_components/bootstrap/grunt/bs-lessdoc-parser.js",
"chars": 6081,
"preview": "/*!\n * Bootstrap Grunt task for parsing Less docstrings\n * http://getbootstrap.com\n * Copyright 2014 Twitter, Inc.\n * Li"
},
{
"path": "bower_components/bootstrap/grunt/bs-raw-files-generator.js",
"chars": 1376,
"preview": "/*!\n * Bootstrap Grunt task for generating raw-files.min.js for the Customizer\n * http://getbootstrap.com\n * Copyright 2"
},
{
"path": "bower_components/bootstrap/grunt/configBridge.json",
"chars": 1340,
"preview": "{\n \"paths\": {\n \"customizerJs\": [\n \"../assets/js/vendor/autoprefixer.js\",\n \"../assets/js/vendor/less.min.js"
},
{
"path": "bower_components/bootstrap/grunt/sauce_browsers.yml",
"chars": 1439,
"preview": "[\n # Docs: https://saucelabs.com/docs/platforms/webdriver\n\n {\n browserName: \"safari\",\n platform: \"OS X 10.10\"\n "
},
{
"path": "bower_components/bootstrap/js/.jscsrc",
"chars": 1845,
"preview": "{\n \"disallowEmptyBlocks\": true,\n \"disallowKeywords\": [\"with\"],\n \"disallowMixedSpacesAndTabs\": true,\n \"disallowMultip"
},
{
"path": "bower_components/bootstrap/js/.jshintrc",
"chars": 277,
"preview": "{\n \"asi\" : true,\n \"browser\" : true,\n \"eqeqeq\" : false,\n \"eqnull\" : true,\n \"es3\" : true,\n \"expr\" "
},
{
"path": "bower_components/bootstrap/js/affix.js",
"chars": 4806,
"preview": "/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getb"
},
{
"path": "bower_components/bootstrap/js/alert.js",
"chars": 2260,
"preview": "/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getb"
},
{
"path": "bower_components/bootstrap/js/button.js",
"chars": 3274,
"preview": "/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://get"
},
{
"path": "bower_components/bootstrap/js/carousel.js",
"chars": 7141,
"preview": "/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://g"
},
{
"path": "bower_components/bootstrap/js/collapse.js",
"chars": 5963,
"preview": "/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://g"
},
{
"path": "bower_components/bootstrap/js/dropdown.js",
"chars": 4697,
"preview": "/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://g"
},
{
"path": "bower_components/bootstrap/js/modal.js",
"chars": 9988,
"preview": "/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getb"
},
{
"path": "bower_components/bootstrap/js/popover.js",
"chars": 3163,
"preview": "/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://ge"
},
{
"path": "bower_components/bootstrap/js/scrollspy.js",
"chars": 4707,
"preview": "/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://"
},
{
"path": "bower_components/bootstrap/js/tab.js",
"chars": 3796,
"preview": "/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getboo"
},
{
"path": "bower_components/bootstrap/js/tooltip.js",
"chars": 15348,
"preview": "/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://ge"
},
{
"path": "bower_components/bootstrap/js/transition.js",
"chars": 1831,
"preview": "/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http:/"
},
{
"path": "bower_components/bootstrap/less/.csscomb.json",
"chars": 8099,
"preview": "{\n \"always-semicolon\": true,\n \"block-indent\": 2,\n \"color-case\": \"lower\",\n \"color-shorthand\": true,\n \"element-case\":"
},
{
"path": "bower_components/bootstrap/less/.csslintrc",
"chars": 456,
"preview": "{\n \"adjoining-classes\": false,\n \"box-sizing\": false,\n \"box-model\": false,\n \"compatible-vendor-prefixes\": false,\n \"f"
},
{
"path": "bower_components/bootstrap/less/alerts.less",
"chars": 1518,
"preview": "//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert"
},
{
"path": "bower_components/bootstrap/less/badges.less",
"chars": 1201,
"preview": "//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n m"
},
{
"path": "bower_components/bootstrap/less/bootstrap.less",
"chars": 1121,
"preview": "// Core variables and mixins\n@import \"variables.less\";\n@import \"mixins.less\";\n\n// Reset and dependencies\n@import \"normal"
},
{
"path": "bower_components/bootstrap/less/breadcrumbs.less",
"chars": 594,
"preview": "//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-v"
},
{
"path": "bower_components/bootstrap/less/button-groups.less",
"chars": 5659,
"preview": "//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-gro"
},
{
"path": "bower_components/bootstrap/less/buttons.less",
"chars": 3565,
"preview": "//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------"
},
{
"path": "bower_components/bootstrap/less/carousel.less",
"chars": 5405,
"preview": "//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators"
},
{
"path": "bower_components/bootstrap/less/close.less",
"chars": 764,
"preview": "//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-s"
},
{
"path": "bower_components/bootstrap/less/code.less",
"chars": 1401,
"preview": "//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\nco"
},
{
"path": "bower_components/bootstrap/less/component-animations.less",
"chars": 666,
"preview": "//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `."
},
{
"path": "bower_components/bootstrap/less/dropdowns.less",
"chars": 4764,
"preview": "//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display:"
},
{
"path": "bower_components/bootstrap/less/forms.less",
"chars": 14935,
"preview": "//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline"
},
{
"path": "bower_components/bootstrap/less/glyphicons.less",
"chars": 19803,
"preview": "//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus a"
},
{
"path": "bower_components/bootstrap/less/grid.less",
"chars": 1387,
"preview": "//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container wi"
},
{
"path": "bower_components/bootstrap/less/input-groups.less",
"chars": 4215,
"preview": "//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.i"
},
{
"path": "bower_components/bootstrap/less/jumbotron.less",
"chars": 984,
"preview": "//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding (@jum"
},
{
"path": "bower_components/bootstrap/less/labels.less",
"chars": 1079,
"preview": "//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3e"
},
{
"path": "bower_components/bootstrap/less/list-group.less",
"chars": 3022,
"preview": "//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol"
},
{
"path": "bower_components/bootstrap/less/media.less",
"chars": 780,
"preview": ".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}"
},
{
"path": "bower_components/bootstrap/less/mixins/alerts.less",
"chars": 257,
"preview": "// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;"
},
{
"path": "bower_components/bootstrap/less/mixins/background-variant.less",
"chars": 139,
"preview": "// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@"
},
{
"path": "bower_components/bootstrap/less/mixins/border-radius.less",
"chars": 468,
"preview": "// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radiu"
},
{
"path": "bower_components/bootstrap/less/mixins/buttons.less",
"chars": 1080,
"preview": "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for"
},
{
"path": "bower_components/bootstrap/less/mixins/center-block.less",
"chars": 120,
"preview": "// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n"
},
{
"path": "bower_components/bootstrap/less/mixins/clearfix.less",
"chars": 605,
"preview": "// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contentedi"
},
{
"path": "bower_components/bootstrap/less/mixins/forms.less",
"chars": 2641,
"preview": "// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and succ"
},
{
"path": "bower_components/bootstrap/less/mixins/gradients.less",
"chars": 4388,
"preview": "// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end"
},
{
"path": "bower_components/bootstrap/less/mixins/grid-framework.less",
"chars": 2784,
"preview": "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any va"
},
{
"path": "bower_components/bootstrap/less/mixins/grid.less",
"chars": 3094,
"preview": "// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@"
},
{
"path": "bower_components/bootstrap/less/mixins/hide-text.less",
"chars": 579,
"preview": "// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins be"
},
{
"path": "bower_components/bootstrap/less/mixins/image.less",
"chars": 1062,
"preview": "// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the "
},
{
"path": "bower_components/bootstrap/less/mixins/labels.less",
"chars": 161,
"preview": "// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background"
},
{
"path": "bower_components/bootstrap/less/mixins/list-group.less",
"chars": 533,
"preview": "// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;"
},
{
"path": "bower_components/bootstrap/less/mixins/nav-divider.less",
"chars": 232,
"preview": "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n"
},
{
"path": "bower_components/bootstrap/less/mixins/nav-vertical-align.less",
"chars": 364,
"preview": "// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so"
},
{
"path": "bower_components/bootstrap/less/mixins/opacity.less",
"chars": 148,
"preview": "// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha"
},
{
"path": "bower_components/bootstrap/less/mixins/pagination.less",
"chars": 438,
"preview": "// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n"
},
{
"path": "bower_components/bootstrap/less/mixins/panels.less",
"chars": 537,
"preview": "// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n"
},
{
"path": "bower_components/bootstrap/less/mixins/progress-bar.less",
"chars": 191,
"preview": "// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement "
},
{
"path": "bower_components/bootstrap/less/mixins/reset-filter.less",
"chars": 248,
"preview": "// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the I"
},
{
"path": "bower_components/bootstrap/less/mixins/resize.less",
"chars": 196,
"preview": "// Resize anything\n\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: au"
},
{
"path": "bower_components/bootstrap/less/mixins/responsive-visibility.less",
"chars": 343,
"preview": "// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility("
},
{
"path": "bower_components/bootstrap/less/mixins/size.less",
"chars": 127,
"preview": "// Sizing shortcuts\n\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n\n.square(@size) {\n .size(@size; @si"
},
{
"path": "bower_components/bootstrap/less/mixins/tab-focus.less",
"chars": 159,
"preview": "// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus"
},
{
"path": "bower_components/bootstrap/less/mixins/table-row.less",
"chars": 700,
"preview": "// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` an"
},
{
"path": "bower_components/bootstrap/less/mixins/text-emphasis.less",
"chars": 116,
"preview": "// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n"
},
{
"path": "bower_components/bootstrap/less/mixins/text-overflow.less",
"chars": 162,
"preview": "// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-ove"
},
{
"path": "bower_components/bootstrap/less/mixins/vendor-prefixes.less",
"chars": 6650,
"preview": "// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our"
},
{
"path": "bower_components/bootstrap/less/mixins.less",
"chars": 1102,
"preview": "// Mixins\n// --------------------------------------------------\n\n// Utilities\n@import \"mixins/hide-text.less\";\n@import \""
},
{
"path": "bower_components/bootstrap/less/modals.less",
"chars": 3565,
"preview": "//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scr"
},
{
"path": "bower_components/bootstrap/less/navbar.less",
"chars": 14628,
"preview": "//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static n"
},
{
"path": "bower_components/bootstrap/less/navs.less",
"chars": 4930,
"preview": "//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// ------------------------------------"
},
{
"path": "bower_components/bootstrap/less/normalize.less",
"chars": 7650,
"preview": "/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prev"
},
{
"path": "bower_components/bootstrap/less/pager.less",
"chars": 861,
"preview": "//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @li"
},
{
"path": "bower_components/bootstrap/less/pagination.less",
"chars": 2001,
"preview": "//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-"
},
{
"path": "bower_components/bootstrap/less/panels.less",
"chars": 6151,
"preview": "//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-heigh"
},
{
"path": "bower_components/bootstrap/less/popovers.less",
"chars": 3509,
"preview": "//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left"
},
{
"path": "bower_components/bootstrap/less/print.less",
"chars": 2133,
"preview": "/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// =============================="
},
{
"path": "bower_components/bootstrap/less/progress-bars.less",
"chars": 1925,
"preview": "//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -----------------------"
},
{
"path": "bower_components/bootstrap/less/responsive-embed.less",
"chars": 546,
"preview": "// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display:"
},
{
"path": "bower_components/bootstrap/less/responsive-utilities.less",
"chars": 4262,
"preview": "//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n/"
},
{
"path": "bower_components/bootstrap/less/scaffolding.less",
"chars": 3122,
"preview": "//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This r"
},
{
"path": "bower_components/bootstrap/less/tables.less",
"chars": 4612,
"preview": "//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n"
},
{
"path": "bower_components/bootstrap/less/theme.less",
"chars": 7812,
"preview": "\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@"
},
{
"path": "bower_components/bootstrap/less/thumbnails.less",
"chars": 753,
"preview": "//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.th"
},
{
"path": "bower_components/bootstrap/less/tooltip.less",
"chars": 2937,
"preview": "//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n "
},
{
"path": "bower_components/bootstrap/less/type.less",
"chars": 5951,
"preview": "//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h"
},
{
"path": "bower_components/bootstrap/less/utilities.less",
"chars": 747,
"preview": "//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.c"
},
{
"path": "bower_components/bootstrap/less/variables.less",
"chars": 27053,
"preview": "//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for us"
},
{
"path": "bower_components/bootstrap/less/wells.less",
"chars": 527,
"preview": "//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding:"
},
{
"path": "bower_components/bootstrap/package.js",
"chars": 761,
"preview": "// package metadata file for Meteor.js\n\nPackage.describe({\n name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bo"
},
{
"path": "bower_components/bootstrap/package.json",
"chars": 2227,
"preview": "{\n \"name\": \"bootstrap\",\n \"description\": \"The most popular front-end framework for developing responsive, mobile first "
},
{
"path": "bower_components/bootstrap-switch/.bower.json",
"chars": 944,
"preview": "{\n \"name\": \"bootstrap-switch\",\n \"description\": \"Turn checkboxes and radio buttons in toggle switches.\",\n \"version\": \""
},
{
"path": "bower_components/bootstrap-switch/.bowerrc",
"chars": 32,
"preview": "{\n \"directory\": \"components\"\n}\n"
},
{
"path": "bower_components/bootstrap-switch/.gitignore",
"chars": 55,
"preview": ".grunt\nnpm-debug.log\nnode_modules\ncomponents\n.DS_Store\n"
},
{
"path": "bower_components/bootstrap-switch/CHANGELOG.md",
"chars": 4075,
"preview": "# Changelog\n\n## 3.3.2\n\n- Fix for Flicker on initialisation [#425](https://github.com/nostalgiaz/bootstrap-switch/issues/"
},
{
"path": "bower_components/bootstrap-switch/LICENSE",
"chars": 10173,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "bower_components/bootstrap-switch/README.md",
"chars": 2568,
"preview": "# Bootstrap Switch\n[](https://david"
},
{
"path": "bower_components/bootstrap-switch/bower.json",
"chars": 585,
"preview": "{\n \"name\": \"bootstrap-switch\",\n \"description\": \"Turn checkboxes and radio buttons in toggle switches.\",\n \"version\": \""
},
{
"path": "bower_components/bootstrap-switch/dist/css/bootstrap2/bootstrap-switch.css",
"chars": 24467,
"preview": "/* ========================================================================\n * bootstrap-switch - v3.3.2\n * http://www.b"
},
{
"path": "bower_components/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css",
"chars": 6989,
"preview": "/* ========================================================================\n * bootstrap-switch - v3.3.2\n * http://www.b"
},
{
"path": "bower_components/bootstrap-switch/dist/js/bootstrap-switch.js",
"chars": 25530,
"preview": "/* ========================================================================\n * bootstrap-switch - v3.3.2\n * http://www.b"
},
{
"path": "bower_components/bootstrap-switch/documentation-2.html",
"chars": 13002,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "bower_components/bootstrap-switch/events.html",
"chars": 5298,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "bower_components/bootstrap-switch/examples.html",
"chars": 14349,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "bower_components/bootstrap-switch/karma.json",
"chars": 423,
"preview": "{\n \"frameworks\": [\"jasmine\"],\n \"files\": [\n \"bower_components/jquery/dist/jquery.js\",\n \"bower_components/bootstra"
},
{
"path": "bower_components/bootstrap-switch/main.html",
"chars": 3709,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "bower_components/bootstrap-switch/methods.html",
"chars": 5951,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "bower_components/bootstrap-switch/options.html",
"chars": 9709,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "bower_components/bootstrap-switch/src/coffee/bootstrap-switch.coffee",
"chars": 15939,
"preview": "do ($ = window.jQuery, window) ->\n \"use strict\"\n\n class BootstrapSwitch\n constructor: (element, options = {}) ->\n "
},
{
"path": "bower_components/bootstrap-switch/src/coffee/bootstrap-switch.tests.coffee",
"chars": 894,
"preview": "describe \"Bootstrap Switch\", ->\n\n beforeEach ->\n $.support.transition = false\n $.fx.off = true\n\n afterEach ->\n "
},
{
"path": "bower_components/bootstrap-switch/src/less/bootstrap2/bootstrap-switch.less",
"chars": 4635,
"preview": "@bootstrap-switch-base: bootstrap-switch;\n\n.@{bootstrap-switch-base} {\n display: inline-block;\n direction: ltr;\n curs"
},
{
"path": "bower_components/bootstrap-switch/src/less/bootstrap2/build.less",
"chars": 66,
"preview": "@import \"variables\";\n@import \"mixins\";\n@import \"bootstrap-switch\";"
},
{
"path": "bower_components/bootstrap-switch/src/less/bootstrap2/mixins.less",
"chars": 23040,
"preview": "//\n// Mixins\n// --------------------------------------------------\n\n\n// UTILITY MIXINS\n// ------------------------------"
},
{
"path": "bower_components/bootstrap-switch/src/less/bootstrap2/variables.less",
"chars": 9142,
"preview": "//\n// Variables\n// --------------------------------------------------\n\n\n// Global values\n// ----------------------------"
}
]
// ... and 460 more files (download for full content)
About this extraction
This page contains the full source code of the msalom28/Larasocial GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 660 files (4.4 MB), approximately 1.2M tokens, and a symbol index with 746 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.