├── public ├── favicon.ico ├── images │ └── .gitkeep ├── system │ └── .gitkeep ├── uploads │ └── .gitkeep ├── packages │ └── .gitkeep ├── js │ ├── libs │ │ └── bootstrap │ │ │ ├── LICENSE │ │ │ ├── DOCS-LICENSE │ │ │ ├── LICENSE-MIT │ │ │ ├── dist │ │ │ └── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ ├── less │ │ │ ├── breadcrumbs.less │ │ │ ├── component-animations.less │ │ │ ├── wells.less │ │ │ ├── close.less │ │ │ ├── thumbnails.less │ │ │ ├── utilities.less │ │ │ ├── media.less │ │ │ ├── pager.less │ │ │ ├── jumbotron.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── code.less │ │ │ ├── labels.less │ │ │ ├── alerts.less │ │ │ ├── progress-bars.less │ │ │ ├── grid.less │ │ │ ├── print.less │ │ │ ├── pagination.less │ │ │ ├── list-group.less │ │ │ ├── scaffolding.less │ │ │ ├── tooltip.less │ │ │ ├── modals.less │ │ │ ├── popovers.less │ │ │ ├── input-groups.less │ │ │ ├── buttons.less │ │ │ ├── dropdowns.less │ │ │ ├── panels.less │ │ │ ├── tables.less │ │ │ ├── carousel.less │ │ │ ├── responsive-utilities.less │ │ │ └── button-groups.less │ │ │ ├── bower.json │ │ │ ├── .bower.json │ │ │ └── js │ │ │ ├── transition.js │ │ │ ├── alert.js │ │ │ ├── button.js │ │ │ ├── popover.js │ │ │ ├── tab.js │ │ │ ├── affix.js │ │ │ ├── dropdown.js │ │ │ └── scrollspy.js │ └── builds │ │ └── app.js ├── robots.txt ├── .htaccess ├── css │ └── builds │ │ └── app.css └── index.php ├── app ├── commands │ └── .gitkeep ├── assets │ ├── sass │ │ ├── home.sass │ │ └── app.sass │ └── coffee │ │ └── app.coffee ├── controllers │ ├── .gitkeep │ ├── BaseController.php │ ├── AdminController.php │ ├── UserController.php │ └── HomeController.php ├── database │ ├── seeds │ │ ├── .gitkeep │ │ ├── UserTableSeeder.php │ │ ├── DatabaseSeeder.php │ │ ├── SalesTypeTableSeeder.php │ │ ├── HouseTypeTableSeeder.php │ │ ├── CityTableSeeder.php │ │ ├── CountyTableSeeder.php │ │ └── PropertyTableSeeder.php │ └── migrations │ │ ├── .gitkeep │ │ ├── 2013_12_04_010945_create_counties_table.php │ │ ├── 2013_12_04_010926_create_cities_table.php │ │ ├── 2013_12_04_010909_create_sales_types_table.php │ │ ├── 2013_12_04_005520_create_house_types_table.php │ │ ├── 2013_12_04_012326_create_users_table.php │ │ └── 2013_12_04_010655_create_properties_table.php ├── views │ ├── layouts │ │ ├── ajax.blade.php │ │ ├── admin.blade.php │ │ └── master.blade.php │ ├── home │ │ ├── city_list.blade.php │ │ ├── search_result.blade.php │ │ └── form.blade.php │ ├── admin.blade.php │ ├── partials │ │ ├── admin.blade.php │ │ ├── footer.blade.php │ │ ├── header.blade.php │ │ └── navigation.blade.php │ ├── admin │ │ ├── city_list.blade.php │ │ ├── edit.blade.php │ │ ├── create.blade.php │ │ └── index.blade.php │ ├── home.blade.php │ └── users │ │ └── login.blade.php ├── start │ ├── local.php │ ├── artisan.php │ └── global.php ├── storage │ ├── .gitignore │ ├── cache │ │ └── .gitignore │ ├── logs │ │ └── .gitignore │ ├── meta │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ └── views │ │ └── .gitignore ├── models │ ├── County.php │ ├── HouseType.php │ ├── SalesType.php │ ├── City.php │ ├── Property.php │ └── User.php ├── tests │ ├── ExampleTest.php │ └── TestCase.php ├── config │ ├── compile.php │ ├── proxy.php │ ├── testing │ │ ├── cache.php │ │ └── session.php │ ├── packages │ │ └── fideloper │ │ │ └── proxy │ │ │ └── config.php │ ├── workbench.php │ ├── view.php │ ├── queue.php │ ├── auth.php │ ├── cache.php │ ├── database.php │ ├── mail.php │ └── session.php ├── lang │ └── en │ │ ├── pagination.php │ │ ├── reminders.php │ │ └── validation.php ├── routes.php └── filters.php ├── .gitattributes ├── Boxfile.install ├── database.sql ├── foo.jpg ├── .bowerrc ├── .editorconfig ├── .gitignore ├── bower.json ├── .jshintrc ├── server.php ├── phpunit.xml ├── Boxfile ├── composer.json ├── package.json ├── bootstrap ├── paths.php ├── start.php └── autoload.php ├── artisan └── gruntfile.coffee /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/commands/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/images/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/system/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/uploads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /app/assets/sass/home.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/database/seeds/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/packages/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/database/migrations/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/layouts/ajax.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/start/local.php: -------------------------------------------------------------------------------- 1 | 2 | Admin Area, be careful. 3 | -------------------------------------------------------------------------------- /app/views/admin/city_list.blade.php: -------------------------------------------------------------------------------- 1 | {{Form::select('city_id', $city_options, '', array('class' => 'form-control')) }} -------------------------------------------------------------------------------- /app/views/admin/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.admin') 2 | @section('content') 3 | 4 |

Edit property

5 | 6 | @include('admin._form') 7 | 8 | @stop -------------------------------------------------------------------------------- /app/views/partials/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/views/admin/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.admin') 2 | @section('content') 3 | 4 |

Create a property record

5 | 6 | @include('admin._form') 7 | 8 | @stop -------------------------------------------------------------------------------- /app/views/layouts/admin.blade.php: -------------------------------------------------------------------------------- 1 | @include('partials.header') 2 | 3 | @include('partials.admin') 4 | 5 | @yield('content') 6 | 7 | 8 | @include('partials.footer') -------------------------------------------------------------------------------- /app/views/layouts/master.blade.php: -------------------------------------------------------------------------------- 1 | @include('partials.header') 2 | 3 | 4 | @yield('content') 5 | 6 | 7 | @include('partials.footer') 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/views/home.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('content') 4 |

Please search in our Database

5 | 6 | @include('home.form') 7 | 8 |
9 | 10 |
11 | 12 | @stop -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Options -MultiViews 3 | RewriteEngine On 4 | 5 | RewriteCond %{REQUEST_FILENAME} !-d 6 | RewriteCond %{REQUEST_FILENAME} !-f 7 | RewriteRule ^ index.php [L] 8 | -------------------------------------------------------------------------------- /app/models/County.php: -------------------------------------------------------------------------------- 1 | hasMany('City')->orderBy('name'); 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /app/models/HouseType.php: -------------------------------------------------------------------------------- 1 | hasMany('Property'); 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /app/models/SalesType.php: -------------------------------------------------------------------------------- 1 | hasMany('Property'); 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 4 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/assets/sass/app.sass: -------------------------------------------------------------------------------- 1 | @import home 2 | 3 | body 4 | padding-top: 20px 5 | 6 | .navbar-inverse 7 | background-color: rgba(0,0,0,0.65) 8 | border-color: rgba(0,0,0,0.1) 9 | .active 10 | color: white!important 11 | 12 | #property-index 13 | tr :nth-child(11) 14 | min-width: 150px 15 | max-width: 150px 16 | -------------------------------------------------------------------------------- /app/models/City.php: -------------------------------------------------------------------------------- 1 | belongsTo('County'); 10 | } 11 | 12 | public function properties() 13 | { 14 | return $this->hasMany('Property'); 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /bootstrap/compiled.php 2 | /vendor 3 | composer.phar 4 | composer.lock 5 | .DS_Store 6 | Thumbs.db 7 | .sass-cache 8 | node_modules 9 | .idea* 10 | .idea/*.* 11 | *.sublime-* 12 | /app/config/heroku/* 13 | /app/database/*.sqlite 14 | .coffee-cache 15 | .coffee-cache/* 16 | public/system/Property/* 17 | public/uploads/*.jpg 18 | -------------------------------------------------------------------------------- /public/css/builds/app.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 20px; 3 | } 4 | 5 | .navbar-inverse { 6 | background-color: rgba(0, 0, 0, 0.65); 7 | border-color: rgba(0, 0, 0, 0.1); 8 | } 9 | .navbar-inverse .active { 10 | color: white !important; 11 | } 12 | 13 | #property-index tr :nth-child(11) { 14 | min-width: 150px; 15 | max-width: 150px; 16 | } 17 | -------------------------------------------------------------------------------- /app/tests/ExampleTest.php: -------------------------------------------------------------------------------- 1 | client->request('GET', '/'); 13 | 14 | $this->assertTrue($this->client->getResponse()->isOk()); 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /app/database/seeds/UserTableSeeder.php: -------------------------------------------------------------------------------- 1 | delete(); 7 | 8 | User::create(array( 9 | 'username' => 'admin', 10 | 'password' => Hash::make('letmein'), 11 | 'admin' => true 12 | )); 13 | } 14 | } -------------------------------------------------------------------------------- /app/controllers/BaseController.php: -------------------------------------------------------------------------------- 1 | layout)) 13 | { 14 | $layout = Request::ajax() ? 'layouts/ajax' : $this->layout; 15 | $this->layout = View::make($this->layout); 16 | } 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /app/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | call('UserTableSeeder'); 15 | $this->call('CountyTableSeeder'); 16 | $this->call('HouseTypeTableSeeder'); 17 | $this->call('SalesTypeTableSeeder'); 18 | $this->call('CityTableSeeder'); 19 | $this->call('PropertyTableSeeder'); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /app/views/partials/header.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Real Estate App 6 | {{ HTML::style('css/builds/main.css') }} 7 | {{ HTML::style('css/builds/app.css')}} 8 | 9 | 10 | 11 |
12 | @include('partials.navigation') 13 | 14 |
15 | @if(Session::has('message')) 16 |
{{ Session::get('message') }}

17 | @endif 18 |
-------------------------------------------------------------------------------- /app/controllers/AdminController.php: -------------------------------------------------------------------------------- 1 | layout->content = View::make('admin'); 14 | } 15 | else 16 | { 17 | return Redirect::to('user/login') 18 | ->with('message', 'For Admin, please log in.'); 19 | } 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /app/database/seeds/SalesTypeTableSeeder.php: -------------------------------------------------------------------------------- 1 | delete(); 14 | 15 | foreach($SALESTYPES as $salestype) 16 | { 17 | SalesType::create(array( 18 | 'name' => $salestype 19 | )); 20 | } 21 | 22 | } 23 | } -------------------------------------------------------------------------------- /app/config/compile.php: -------------------------------------------------------------------------------- 1 | delete(); 14 | 15 | foreach($HOUSETYPES as $housetype) 16 | { 17 | HouseType::create(array( 18 | 'name' => $housetype 19 | )); 20 | } 21 | 22 | } 23 | } -------------------------------------------------------------------------------- /app/config/proxy.php: -------------------------------------------------------------------------------- 1 | '*' 16 | | 17 | */ 18 | 19 | 'proxies' => array( 20 | '*', 21 | ), 22 | 23 | ); 24 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 18 | 'next' => 'Next »', 19 | 20 | ); -------------------------------------------------------------------------------- /app/config/testing/cache.php: -------------------------------------------------------------------------------- 1 | 'array', 19 | 20 | ); -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | ./app/tests/ 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/config/testing/session.php: -------------------------------------------------------------------------------- 1 | 'array', 20 | 21 | ); -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: 8px 15px; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | > li { 13 | display: inline-block; 14 | + li:before { 15 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 16 | padding: 0 5px; 17 | color: @breadcrumb-color; 18 | } 19 | } 20 | > .active { 21 | color: @breadcrumb-active-color; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/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/twitter/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 | &.in { 21 | display: block; 22 | } 23 | } 24 | .collapsing { 25 | position: relative; 26 | height: 0; 27 | overflow: hidden; 28 | .transition(height .35s ease); 29 | } 30 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/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 darken(@well-bg, 7%); 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 | -------------------------------------------------------------------------------- /app/database/migrations/2013_12_04_010945_create_counties_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->timestamps(); 20 | 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::drop('counties'); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/lang/en/reminders.php: -------------------------------------------------------------------------------- 1 | "Passwords must be six characters and match the confirmation.", 17 | 18 | "user" => "We can't find a user with that e-mail address.", 19 | 20 | "token" => "This password reset token is invalid.", 21 | 22 | ); -------------------------------------------------------------------------------- /app/database/migrations/2013_12_04_010926_create_cities_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->integer('county_id'); 20 | $table->timestamps(); 21 | 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::drop('cities'); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /app/database/migrations/2013_12_04_010909_create_sales_types_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->timestamps(); 20 | 21 | $table->unique('name'); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::drop('sales_types'); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /app/database/migrations/2013_12_04_005520_create_house_types_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->timestamps(); 20 | 21 | $table->unique('name'); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::drop('house_types'); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /public/js/libs/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "version": "3.0.3", 4 | "main": [ 5 | "./dist/js/bootstrap.js", 6 | "./dist/css/bootstrap.css", 7 | "./dist/fonts/glyphicons-halflings-regular.eot", 8 | "./dist/fonts/glyphicons-halflings-regular.svg", 9 | "./dist/fonts/glyphicons-halflings-regular.ttf", 10 | "./dist/fonts/glyphicons-halflings-regular.woff" 11 | ], 12 | "ignore": [ 13 | "**/.*", 14 | "_*", 15 | "docs-assets", 16 | "examples", 17 | "/fonts", 18 | "js/tests", 19 | "CNAME", 20 | "CONTRIBUTING.md", 21 | "Gruntfile.js", 22 | "browserstack.json", 23 | "composer.json", 24 | "package.json", 25 | "*.html" 26 | ], 27 | "dependencies": { 28 | "jquery": ">= 1.9.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/database/migrations/2013_12_04_012326_create_users_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('username'); 19 | $table->string('password'); 20 | $table->boolean('admin'); 21 | $table->timestamps(); 22 | 23 | $table->unique('username'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::drop('users'); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/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 | -------------------------------------------------------------------------------- /Boxfile: -------------------------------------------------------------------------------- 1 | web1: 2 | document_root: public 3 | php_version: 5.4.14 4 | php_extensions: 5 | - mbstring 6 | - mcrypt 7 | - pdo_mysql 8 | - redis 9 | - zip 10 | - xcache 11 | - gd 12 | php_session_save_handler: redis 13 | php_session_save_path: "tcp://tunnel.pagodabox.com:6379" 14 | shared_writable_dirs: 15 | - app/storage/cache 16 | - app/storage/logs 17 | - app/storage/meta 18 | - app/storage/sessions 19 | - app/storage/views 20 | - public/uploads 21 | after_build: 22 | - "if [ ! -f composer.phar ]; then curl -s http://getcomposer.org/installer | php; fi; php composer.phar install --prefer-source" 23 | after_deploy: 24 | - "php artisan cache:clear" 25 | - "rm -f app/storage/views/*" 26 | - "php artisan db:seed" 27 | before_deploy: 28 | - "php artisan migrate:refresh" 29 | cache1: 30 | type: redis 31 | -------------------------------------------------------------------------------- /app/config/packages/fideloper/proxy/config.php: -------------------------------------------------------------------------------- 1 | '*' 15 | | 16 | | 17 | | To trust only specific proxies (recommended), set an array of those 18 | | proxies' IP addresses: 19 | | 20 | | 'proxies' => array('192.168.1.1', '192.168.1.2') 21 | | 22 | | 23 | | Or use CIDR notation: 24 | | 25 | | 'proxies' => array('192.168.12.0/23') 26 | | 27 | */ 28 | 29 | 'proxies' => '*', 30 | 31 | ); -------------------------------------------------------------------------------- /app/routes.php: -------------------------------------------------------------------------------- 1 | 'csrf', 'uses' => 'HomeController@search_result')); 10 | 11 | Route::group(array('prefix' => 'admin'), function() 12 | { 13 | Route::resource('properties', 'PropertyAdminController'); 14 | Route::get('/city_list/{count_id}', 'PropertyAdminController@city_list'); 15 | }); 16 | 17 | HTML::macro('clever_link', function($route, $text) { 18 | if( Request::path() == $route ) { 19 | $active = "class = 'active'"; 20 | } 21 | else { 22 | $active = ''; 23 | } 24 | 25 | return '
  • ' . link_to($route, $text) . '
  • '; 26 | }); 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/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 | .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/models/Property.php: -------------------------------------------------------------------------------- 1 | hasAttachedFile('picture', [ 13 | // 'styles' => [ 14 | // 'medium' => '300x300', 15 | // 'thumb' => '100x100' 16 | // ] 17 | // ]); 18 | 19 | // parent::__construct($attributes); 20 | // } 21 | 22 | public function city() 23 | { 24 | return $this->belongsTo('City'); 25 | } 26 | 27 | public function county() 28 | { 29 | return $this->belongsTo('County'); 30 | } 31 | 32 | public function house_type() 33 | { 34 | return $this->belongsTo('HouseType'); 35 | } 36 | 37 | public function sales_type() 38 | { 39 | return $this->belongsTo('SalesType'); 40 | } 41 | 42 | 43 | } -------------------------------------------------------------------------------- /app/views/partials/navigation.blade.php: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /app/config/workbench.php: -------------------------------------------------------------------------------- 1 | '', 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Workbench Author E-Mail Address 21 | |-------------------------------------------------------------------------- 22 | | 23 | | Like the option above, your e-mail address is used when generating new 24 | | workbench packages. The e-mail is placed in your composer.json file 25 | | automatically after the package is created by the workbench tool. 26 | | 27 | */ 28 | 29 | 'email' => '', 30 | 31 | ); -------------------------------------------------------------------------------- /app/config/view.php: -------------------------------------------------------------------------------- 1 | array(__DIR__.'/../views'), 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Pagination View 21 | |-------------------------------------------------------------------------- 22 | | 23 | | This view will be used to render the pagination link output, and can 24 | | be easily customized here to show any view you like. A clean view 25 | | compatible with Twitter's Bootstrap is given to you by default. 26 | | 27 | */ 28 | 29 | 'pagination' => 'pagination::slider', 30 | 31 | ); 32 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /app/models/User.php: -------------------------------------------------------------------------------- 1 | getKey(); 30 | } 31 | 32 | /** 33 | * Get the password for the user. 34 | * 35 | * @return string 36 | */ 37 | public function getAuthPassword() 38 | { 39 | return $this->password; 40 | } 41 | 42 | /** 43 | * Get the e-mail address where password reminders are sent. 44 | * 45 | * @return string 46 | */ 47 | public function getReminderEmail() 48 | { 49 | return $this->email; 50 | } 51 | 52 | } -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "laravel/laravel", 3 | "description": "The Laravel Framework.", 4 | "keywords": ["framework", "laravel"], 5 | "license": "MIT", 6 | "require": { 7 | "laravel/framework": "4.0.10", 8 | "fideloper/proxy": "dev-master", 9 | "laravelbook/ardent": "2.1.0", 10 | "loic-sharma/profiler": "1.1.*", 11 | "twitter/bootstrap": "3.0.3", 12 | "intervention/image": "1.5.2" 13 | }, 14 | "autoload": { 15 | "classmap": [ 16 | "app/commands", 17 | "app/controllers", 18 | "app/models", 19 | "app/database/migrations", 20 | "app/database/seeds", 21 | "app/tests/TestCase.php" 22 | ] 23 | }, 24 | "scripts": { 25 | "post-install-cmd": [ 26 | "php artisan optimize" 27 | ], 28 | "post-update-cmd": [ 29 | "php artisan clear-compiled", 30 | "php artisan optimize" 31 | ], 32 | "post-create-project-cmd": [ 33 | "php artisan key:generate" 34 | ] 35 | }, 36 | "config": { 37 | "preferred-install": "dist" 38 | }, 39 | "minimum-stability": "dev" 40 | } 41 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "version": "3.0.3", 4 | "main": [ 5 | "./dist/js/bootstrap.js", 6 | "./dist/css/bootstrap.css", 7 | "./dist/fonts/glyphicons-halflings-regular.eot", 8 | "./dist/fonts/glyphicons-halflings-regular.svg", 9 | "./dist/fonts/glyphicons-halflings-regular.ttf", 10 | "./dist/fonts/glyphicons-halflings-regular.woff" 11 | ], 12 | "ignore": [ 13 | "**/.*", 14 | "_*", 15 | "docs-assets", 16 | "examples", 17 | "/fonts", 18 | "js/tests", 19 | "CNAME", 20 | "CONTRIBUTING.md", 21 | "Gruntfile.js", 22 | "browserstack.json", 23 | "composer.json", 24 | "package.json", 25 | "*.html" 26 | ], 27 | "dependencies": { 28 | "jquery": ">= 1.9.0" 29 | }, 30 | "homepage": "https://github.com/twbs/bootstrap", 31 | "_release": "3.0.3", 32 | "_resolution": { 33 | "type": "version", 34 | "tag": "v3.0.3", 35 | "commit": "6d03173a1aad98e75f7d33e65b411c519176c59a" 36 | }, 37 | "_source": "git://github.com/twbs/bootstrap.git", 38 | "_target": "~3.0.3", 39 | "_originalSource": "bootstrap" 40 | } -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | zoom: 1; 14 | } 15 | 16 | // Proper spacing between instances of .media 17 | .media, 18 | .media .media { 19 | margin-top: 15px; 20 | } 21 | .media:first-child { 22 | margin-top: 0; 23 | } 24 | 25 | // For images and videos, set to block 26 | .media-object { 27 | display: block; 28 | } 29 | 30 | // Reset margins on headings for tighter default spacing 31 | .media-heading { 32 | margin: 0 0 5px; 33 | } 34 | 35 | 36 | // Media image alignment 37 | // ------------------------- 38 | 39 | .media { 40 | > .pull-left { 41 | margin-right: 10px; 42 | } 43 | > .pull-right { 44 | margin-left: 10px; 45 | } 46 | } 47 | 48 | 49 | // Media list variation 50 | // ------------------------- 51 | 52 | // Undo default ul/ol styles 53 | .media-list { 54 | padding-left: 0; 55 | list-style: none; 56 | } 57 | -------------------------------------------------------------------------------- /app/assets/coffee/app.coffee: -------------------------------------------------------------------------------- 1 | downloadCities = (e) -> 2 | county_id = $('#county').val() 3 | $.get('/city_list/' + county_id).done (data) -> 4 | $("#city").empty().html(data.html) 5 | 6 | downloadCitiesForAdmin = (e) -> 7 | county_id = $('#county_id').val() 8 | $.get('/admin/city_list/' + county_id).done (data) -> 9 | $("#admin_form_city_list").empty().html(data.html) 10 | 11 | 12 | submitSearchForm = (e) -> 13 | e.preventDefault() 14 | formData = $('#form-search').serialize() 15 | $.post('/search_result', formData).done (data) -> 16 | $('#list').empty().html(data.html) 17 | 18 | jsDelete = (e) -> 19 | e.preventDefault() 20 | 21 | if (!confirm('Are you sure you want to delete this ?')) 22 | return 23 | 24 | $.ajax 25 | type : 'DELETE', 26 | url : $(this).attr('href'), 27 | success : (results) -> 28 | location.reload() 29 | 30 | 31 | 32 | $ -> 33 | $('#county').on 'change', downloadCities 34 | $('#form-search').addClass('bound').on 'submit', submitSearchForm 35 | 36 | $('#county_id').on 'change', downloadCitiesForAdmin 37 | 38 | $('a.js-delete').on 'click', jsDelete 39 | 40 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | .clearfix(); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pagination-bg; 19 | border: 1px solid @pagination-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pagination-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pagination-bg; 51 | cursor: not-allowed; 52 | } 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /app/database/seeds/CityTableSeeder.php: -------------------------------------------------------------------------------- 1 | delete(); 10 | 11 | foreach($CITIES as $city) 12 | { 13 | $county = County::where('name', $city['county_name'])->first(); 14 | City::create(array( 15 | 'name' => $city['name'], 16 | 'county_id' => $county->id 17 | )); 18 | } 19 | 20 | } 21 | 22 | public function csv_to_array($filename='', $delimiter=',') 23 | { 24 | $header = NULL; 25 | $data = array(); 26 | if (($handle = fopen($filename, 'r')) !== FALSE) 27 | { 28 | while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) 29 | { 30 | if(!$header) 31 | $header = $row; 32 | else 33 | $data[] = array_combine($header, $row); 34 | } 35 | fclose($handle); 36 | } 37 | return $data; 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding; 8 | margin-bottom: @jumbotron-padding; 9 | font-size: @jumbotron-font-size; 10 | font-weight: 200; 11 | line-height: (@line-height-base * 1.5); 12 | color: @jumbotron-color; 13 | background-color: @jumbotron-bg; 14 | 15 | h1, 16 | .h1 { 17 | line-height: 1; 18 | color: @jumbotron-heading-color; 19 | } 20 | p { 21 | line-height: 1.4; 22 | } 23 | 24 | .container & { 25 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 26 | } 27 | 28 | .container { 29 | max-width: 100%; 30 | } 31 | 32 | @media screen and (min-width: @screen-sm-min) { 33 | padding-top: (@jumbotron-padding * 1.6); 34 | padding-bottom: (@jumbotron-padding * 1.6); 35 | 36 | .container & { 37 | padding-left: (@jumbotron-padding * 2); 38 | padding-right: (@jumbotron-padding * 2); 39 | } 40 | 41 | h1, 42 | .h1 { 43 | font-size: (@font-size-base * 4.5); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/database/seeds/CountyTableSeeder.php: -------------------------------------------------------------------------------- 1 | delete(); 39 | 40 | foreach($COUNTIES as $county) 41 | { 42 | County::create(array( 43 | 'name' => $county.' Co.', 44 | )); 45 | } 46 | 47 | } 48 | } -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base classes 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | } 32 | 33 | // Hover state, but only for links 34 | a.badge { 35 | &:hover, 36 | &:focus { 37 | color: @badge-link-hover-color; 38 | text-decoration: none; 39 | cursor: pointer; 40 | } 41 | } 42 | 43 | // Account for counters in navs 44 | a.list-group-item.active > .badge, 45 | .nav-pills > .active > a > .badge { 46 | color: @badge-active-color; 47 | background-color: @badge-active-bg; 48 | } 49 | .nav-pills > li > a > .badge { 50 | margin-left: 3px; 51 | } 52 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | 9 | // Core CSS 10 | @import "scaffolding.less"; 11 | @import "type.less"; 12 | @import "code.less"; 13 | @import "grid.less"; 14 | @import "tables.less"; 15 | @import "forms.less"; 16 | @import "buttons.less"; 17 | 18 | // Components 19 | @import "component-animations.less"; 20 | @import "glyphicons.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 "wells.less"; 39 | @import "close.less"; 40 | 41 | // Components w/ JavaScript 42 | @import "modals.less"; 43 | @import "tooltip.less"; 44 | @import "popovers.less"; 45 | @import "carousel.less"; 46 | 47 | // Utility classes 48 | @import "utilities.less"; 49 | @import "responsive-utilities.less"; 50 | -------------------------------------------------------------------------------- /app/views/users/login.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('content') 4 | 5 | @if ( $errors->count() > 0 ) 6 |
    7 |

    The following errors have occurred:

    8 | 9 |
      10 | @foreach( $errors->all() as $message ) 11 |
    • {{ $message }}
    • 12 | @endforeach 13 |
    14 |
    15 | @endif 16 | 17 | 18 | 19 | {{ Form::open(array('url'=>'user/signin', 'class'=>'form-horizontal')) }} 20 |
    21 | {{Form::label('username', 'Username: ', array('class'=>'col-sm-2 control-label')) }} 22 |
    23 | {{ Form::text('username', null, array('class'=>'form-control', 'placeholder'=>'Username (try: admin)', 'required'=>'true')) }} 24 |
    25 |
    26 |
    27 | {{Form::label('password', 'Password: ', array('class'=>'col-sm-2 control-label')) }} 28 |
    29 | {{ Form::password('password', array('class'=>'form-control', 'placeholder'=>'Password (try: letmein)', 'required'=>'true')) }} 30 |
    31 |
    32 |
    33 |
    34 | {{ Form::submit('Login', array('class'=>'btn btn-large btn-primary')) }} 35 |
    36 |
    37 | {{ Form::close() }} 38 | 39 | @stop -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/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 | white-space: nowrap; 21 | border-radius: @border-radius-base; 22 | } 23 | 24 | // Blocks of code 25 | pre { 26 | display: block; 27 | padding: ((@line-height-computed - 1) / 2); 28 | margin: 0 0 (@line-height-computed / 2); 29 | font-size: (@font-size-base - 1); // 14px to 13px 30 | line-height: @line-height-base; 31 | word-break: break-all; 32 | word-wrap: break-word; 33 | color: @pre-color; 34 | background-color: @pre-bg; 35 | border: 1px solid @pre-border-color; 36 | border-radius: @border-radius-base; 37 | 38 | // Account for some code outputs that place code tags in pre tags 39 | code { 40 | padding: 0; 41 | font-size: inherit; 42 | color: inherit; 43 | white-space: pre-wrap; 44 | background-color: transparent; 45 | border-radius: 0; 46 | } 47 | } 48 | 49 | // Enable scrollable blocks of code 50 | .pre-scrollable { 51 | max-height: @pre-scrollable-max-height; 52 | overflow-y: scroll; 53 | } 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "real-estate-app", 3 | "version": "0.0.0", 4 | "description": "A boiler plate for writing web apps using Laravel and Ember", 5 | "main": "public/index.php", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "devDependencies": { 10 | "grunt": "~0.4.1", 11 | "grunt-contrib-jshint": "~0.6.4", 12 | "grunt-contrib-uglify": "~0.2.2", 13 | "grunt-contrib-concat": "~0.3.0", 14 | "grunt-contrib-watch": "~0.5.3", 15 | "grunt-shell": "~0.3.1", 16 | "grunt-contrib-cssmin": "~0.6.1", 17 | "grunt-contrib-clean": "~0.5.0", 18 | "grunt-contrib-connect": "~0.5.0", 19 | "grunt-contrib-sass": "*", 20 | "grunt-contrib-coffee": "*", 21 | "connect-livereload": "*", 22 | "time-grunt": "*", 23 | "load-grunt-tasks": "*" 24 | 25 | }, 26 | "repository": { 27 | "type": "git", 28 | "url": "http://github.com/real-estate-app.git" 29 | }, 30 | "keywords": [ 31 | "laravel" 32 | ], 33 | "license": "BSD", 34 | "bugs": { 35 | "url": "http://github.com//real-estate-app/issues" 36 | }, 37 | "dependencies": { 38 | "grunt": "~0.4.1", 39 | "grunt-contrib-concat": "~0.3.0", 40 | "grunt-contrib-jshint": "~0.6.3", 41 | "grunt-contrib-qunit": "~0.2.2", 42 | "grunt-contrib-uglify": "~0.2.2", 43 | "grunt-contrib-watch": "~0.5.3" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/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 | &[href] { 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/database/seeds/PropertyTableSeeder.php: -------------------------------------------------------------------------------- 1 | 'Nice house in Dublin', 10 | 'details' => 'Amazing panorama with a big garden.', 11 | 'price' => 230000, 12 | 'county_id' => County::where('name', 'like', 'Dublin Co.')->first()->id, 13 | 'city_id' => City::where('name', 'like', 'Dublin')->first()->id, 14 | 'sales_type_id' => SalesType::all()->first()->id, 15 | 'house_type_id' => HouseType::all()->first()->id 16 | ), 17 | 18 | array( 19 | 'title' => 'Nice house in Sandyford', 20 | 'details' => 'Amazing panorama with a big garden.', 21 | 'price' => 250000, 22 | 'county_id' => County::where('name', 'like', 'Dublin Co.')->first()->id, 23 | 'city_id' => City::where('name', 'like', 'Dublin')->first()->id, 24 | 'sales_type_id' => SalesType::all()->first()->id, 25 | 'house_type_id' => HouseType::all()->first()->id 26 | )); 27 | 28 | 29 | 30 | DB::table('properties')->delete(); 31 | 32 | foreach($PROPERTIES as $property) 33 | { 34 | Property::create($property); 35 | } 36 | 37 | } 38 | } -------------------------------------------------------------------------------- /public/js/builds/app.js: -------------------------------------------------------------------------------- 1 | var downloadCities, downloadCitiesForAdmin, jsDelete, submitSearchForm; 2 | 3 | downloadCities = function(e) { 4 | var county_id; 5 | county_id = $('#county').val(); 6 | return $.get('/city_list/' + county_id).done(function(data) { 7 | return $("#city").empty().html(data.html); 8 | }); 9 | }; 10 | 11 | downloadCitiesForAdmin = function(e) { 12 | var county_id; 13 | county_id = $('#county_id').val(); 14 | return $.get('/admin/city_list/' + county_id).done(function(data) { 15 | return $("#admin_form_city_list").empty().html(data.html); 16 | }); 17 | }; 18 | 19 | submitSearchForm = function(e) { 20 | var formData; 21 | e.preventDefault(); 22 | formData = $('#form-search').serialize(); 23 | return $.post('/search_result', formData).done(function(data) { 24 | return $('#list').empty().html(data.html); 25 | }); 26 | }; 27 | 28 | jsDelete = function(e) { 29 | e.preventDefault(); 30 | if (!confirm('Are you sure you want to delete this ?')) { 31 | return; 32 | } 33 | return $.ajax({ 34 | type: 'DELETE', 35 | url: $(this).attr('href'), 36 | success: function(results) { 37 | return location.reload(); 38 | } 39 | }); 40 | }; 41 | 42 | $(function() { 43 | $('#county').on('change', downloadCities); 44 | $('#form-search').addClass('bound').on('submit', submitSearchForm); 45 | $('#county_id').on('change', downloadCitiesForAdmin); 46 | return $('a.js-delete').on('click', jsDelete); 47 | }); 48 | -------------------------------------------------------------------------------- /app/views/home/search_result.blade.php: -------------------------------------------------------------------------------- 1 |

    Search Result

    2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | @if (sizeof($properties) < 1) 16 | 17 | 20 | 21 | @endif 22 | 23 | @foreach ($properties as $property) 24 | 25 | 29 | 34 | 37 | @endif 38 | 43 | 46 | 51 | 52 | 53 | @endforeach 54 |
    TitlePictureCountyCityPriceHouse Type
    18 | No results for this search. 19 |
    26 | 27 | {{ $property->title }} 28 | 30 | @if (isset($property->picture)) 31 | 32 | @endif 33 | 35 | @if (isset($property->county->name)) 36 | {{ $property->county->name }} 39 | @if (isset($property->city->name)) 40 | {{ $property->city->name }} 41 | @endif 42 | 44 | {{ $property->price }} 45 | 47 | @if (isset($property->house_type->name)) 48 | {{ $property->house_type->name }} 49 | @endif 50 |
    55 | -------------------------------------------------------------------------------- /app/database/migrations/2013_12_04_010655_create_properties_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('title'); 19 | $table->text('details')->nullable(); 20 | $table->integer('price'); 21 | $table->integer('sales_type_id')->nullable(); 22 | $table->integer('county_id')->nullable(); 23 | $table->integer('city_id')->nullable(); 24 | $table->integer('house_type_id')->nullable(); 25 | $table->string('address_1')->nullable(); 26 | $table->string('address_2')->nullable(); 27 | $table->string('address_3')->nullable(); 28 | $table->integer('number_of_beds')->nullable(); 29 | $table->integer('number_of_baths')->nullable(); 30 | $table->boolean('pet_allowed')->default(0); 31 | $table->boolean('dishwasher')->default(0); 32 | $table->boolean('furnished')->default(0); 33 | $table->boolean('sold')->default(0); 34 | $table->string('picture')->nullable(); 35 | $table->timestamps(); 36 | }); 37 | } 38 | 39 | /** 40 | * Reverse the migrations. 41 | * 42 | * @return void 43 | */ 44 | public function down() 45 | { 46 | Schema::drop('properties'); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /app/config/queue.php: -------------------------------------------------------------------------------- 1 | 'sync', 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Queue Connections 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Here you may configure the connection information for each server that 26 | | is used by your application. A default configuration has been added 27 | | for each back-end shipped with Laravel. You are free to add more. 28 | | 29 | */ 30 | 31 | 'connections' => array( 32 | 33 | 'sync' => array( 34 | 'driver' => 'sync', 35 | ), 36 | 37 | 'beanstalkd' => array( 38 | 'driver' => 'beanstalkd', 39 | 'host' => 'localhost', 40 | 'queue' => 'default', 41 | ), 42 | 43 | 'sqs' => array( 44 | 'driver' => 'sqs', 45 | 'key' => 'your-public-key', 46 | 'secret' => 'your-secret-key', 47 | 'queue' => 'your-queue-url', 48 | 'region' => 'us-east-1', 49 | ), 50 | 51 | 'iron' => array( 52 | 'driver' => 'iron', 53 | 'project' => 'your-project-id', 54 | 'token' => 'your-token', 55 | 'queue' => 'your-queue-name', 56 | ), 57 | 58 | ), 59 | 60 | ); 61 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | // Provide class for links that match alerts 22 | .alert-link { 23 | font-weight: @alert-link-font-weight; 24 | } 25 | 26 | // Improve alignment and spacing of inner content 27 | > p, 28 | > ul { 29 | margin-bottom: 0; 30 | } 31 | > p + p { 32 | margin-top: 5px; 33 | } 34 | } 35 | 36 | // Dismissable alerts 37 | // 38 | // Expand the right padding and account for the close button's positioning. 39 | 40 | .alert-dismissable { 41 | padding-right: (@alert-padding + 20); 42 | 43 | // Adjust close link position 44 | .close { 45 | position: relative; 46 | top: -2px; 47 | right: -21px; 48 | color: inherit; 49 | } 50 | } 51 | 52 | // Alternate styles 53 | // 54 | // Generate contextual modifier classes for colorizing the alert. 55 | 56 | .alert-success { 57 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 58 | } 59 | .alert-info { 60 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 61 | } 62 | .alert-warning { 63 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 64 | } 65 | .alert-danger { 66 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 67 | } 68 | -------------------------------------------------------------------------------- /app/views/home/form.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | {{Form::open(array('url'=>'', 'class'=>'form-horizontal', 'id'=>'form-search')) }} 3 |
    4 | {{Form::label('county', 'County:', array('class'=>'col-sm-2 control-label')) }} 5 |
    6 | {{Form::select('county', $counties_options, '', array('class' => 'form-control')) }} 7 |
    8 |
    9 |
    10 | {{Form::label('city', 'City:', array('class'=>'col-sm-2 control-label')) }} 11 |
    12 | {{Form::select('city', ['Select County First'], '', array('id' => 'city', 'class' => 'form-control')) }} 13 |
    14 |
    15 |
    16 | {{Form::label('price_from', 'Price From:', array('class'=>'col-sm-2 control-label')) }} 17 |
    18 | 19 |
    20 |
    21 |
    22 | {{Form::label('price_to', 'Price To:', array('class'=>'col-sm-2 control-label')) }} 23 |
    24 | 25 |
    26 |
    27 |
    28 | {{Form::label('house_type_id', 'House Type:', array('class'=>'col-sm-2 control-label')) }} 29 |
    30 | {{Form::select('house_type_id', $house_type_options, '', array('class' => 'form-control')) }} 31 |
    32 |
    33 | 34 | 35 |
    36 |
    37 | {{ Form::submit('Search', array('class'=>'btn btn-primary')) }} 38 |
    39 |
    40 | {{ Form::close() }} 41 | 42 |
    43 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/progress-bars.less: -------------------------------------------------------------------------------- 1 | // 2 | // Progress bars 3 | // -------------------------------------------------- 4 | 5 | 6 | // Bar animations 7 | // ------------------------- 8 | 9 | // WebKit 10 | @-webkit-keyframes progress-bar-stripes { 11 | from { background-position: 40px 0; } 12 | to { background-position: 0 0; } 13 | } 14 | 15 | // Spec and IE10+ 16 | @keyframes progress-bar-stripes { 17 | from { background-position: 40px 0; } 18 | to { background-position: 0 0; } 19 | } 20 | 21 | 22 | 23 | // Bar itself 24 | // ------------------------- 25 | 26 | // Outer container 27 | .progress { 28 | overflow: hidden; 29 | height: @line-height-computed; 30 | margin-bottom: @line-height-computed; 31 | background-color: @progress-bg; 32 | border-radius: @border-radius-base; 33 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 34 | } 35 | 36 | // Bar of progress 37 | .progress-bar { 38 | float: left; 39 | width: 0%; 40 | height: 100%; 41 | font-size: @font-size-small; 42 | line-height: @line-height-computed; 43 | color: @progress-bar-color; 44 | text-align: center; 45 | background-color: @progress-bar-bg; 46 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 47 | .transition(width .6s ease); 48 | } 49 | 50 | // Striped bars 51 | .progress-striped .progress-bar { 52 | #gradient > .striped(); 53 | background-size: 40px 40px; 54 | } 55 | 56 | // Call animation for the active one 57 | .progress.active .progress-bar { 58 | .animation(progress-bar-stripes 2s linear infinite); 59 | } 60 | 61 | 62 | 63 | // Variations 64 | // ------------------------- 65 | 66 | .progress-bar-success { 67 | .progress-bar-variant(@progress-bar-success-bg); 68 | } 69 | 70 | .progress-bar-info { 71 | .progress-bar-variant(@progress-bar-info-bg); 72 | } 73 | 74 | .progress-bar-warning { 75 | .progress-bar-variant(@progress-bar-warning-bg); 76 | } 77 | 78 | .progress-bar-danger { 79 | .progress-bar-variant(@progress-bar-danger-bg); 80 | } 81 | -------------------------------------------------------------------------------- /bootstrap/paths.php: -------------------------------------------------------------------------------- 1 | __DIR__.'/../app', 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Public Path 21 | |-------------------------------------------------------------------------- 22 | | 23 | | The public path contains the assets for your web application, such as 24 | | your JavaScript and CSS files, and also contains the primary entry 25 | | point for web requests into these applications from the outside. 26 | | 27 | */ 28 | 29 | 'public' => __DIR__.'/../public', 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Base Path 34 | |-------------------------------------------------------------------------- 35 | | 36 | | The base path is the root of the Laravel installation. Most likely you 37 | | will not need to change this value. But, if for some wild reason it 38 | | is necessary you will do so here, just proceed with some caution. 39 | | 40 | */ 41 | 42 | 'base' => __DIR__.'/..', 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Storage Path 47 | |-------------------------------------------------------------------------- 48 | | 49 | | The storage path is used by Laravel to store cached Blade views, logs 50 | | and other pieces of information. You may modify the path here when 51 | | you want to change the location of this directory for your apps. 52 | | 53 | */ 54 | 55 | 'storage' => __DIR__.'/../app/storage', 56 | 57 | ); 58 | -------------------------------------------------------------------------------- /app/views/admin/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.admin') 2 | @section('content') 3 | 4 |
    5 |

    All property

    6 |
    7 |
    8 | {{ link_to_route("admin.properties.create", 'Create a New Property', array(), array('class' => 'btn btn-success')) }} 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | @foreach ($properties as $property) 32 | 33 | 34 | 35 | 40 | 41 | 46 | 47 | 48 | 51 | @endif 52 | 57 | 58 | 59 | 60 | 65 | 66 | @endforeach 67 | 68 | 69 |
    IDSold?TitlePictureDetailsPriceCountyCityCreated atUpdated atActions
    {{ $property->id }} 36 | @if ($property->sold == '1') 37 | SOLD! 38 | @endif 39 | {{ $property->title }} 42 | @if (isset($property->picture)) 43 | 44 | @endif 45 | {{ $property->details }}{{ $property->price }} 49 | @if (isset($property->county->name)) 50 | {{ $property->county->name }} 53 | @if (isset($property->city->name)) 54 | {{ $property->city->name }} 55 | @endif 56 | {{ $property->created_at }}{{ $property->updated_at }} 61 | {{ link_to("admin/properties/$property->id/edit", 'Edit', array('class' => 'btn btn-primary')) }} 62 | {{ link_to_action('PropertyAdminController@destroy', 'X', $property->id, array('class' => 'btn btn-danger js-delete')) }} 63 | 64 |
    70 | 71 | 72 | @stop -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | // Set the container width, and override it for fixed navbars in media queries 6 | .container { 7 | .container-fixed(); 8 | 9 | @media (min-width: @screen-sm) { 10 | width: @container-sm; 11 | } 12 | @media (min-width: @screen-md) { 13 | width: @container-md; 14 | } 15 | @media (min-width: @screen-lg-min) { 16 | width: @container-lg; 17 | } 18 | } 19 | 20 | // mobile first defaults 21 | .row { 22 | .make-row(); 23 | } 24 | 25 | // Common styles for small and large grid columns 26 | .make-grid-columns(); 27 | 28 | 29 | // Extra small grid 30 | // 31 | // Columns, offsets, pushes, and pulls for extra small devices like 32 | // smartphones. 33 | 34 | .make-grid-columns-float(xs); 35 | .make-grid(@grid-columns, xs, width); 36 | .make-grid(@grid-columns, xs, pull); 37 | .make-grid(@grid-columns, xs, push); 38 | .make-grid(@grid-columns, xs, offset); 39 | 40 | 41 | // Small grid 42 | // 43 | // Columns, offsets, pushes, and pulls for the small device range, from phones 44 | // to tablets. 45 | 46 | @media (min-width: @screen-sm-min) { 47 | .make-grid-columns-float(sm); 48 | .make-grid(@grid-columns, sm, width); 49 | .make-grid(@grid-columns, sm, pull); 50 | .make-grid(@grid-columns, sm, push); 51 | .make-grid(@grid-columns, sm, offset); 52 | } 53 | 54 | 55 | // Medium grid 56 | // 57 | // Columns, offsets, pushes, and pulls for the desktop device range. 58 | 59 | @media (min-width: @screen-md-min) { 60 | .make-grid-columns-float(md); 61 | .make-grid(@grid-columns, md, width); 62 | .make-grid(@grid-columns, md, pull); 63 | .make-grid(@grid-columns, md, push); 64 | .make-grid(@grid-columns, md, offset); 65 | } 66 | 67 | 68 | // Large grid 69 | // 70 | // Columns, offsets, pushes, and pulls for the large desktop device range. 71 | 72 | @media (min-width: @screen-lg-min) { 73 | .make-grid-columns-float(lg); 74 | .make-grid(@grid-columns, lg, width); 75 | .make-grid(@grid-columns, lg, pull); 76 | .make-grid(@grid-columns, lg, push); 77 | .make-grid(@grid-columns, lg, offset); 78 | } 79 | 80 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/js/transition.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: transition.js v3.0.3 3 | * http://getbootstrap.com/javascript/#transitions 4 | * ======================================================================== 5 | * Copyright 2013 Twitter, Inc. 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * ======================================================================== */ 19 | 20 | 21 | +function ($) { "use strict"; 22 | 23 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 24 | // ============================================================ 25 | 26 | function transitionEnd() { 27 | var el = document.createElement('bootstrap') 28 | 29 | var transEndEventNames = { 30 | 'WebkitTransition' : 'webkitTransitionEnd' 31 | , 'MozTransition' : 'transitionend' 32 | , 'OTransition' : 'oTransitionEnd otransitionend' 33 | , 'transition' : 'transitionend' 34 | } 35 | 36 | for (var name in transEndEventNames) { 37 | if (el.style[name] !== undefined) { 38 | return { end: transEndEventNames[name] } 39 | } 40 | } 41 | } 42 | 43 | // http://blog.alexmaccaw.com/css-transitions 44 | $.fn.emulateTransitionEnd = function (duration) { 45 | var called = false, $el = this 46 | $(this).one($.support.transition.end, function () { called = true }) 47 | var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 48 | setTimeout(callback, duration) 49 | return this 50 | } 51 | 52 | $(function () { 53 | $.support.transition = transitionEnd() 54 | }) 55 | 56 | }(jQuery); 57 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/print.less: -------------------------------------------------------------------------------- 1 | // 2 | // Basic print styles 3 | // -------------------------------------------------- 4 | // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css 5 | 6 | @media print { 7 | 8 | * { 9 | text-shadow: none !important; 10 | color: #000 !important; // Black prints faster: h5bp.com/s 11 | background: transparent !important; 12 | box-shadow: none !important; 13 | } 14 | 15 | a, 16 | a:visited { 17 | text-decoration: underline; 18 | } 19 | 20 | a[href]:after { 21 | content: " (" attr(href) ")"; 22 | } 23 | 24 | abbr[title]:after { 25 | content: " (" attr(title) ")"; 26 | } 27 | 28 | // Don't show links for images, or javascript/internal links 29 | a[href^="javascript:"]:after, 30 | a[href^="#"]:after { 31 | content: ""; 32 | } 33 | 34 | pre, 35 | blockquote { 36 | border: 1px solid #999; 37 | page-break-inside: avoid; 38 | } 39 | 40 | thead { 41 | display: table-header-group; // h5bp.com/t 42 | } 43 | 44 | tr, 45 | img { 46 | page-break-inside: avoid; 47 | } 48 | 49 | img { 50 | max-width: 100% !important; 51 | } 52 | 53 | @page { 54 | margin: 2cm .5cm; 55 | } 56 | 57 | p, 58 | h2, 59 | h3 { 60 | orphans: 3; 61 | widows: 3; 62 | } 63 | 64 | h2, 65 | h3 { 66 | page-break-after: avoid; 67 | } 68 | 69 | // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 70 | // Once fixed, we can just straight up remove this. 71 | select { 72 | background: #fff !important; 73 | } 74 | 75 | // Bootstrap components 76 | .navbar { 77 | display: none; 78 | } 79 | .table { 80 | td, 81 | th { 82 | background-color: #fff !important; 83 | } 84 | } 85 | .btn, 86 | .dropup > .btn { 87 | > .caret { 88 | border-top-color: #000 !important; 89 | } 90 | } 91 | .label { 92 | border: 1px solid #000; 93 | } 94 | 95 | .table { 96 | border-collapse: collapse !important; 97 | } 98 | .table-bordered { 99 | th, 100 | td { 101 | border: 1px solid #ddd !important; 102 | } 103 | } 104 | 105 | } 106 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | 9 | /* 10 | |-------------------------------------------------------------------------- 11 | | Register The Auto Loader 12 | |-------------------------------------------------------------------------- 13 | | 14 | | Composer provides a convenient, automatically generated class loader 15 | | for our application. We just need to utilize it! We'll require it 16 | | into the script here so that we do not have to worry about the 17 | | loading of any our classes "manually". Feels great to relax. 18 | | 19 | */ 20 | 21 | require __DIR__.'/../bootstrap/autoload.php'; 22 | 23 | /* 24 | |-------------------------------------------------------------------------- 25 | | Turn On The Lights 26 | |-------------------------------------------------------------------------- 27 | | 28 | | We need to illuminate PHP development, so let's turn on the lights. 29 | | This bootstraps the framework and gets it ready for use, then it 30 | | will load up this application so that we can run it and send 31 | | the responses back to the browser and delight these users. 32 | | 33 | */ 34 | 35 | $app = require_once __DIR__.'/../bootstrap/start.php'; 36 | 37 | /* 38 | |-------------------------------------------------------------------------- 39 | | Run The Application 40 | |-------------------------------------------------------------------------- 41 | | 42 | | Once we have the application, we can simply call the run method, 43 | | which will execute the request and send the response back to 44 | | the client's browser allowing them to enjoy the creative 45 | | and wonderful applications we have created for them. 46 | | 47 | */ 48 | 49 | $app->run(); 50 | 51 | /* 52 | |-------------------------------------------------------------------------- 53 | | Shutdown The Application 54 | |-------------------------------------------------------------------------- 55 | | 56 | | Once the app has finished running, we will fire off the shutdown events 57 | | so that any final work may be done by the application before we shut 58 | | down the process. This is the last thing to happen to the request. 59 | | 60 | */ 61 | 62 | $app->shutdown(); -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/pagination.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination (multiple pages) 3 | // -------------------------------------------------- 4 | .pagination { 5 | display: inline-block; 6 | padding-left: 0; 7 | margin: @line-height-computed 0; 8 | border-radius: @border-radius-base; 9 | 10 | > li { 11 | display: inline; // Remove list-style and block-level defaults 12 | > a, 13 | > span { 14 | position: relative; 15 | float: left; // Collapse white-space 16 | padding: @padding-base-vertical @padding-base-horizontal; 17 | line-height: @line-height-base; 18 | text-decoration: none; 19 | background-color: @pagination-bg; 20 | border: 1px solid @pagination-border; 21 | margin-left: -1px; 22 | } 23 | &:first-child { 24 | > a, 25 | > span { 26 | margin-left: 0; 27 | .border-left-radius(@border-radius-base); 28 | } 29 | } 30 | &:last-child { 31 | > a, 32 | > span { 33 | .border-right-radius(@border-radius-base); 34 | } 35 | } 36 | } 37 | 38 | > li > a, 39 | > li > span { 40 | &:hover, 41 | &:focus { 42 | background-color: @pagination-hover-bg; 43 | } 44 | } 45 | 46 | > .active > a, 47 | > .active > span { 48 | &, 49 | &:hover, 50 | &:focus { 51 | z-index: 2; 52 | color: @pagination-active-color; 53 | background-color: @pagination-active-bg; 54 | border-color: @pagination-active-bg; 55 | cursor: default; 56 | } 57 | } 58 | 59 | > .disabled { 60 | > span, 61 | > span:hover, 62 | > span:focus, 63 | > a, 64 | > a:hover, 65 | > a:focus { 66 | color: @pagination-disabled-color; 67 | background-color: @pagination-bg; 68 | border-color: @pagination-border; 69 | cursor: not-allowed; 70 | } 71 | } 72 | } 73 | 74 | // Sizing 75 | // -------------------------------------------------- 76 | 77 | // Large 78 | .pagination-lg { 79 | .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); 80 | } 81 | 82 | // Small 83 | .pagination-sm { 84 | .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); 85 | } 86 | -------------------------------------------------------------------------------- /public/js/libs/bootstrap/less/list-group.less: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | // Base class 6 | // 7 | // Easily usable on