├── favicon.ico ├── database ├── seeds │ └── .gitkeep ├── migrations │ └── .gitkeep └── .gitignore ├── app ├── Handlers │ ├── Events │ │ └── .gitkeep │ └── Commands │ │ └── .gitkeep ├── Modules │ └── Master │ │ ├── Http │ │ ├── .gitkeep │ │ ├── Middleware │ │ │ └── .gitkeep │ │ ├── Requests │ │ │ └── .gitkeep │ │ ├── Controllers │ │ │ └── .gitkeep │ │ └── routes.php │ │ ├── Console │ │ └── .gitkeep │ │ ├── Database │ │ ├── .gitkeep │ │ ├── Seeds │ │ │ ├── .gitkeep │ │ │ └── MasterDatabaseSeeder.php │ │ └── Migrations │ │ │ └── .gitkeep │ │ ├── Providers │ │ ├── .gitkeep │ │ ├── MasterServiceProvider.php │ │ └── RouteServiceProvider.php │ │ ├── Resources │ │ ├── .gitkeep │ │ ├── Lang │ │ │ └── .gitkeep │ │ └── Views │ │ │ └── .gitkeep │ │ └── module.json ├── Events │ └── Event.php ├── strings.php ├── Commands │ └── Command.php ├── Models │ ├── Menu.php │ ├── Locale.php │ ├── Favourite.php │ ├── SearchCriteriaType.php │ ├── PropertyType.php │ ├── Setting.php │ ├── RegionTranslation.php │ ├── Region.php │ ├── Prospect.php │ ├── PageTranslation.php │ ├── Page.php │ └── PropertyTranslation.php ├── Http │ ├── Controllers │ │ ├── Controller.php │ │ ├── ApiController.php │ │ ├── WelcomeController.php │ │ ├── Admin │ │ │ └── SettingsContactController.php │ │ ├── HomeController.php │ │ ├── User │ │ │ ├── PasswordController.php │ │ │ ├── DashboardController.php │ │ │ └── AccountController.php │ │ ├── LandingController.php │ │ └── OAuthController.php │ ├── Middleware │ │ ├── PageMiddleware.php │ │ ├── VerifyCsrfToken.php │ │ ├── RedirectIfAuthenticated.php │ │ └── Authenticate.php │ ├── Requests │ │ ├── LocaleCreateRequest.php │ │ ├── LocaleUpdateRequest.php │ │ ├── PropertyEmailRequest.php │ │ ├── User │ │ │ ├── LoginRequest.php │ │ │ ├── ProfileRequest.php │ │ │ ├── AccountRequest.php │ │ │ └── RegisterRequest.php │ │ ├── MenuCreateRequest.php │ │ ├── Admin │ │ │ ├── CreateMemberRequest.php │ │ │ └── UpdateMemberRequest.php │ │ ├── ContactRequest.php │ │ ├── StorePageRequest.php │ │ ├── MenuUpdateRequest.php │ │ ├── Installer │ │ │ └── DetailsRequest.php │ │ └── Request.php │ └── Kernel.php ├── Providers │ ├── ConfigServiceProvider.php │ ├── BusServiceProvider.php │ ├── EventServiceProvider.php │ ├── AppServiceProvider.php │ ├── BootableServiceProvider.php │ └── RouteServiceProvider.php ├── Console │ └── Kernel.php ├── Services │ ├── PasswordResetServiceProvider.php │ ├── LaravelSharedHostingPackage.php │ └── Registrar.php └── Exceptions │ └── Handler.php ├── storage ├── .gitignore ├── app │ └── .gitignore ├── logs │ └── .gitignore ├── framework │ ├── cache │ │ └── .gitignore │ ├── views │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ └── .gitignore ├── database.sqlite ├── media │ ├── carousel_1.jpg │ ├── carousel_2.jpg │ └── carousel_3.jpg ├── properties │ ├── c │ │ ├── 4 │ │ │ └── c4ca4238a0b923820dcc509a6f75849b │ │ │ │ └── photos │ │ │ │ ├── 0.jpg │ │ │ │ ├── 1.jpg │ │ │ │ ├── 10.jpg │ │ │ │ ├── 11.jpg │ │ │ │ ├── 12.jpg │ │ │ │ ├── 13.jpg │ │ │ │ ├── 14.jpg │ │ │ │ ├── 15.jpg │ │ │ │ ├── 16.jpg │ │ │ │ ├── 17.jpg │ │ │ │ ├── 18.jpg │ │ │ │ ├── 19.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 20.jpg │ │ │ │ ├── 21.jpg │ │ │ │ ├── 22.jpg │ │ │ │ ├── 23.jpg │ │ │ │ ├── 24.jpg │ │ │ │ ├── 25.jpg │ │ │ │ ├── 26.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ ├── 5.jpg │ │ │ │ ├── 6.jpg │ │ │ │ ├── 7.jpg │ │ │ │ ├── 8.jpg │ │ │ │ └── 9.jpg │ │ └── 8 │ │ │ └── c81e728d9d4c2f636f067f89cc14862c │ │ │ └── photos │ │ │ └── 65806_POD160820_IMG_01_0000.jpg │ └── e │ │ └── c │ │ └── eccbc87e4b5ce2fe28308fd9f2a7baf3 │ │ └── photos │ │ ├── 32447047344_7b4927b293_b.jpg │ │ └── 33174740564_c96bbd4bca_b.jpg └── settings.json ├── resources ├── backend │ ├── src │ │ ├── app │ │ │ ├── vendor.css │ │ │ ├── viewer.html │ │ │ ├── languages │ │ │ │ ├── languages.controller.js │ │ │ │ ├── languages-edit.controller.js │ │ │ │ └── languages.routes.js │ │ │ ├── navigation │ │ │ │ ├── navigation-edit.controller.js │ │ │ │ └── navigation.routes.js │ │ │ ├── settings │ │ │ │ ├── settings-analytics.controller.js │ │ │ │ ├── navbar.html │ │ │ │ └── settings.routes.js │ │ │ ├── members │ │ │ │ ├── blocks │ │ │ │ │ ├── member-remarks.html │ │ │ │ │ ├── admin-access.html │ │ │ │ │ ├── login-history.html │ │ │ │ │ ├── saved-properties.html │ │ │ │ │ ├── saved-searches.html │ │ │ │ │ ├── your-properties.html │ │ │ │ │ └── member-roles.html │ │ │ │ └── member.routes.js │ │ │ ├── auth │ │ │ │ ├── loginModalTemplate.html │ │ │ │ ├── auth.routes.js │ │ │ │ ├── loginModal.controller.js │ │ │ │ └── auth.controller.js │ │ │ ├── prospects │ │ │ │ └── prospects.routes.js │ │ │ ├── properties │ │ │ │ ├── properties.html │ │ │ │ └── forms │ │ │ │ │ └── features.html │ │ │ ├── pages │ │ │ │ └── pages.routes.js │ │ │ ├── regions │ │ │ │ ├── regions.routes.js │ │ │ │ └── regions-edit.html │ │ │ └── main.html │ │ ├── assets │ │ │ ├── less │ │ │ │ ├── dashboard.less │ │ │ │ ├── delta │ │ │ │ │ └── images │ │ │ │ │ │ ├── icons_16.png │ │ │ │ │ │ ├── modalClose.png │ │ │ │ │ │ ├── jGrowl-close.png │ │ │ │ │ │ ├── modalClose@2x.png │ │ │ │ │ │ ├── slider_handles.png │ │ │ │ │ │ ├── slider_handles@2x.png │ │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ │ ├── ui-icons_FFFFFF_256x240.png │ │ │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── settings.less │ │ │ │ ├── base │ │ │ │ │ ├── mixins │ │ │ │ │ │ ├── center-block.less │ │ │ │ │ │ ├── text-emphasis.less │ │ │ │ │ │ ├── size.less │ │ │ │ │ │ ├── opacity.less │ │ │ │ │ │ ├── background-variant.less │ │ │ │ │ │ ├── text-overflow.less │ │ │ │ │ │ ├── tab-focus.less │ │ │ │ │ │ ├── resize.less │ │ │ │ │ │ ├── labels.less │ │ │ │ │ │ ├── progress-bar.less │ │ │ │ │ │ ├── reset-filter.less │ │ │ │ │ │ ├── nav-divider.less │ │ │ │ │ │ ├── alerts.less │ │ │ │ │ │ ├── nav-vertical-align.less │ │ │ │ │ │ ├── responsive-visibility.less │ │ │ │ │ │ ├── pagination.less │ │ │ │ │ │ ├── border-radius.less │ │ │ │ │ │ ├── panels.less │ │ │ │ │ │ ├── list-group.less │ │ │ │ │ │ ├── hide-text.less │ │ │ │ │ │ ├── clearfix.less │ │ │ │ │ │ ├── table-row.less │ │ │ │ │ │ ├── image.less │ │ │ │ │ │ └── buttons.less │ │ │ │ │ ├── .csslintrc │ │ │ │ │ ├── wells.less │ │ │ │ │ ├── breadcrumbs.less │ │ │ │ │ ├── responsive-embed.less │ │ │ │ │ ├── component-animations.less │ │ │ │ │ ├── close.less │ │ │ │ │ ├── thumbnails.less │ │ │ │ │ ├── utilities.less │ │ │ │ │ ├── media.less │ │ │ │ │ ├── pager.less │ │ │ │ │ ├── jumbotron.less │ │ │ │ │ ├── mixins.less │ │ │ │ │ ├── badges.less │ │ │ │ │ ├── bootstrap.less │ │ │ │ │ ├── labels.less │ │ │ │ │ ├── code.less │ │ │ │ │ └── grid.less │ │ │ │ ├── auth.less │ │ │ │ └── bootstrap.less │ │ │ └── images │ │ │ │ ├── close_delete.png │ │ │ │ └── close_delete_off.png │ │ ├── favicon.ico │ │ ├── libs │ │ │ └── sweetalert │ │ │ │ ├── .gitignore │ │ │ │ ├── sweetalert.gif │ │ │ │ ├── example │ │ │ │ └── images │ │ │ │ │ ├── vs_icon.png │ │ │ │ │ ├── logo_big.png │ │ │ │ │ ├── thumbs-up.jpg │ │ │ │ │ ├── logo_big@2x.png │ │ │ │ │ ├── logo_small.png │ │ │ │ │ ├── vs_icon@2x.png │ │ │ │ │ ├── logo_small@2x.png │ │ │ │ │ └── te-logo-small.svg │ │ │ │ ├── .jshintrc │ │ │ │ ├── .editorconfig │ │ │ │ ├── bower.json │ │ │ │ ├── dev │ │ │ │ ├── modules │ │ │ │ │ ├── default-params.js │ │ │ │ │ └── injected-html.js │ │ │ │ └── ie9.css │ │ │ │ ├── LICENSE │ │ │ │ └── package.json │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── components │ │ │ ├── navbar │ │ │ └── navbar.controller.js │ │ │ ├── sidebar │ │ │ └── sidebar.controller.js │ │ │ ├── auth │ │ │ └── auth.service.js │ │ │ └── editable-table.html │ ├── .bowerrc │ ├── .gitignore │ ├── gulpfile.js │ ├── .editorconfig │ ├── karma.conf.js │ ├── gulp │ │ ├── watch.js │ │ ├── wiredep.js │ │ ├── unit-tests.js │ │ ├── e2e-tests.js │ │ ├── consolidate.js │ │ └── server.js │ ├── e2e │ │ ├── main.po.js │ │ └── main.spec.js │ ├── protractor.conf.js │ ├── .jshintrc │ └── package.json ├── views │ └── default │ │ ├── widgets │ │ ├── recent-news.blade.php │ │ └── recent-listings.blade.php │ │ ├── regions │ │ ├── map │ │ │ ├── options.json │ │ │ └── schema.json │ │ ├── home-map │ │ │ ├── options.json │ │ │ └── schema.json │ │ ├── contact │ │ │ ├── data.json │ │ │ ├── options.json │ │ │ └── schema.json │ │ ├── home-blocks │ │ │ ├── options.json │ │ │ └── schema.json │ │ ├── slideshow │ │ │ ├── options.json │ │ │ └── schema.json │ │ ├── home_data │ │ │ ├── options.json │ │ │ └── schema.json │ │ └── listings │ │ │ ├── options.json │ │ │ └── schema.json │ │ ├── emails │ │ ├── password.blade.php │ │ ├── tell_friend.blade.php │ │ ├── welcome.blade.php │ │ ├── auth │ │ │ └── reminder.blade.php │ │ ├── contact_agent.blade.php │ │ └── support_form.blade.php │ │ ├── listings │ │ ├── map_sidebar.blade.php │ │ └── listing_sidebar.blade.php │ │ ├── layouts │ │ └── user.blade.php │ │ ├── pages │ │ ├── plain-page.blade.php │ │ ├── help-page.blade.php │ │ ├── listings.blade.php │ │ └── map.blade.php │ │ ├── user │ │ ├── menu.blade.php │ │ └── change-password.blade.php │ │ ├── installer │ │ └── 3_success.blade.php │ │ └── partials │ │ └── home_carousel.blade.php ├── po │ └── en.mo ├── assets │ └── images │ │ └── no-image.jpg └── lang │ ├── en │ ├── pagination.php │ ├── routes.php │ └── passwords.php │ ├── fr │ ├── pagination.php │ └── reminders.php │ └── i18n │ └── fr │ └── LC_MESSAGES │ └── messages.po ├── .gitignore ├── admin ├── favicon.ico ├── assets │ └── images │ │ ├── close_delete.png │ │ └── close_delete_off.png └── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── package.json ├── phpspec.yml ├── .gitattributes ├── config ├── laravel-widgets.php ├── settings.php ├── route-binder.php ├── image.php ├── cors.php ├── services.php ├── modules.php ├── view.php └── compile.php ├── .env.example ├── .env.template ├── index.php ├── themes └── default │ └── modules │ └── Portal │ └── add-listing.js ├── gulpfile.js ├── phpunit.xml ├── .htaccess ├── bootstrap ├── autoload.php └── app.php └── composer.json /favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/seeds/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Handlers/Events/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/migrations/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Handlers/Commands/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Http/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /storage/.gitignore: -------------------------------------------------------------------------------- 1 | laravel.log -------------------------------------------------------------------------------- /app/Modules/Master/Console/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Database/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Providers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Resources/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/backend/src/app/vendor.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Database/Seeds/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Http/Middleware/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Http/Requests/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Resources/Lang/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Resources/Views/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /app/Modules/Master/Database/Migrations/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Modules/Master/Http/Controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | /node_modules 3 | .env 4 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /resources/backend/src/app/viewer.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /resources/views/default/widgets/recent-news.blade.php: -------------------------------------------------------------------------------- 1 | test {{count}} -------------------------------------------------------------------------------- /resources/backend/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/dashboard.less: -------------------------------------------------------------------------------- 1 | .click-block { 2 | cursor: pointer; 3 | } -------------------------------------------------------------------------------- /admin/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expresspixel/estatezilla/HEAD/admin/favicon.ico -------------------------------------------------------------------------------- /resources/po/en.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expresspixel/estatezilla/HEAD/resources/po/en.mo -------------------------------------------------------------------------------- /resources/views/default/regions/map/options.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "fields": { 4 | 5 | } 6 | 7 | } -------------------------------------------------------------------------------- /app/Events/Event.php: -------------------------------------------------------------------------------- 1 | 'App\Widgets', 5 | 'use_jquery_for_ajax_calls' => false, 6 | ]; 7 | -------------------------------------------------------------------------------- /resources/backend/src/assets/images/close_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expresspixel/estatezilla/HEAD/resources/backend/src/assets/images/close_delete.png -------------------------------------------------------------------------------- /resources/backend/src/libs/sweetalert/sweetalert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expresspixel/estatezilla/HEAD/resources/backend/src/libs/sweetalert/sweetalert.gif -------------------------------------------------------------------------------- /app/Models/Favourite.php: -------------------------------------------------------------------------------- 1 | url('map/search'), 'method' => 'get', 'id'=>'map_listings', 'class' => 'form-vertical form-listings')); ?> 2 | @include('listings.sidebar') 3 | -------------------------------------------------------------------------------- /resources/views/default/regions/contact/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "categories": [ 3 | "Report an error you have seen about a property or the site", 4 | "Send us feedback or suggestions", 5 | "Advertising on this site", 6 | "Anything else" 7 | ] 8 | } -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /resources/backend/src/app/languages/languages.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .controller('LanguagesCtrl', function ($scope) { 5 | 6 | $scope.init = function() { 7 | 8 | }; 9 | $scope.init(); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /.env.template: -------------------------------------------------------------------------------- 1 | APP_ENV=local 2 | APP_DEBUG=true 3 | APP_KEY= 4 | 5 | DB_HOST= 6 | DB_DATABASE= 7 | DB_USERNAME= 8 | DB_PASSWORD= 9 | DB_PORT= 10 | 11 | CACHE_DRIVER=file 12 | SESSION_DRIVER=file 13 | -------------------------------------------------------------------------------- /resources/backend/src/app/languages/languages-edit.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .controller('LanguagesEditCtrl', function ($scope) { 5 | 6 | $scope.init = function() { 7 | 8 | }; 9 | $scope.init(); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /resources/backend/src/app/navigation/navigation-edit.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .controller('NavigationEditCtrl', function ($scope) { 5 | 6 | $scope.init = function() { 7 | 8 | }; 9 | $scope.init(); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /resources/backend/src/libs/sweetalert/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /resources/backend/src/app/settings/settings-analytics.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .controller('SettingsAnalyticsCtrl', function ($scope) { 5 | 6 | $scope.init = function() { 7 | 8 | }; 9 | $scope.init(); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /resources/views/default/emails/tell_friend.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Message from {{ $your_name }}

8 | 9 |
10 | {{ $comment }} 11 |
12 | 13 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /resources/backend/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /app/Models/SearchCriteriaType.php: -------------------------------------------------------------------------------- 1 | hasMany('\App\Models\PropertyType'); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /app/Models/PropertyType.php: -------------------------------------------------------------------------------- 1 | belongsTo('\App\Models\SearchCriteriaType'); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | define('LARAVEL_SHARED', true); 11 | 12 | require_once __DIR__.'/server.php'; -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/member-remarks.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |
6 | 7 | 8 |
9 |
10 | 11 |
12 | -------------------------------------------------------------------------------- /resources/views/default/listings/listing_sidebar.blade.php: -------------------------------------------------------------------------------- 1 | Request::url(), 'method' => 'get', 'id'=>'form_listings', 'class' => 'form-vertical form-listings ajax location-form', 'data-replace-inner' => ".listings_view_content")); ?> 2 | @include('listings.sidebar') 3 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /resources/views/default/emails/welcome.blade.php: -------------------------------------------------------------------------------- 1 |

Welcome

2 | 3 |

Hello {{$name}},

4 | 5 |

Please access the link below to confirm your account.

6 | 7 | {{{ URL::to("user/confirm/{$confirmation_code}") }}} 8 | 9 | 10 |

Regards

11 | -------------------------------------------------------------------------------- /resources/backend/src/app/auth/loginModalTemplate.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 | 8 |
-------------------------------------------------------------------------------- /resources/views/default/regions/home-blocks/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "collapsed": true, 3 | "animate": false, 4 | "toolbarSticky": true, 5 | "toolbarStyle": "link", 6 | "items": { 7 | "fields": { 8 | "description": { 9 | "type": "textarea" 10 | }, 11 | "image": { 12 | "type": "image" 13 | } 14 | } 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /storage/settings.json: -------------------------------------------------------------------------------- 1 | {"default_locale":"en","website_name":"estatezilla","company_name":"estatezilla","website_title":"estatezilla","analytics_code":"","initial_lat":51.507351,"initial_lng":-0.127758,"initial_zoom":9,"default_country":"GB","theme":"default","timezone":"GMT Standard Time","default_currency":"GBP","support_email":"support@expresspixel.com"} -------------------------------------------------------------------------------- /resources/backend/karma.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(config) { 4 | 5 | config.set({ 6 | autoWatch : false, 7 | 8 | frameworks: ['jasmine'], 9 | 10 | browsers : ['PhantomJS'], 11 | 12 | plugins : [ 13 | 'karma-phantomjs-launcher', 14 | 'karma-jasmine' 15 | ] 16 | }); 17 | }; 18 | -------------------------------------------------------------------------------- /resources/views/default/emails/auth/reminder.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Password Reset

8 | 9 |
10 | To reset your password, complete this form: {{ URL::route('password.reset', array($token)) }}. 11 |
12 | 13 | -------------------------------------------------------------------------------- /app/Models/Setting.php: -------------------------------------------------------------------------------- 1 | first(); 9 | if($setting) 10 | return $setting->value; 11 | return false; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /resources/views/default/regions/slideshow/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "collapsed": true, 3 | "animate": false, 4 | "toolbarSticky": true, 5 | "toolbarStyle": "link", 6 | "items": { 7 | "fields": { 8 | "caption": { 9 | "type": "textarea", 10 | "rows": 3 11 | }, 12 | "image": { 13 | "type": "image", 14 | "label": "Image" 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Message from {{ $full_name }}

8 | 9 |
10 | {{ $comments }} 11 |
12 | property : {{ $property }}
13 | phone number : {{ $phone_number }}
14 | email : {{ $your_email }} 15 |
16 | 17 | -------------------------------------------------------------------------------- /app/Models/RegionTranslation.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Message from {{ $first_name }} {{ $last_name }}

8 | 9 |
10 | {{ $comment }} 11 |
12 | phone number : {{ $phone_number }}
13 | email : {{ $email_address }}
14 | url : {{ $url }}
15 | report_type : {{ $report_type }}
16 |
17 | 18 | -------------------------------------------------------------------------------- /resources/views/default/regions/contact/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields":{ 3 | "name":{ 4 | "hideInitValidationError" : true 5 | }, 6 | "photo":{ 7 | "type":"file", 8 | "styled": true 9 | }, 10 | "member":{ 11 | "rightLabel":"Alpaca Club Member" 12 | }, 13 | "address":{ 14 | "type":"address", 15 | "addressValidation":true 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /resources/backend/gulp/wiredep.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | 5 | // inject bower components 6 | gulp.task('wiredep', function () { 7 | var wiredep = require('wiredep').stream; 8 | 9 | return gulp.src('src/index.html') 10 | .pipe(wiredep({ 11 | directory: 'bower_components', 12 | exclude: [/bootstrap\.js/, /bootstrap\.css/, /bootstrap\.css/, /foundation\.css/, 13 | /IPv6\.js/ 14 | ] 15 | })) 16 | .pipe(gulp.dest('src')); 17 | }); 18 | -------------------------------------------------------------------------------- /app/Modules/Master/Database/Seeds/MasterDatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call('App\Modules\Master\Database\Seeds\FoobarTableSeeder'); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /resources/backend/src/app/auth/auth.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | $stateProvider 6 | .state('auth', { 7 | url: '/auth', 8 | templateUrl: 'app/viewer.html' 9 | }) 10 | .state('auth.login', { 11 | url: '/login', 12 | templateUrl: 'app/auth/auth.html', 13 | controller: 'AuthCtrl' 14 | }); 15 | 16 | //$urlRouterProvider.otherwise('/'); 17 | }) 18 | ; 19 | -------------------------------------------------------------------------------- /app/Http/Controllers/ApiController.php: -------------------------------------------------------------------------------- 1 | 'database', 9 | 10 | /** 11 | * If the json store is used, give the full path to the .json file 12 | * that the store writes to. 13 | */ 14 | 'path' => storage_path().'/settings.json', 15 | 16 | /** 17 | * If the database store is used, give the name of the database 18 | * table to use. 19 | */ 20 | 'table' => 'settings', 21 | ); 22 | -------------------------------------------------------------------------------- /app/Models/Region.php: -------------------------------------------------------------------------------- 1 | hasMany('\App\Models\RegionTranslation'); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | [ 16 | 'App\Http\Routes\PageRouteBinder', 17 | ] 18 | ]; -------------------------------------------------------------------------------- /app/Http/Requests/LocaleCreateRequest.php: -------------------------------------------------------------------------------- 1 | (http://tristanedwards.me)" 6 | ], 7 | "description": "A beautiful replacement for JavaScript's alert.", 8 | "main": ["lib/sweet-alert.js", "lib/sweet-alert.css"], 9 | "keywords": [ 10 | "alert", 11 | "modal" 12 | ], 13 | "repository": { 14 | "type": "git", 15 | "url": "git@github.com:t4t5/sweetalert.git" 16 | }, 17 | "license": "MIT" 18 | } 19 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /resources/backend/src/app/properties/properties.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 | 8 |
9 | 10 | 11 |
12 |
13 |
14 |
15 | 16 | 17 |
18 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /resources/backend/e2e/main.po.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file uses the Page Object pattern to define the main page for tests 3 | * https://docs.google.com/presentation/d/1B6manhG0zEXkC-H-tPo2vwU06JhL8w9-XCF9oehXzAQ 4 | */ 5 | 6 | 'use strict'; 7 | 8 | var MainPage = function() { 9 | 10 | this.jumbEl = element(by.css('.jumbotron')); 11 | 12 | this.h1El = this.jumbEl.element(by.css('h1')); 13 | this.imgEl = this.jumbEl.element(by.css('img')); 14 | this.thumbnailEls = element(by.css('body')).all(by.repeater('awesomeThing in awesomeThings')); 15 | }; 16 | 17 | module.exports = new MainPage(); 18 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/views/default/regions/slideshow/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type":"array", 3 | "default": [ 4 | {"title": "Title 1"}, 5 | {"title": "Title 2"}, 6 | {"title": "Title 3"} 7 | ], 8 | "items": { 9 | "type": "object", 10 | "properties": { 11 | "title": { 12 | "title": "Title", 13 | "type": "string" 14 | }, 15 | "caption": { 16 | "title": "Caption", 17 | "type": "string" 18 | }, 19 | "image": { 20 | "title": "Image", 21 | "type": "string" 22 | }, 23 | "url": { 24 | "title": "URL", 25 | "type": "string" 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /resources/views/default/layouts/user.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.default') 2 | 3 | {{-- Web site Title --}} 4 | @section('title') 5 | @parent 6 | @stop 7 | 8 | {{-- Content --}} 9 | @section('content') 10 | 14 | 15 |
16 | 17 |
18 | @include('user.menu') 19 |
20 | 21 |
22 | @yield('user_area') 23 |
24 | 25 |
26 | 27 | @stop 28 | -------------------------------------------------------------------------------- /config/image.php: -------------------------------------------------------------------------------- 1 | 'gd' 19 | 20 | ); 21 | -------------------------------------------------------------------------------- /resources/lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /app/Http/Requests/PropertyEmailRequest.php: -------------------------------------------------------------------------------- 1 | 'required|email', 26 | ]; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /app/Providers/ConfigServiceProvider.php: -------------------------------------------------------------------------------- 1 | 2 |
  • General
  • 3 |
  • Languages
  • 4 |
  • Property types
  • 5 | 7 |
  • Administrators
  • 8 | -------------------------------------------------------------------------------- /resources/backend/src/libs/sweetalert/dev/modules/default-params.js: -------------------------------------------------------------------------------- 1 | var defaultParams = { 2 | title: '', 3 | text: '', 4 | type: null, 5 | allowOutsideClick: false, 6 | showConfirmButton: true, 7 | showCancelButton: false, 8 | closeOnConfirm: true, 9 | closeOnCancel: true, 10 | confirmButtonText: 'OK', 11 | confirmButtonColor: '#AEDEF4', 12 | cancelButtonText: 'Cancel', 13 | imageUrl: null, 14 | imageSize: null, 15 | timer: null, 16 | customClass: '', 17 | html: false, 18 | animation: true, 19 | allowEscapeKey: true, 20 | inputType: 'text', 21 | inputPlaceholder: '' 22 | }; 23 | 24 | export default defaultParams; -------------------------------------------------------------------------------- /resources/lang/fr/pagination.php: -------------------------------------------------------------------------------- 1 | '« Précédent', 17 | 18 | 'next' => 'Suivant »', 19 | 20 | ); 21 | -------------------------------------------------------------------------------- /resources/views/default/regions/home-blocks/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "type":"array", 4 | "minItems": 3, 5 | "maxItems": 3, 6 | "default": [ 7 | {"title": "Title 1"}, 8 | {"title": "Title 2"}, 9 | {"title": "Title 3"} 10 | ], 11 | "items": { 12 | "type": "object", 13 | "properties": { 14 | "title": { 15 | "title": "Title", 16 | "type": "string" 17 | }, 18 | "description": { 19 | "title": "Description", 20 | "type": "string" 21 | }, 22 | "image": { 23 | "title": "Image URL", 24 | "type": "string" 25 | }, 26 | "url": { 27 | "title": "Link URL", 28 | "type": "string" 29 | } 30 | } 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /app/Http/Requests/User/LoginRequest.php: -------------------------------------------------------------------------------- 1 | 'required', 27 | 'password' => 'required', 28 | ]; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /app/Http/Requests/MenuCreateRequest.php: -------------------------------------------------------------------------------- 1 | 'required|min:1', 26 | 'handle' => 'required|alpha_dash|unique:menus|min:1', 27 | ]; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Http/Requests/User/ProfileRequest.php: -------------------------------------------------------------------------------- 1 | 'url', 31 | ]; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/Models/Prospect.php: -------------------------------------------------------------------------------- 1 | created_at->diff($now)->days < 1) 18 | ? $this->created_at->diffForHumans() 19 | : $this->created_at->toFormattedDateString(); 20 | return $difference; 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /resources/backend/e2e/main.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('The main view', function () { 4 | var page; 5 | 6 | beforeEach(function () { 7 | browser.get('http://localhost:3000/index.html'); 8 | page = require('./main.po'); 9 | }); 10 | 11 | it('should include jumbotron with correct data', function() { 12 | expect(page.h1El.getText()).toBe('\'Allo, \'Allo!'); 13 | expect(page.imgEl.getAttribute('src')).toMatch(/assets\/images\/yeoman.png$/); 14 | expect(page.imgEl.getAttribute('alt')).toBe('I\'m Yeoman'); 15 | }); 16 | 17 | it('list more than 5 awesome things', function () { 18 | expect(page.thumbnailEls.count()).toBeGreaterThan(5); 19 | }); 20 | 21 | }); 22 | -------------------------------------------------------------------------------- /app/Http/Requests/Admin/CreateMemberRequest.php: -------------------------------------------------------------------------------- 1 | 'required|email|unique:users', 27 | 'password' => 'required|alpha_dash|confirmed|min:6', 28 | ]; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /resources/backend/src/app/languages/languages.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | $stateProvider 6 | .state('app.languages', { 7 | url: '/languages', 8 | abstract: true, 9 | templateUrl: 'app/viewer.html' 10 | }) 11 | .state('app.languages.index', { 12 | url: '/index', 13 | templateUrl: 'app/languages/languages.html', 14 | controller: 'LanguagesCtrl' 15 | }) 16 | .state('app.languages.edit', { 17 | url: '/edit', 18 | templateUrl: 'app/languages/languages-edit.html', 19 | controller: 'LanguagesEditCtrl' 20 | }); 21 | 22 | }) 23 | ; 24 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire') 26 | ->hourly(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /app/Http/Requests/ContactRequest.php: -------------------------------------------------------------------------------- 1 | 'required|min:10', 28 | ]; 29 | } 30 | 31 | 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /resources/backend/src/app/navigation/navigation.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | $stateProvider 6 | .state('app.navigation', { 7 | url: '/navigation', 8 | abstract: true, 9 | templateUrl: 'app/viewer.html' 10 | }) 11 | .state('app.navigation.index', { 12 | url: '/index', 13 | templateUrl: 'app/navigation/navigation.html', 14 | controller: 'NavigationCtrl' 15 | }) 16 | .state('app.navigation.edit', { 17 | url: '/edit', 18 | templateUrl: 'app/navigation/navigation-edit.html', 19 | controller: 'NavigationEditCtrl' 20 | }); 21 | 22 | }) 23 | ; 24 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /app/Http/Requests/User/AccountRequest.php: -------------------------------------------------------------------------------- 1 | 'required|alpha_dash|confirmed|min:6', 31 | ]; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /resources/backend/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // An example configuration file. 2 | exports.config = { 3 | // The address of a running selenium server. 4 | //seleniumAddress: 'http://localhost:4444/wd/hub', 5 | //seleniumServerJar: deprecated, this should be set on node_modules/protractor/config.json 6 | 7 | // Capabilities to be passed to the webdriver instance. 8 | capabilities: { 9 | 'browserName': 'chrome' 10 | }, 11 | 12 | // Spec patterns are relative to the current working directly when 13 | // protractor is called. 14 | specs: ['e2e/**/*.js'], 15 | 16 | // Options to be passed to Jasmine-node. 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/admin-access.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 | 14 |
    15 | 16 | 17 |
    18 | 19 |
    20 | -------------------------------------------------------------------------------- /app/Http/Requests/StorePageRequest.php: -------------------------------------------------------------------------------- 1 | 'required|between:3,255', 27 | 'seo_title' => 'between:1,70', 28 | ]; 29 | } 30 | 31 | 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /config/cors.php: -------------------------------------------------------------------------------- 1 | false, 15 | 'allowedOrigins' => ['*'], 16 | 'allowedHeaders' => ['*'], 17 | 'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], 18 | 'exposedHeaders' => [], 19 | 'maxAge' => 10, 20 | 'hosts' => ['*'], 21 | ]; 22 | 23 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Requests/MenuUpdateRequest.php: -------------------------------------------------------------------------------- 1 | 'required|min:1', 27 | 'handle' => 'required|alpha_dash|min:1|unique:menus,handle,'.$this->getSegmentFromEnd(), 28 | ]; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /app/Http/Requests/User/RegisterRequest.php: -------------------------------------------------------------------------------- 1 | 'required|email|unique:users', 17 | 'password' => 'required|confirmed|min:8', 18 | ]; 19 | } 20 | 21 | /** 22 | * Determine if the user is authorized to make this request. 23 | * 24 | * @return bool 25 | */ 26 | public function authorize() 27 | { 28 | return true; 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | bottom: 0; 20 | height: 100%; 21 | width: 100%; 22 | border: 0; 23 | } 24 | 25 | // Modifier class for 16:9 aspect ratio 26 | &.embed-responsive-16by9 { 27 | padding-bottom: 56.25%; 28 | } 29 | 30 | // Modifier class for 4:3 aspect ratio 31 | &.embed-responsive-4by3 { 32 | padding-bottom: 75%; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /resources/backend/src/libs/sweetalert/dev/ie9.css: -------------------------------------------------------------------------------- 1 | /* Internet Explorer 9 has some special quirks that are fixed here */ 2 | /* The icons are not animated. */ 3 | /* This file is automatically merged into sweet-alert.min.js through Gulp */ 4 | 5 | /* Error icon */ 6 | .sweet-alert .sa-icon.sa-error .sa-line.sa-left { 7 | -ms-transform: rotate(45deg)\9; 8 | } 9 | .sweet-alert .sa-icon.sa-error .sa-line.sa-right { 10 | -ms-transform: rotate(-45deg)\9; 11 | } 12 | 13 | 14 | /* Success icon */ 15 | .sweet-alert .sa-icon.sa-success { 16 | border-color: transparent\9; 17 | } 18 | .sweet-alert .sa-icon.sa-success .sa-line.sa-tip { 19 | -ms-transform: rotate(45deg)\9; 20 | } 21 | .sweet-alert .sa-icon.sa-success .sa-line.sa-long { 22 | -ms-transform: rotate(-45deg)\9; 23 | } -------------------------------------------------------------------------------- /app/Providers/BusServiceProvider.php: -------------------------------------------------------------------------------- 1 | mapUsing(function($command) 17 | { 18 | return Dispatcher::simpleMapping( 19 | $command, 'App\Commands', 'App\Handlers\Commands' 20 | ); 21 | }); 22 | } 23 | 24 | /** 25 | * Register any application services. 26 | * 27 | * @return void 28 | */ 29 | public function register() 30 | { 31 | // 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /resources/views/default/widgets/recent-listings.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 |
    5 | <?= $property->title ?> 6 |
    7 |
    8 |
    9 |
    title ?>
    10 |

    priceFormatted ?>

    11 |
    12 |
    13 |
    14 |
    15 | 16 | -------------------------------------------------------------------------------- /app/Modules/Master/Http/routes.php: -------------------------------------------------------------------------------- 1 | 'master'], function() { 15 | Route::get('/', function() { 16 | dd('This is the Master module index page.'); 17 | }); 18 | }); 19 | 20 | Route::group(array('prefix' => config('route.prefix')), function() { 21 | Route::get('{slug}', '\App\Http\Controllers\PageController@getView'); 22 | }); -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition(height .35s ease); 31 | } 32 | -------------------------------------------------------------------------------- /resources/backend/gulp/unit-tests.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | 5 | var $ = require('gulp-load-plugins')(); 6 | 7 | var wiredep = require('wiredep'); 8 | 9 | gulp.task('test', function() { 10 | var bowerDeps = wiredep({ 11 | directory: 'bower_components', 12 | exclude: ['bootstrap-sass-official'], 13 | dependencies: true, 14 | devDependencies: true 15 | }); 16 | 17 | var testFiles = bowerDeps.js.concat([ 18 | 'src/{app,components}/**/*.js' 19 | ]); 20 | 21 | return gulp.src(testFiles) 22 | .pipe($.karma({ 23 | configFile: 'karma.conf.js', 24 | action: 'run' 25 | })) 26 | .on('error', function(err) { 27 | // Make sure failed tests cause gulp to exit non-zero 28 | throw err; 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /app/Providers/EventServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 15 | 'EventListener', 16 | ], 17 | ]; 18 | 19 | /** 20 | * Register any other events for your application. 21 | * 22 | * @param \Illuminate\Contracts\Events\Dispatcher $events 23 | * @return void 24 | */ 25 | public function boot(DispatcherContract $events) 26 | { 27 | parent::boot($events); 28 | 29 | // 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /resources/backend/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "esnext": true, 4 | "bitwise": true, 5 | "camelcase": true, 6 | "curly": true, 7 | "eqeqeq": true, 8 | "immed": true, 9 | "indent": 2, 10 | "latedef": true, 11 | "newcap": true, 12 | "noarg": true, 13 | "quotmark": "single", 14 | "regexp": true, 15 | "undef": true, 16 | "unused": true, 17 | "strict": true, 18 | "trailing": true, 19 | "smarttabs": true, 20 | "white": true, 21 | "validthis": true, 22 | "globals": { 23 | "angular": false, 24 | // Angular Mocks 25 | "inject": false, 26 | // JASMINE 27 | "describe": false, 28 | "it": false, 29 | "before": false, 30 | "beforeEach": false, 31 | "after": false, 32 | "afterEach": false, 33 | "expect": false 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | ./tests/ 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /resources/lang/i18n/fr/LC_MESSAGES/messages.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: ExpressPixel\n" 4 | "POT-Creation-Date: 2015-03-21 15:34+0000\n" 5 | "PO-Revision-Date: 2015-03-21 15:34+0000\n" 6 | "Last-Translator: Support ExpressPixel \n" 7 | "Language-Team: Support ExpressPixel \n" 8 | "Language: fr\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Generator: Poedit 1.5.4\n" 13 | "X-Poedit-KeywordsList: _\n" 14 | "X-Poedit-Basepath: ../../../../../app\n" 15 | "X-Poedit-SourceCharset: UTF-8\n" 16 | "X-Poedit-SearchPath-0: Http/Controllers\n" 17 | "X-Poedit-SearchPath-1: ../resources/views\n" 18 | "X-Poedit-SearchPath-2: Commands\n" 19 | "X-Poedit-SearchPath-3: ../storage/views/messages/\n" 20 | -------------------------------------------------------------------------------- /app/Http/Requests/Admin/UpdateMemberRequest.php: -------------------------------------------------------------------------------- 1 | getSegmentFromEnd()); 28 | return [ 29 | 'email' => 'required|email|unique:users,email,'.$this->getSegmentFromEnd(), 30 | 'password' => 'alpha_dash|confirmed|min:6', 31 | ]; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/Http/Requests/Installer/DetailsRequest.php: -------------------------------------------------------------------------------- 1 | 'required|min:10', 27 | 'username' => 'required|alpha_num', 28 | 'password' => 'required|confirmed', 29 | 'email' => 'required|email', 30 | ]; 31 | } 32 | 33 | 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /resources/lang/en/routes.php: -------------------------------------------------------------------------------- 1 | 'auth/login', 6 | 'auth/register' => 'auth/register', 7 | 'auth/forgot' => 'auth/forgot', 8 | 'user/dashboard' => 'user/dashboard', 9 | 'user/account' => 'user/account', 10 | 'user/profile' => 'user/profile', 11 | 'user/change-password' => 'user/change-password', 12 | 'user/favourites' => 'user/favourites', 13 | 'user/saved_searches' => 'user/saved_searches', 14 | /*'home' => 'home', 15 | 'listings' => 'listings', 16 | 'property' => 'property', 17 | 'for_sale' => 'for-sale', 18 | 'to_rent' => 'to-rent', 19 | 'global_search' => 'global_search',*/ 20 | 'property/{id}/{slug?}' => 'property/{id}/{slug?}', 21 | 'favourite-{id}' => 'favourite-{id}', 22 | 23 | ); -------------------------------------------------------------------------------- /resources/views/default/regions/listings/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": { 3 | "location": { 4 | "placeholder": "lat,lng" 5 | }, 6 | "property_types": { 7 | "multiple": true, 8 | "type": "select", 9 | "validate": false, 10 | "dataSource": "http://intellistreet.dev/api/property-types" 11 | }, 12 | "listing_type": { 13 | "type": "select", 14 | "optionLabels": ["Sale", "Rent", "Any"] 15 | }, 16 | "sort_type": { 17 | "type": "select", 18 | "optionLabels": ["Highest price", "Lowest price", "Most recent"] 19 | }, 20 | "property_conditions": { 21 | "type": "select", 22 | "multiple": true, 23 | "validate": false, 24 | "optionLabels": ["New", "Pre-owned", "Not specified"] 25 | }, 26 | "is_featured": { 27 | "type": "checkbox" 28 | } 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->bind( 29 | 'Illuminate\Contracts\Auth\Registrar', 30 | 'App\Services\Registrar' 31 | ); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | "Passwords must be at least six characters and match the confirmation.", 17 | "user" => "We can't find a user with that e-mail address.", 18 | "token" => "This password reset token is invalid.", 19 | "sent" => "We have e-mailed your password reset link!", 20 | "reset" => "Your password has been reset!", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /resources/views/default/pages/plain-page.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.default') 2 | 3 | {{-- Web site Title --}} 4 | @section('title') 5 | {{{ $page->title }}} 6 | @parent 7 | @stop 8 | 9 | {{-- Update the Meta Title --}} 10 | @section('meta_title') 11 | @parent 12 | 13 | @stop 14 | 15 | {{-- Update the Meta Description --}} 16 | @section('meta_description') 17 | @parent 18 | 19 | @stop 20 | 21 | {{-- Update the Meta Keywords --}} 22 | @section('meta_keywords') 23 | @parent 24 | 25 | @stop 26 | 27 | {{-- Content --}} 28 | @section('content') 29 | 30 |
    31 |
    32 |

    {{ $page->title }}



    33 | 34 |
    35 |
    36 | {!! $page->content !!} 37 |
    38 |
    39 |

    40 | 41 |
    42 |
    43 |
    44 | 45 | @stop 46 | -------------------------------------------------------------------------------- /resources/backend/src/app/members/member.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | 6 | $stateProvider 7 | .state('app.members', { 8 | url: '/members', 9 | abstract: true, 10 | templateUrl: 'app/viewer.html' 11 | }) 12 | .state('app.members.index', { 13 | url: '/list/:memberType', 14 | templateUrl: 'app/members/members.html', 15 | controller: 'MembersCtrl' 16 | }) 17 | .state('app.members.create', { 18 | url: '/create', 19 | templateUrl: 'app/members/members-edit.html', 20 | controller: 'MembersCreateCtrl' 21 | }) 22 | .state('app.members.edit', { 23 | url: '/edit/:memberId', 24 | templateUrl: 'app/members/members-edit.html', 25 | controller: 'MembersEditCtrl' 26 | }); 27 | 28 | }); -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => '', 19 | 'secret' => '', 20 | ], 21 | 22 | 'mandrill' => [ 23 | 'secret' => '', 24 | ], 25 | 26 | 'ses' => [ 27 | 'key' => '', 28 | 'secret' => '', 29 | 'region' => 'us-east-1', 30 | ], 31 | 32 | 'stripe' => [ 33 | 'model' => 'User', 34 | 'secret' => '', 35 | ], 36 | 37 | ]; 38 | -------------------------------------------------------------------------------- /resources/backend/src/app/auth/loginModal.controller.js: -------------------------------------------------------------------------------- 1 | // loginModal.js 2 | 3 | angular.module('ngAdmin').service('loginModal', function ($modal, $rootScope) { 4 | 5 | function assignCurrentUser (user) { 6 | $rootScope.currentUser = user; 7 | return user; 8 | } 9 | 10 | return function() { 11 | var instance = $modal.open({ 12 | templateUrl: 'auth/loginModalTemplate.html', 13 | controller: 'LoginModalCtrl', 14 | controllerAs: 'LoginModalCtrl' 15 | }) 16 | 17 | return instance.result.then(assignCurrentUser); 18 | }; 19 | 20 | }); 21 | 22 | 23 | angular.module('ngAdmin').controller('LoginModalCtrl', function ($scope, UsersApi) { 24 | 25 | this.cancel = $scope.$dismiss; 26 | 27 | this.submit = function (email, password) { 28 | UsersApi.login(email, password).then(function (user) { 29 | $scope.$close(user); 30 | }); 31 | }; 32 | 33 | }); -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/login-history.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
    DateIPISPLocation
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    37 | -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/saved-properties.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
    DateIPISPLocation
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    37 | -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/saved-searches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
    DateIPISPLocation
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    37 | -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/your-properties.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
    DateIPISPLocation
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    Today at 5:31am77.102.88.85Virgin MediaLondon, H9, United Kingdom
    37 | -------------------------------------------------------------------------------- /app/Services/PasswordResetServiceProvider.php: -------------------------------------------------------------------------------- 1 | emailView; 14 | dd($view); 15 | // edit whatever here 16 | return $this->mailer->send($view, compact('token', 'user'), function($m) use ($user, $token, $callback) 17 | { 18 | $m->to($user->getEmailForPasswordReset()); 19 | 20 | if ( ! is_null($callback)) call_user_func($callback, $m, $user, $token); 21 | }); 22 | } 23 | } -------------------------------------------------------------------------------- /app/Services/LaravelSharedHostingPackage.php: -------------------------------------------------------------------------------- 1 | app->bind('url', function ($app) { 34 | return new \App\Support\UrlGenerator( 35 | $app['router']->getRoutes(), 36 | $app['request'] 37 | ); 38 | }); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Http/Middleware/RedirectIfAuthenticated.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 25 | } 26 | 27 | /** 28 | * Handle an incoming request. 29 | * 30 | * @param \Illuminate\Http\Request $request 31 | * @param \Closure $next 32 | * @return mixed 33 | */ 34 | public function handle($request, Closure $next) 35 | { 36 | if ($this->auth->check()) 37 | { 38 | return new RedirectResponse(url('/home')); 39 | } 40 | 41 | return $next($request); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/Providers/BootableServiceProvider.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 |
    5 |
    6 |
    7 | 15 | 16 |
    17 |
    18 |
    19 |
    20 | 21 | 22 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(all .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Controllers/WelcomeController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 24 | } 25 | 26 | /** 27 | * Show the application welcome screen to the user. 28 | * 29 | * @return Response 30 | */ 31 | public function index() 32 | { 33 | return view('welcome'); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /resources/views/default/pages/help-page.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.default') 2 | 3 | {{-- Web site Title --}} 4 | @section('title') 5 | {{{ String::title($page->title) }}} :: 6 | @parent 7 | @stop 8 | 9 | {{-- Update the Meta Title --}} 10 | @section('meta_title') 11 | @parent 12 | 13 | @stop 14 | 15 | {{-- Update the Meta Description --}} 16 | @section('meta_description') 17 | @parent 18 | 19 | @stop 20 | 21 | {{-- Update the Meta Keywords --}} 22 | @section('meta_keywords') 23 | @parent 24 | 25 | @stop 26 | 27 | {{-- Content --}} 28 | @section('content') 29 | 30 |
    31 | 32 |
    33 |
    34 |
    35 |

    {{ $page->title }}



    36 | 37 |
    38 |
    39 | {{ $page->content_str() }} 40 |
    41 |
    42 |

    43 | 44 |
    45 |
    46 |
    47 |
    48 | 49 | 50 | @stop -------------------------------------------------------------------------------- /resources/lang/fr/reminders.php: -------------------------------------------------------------------------------- 1 | "Les mots de passe doivent avoir au moins six caractères et doivent être identiques.", 17 | 18 | "user" => "Aucun utilisateur n'a été trouvé avec cette adresse e-mail.", 19 | 20 | "token" => "Ce jeton de réinitialisation du mot de passe n'est pas valide.", 21 | 22 | "sent" => "Rappel du mot de passe envoyé !", 23 | 24 | "reset" => "Le mot de passe a été réinitialisé !", 25 | 26 | ); 27 | -------------------------------------------------------------------------------- /resources/views/default/regions/listings/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "location": { 5 | "title": "Location (lat,lng)", 6 | "type": "string" 7 | }, 8 | "radius": { 9 | "title": "Radius", 10 | "type": "string" 11 | }, 12 | "listing_type": { 13 | "title": "Sale/Rent", 14 | "type": "string", 15 | "enum": ["sale", "rent", ""] 16 | }, 17 | "property_types": { 18 | "title": "Property types", 19 | "description": "e.g. Terraced, Houses (please visit your property types for a list you can use)", 20 | "type": "string" 21 | }, 22 | "property_conditions": { 23 | "title": "Condition", 24 | "type": "string", 25 | "enum": ["new", "pre_owned", "not_specified"] 26 | }, 27 | "sort_type": { 28 | "title": "Sort type", 29 | "type":"string", 30 | "enum": ["highest_price", "lowest_price", "most_recent"] 31 | }, 32 | "is_featured": { 33 | "title": "Featured property?", 34 | "type":"boolean" 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /resources/backend/src/app/pages/pages.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | $stateProvider 6 | .state('app.pages', { 7 | url: '/pages', 8 | abstract: true, 9 | templateUrl: 'app/viewer.html', 10 | data: { 11 | requireLogin: true 12 | } 13 | }) 14 | .state('app.pages.index', { 15 | url: '/index', 16 | templateUrl: 'app/pages/pages.html', 17 | controller: 'PagesCtrl', 18 | data: { 19 | requireLogin: true 20 | } 21 | }) 22 | .state('app.pages.create', { 23 | url: '/create', 24 | templateUrl: 'app/pages/pages-edit.html', 25 | controller: 'PagesCreateCtrl' 26 | }) 27 | .state('app.pages.edit', { 28 | url: '/edit/:pageId/:locale', 29 | templateUrl: 'app/pages/pages-edit.html', 30 | controller: 'PagesEditCtrl' 31 | }); 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /resources/views/default/pages/listings.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.default') 2 | 3 | {{-- Content --}} 4 | @section('content') 5 | 9 |
    10 |
    11 | @include('listings.listing_sidebar') 12 |
    13 | 14 |
    15 | 16 | 17 | 25 | 26 |
    27 |
    28 | 29 | @include('listings.view') 30 |
    31 |
    32 |
    33 | 34 |
    35 | 36 | 37 | @stop 38 | -------------------------------------------------------------------------------- /app/Http/Middleware/Authenticate.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 24 | } 25 | 26 | /** 27 | * Handle an incoming request. 28 | * 29 | * @param \Illuminate\Http\Request $request 30 | * @param \Closure $next 31 | * @return mixed 32 | */ 33 | public function handle($request, Closure $next) 34 | { 35 | if ($this->auth->guest()) 36 | { 37 | if ($request->ajax()) 38 | { 39 | return response('Unauthorized.', 401); 40 | } 41 | else 42 | { 43 | return redirect()->guest('auth/login'); 44 | } 45 | } 46 | 47 | return $next($request); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /resources/backend/src/app/regions/regions.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | $stateProvider 6 | .state('app.regions', { 7 | url: '/regions', 8 | abstract: true, 9 | templateUrl: 'app/viewer.html', 10 | data: { 11 | requireLogin: true 12 | } 13 | }) 14 | .state('app.regions.index', { 15 | url: '/index', 16 | templateUrl: 'app/regions/regions.html', 17 | controller: 'RegionsCtrl', 18 | data: { 19 | requireLogin: true 20 | } 21 | }) 22 | .state('app.regions.create', { 23 | url: '/create', 24 | templateUrl: 'app/regions/regions-edit.html', 25 | controller: 'RegionsCreateCtrl' 26 | }) 27 | .state('app.regions.edit', { 28 | url: '/edit/:regionId', 29 | templateUrl: 'app/regions/regions-edit.html', 30 | controller: 'RegionsEditCtrl' 31 | }); 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /config/modules.php: -------------------------------------------------------------------------------- 1 | app_path('Modules'), 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Modules Base Namespace 21 | |-------------------------------------------------------------------------- 22 | | 23 | | Define the base namespace for your modules. Be sure to update this value 24 | | if you move your modules directory to a new path. This is primarily used 25 | | by the module:make Artisan command. 26 | | 27 | */ 28 | 29 | 'namespace' => 'App\Modules\\' 30 | 31 | ]; 32 | -------------------------------------------------------------------------------- /resources/backend/src/app/regions/regions-edit.html: -------------------------------------------------------------------------------- 1 | 5 | 31 | 32 |
    33 |
    34 | 35 |
    36 |
    37 |

    estatezilla

    38 |
    39 |
    40 | 41 |
    42 |
    43 |

    Code licensed under GNU General Public Licence.

    44 |
    45 |
    46 |
    47 | 48 | 49 |
    -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset and dependencies 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | @import "glyphicons.less"; 9 | 10 | // Core CSS 11 | @import "scaffolding.less"; 12 | @import "type.less"; 13 | @import "code.less"; 14 | @import "grid.less"; 15 | @import "tables.less"; 16 | @import "forms.less"; 17 | @import "buttons.less"; 18 | 19 | // Components 20 | @import "component-animations.less"; 21 | @import "dropdowns.less"; 22 | @import "button-groups.less"; 23 | @import "input-groups.less"; 24 | @import "navs.less"; 25 | @import "navbar.less"; 26 | @import "breadcrumbs.less"; 27 | @import "pagination.less"; 28 | @import "pager.less"; 29 | @import "labels.less"; 30 | @import "badges.less"; 31 | @import "jumbotron.less"; 32 | @import "thumbnails.less"; 33 | @import "alerts.less"; 34 | @import "progress-bars.less"; 35 | @import "media.less"; 36 | @import "list-group.less"; 37 | @import "panels.less"; 38 | @import "responsive-embed.less"; 39 | @import "wells.less"; 40 | @import "close.less"; 41 | 42 | // Components w/ JavaScript 43 | @import "modals.less"; 44 | @import "tooltip.less"; 45 | @import "popovers.less"; 46 | @import "carousel.less"; 47 | 48 | // Utility classes 49 | @import "utilities.less"; 50 | @import "responsive-utilities.less"; 51 | -------------------------------------------------------------------------------- /app/Http/Kernel.php: -------------------------------------------------------------------------------- 1 | 'App\Http\Middleware\Authenticate', 29 | 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 30 | 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 31 | 'oauth' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware', 32 | 'oauth-owner' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthOwnerMiddleware', 33 | 'check-authorization-params' => 'LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware', 34 | 'csrf' => 'App\Http\Middleware\VerifyCsrfToken', 35 | ]; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /config/compile.php: -------------------------------------------------------------------------------- 1 | [ 17 | 18 | realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), 19 | realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), 20 | realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), 21 | realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), 22 | realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), 23 | 24 | ], 25 | 26 | /* 27 | |-------------------------------------------------------------------------- 28 | | Compiled File Providers 29 | |-------------------------------------------------------------------------- 30 | | 31 | | Here you may list service providers which define a "compiles" function 32 | | that returns additional files that should be compiled, providing an 33 | | easy way to get common files from any packages you are utilizing. 34 | | 35 | */ 36 | 37 | 'providers' => [ 38 | // 39 | ], 40 | 41 | ]; 42 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /app/Http/Controllers/HomeController.php: -------------------------------------------------------------------------------- 1 | getFilters(); 48 | foreach($filters as $filter => $values) { 49 | $data[$filter] = $values; 50 | } 51 | 52 | return view('home', $data); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /app/Services/Registrar.php: -------------------------------------------------------------------------------- 1 | 'required|max:255', 21 | 'email' => 'required|email|max:255|unique:users', 22 | 'password' => 'required|confirmed|min:6', 23 | ]); 24 | } 25 | 26 | /** 27 | * Create a new user instance after a valid registration. 28 | * 29 | * @param array $data 30 | * @return User 31 | */ 32 | public function create(array $data) 33 | { 34 | 35 | $user = User::create([ 36 | 'name' => $data['name'], 37 | 'email' => $data['email'], 38 | 'password' => bcrypt($data['password']), 39 | 'confirmation_code' => str_random(32) 40 | ]); 41 | 42 | Mail::send('emails.welcome', $user->toArray(), function($message) use ($data) 43 | { 44 | $message->from('no-reply@site.com', "Site name"); 45 | $message->subject("Welcome to site name"); 46 | $message->to($data['email']); 47 | }); 48 | 49 | return $user; 50 | 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /app/Http/Controllers/User/PasswordController.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 39 | $this->passwords = $passwords; 40 | 41 | $this->redirectTo = route_lang(Lang::get('routes.user/dashboard')); 42 | 43 | $this->middleware('guest'); 44 | parent::__construct(); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /app/Models/PropertyTranslation.php: -------------------------------------------------------------------------------- 1 | title); 14 | return url('properties/'.$this->id.'/'.$slug); 15 | } 16 | 17 | public function property() 18 | { 19 | return $this->belongsTo('\App\Models\Property'); 20 | } 21 | 22 | public function translations() 23 | { 24 | return $this->hasMany('\App\Models\PropertyTranslation', 'property_id', 'property_id'); 25 | } 26 | public function getFeaturesAttribute($data) 27 | { 28 | return json_decode($data); 29 | } 30 | public function getPhotosAttribute($data) 31 | { 32 | return json_decode($data); 33 | } 34 | public function getFloorPlansAttribute($data) 35 | { 36 | return json_decode($data); 37 | } 38 | public function getDocumentsAttribute($data) 39 | { 40 | return json_decode($data); 41 | } 42 | public function getVirtualToursAttribute($data) 43 | { 44 | if(!$data) { 45 | $data = []; 46 | $data[] = ['url' => '', 'caption' => '']; 47 | $data = json_encode($data); 48 | } 49 | return json_decode($data); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/Http/Controllers/User/DashboardController.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 30 | $this->registrar = $registrar; 31 | $this->middleware('auth'); 32 | #$this->middleware('guest', ['except' => ['getLogout','getConfirm']]); 33 | parent::__construct(); 34 | } 35 | 36 | /** 37 | * Users settings page 38 | * 39 | * @return View 40 | */ 41 | public function getIndex() 42 | { 43 | return redirect(route_lang('user/favourites')); 44 | $user = Auth::user(); 45 | $data = array(); 46 | $data['user'] = $user; 47 | 48 | return view('user/dashboard', $data); 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /app/Http/Controllers/LandingController.php: -------------------------------------------------------------------------------- 1 | 53 | -------------------------------------------------------------------------------- /app/Http/Controllers/OAuthController.php: -------------------------------------------------------------------------------- 1 | authorizer = $authorizer; 13 | 14 | $this->beforeFilter('auth', ['only' => ['getAuthorize', 'postAuthorize']]); 15 | $this->beforeFilter('csrf', ['only' => 'postAuthorize']); 16 | $this->beforeFilter('check-authorization-params', ['only' => ['getAuthorize', 'postAuthorize']]); 17 | } 18 | 19 | public function postAccessToken() 20 | { 21 | return Response::json($this->authorizer->issueAccessToken()); 22 | } 23 | 24 | public function getAuthorize() 25 | { 26 | return View::make('authorization-form', $this->authorizer->getAuthCodeRequestParams()); 27 | } 28 | 29 | public function postAuthorize() 30 | { 31 | // get the user id 32 | $params['user_id'] = Auth::user()->id; 33 | 34 | $redirectUri = ''; 35 | 36 | if (Input::get('approve') !== null) { 37 | $redirectUri = $this->authorizer->issueAuthCode('user', $params['user_id'], $params); 38 | } 39 | 40 | if (Input::get('deny') !== null) { 41 | $redirectUri = $this->authorizer->authCodeRequestDeniedRedirectUri(); 42 | } 43 | 44 | return Redirect::to($redirectUri); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /resources/backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngAdmin", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "gulp-jade": "~1.0.0" 6 | }, 7 | "devDependencies": { 8 | "gulp": "~3.8.10", 9 | "gulp-autoprefixer": "~2.0.0", 10 | "gulp-angular-templatecache": "~1.4.2", 11 | "del": "~0.1.3", 12 | "gulp-consolidate": "~0.1.2", 13 | "gulp-csso": "~0.2.9", 14 | "gulp-filter": "~1.0.2", 15 | "gulp-flatten": "~0.0.4", 16 | "gulp-imagemin": "~2.0.0", 17 | "gulp-jshint": "~1.9.0", 18 | "gulp-load-plugins": "~0.7.1", 19 | "gulp-size": "~1.1.0", 20 | "gulp-uglify": "~1.0.1", 21 | "gulp-useref": "~1.0.2", 22 | "gulp-ng-annotate": "~0.3.6", 23 | "gulp-replace": "~0.5.0", 24 | "gulp-rename": "~1.2.0", 25 | "gulp-rev": "~2.0.1", 26 | "gulp-rev-replace": "~0.3.1", 27 | "gulp-minify-html": "~0.1.7", 28 | "gulp-inject": "~1.0.2", 29 | "gulp-protractor": "~0.0.11", 30 | "gulp-karma": "~0.0.4", 31 | "gulp-less": "~1.3.6", 32 | "gulp-angular-filesort": "~1.0.4", 33 | "main-bower-files": "~2.4.0", 34 | "jshint-stylish": "~1.0.0", 35 | "wiredep": "~2.2.0", 36 | "karma-jasmine": "~0.3.1", 37 | "karma-phantomjs-launcher": "~0.1.4", 38 | "require-dir": "~0.1.0", 39 | "browser-sync": "~1.7.1", 40 | "http-proxy": "~1.7.0", 41 | "chalk": "~0.5.1", 42 | "protractor": "~1.4.0", 43 | "uglify-save-license": "~0.4.1", 44 | "gulp-cdnizer": "~1.1.0" 45 | }, 46 | "engines": { 47 | "node": ">=0.10.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/auth.less: -------------------------------------------------------------------------------- 1 | @import url("//fonts.googleapis.com/css?family=Sarala"); 2 | body.auth{ 3 | /*background-color: #2E3037;*/ 4 | background-color: #f2f2f2; 5 | 6 | 7 | div.member_signin { 8 | text-align: center; 9 | padding: 40px; 10 | background-color: #fff; 11 | margin: 0 auto 10px; 12 | border-radius: 2px; 13 | box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.3); 14 | box-shadow: 0 0 8px #888888; 15 | -moz-box-shadow: 0 0 8px #888888; 16 | -webkit-box-shadow: 0 0 8px #888888; 17 | overflow: hidden; 18 | } 19 | 20 | div.member_signin { 21 | .panel-body { 22 | padding-top: 35px; 23 | } 24 | } 25 | 26 | div.member_signin i.fa.fa-lock { 27 | color: #FFF; 28 | background-color: #bbb; 29 | border-radius: 500px; 30 | font-size: 36px; 31 | padding: 15px 20px 15px 20px; 32 | } 33 | 34 | div.fa_user { 35 | margin-top: -47px; 36 | margin-bottom: 15px; 37 | } 38 | 39 | p.member { 40 | font-size: 19px; 41 | color: #888888; 42 | margin-bottom: 20px; 43 | color: #bbb; 44 | font-family: Sarala, Arial; 45 | font-size: 36px; 46 | font-weight: 700; 47 | } 48 | 49 | button.login { 50 | width: 100%; 51 | text-transform: uppercase; 52 | } 53 | 54 | form.loginform div.input-group { 55 | width: 100%; 56 | } 57 | 58 | form.loginform input[type="text"], form.loginform input[type="password"] { 59 | color: #6C6C6C; 60 | text-align: center; 61 | } 62 | 63 | p.forgotpass { 64 | margin-top: 10px; 65 | } 66 | 67 | p.forgotpass a { 68 | color: #F5683D; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /resources/backend/gulp/server.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | 5 | var util = require('util'); 6 | 7 | var browserSync = require('browser-sync'); 8 | 9 | var middleware = require('./proxy'); 10 | 11 | function browserSyncInit(baseDir, files, browser) { 12 | browser = browser === undefined ? 'default' : browser; 13 | 14 | var routes = null; 15 | if(baseDir === 'src' || (util.isArray(baseDir) && baseDir.indexOf('src') !== -1)) { 16 | routes = { 17 | '/bower_components': 'bower_components', 18 | '/libs': 'libs' 19 | }; 20 | } 21 | 22 | browserSync.instance = browserSync.init(files, { 23 | startPath: '/', 24 | server: { 25 | baseDir: baseDir, 26 | middleware: middleware, 27 | routes: routes 28 | }, 29 | browser: browser 30 | }); 31 | 32 | } 33 | 34 | gulp.task('serve', ['watch'], function () { 35 | browserSyncInit([ 36 | '.tmp', 37 | 'src' 38 | ], [ 39 | '.tmp/{app,components}/**/*.css', 40 | 'src/{app,components}/**/*.js', 41 | 'src/assets/images/**/*', 42 | '.tmp/*.html', 43 | '.tmp/{app,components}/**/*.html', 44 | 'src/*.html', 45 | 'src/{app,components}/**/*.html' 46 | ]); 47 | }); 48 | 49 | gulp.task('serve:dist', ['build'], function () { 50 | browserSyncInit('dist'); 51 | }); 52 | 53 | gulp.task('serve:e2e', ['wiredep', 'injector:js', 'injector:css'], function () { 54 | browserSyncInit(['.tmp', 'src'], null, []); 55 | }); 56 | 57 | gulp.task('serve:e2e-dist', ['build'], function () { 58 | browserSyncInit('dist', null, []); 59 | }); 60 | -------------------------------------------------------------------------------- /resources/backend/src/app/members/blocks/member-roles.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 |
    Member Roles
    5 |
    6 | 7 |
    8 |
    9 | 10 | 12 |
    13 |
    14 |
    15 | 18 |
    19 |
    20 | 23 |
    24 |
    25 | 28 |
    29 |
    30 |
    31 | 32 |
    33 | 34 |
    35 | 36 | 37 |
    38 | 39 | 40 | -------------------------------------------------------------------------------- /app/Http/Controllers/User/AccountController.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 32 | $this->registrar = $registrar; 33 | $this->middleware('auth'); 34 | parent::__construct(); 35 | } 36 | 37 | /** 38 | * Returns all the blog posts. 39 | * 40 | * @return View 41 | */ 42 | public function getIndex() 43 | { 44 | $data = array(); 45 | return view('user/change-password', $data); 46 | } 47 | 48 | public function postIndex(AccountRequest $request) 49 | { 50 | $user = Auth::user(); 51 | $user->password = Input::get('password'); 52 | $user->save(); 53 | return redirect(route_lang('user/change-password'))->with('success', _l('Password changed successfully!')); 54 | } 55 | 56 | 57 | } 58 | ?> -------------------------------------------------------------------------------- /resources/views/default/user/change-password.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.user') 2 | 3 | {{-- Web site Title --}} 4 | @section('title') 5 | :: 6 | @parent 7 | @stop 8 | 9 | {{-- Content --}} 10 | @section('user_area') 11 | 12 | @include('notifications') 13 | 14 |
    15 |
    16 |
    17 | 18 | 19 | 20 | route_lang('user/change-password'), 'class' => 'form-vertical')); ?> 21 | 22 |
    23 | 24 | 25 |
    26 | 27 |
    28 | 'form-control')); ?> 29 |
    30 |
    31 | 32 |
    33 |
    34 |
    35 |
    36 |
    37 | 38 |
    39 | 'form-control')); ?> 40 |
    41 |
    42 |
    43 | 44 |
    45 |
    46 |
    47 | 'btn btn-primary')); ?> 48 |
    49 |
    50 |
    51 | 52 |
    53 | 54 | 55 | 56 | 57 | 58 |
    59 | 60 | 61 | @stop 62 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "base/variables.less"; 3 | @import "variables.less"; 4 | @import "base/mixins.less"; 5 | 6 | // Reset and dependencies 7 | @import "base/normalize.less"; 8 | @import "base/print.less"; 9 | @import "base/glyphicons.less"; 10 | 11 | // Core CSS 12 | @import "base/scaffolding.less"; 13 | @import "base/type.less"; 14 | @import "base/code.less"; 15 | @import "base/grid.less"; 16 | @import "base/tables.less"; 17 | @import "base/forms.less"; 18 | @import "base/buttons.less"; 19 | 20 | // Components 21 | @import "base/component-animations.less"; 22 | @import "base/dropdowns.less"; 23 | @import "base/button-groups.less"; 24 | @import "base/input-groups.less"; 25 | @import "base/navs.less"; 26 | @import "base/navbar.less"; 27 | @import "base/breadcrumbs.less"; 28 | @import "base/pagination.less"; 29 | @import "base/pager.less"; 30 | @import "base/labels.less"; 31 | @import "base/badges.less"; 32 | @import "base/jumbotron.less"; 33 | @import "base/thumbnails.less"; 34 | @import "base/alerts.less"; 35 | @import "base/progress-bars.less"; 36 | @import "base/media.less"; 37 | @import "base/list-group.less"; 38 | @import "base/panels.less"; 39 | @import "base/responsive-embed.less"; 40 | @import "base/wells.less"; 41 | @import "base/close.less"; 42 | 43 | // Components w/ JavaScript 44 | @import "base/modals.less"; 45 | @import "base/tooltip.less"; 46 | @import "base/popovers.less"; 47 | @import "base/carousel.less"; 48 | 49 | // Utility classes 50 | @import "base/utilities.less"; 51 | @import "base/responsive-utilities.less"; 52 | @import "bootswatch.less"; 53 | 54 | -------------------------------------------------------------------------------- /app/Http/Requests/Request.php: -------------------------------------------------------------------------------- 1 | 'error', 25 | 'errors' => $errors 26 | ), 27 | 422 28 | ); 29 | if ($this->ajax() || $this->wantsJson()) 30 | { 31 | return new JsonResponse( 32 | array( 33 | 'status' => 'error', 34 | 'errors' => $errors 35 | ), 36 | 422 37 | ); 38 | } 39 | return $this->redirector->to($this->getRedirectUrl()) 40 | ->withInput($this->except($this->dontFlash)) 41 | ->withErrors($errors, $this->errorBag); 42 | } 43 | 44 | protected function getSegmentFromEnd($position_from_end = 1) { 45 | $segments =$this->segments(); 46 | return $segments[sizeof($segments) - $position_from_end]; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /resources/backend/src/components/editable-table.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
    Search criteria type
    {{row.name}}Edit | Delete
    17 | 18 | | Cancel
    -------------------------------------------------------------------------------- /resources/backend/src/app/settings/settings.routes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('ngAdmin') 4 | .config(function ($stateProvider, $urlRouterProvider) { 5 | $stateProvider 6 | .state('app.settings', { 7 | url: '/settings', 8 | abstract: true, 9 | templateUrl: 'app/viewer.html' 10 | }) 11 | .state('app.settings.index', { 12 | url: '/index', 13 | templateUrl: 'app/settings/settings.html', 14 | controller: 'SettingsCtrl' 15 | }) 16 | .state('app.settings.analytics', { 17 | url: '/analytics', 18 | templateUrl: 'app/settings/settings-analytics.html', 19 | controller: 'SettingsAnalyticsCtrl' 20 | }) 21 | .state('app.settings.properties', { 22 | url: '/properties', 23 | templateUrl: 'app/settings/settings-properties.html', 24 | controller: 'SettingsPropertiesCtrl' 25 | }) 26 | .state('app.settings.payments', { 27 | url: '/payments', 28 | templateUrl: 'app/settings/settings-payments.html', 29 | controller: 'SettingsPaymentsCtrl' 30 | }) 31 | .state('app.settings.admins', { 32 | url: '/admins', 33 | templateUrl: 'app/settings/settings-admins.html', 34 | controller: 'SettingsAdminsCtrl' 35 | }) 36 | .state('app.settings.packages', { 37 | url: '/packages', 38 | templateUrl: 'app/settings/settings-packages.html', 39 | controller: 'SettingsPackagesCtrl' 40 | }) 41 | .state('app.settings.languages', { 42 | url: '/languages', 43 | templateUrl: 'app/settings/settings-languages.html', 44 | controller: 'SettingsLanguagesCtrl' 45 | }); 46 | 47 | 48 | }) 49 | ; 50 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "expresspixel/estatezilla", 3 | "description": "The EstateZilla CMS.", 4 | "keywords": ["estatezilla", "laravel", "cms"], 5 | "license": "GPL-2.0+", 6 | "type": "project", 7 | "require": { 8 | "laravel/framework": "5.0.*", 9 | "illuminate/html": "5.*", 10 | "lucadegasperi/oauth2-server-laravel": "4.0.x@dev", 11 | "barryvdh/laravel-cors": "0.7.x", 12 | "intervention/image": "~2.1", 13 | "intervention/imagecache": "~2.1", 14 | "caffeinated/menus": "~1.0", 15 | "caffeinated/modules": "~1.0", 16 | "wikimedia/composer-merge-plugin": "dev-master", 17 | "dimsav/laravel-translatable": "~5.0", 18 | "igaster/laravel-theme": "1.0.13", 19 | "arrilot/laravel-widgets": "3.4.2", 20 | "laravelba/route-binder": "3.0.0", 21 | "anlutro/l4-settings": "dev-master", 22 | "cocur/slugify": "^1.2", 23 | "gettext/gettext": "3.6.1" 24 | }, 25 | "require-dev": { 26 | "phpunit/phpunit": "~4.0", 27 | "phpspec/phpspec": "~2.1", 28 | "xethron/migrations-generator": "^2.0" 29 | }, 30 | "autoload": { 31 | "classmap": [ 32 | "database" 33 | ], 34 | "psr-4": { 35 | "App\\": "app/" 36 | }, 37 | "files": [ 38 | "app/Support/helpers.php" 39 | ] 40 | }, 41 | "autoload-dev": { 42 | "classmap": [ 43 | 44 | ] 45 | }, 46 | "scripts": { 47 | "post-install-cmd": [ 48 | "php artisan clear-compiled", 49 | "php artisan optimize" 50 | ], 51 | "post-update-cmd": [ 52 | "php artisan clear-compiled", 53 | "php artisan optimize" 54 | ], 55 | "post-create-project-cmd": [ 56 | "php -r \"copy('.env.example', '.env');\"", 57 | "php artisan key:generate" 58 | ] 59 | }, 60 | "config": { 61 | "preferred-install": "dist" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | border-radius: @border-radius-base; 21 | } 22 | 23 | // User input typically entered via keyboard 24 | kbd { 25 | padding: 2px 4px; 26 | font-size: 90%; 27 | color: @kbd-color; 28 | background-color: @kbd-bg; 29 | border-radius: @border-radius-small; 30 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 31 | 32 | kbd { 33 | padding: 0; 34 | font-size: 100%; 35 | box-shadow: none; 36 | } 37 | } 38 | 39 | // Blocks of code 40 | pre { 41 | display: block; 42 | padding: ((@line-height-computed - 1) / 2); 43 | margin: 0 0 (@line-height-computed / 2); 44 | font-size: (@font-size-base - 1); // 14px to 13px 45 | line-height: @line-height-base; 46 | word-break: break-all; 47 | word-wrap: break-word; 48 | color: @pre-color; 49 | background-color: @pre-bg; 50 | border: 1px solid @pre-border-color; 51 | border-radius: @border-radius-base; 52 | 53 | // Account for some code outputs that place code tags in pre tags 54 | code { 55 | padding: 0; 56 | font-size: inherit; 57 | color: inherit; 58 | white-space: pre-wrap; 59 | background-color: transparent; 60 | border-radius: 0; 61 | } 62 | } 63 | 64 | // Enable scrollable blocks of code 65 | .pre-scrollable { 66 | max-height: @pre-scrollable-max-height; 67 | overflow-y: scroll; 68 | } 69 | -------------------------------------------------------------------------------- /resources/backend/src/libs/sweetalert/dev/modules/injected-html.js: -------------------------------------------------------------------------------- 1 | var injectedHTML = 2 | 3 | // Dark overlay 4 | `
    ` + 5 | 6 | // Modal 7 | `
    ` + 8 | 9 | // Error icon 10 | `
    11 | 12 | 13 | 14 | 15 |
    ` + 16 | 17 | // Warning icon 18 | `
    19 | 20 | 21 |
    ` + 22 | 23 | // Info icon 24 | `
    ` + 25 | 26 | // Success icon 27 | `
    28 | 29 | 30 | 31 |
    32 |
    33 |
    ` + 34 | 35 | `
    ` + 36 | 37 | // Title, text and input 38 | `

    Title

    39 |

    Text

    40 |
    41 | 42 |
    43 |
    ` + 44 | 45 | // Input errors 46 | `
    47 |
    !
    48 |

    Not valid!

    49 |
    ` + 50 | 51 | // Cancel and confirm buttons 52 | `
    53 | 54 | 55 |
    ` + 56 | 57 | // End of modal 58 | `
    `; 59 | 60 | export default injectedHTML; -------------------------------------------------------------------------------- /resources/views/default/partials/home_carousel.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 29 | 30 | 33 | 34 | -------------------------------------------------------------------------------- /bootstrap/app.php: -------------------------------------------------------------------------------- 1 | singleton( 30 | 'Illuminate\Contracts\Http\Kernel', 31 | 'App\Http\Kernel' 32 | ); 33 | 34 | $app->singleton( 35 | 'Illuminate\Contracts\Console\Kernel', 36 | 'App\Console\Kernel' 37 | ); 38 | 39 | $app->singleton( 40 | 'Illuminate\Contracts\Debug\ExceptionHandler', 41 | 'App\Exceptions\Handler' 42 | ); 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Return The Application 47 | |-------------------------------------------------------------------------- 48 | | 49 | | This script returns the application instance. The instance is given to 50 | | the calling script so we can separate the building of the instances 51 | | from the actual running of the application and sending responses. 52 | | 53 | */ 54 | 55 | return $app; 56 | -------------------------------------------------------------------------------- /resources/backend/src/assets/less/base/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | .container-fixed(); 12 | 13 | @media (min-width: @screen-sm-min) { 14 | width: @container-sm; 15 | } 16 | @media (min-width: @screen-md-min) { 17 | width: @container-md; 18 | } 19 | @media (min-width: @screen-lg-min) { 20 | width: @container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | .container-fixed(); 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | .make-row(); 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | .make-grid-columns(); 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | .make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: @screen-sm-min) { 65 | .make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: @screen-md-min) { 74 | .make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: @screen-lg-min) { 83 | .make-grid(lg); 84 | } 85 | --------------------------------------------------------------------------------