├── log
└── .keep
├── tmp
└── .keep
├── lib
├── assets
│ └── .keep
└── tasks
│ └── .keep
├── public
├── favicon.ico
├── apple-touch-icon.png
├── apple-touch-icon-precomposed.png
├── assets
│ ├── default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css
│ ├── application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css
│ ├── pwb
│ │ ├── application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css
│ │ ├── config-fed35e11f59bcd61c0b708d359b50d58afda27aab964962ce4865c1ea44e43a8.js.gz
│ │ ├── application-e5dca6168b1e801a8ec369a65fcb40ba6ee2a697ad9238a27babb3a7f388d553.js.gz
│ │ ├── themes
│ │ │ ├── vic-0a885b61bffa831443a2d58c4b76c9a08d90f5740e9b9578d1444a88a97ec942.js.gz
│ │ │ ├── vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css.gz
│ │ │ ├── berlin-4ea755fdcbb83e54ca92a2f040280de5663ac7fb6bfc9b90a41288f8f2bb6905.js.gz
│ │ │ ├── chic-9381e97cbdccb1e41bfc2516b7645e5c880814ef3dcaf75bf95f914a441c3678.css.gz
│ │ │ ├── matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css.gz
│ │ │ ├── berlin-2fde7a30162ec3181e3212732933517bb1381ca5213da1bf286622cb0f5ff03a.css.gz
│ │ │ ├── default-33611212fcdf06d092b4315a20db16a516ec01c039699e9e3a171a3c50af50a7.css.gz
│ │ │ ├── squares-b62e3c12eea7f8422898cae3580972063d1d62d248e12f132affc6b4840051a0.css.gz
│ │ │ ├── squares-d94ee752aa958db7f76bef0fd6b6f724ecb3f088356e033099be08a5945ff227.js.gz
│ │ │ ├── matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css
│ │ │ └── vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css
│ │ └── application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
│ ├── default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
│ ├── application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
│ ├── application-e88a61432bb1bda646666bc6dfe567bdd326a2591a29a59f04838a9e0133ab3f.js.gz
│ ├── property_web_scraper
│ │ ├── application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css
│ │ ├── application-c29ff4bd1a1696fa1399310bb2e558f0db9ef3e7aa0efbf1f91289861a2289fc.js.gz
│ │ ├── spp_vuetify-bcab8bceb36bd36f6749c520653852328354e35319808ffd2f238fb794ceb5c1.js.gz
│ │ ├── application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css.gz
│ │ ├── spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css.gz
│ │ └── spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css
│ ├── pwb_admin_panel
│ │ ├── application-27fbcf92fb23e2e1398960a8770a935d7e163a9760c49bfe61eeb36670cee94a.js.gz
│ │ ├── application-fcf470d4911d3080d2732d4aaa67dc892e0b4a32c429899cff0a7a9f28cc2347.js.gz
│ │ ├── application-533dc7df547722ab0e3328b84391671ed6a751af1b3b25bc77cd5e6f47255084.css.gz
│ │ ├── application-921b322c827540c7f7b6e2eedccf942c1062cd10415556e2d140ab48767b6915.css.gz
│ │ ├── application_legacy_1-3fd7eee8e5898775df49f8c876c986afbf07e5412e9751bf1b999abccd7df4c8.js.gz
│ │ └── application_legacy_1-568d3433b6e6dd551f860790d3d1e1b977dd90adb59dac413ee78edc8ae26841.css.gz
│ └── .sprockets-manifest-758e8b8299526c3c45a4a70c9d0abb4c.json
├── robots.txt
├── 500.html
├── 422.html
└── 404.html
├── .ruby-version
├── app
├── assets
│ ├── images
│ │ └── .keep
│ ├── javascripts
│ │ ├── channels
│ │ │ └── .keep
│ │ ├── cable.js
│ │ └── application.js
│ ├── config
│ │ └── manifest.js
│ └── stylesheets
│ │ └── application.css
├── models
│ ├── concerns
│ │ └── .keep
│ └── application_record.rb
├── controllers
│ ├── concerns
│ │ └── .keep
│ └── application_controller.rb
├── views
│ └── layouts
│ │ ├── mailer.text.erb
│ │ ├── mailer.html.erb
│ │ └── application.html.erb
├── helpers
│ └── application_helper.rb
├── jobs
│ └── application_job.rb
├── channels
│ └── application_cable
│ │ ├── channel.rb
│ │ └── connection.rb
└── mailers
│ └── application_mailer.rb
├── vendor
└── assets
│ ├── javascripts
│ └── .keep
│ └── stylesheets
│ └── .keep
├── bin
├── rake
├── bundle
├── rails
├── update
└── setup
├── config
├── spring.rb
├── boot.rb
├── environment.rb
├── cable.yml
├── initializers
│ ├── session_store.rb
│ ├── mime_types.rb
│ ├── application_controller_renderer.rb
│ ├── filter_parameter_logging.rb
│ ├── cookies_serializer.rb
│ ├── backtrace_silencers.rb
│ ├── wrap_parameters.rb
│ ├── inflections.rb
│ ├── assets.rb
│ └── new_framework_defaults.rb
├── routes.rb
├── locales
│ └── en.yml
├── application.rb
├── environments
│ ├── test.rb
│ ├── development.rb
│ ├── precompile.rb
│ └── production.rb
├── puma.rb
├── secrets.yml
└── database.yml
├── config.ru
├── Rakefile
├── db
├── migrate
│ ├── 20170106165040_add_theme_name_to_pwb_agency.pwb.rb
│ ├── 20180109161408_add_contact_id_to_pwb_messages.pwb.rb
│ ├── 20170410171020_add_section_key_to_pwb_contents.pwb.rb
│ ├── 20170921074119_add_block_key_to_pwb_content_photos.pwb.rb
│ ├── 20170222123517_change_count_bathrooms_for_prop.pwb.rb
│ ├── 20170217103549_add_area_unit_to_prop.pwb.rb
│ ├── 20170428174409_change_prop_prices_to_big_int.pwb.rb
│ ├── 20171017082352_add_page_part_key_to_pwb_contents.pwb.rb
│ ├── 20180118190838_create_authorizations.pwb.rb
│ ├── 20161215152136_create_pwb_features.pwb.rb
│ ├── 20170921063048_translate_links.pwb.rb
│ ├── 20161215152129_create_pwb_sections.pwb.rb
│ ├── 20161215152124_translate_contents.pwb.rb
│ ├── 20161215152132_create_pwb_prop_photos.pwb.rb
│ ├── 20161215152133_create_pwb_addresses.pwb.rb
│ ├── 20161215152125_create_pwb_content_photos.pwb.rb
│ ├── 20180130121938_add_page_parts_to_pwb_websites.pwb.rb
│ ├── 20161215152130_create_pwb_translations.pwb.rb
│ ├── 20161215152123_create_pwb_contents.pwb.rb
│ ├── 20170921063046_translate_pages.pwb.rb
│ ├── 20170410171019_add_extra_cols_to_pwb_sections.pwb.rb
│ ├── 20170921063049_create_pwb_page_contents.pwb.rb
│ ├── 20161215152134_create_pwb_messages.pwb.rb
│ ├── 20161215152128_translate_props.pwb.rb
│ ├── 20161215152131_create_pwb_field_keys.pwb.rb
│ ├── 20171204110202_create_property_web_scraper_import_hosts.property_web_scraper.rb
│ ├── 20170921063045_create_pwb_pages.pwb.rb
│ ├── 20161215152135_create_pwb_clients.pwb.rb
│ ├── 20171017082353_create_pwb_page_parts.pwb.rb
│ ├── 20170921063047_create_pwb_links.pwb.rb
│ ├── 20170925184111_create_pwb_contacts.pwb.rb
│ ├── 20161215152126_create_pwb_agencies.pwb.rb
│ ├── 20161215152137_devise_create_pwb_users.pwb.rb
│ ├── 20170217103548_create_pwb_websites.pwb.rb
│ ├── 20161215152127_create_pwb_props.pwb.rb
│ └── 20171204110203_create_property_web_scraper_listings.property_web_scraper.rb
├── seeds.rb
└── schema.rb
├── docker-entrypoint.sh
├── ISSUE_TEMPLATE.md
├── .gitignore
├── README.md
├── app.json
├── Dockerfile
├── Gemfile
└── Gemfile.lock
/log/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tmp/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/assets/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/tasks/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | 2.5.1
2 |
--------------------------------------------------------------------------------
/app/assets/images/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/models/concerns/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/controllers/concerns/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vendor/assets/javascripts/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vendor/assets/stylesheets/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/javascripts/channels/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/apple-touch-icon-precomposed.png:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/layouts/mailer.text.erb:
--------------------------------------------------------------------------------
1 | <%= yield %>
2 |
--------------------------------------------------------------------------------
/app/helpers/application_helper.rb:
--------------------------------------------------------------------------------
1 | module ApplicationHelper
2 | end
3 |
--------------------------------------------------------------------------------
/app/jobs/application_job.rb:
--------------------------------------------------------------------------------
1 | class ApplicationJob < ActiveJob::Base
2 | end
3 |
--------------------------------------------------------------------------------
/public/assets/default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/assets/pwb/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/bin/rake:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | require_relative '../config/boot'
3 | require 'rake'
4 | Rake.application.run
5 |
--------------------------------------------------------------------------------
/app/models/application_record.rb:
--------------------------------------------------------------------------------
1 | class ApplicationRecord < ActiveRecord::Base
2 | self.abstract_class = true
3 | end
4 |
--------------------------------------------------------------------------------
/app/channels/application_cable/channel.rb:
--------------------------------------------------------------------------------
1 | module ApplicationCable
2 | class Channel < ActionCable::Channel::Base
3 | end
4 | end
5 |
--------------------------------------------------------------------------------
/app/assets/config/manifest.js:
--------------------------------------------------------------------------------
1 | //= link_tree ../images
2 | //= link_directory ../javascripts .js
3 | //= link_directory ../stylesheets .css
4 |
--------------------------------------------------------------------------------
/app/channels/application_cable/connection.rb:
--------------------------------------------------------------------------------
1 | module ApplicationCable
2 | class Connection < ActionCable::Connection::Base
3 | end
4 | end
5 |
--------------------------------------------------------------------------------
/app/controllers/application_controller.rb:
--------------------------------------------------------------------------------
1 | class ApplicationController < ActionController::Base
2 | protect_from_forgery with: :exception
3 | end
4 |
--------------------------------------------------------------------------------
/app/mailers/application_mailer.rb:
--------------------------------------------------------------------------------
1 | class ApplicationMailer < ActionMailer::Base
2 | default from: 'from@example.com'
3 | layout 'mailer'
4 | end
5 |
--------------------------------------------------------------------------------
/bin/bundle:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3 | load Gem.bin_path('bundler', 'bundle')
4 |
--------------------------------------------------------------------------------
/config/spring.rb:
--------------------------------------------------------------------------------
1 | %w(
2 | .ruby-version
3 | .rbenv-vars
4 | tmp/restart.txt
5 | tmp/caching-dev.txt
6 | ).each { |path| Spring.watch(path) }
7 |
--------------------------------------------------------------------------------
/config/boot.rb:
--------------------------------------------------------------------------------
1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
2 |
3 | require 'bundler/setup' # Set up gems listed in the Gemfile.
4 |
--------------------------------------------------------------------------------
/config.ru:
--------------------------------------------------------------------------------
1 | # This file is used by Rack-based servers to start the application.
2 |
3 | require_relative 'config/environment'
4 |
5 | run Rails.application
6 |
--------------------------------------------------------------------------------
/bin/rails:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | APP_PATH = File.expand_path('../config/application', __dir__)
3 | require_relative '../config/boot'
4 | require 'rails/commands'
5 |
--------------------------------------------------------------------------------
/config/environment.rb:
--------------------------------------------------------------------------------
1 | # Load the Rails application.
2 | require_relative 'application'
3 |
4 | # Initialize the Rails application.
5 | Rails.application.initialize!
6 |
--------------------------------------------------------------------------------
/config/cable.yml:
--------------------------------------------------------------------------------
1 | development:
2 | adapter: async
3 |
4 | test:
5 | adapter: async
6 |
7 | production:
8 | adapter: redis
9 | url: redis://localhost:6379/1
10 |
--------------------------------------------------------------------------------
/config/initializers/session_store.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | Rails.application.config.session_store :cookie_store, key: '_pwb-for-heroku_session'
4 |
--------------------------------------------------------------------------------
/config/initializers/mime_types.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new mime types for use in respond_to blocks:
4 | # Mime::Type.register "text/richtext", :rtf
5 |
--------------------------------------------------------------------------------
/config/initializers/application_controller_renderer.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # ApplicationController.renderer.defaults.merge!(
4 | # http_host: 'example.org',
5 | # https: false
6 | # )
7 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
2 | #
3 | # To ban all spiders from the entire site uncomment the next two lines:
4 | # User-agent: *
5 | # Disallow: /
6 |
--------------------------------------------------------------------------------
/public/assets/default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/config-fed35e11f59bcd61c0b708d359b50d58afda27aab964962ce4865c1ea44e43a8.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/config-fed35e11f59bcd61c0b708d359b50d58afda27aab964962ce4865c1ea44e43a8.js.gz
--------------------------------------------------------------------------------
/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
--------------------------------------------------------------------------------
/public/assets/application-e88a61432bb1bda646666bc6dfe567bdd326a2591a29a59f04838a9e0133ab3f.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/application-e88a61432bb1bda646666bc6dfe567bdd326a2591a29a59f04838a9e0133ab3f.js.gz
--------------------------------------------------------------------------------
/config/initializers/filter_parameter_logging.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Configure sensitive parameters which will be filtered from the log file.
4 | Rails.application.config.filter_parameters += [:password]
5 |
--------------------------------------------------------------------------------
/config/routes.rb:
--------------------------------------------------------------------------------
1 | Rails.application.routes.draw do
2 | # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
3 | mount Pwb::Engine => '/'
4 | # mount PropertyWebScraper::Engine => '/io/'
5 |
6 | end
7 |
--------------------------------------------------------------------------------
/public/assets/pwb/application-e5dca6168b1e801a8ec369a65fcb40ba6ee2a697ad9238a27babb3a7f388d553.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/application-e5dca6168b1e801a8ec369a65fcb40ba6ee2a697ad9238a27babb3a7f388d553.js.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/vic-0a885b61bffa831443a2d58c4b76c9a08d90f5740e9b9578d1444a88a97ec942.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/vic-0a885b61bffa831443a2d58c4b76c9a08d90f5740e9b9578d1444a88a97ec942.js.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css.gz
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | # Add your own tasks in files placed in lib/tasks ending in .rake,
2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3 |
4 | require_relative 'config/application'
5 |
6 | Rails.application.load_tasks
7 |
--------------------------------------------------------------------------------
/public/assets/pwb/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/berlin-4ea755fdcbb83e54ca92a2f040280de5663ac7fb6bfc9b90a41288f8f2bb6905.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/berlin-4ea755fdcbb83e54ca92a2f040280de5663ac7fb6bfc9b90a41288f8f2bb6905.js.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/chic-9381e97cbdccb1e41bfc2516b7645e5c880814ef3dcaf75bf95f914a441c3678.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/chic-9381e97cbdccb1e41bfc2516b7645e5c880814ef3dcaf75bf95f914a441c3678.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/berlin-2fde7a30162ec3181e3212732933517bb1381ca5213da1bf286622cb0f5ff03a.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/berlin-2fde7a30162ec3181e3212732933517bb1381ca5213da1bf286622cb0f5ff03a.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/default-33611212fcdf06d092b4315a20db16a516ec01c039699e9e3a171a3c50af50a7.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/default-33611212fcdf06d092b4315a20db16a516ec01c039699e9e3a171a3c50af50a7.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/squares-b62e3c12eea7f8422898cae3580972063d1d62d248e12f132affc6b4840051a0.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/squares-b62e3c12eea7f8422898cae3580972063d1d62d248e12f132affc6b4840051a0.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb/themes/squares-d94ee752aa958db7f76bef0fd6b6f724ecb3f088356e033099be08a5945ff227.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb/themes/squares-d94ee752aa958db7f76bef0fd6b6f724ecb3f088356e033099be08a5945ff227.js.gz
--------------------------------------------------------------------------------
/public/assets/property_web_scraper/application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css:
--------------------------------------------------------------------------------
1 | .login_url input,.password input,.url_input input,.username input,.url_input input{width:80%;padding:6px;margin:10px;font-size:large}.btn a{color:white}
2 |
--------------------------------------------------------------------------------
/db/migrate/20170106165040_add_theme_name_to_pwb_agency.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161222085708)
2 | class AddThemeNameToPwbAgency < ActiveRecord::Migration[5.0]
3 | def change
4 | add_column :pwb_agencies, :theme_name, :string
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/public/assets/pwb_admin_panel/application-27fbcf92fb23e2e1398960a8770a935d7e163a9760c49bfe61eeb36670cee94a.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb_admin_panel/application-27fbcf92fb23e2e1398960a8770a935d7e163a9760c49bfe61eeb36670cee94a.js.gz
--------------------------------------------------------------------------------
/public/assets/pwb_admin_panel/application-fcf470d4911d3080d2732d4aaa67dc892e0b4a32c429899cff0a7a9f28cc2347.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb_admin_panel/application-fcf470d4911d3080d2732d4aaa67dc892e0b4a32c429899cff0a7a9f28cc2347.js.gz
--------------------------------------------------------------------------------
/public/assets/pwb_admin_panel/application-533dc7df547722ab0e3328b84391671ed6a751af1b3b25bc77cd5e6f47255084.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb_admin_panel/application-533dc7df547722ab0e3328b84391671ed6a751af1b3b25bc77cd5e6f47255084.css.gz
--------------------------------------------------------------------------------
/public/assets/pwb_admin_panel/application-921b322c827540c7f7b6e2eedccf942c1062cd10415556e2d140ab48767b6915.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb_admin_panel/application-921b322c827540c7f7b6e2eedccf942c1062cd10415556e2d140ab48767b6915.css.gz
--------------------------------------------------------------------------------
/public/assets/property_web_scraper/application-c29ff4bd1a1696fa1399310bb2e558f0db9ef3e7aa0efbf1f91289861a2289fc.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/property_web_scraper/application-c29ff4bd1a1696fa1399310bb2e558f0db9ef3e7aa0efbf1f91289861a2289fc.js.gz
--------------------------------------------------------------------------------
/public/assets/property_web_scraper/spp_vuetify-bcab8bceb36bd36f6749c520653852328354e35319808ffd2f238fb794ceb5c1.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/property_web_scraper/spp_vuetify-bcab8bceb36bd36f6749c520653852328354e35319808ffd2f238fb794ceb5c1.js.gz
--------------------------------------------------------------------------------
/db/migrate/20180109161408_add_contact_id_to_pwb_messages.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20180109133855)
2 | class AddContactIdToPwbMessages < ActiveRecord::Migration[5.1]
3 | def change
4 | add_column :pwb_messages, :contact_id, :integer, index: true
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/public/assets/property_web_scraper/application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/property_web_scraper/application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css.gz
--------------------------------------------------------------------------------
/public/assets/property_web_scraper/spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/property_web_scraper/spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css.gz
--------------------------------------------------------------------------------
/db/migrate/20170410171020_add_section_key_to_pwb_contents.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170315205332)
2 | class AddSectionKeyToPwbContents < ActiveRecord::Migration[5.0]
3 | def change
4 | add_column :pwb_contents, :section_key, :string, index: true
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/public/assets/pwb_admin_panel/application_legacy_1-3fd7eee8e5898775df49f8c876c986afbf07e5412e9751bf1b999abccd7df4c8.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb_admin_panel/application_legacy_1-3fd7eee8e5898775df49f8c876c986afbf07e5412e9751bf1b999abccd7df4c8.js.gz
--------------------------------------------------------------------------------
/public/assets/pwb_admin_panel/application_legacy_1-568d3433b6e6dd551f860790d3d1e1b977dd90adb59dac413ee78edc8ae26841.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/etewiah/pwb-for-heroku/HEAD/public/assets/pwb_admin_panel/application_legacy_1-568d3433b6e6dd551f860790d3d1e1b977dd90adb59dac413ee78edc8ae26841.css.gz
--------------------------------------------------------------------------------
/config/initializers/cookies_serializer.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Specify a serializer for the signed and encrypted cookie jars.
4 | # Valid options are :json, :marshal, and :hybrid.
5 | Rails.application.config.action_dispatch.cookies_serializer = :json
6 |
--------------------------------------------------------------------------------
/db/migrate/20170921074119_add_block_key_to_pwb_content_photos.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170919134945)
2 | class AddBlockKeyToPwbContentPhotos < ActiveRecord::Migration[5.1]
3 | def change
4 | add_column :pwb_content_photos, :block_key, :string, index: true
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/views/layouts/mailer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 | <%= yield %>
12 |
13 |
14 |
--------------------------------------------------------------------------------
/db/migrate/20170222123517_change_count_bathrooms_for_prop.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170222100759)
2 | class ChangeCountBathroomsForProp < ActiveRecord::Migration[5.0]
3 | def change
4 | # below needed to support 1.5 bathrooms in US
5 | change_column :pwb_props, :count_bathrooms, :float
6 | end
7 | end
8 |
9 |
--------------------------------------------------------------------------------
/docker-entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Run the DB in background
4 | sudo -E -u postgres pg_ctl -D "$PGDATA" -o "-c listen_addresses=''" -w start
5 |
6 | # Create the DB
7 | if [ ! -f migration_done ]; then
8 | bundle exec rake db:migrate pwb:db:seed pwb:db:seed_pages && \
9 | touch migration_done
10 | fi
11 |
12 | # Run the app
13 | rackup
14 |
--------------------------------------------------------------------------------
/db/migrate/20170217103549_add_area_unit_to_prop.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170205132427)
2 | class AddAreaUnitToProp < ActiveRecord::Migration[5.0]
3 | # https://www.sitepoint.com/enumerated-types-with-activerecord-and-postgresql/
4 | def change
5 | add_column :pwb_props, :area_unit, :integer, default: 0, index: true
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/db/migrate/20170428174409_change_prop_prices_to_big_int.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170428170615)
2 | class ChangePropPricesToBigInt < ActiveRecord::Migration[5.0]
3 | def change
4 | change_column :pwb_props, :price_sale_current_cents, :integer, limit: 8
5 | change_column :pwb_props, :price_sale_original_cents, :integer, limit: 8
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
7 |
8 | ### Expected Behaviour:
9 |
10 | ### Actual Behaviour:
11 |
12 | ### Steps to reproduce the issue:
13 |
--------------------------------------------------------------------------------
/db/migrate/20171017082352_add_page_part_key_to_pwb_contents.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170917215533)
2 | class AddPagePartKeyToPwbContents < ActiveRecord::Migration[5.1]
3 | def change
4 | add_column :pwb_contents, :page_part_key, :string, index: true
5 | # add_column :pwb_contents, :visible_on_page, :boolean, default: true
6 | # , index: true
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/db/migrate/20180118190838_create_authorizations.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20180111045213)
2 | class CreateAuthorizations < ActiveRecord::Migration[5.1]
3 | def change
4 | create_table :pwb_authorizations do |t|
5 | t.references :user, index: true
6 | t.string :provider
7 | t.string :uid
8 |
9 | t.timestamps
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/db/seeds.rb:
--------------------------------------------------------------------------------
1 | # This file should contain all the record creation needed to seed the database with its default values.
2 | # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
3 | #
4 | # Examples:
5 | #
6 | # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
7 | # Character.create(name: 'Luke', movie: movies.first)
8 |
--------------------------------------------------------------------------------
/db/migrate/20161215152136_create_pwb_features.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161130141845)
2 | class CreatePwbFeatures < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_features do |t|
5 | t.string :feature_key
6 | t.integer :prop_id
7 | t.timestamps null: false
8 | end
9 | add_index :pwb_features, :feature_key
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PwbForHeroku
5 | <%= csrf_meta_tags %>
6 |
7 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
8 | <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
9 |
10 |
11 |
12 | <%= yield %>
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/assets/javascripts/cable.js:
--------------------------------------------------------------------------------
1 | // Action Cable provides the framework to deal with WebSockets in Rails.
2 | // You can generate new channels where WebSocket features live using the rails generate channel command.
3 | //
4 | //= require action_cable
5 | //= require_self
6 | //= require_tree ./channels
7 |
8 | (function() {
9 | this.App || (this.App = {});
10 |
11 | App.cable = ActionCable.createConsumer();
12 |
13 | }).call(this);
14 |
--------------------------------------------------------------------------------
/config/initializers/backtrace_silencers.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5 |
6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7 | # Rails.backtrace_cleaner.remove_silencers!
8 |
--------------------------------------------------------------------------------
/db/migrate/20170921063048_translate_links.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170720201601)
2 | class TranslateLinks < ActiveRecord::Migration[5.0]
3 | def self.up
4 | Pwb::Link.create_translation_table!({
5 | :link_title => {:type => :string, :default => ''}
6 | }, {
7 | :migrate_data => true
8 | })
9 | end
10 |
11 | def self.down
12 | Pwb::Link.drop_translation_table! :migrate_data => true
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/db/migrate/20161215152129_create_pwb_sections.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161122174847)
2 | class CreatePwbSections < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_sections do |t|
5 | t.string :link_key
6 | t.string :link_path
7 | t.integer :sort_order
8 | t.boolean :visible
9 | t.timestamps null: false
10 | end
11 |
12 | add_index :pwb_sections, :link_key, :unique => true
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/db/migrate/20161215152124_translate_contents.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161108132035)
2 | require 'globalize-accessors'
3 | class TranslateContents < ActiveRecord::Migration[5.0]
4 | def self.up
5 | Pwb::Content.create_translation_table!({
6 | raw: :text
7 | }, migrate_data: true)
8 | end
9 |
10 | def self.down
11 | Pwb::Content.drop_translation_table! migrate_data: true
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/db/migrate/20161215152132_create_pwb_prop_photos.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161124103103)
2 | class CreatePwbPropPhotos < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_prop_photos do |t|
5 | t.integer :prop_id
6 | t.string :image
7 | t.string :description
8 | t.string :folder
9 | t.integer :file_size
10 |
11 | t.integer :sort_order
12 | t.timestamps null: false
13 | end
14 | add_index :pwb_prop_photos, :prop_id
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/config/initializers/wrap_parameters.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # This file contains settings for ActionController::ParamsWrapper which
4 | # is enabled by default.
5 |
6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7 | ActiveSupport.on_load(:action_controller) do
8 | wrap_parameters format: [:json]
9 | end
10 |
11 | # To enable root element in JSON for ActiveRecord objects.
12 | # ActiveSupport.on_load(:active_record) do
13 | # self.include_root_in_json = true
14 | # end
15 |
--------------------------------------------------------------------------------
/db/migrate/20161215152133_create_pwb_addresses.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161124214746)
2 | class CreatePwbAddresses < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_addresses do |t|
5 | # t.integer :address_category
6 | t.float :longitude
7 | t.float :latitude
8 | t.string :street_number
9 | t.string :street_address
10 | t.string :postal_code
11 | t.string :city
12 | t.string :region
13 | t.string :country
14 |
15 | t.timestamps null: false
16 | end
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/db/migrate/20161215152125_create_pwb_content_photos.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161116185442)
2 | class CreatePwbContentPhotos < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_content_photos do |t|
5 | t.integer :content_id
6 | t.string :image
7 | t.string :description
8 | t.string :folder
9 | t.integer :file_size
10 |
11 | # To allow ordering of photos
12 | t.integer :sort_order
13 | t.timestamps null: false
14 | end
15 | add_index :pwb_content_photos, :content_id
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/db/migrate/20180130121938_add_page_parts_to_pwb_websites.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20180119105254)
2 | class AddPagePartsToPwbWebsites < ActiveRecord::Migration[5.1]
3 | def change
4 | # add_column :pwb_page_contents, :pwb_website, :belongs_to, index: true
5 | add_reference :pwb_page_contents, :website, index: true
6 | # add_foreign_key :pwb_page_contents, :pwb_websites
7 | # t.belongs_to :page, index: true
8 |
9 |
10 | # TODO - add favicon image (and logo image directly)
11 | # as well as details hash for storing pages..
12 |
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/db/migrate/20161215152130_create_pwb_translations.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161123124639)
2 | class CreatePwbTranslations < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :translations do |t|
5 | t.string :locale
6 | t.string :key
7 | t.text :value
8 | t.text :interpolations
9 | t.boolean :is_proc, :default => false
10 |
11 | # TODO - use tag to group translations
12 | t.string :tag
13 |
14 | t.timestamps
15 | end
16 | end
17 |
18 | def self.down
19 | drop_table :translations
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/db/migrate/20161215152123_create_pwb_contents.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161107210046)
2 | class CreatePwbContents < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_contents do |t|
5 | t.string :key
6 | t.string :tag
7 | # t.text :raw
8 |
9 | t.string :input_type
10 | t.string :status
11 | t.integer :last_updated_by_user_id
12 |
13 | # To allow ordering of content
14 | t.integer :sort_order
15 | t.string :target_url
16 |
17 | t.timestamps null: false
18 | end
19 |
20 | add_index :pwb_contents, :key, unique: true
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2 | #
3 | # If you find yourself ignoring temporary files generated by your text editor
4 | # or operating system, you probably want to add a global ignore instead:
5 | # git config --global core.excludesfile '~/.gitignore_global'
6 |
7 | # Ignore bundler config.
8 | /.bundle
9 |
10 | # Ignore all logfiles and tempfiles.
11 | /log/*
12 | /tmp/*
13 | !/log/.keep
14 | !/tmp/.keep
15 |
16 | # Ignore Byebug command history file.
17 | .byebug_history
18 |
19 | # Ignore uploaded images
20 | /public/uploads
21 |
22 | /config/deploy/production.rb
23 |
24 | /node_modules
--------------------------------------------------------------------------------
/db/migrate/20170921063046_translate_pages.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170716110121)
2 | class TranslatePages < ActiveRecord::Migration[5.0]
3 | # translated cols are not needed in original table
4 | # but need to have translations declared in model
5 | def self.up
6 | Pwb::Page.create_translation_table!({
7 | :raw_html => {:type => :text, :default => ''},
8 | :page_title => {:type => :string, :default => ''},
9 | :link_title => {:type => :string, :default => ''}
10 | }, {
11 | :migrate_data => true
12 | })
13 | end
14 |
15 | def self.down
16 | Pwb::Page.drop_translation_table! :migrate_data => true
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/db/migrate/20170410171019_add_extra_cols_to_pwb_sections.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170315195413)
2 | class AddExtraColsToPwbSections < ActiveRecord::Migration[5.0]
3 | def change
4 | add_column :pwb_sections, :flags, :integer, default: 0, index: true, null: false
5 | add_column :pwb_sections, :details, :json, default: {}
6 | add_column :pwb_sections, :is_page, :boolean, default: false, index: true
7 | add_column :pwb_sections, :show_in_top_nav, :boolean, default: false, index: true
8 | add_column :pwb_sections, :show_in_footer, :boolean, default: false, index: true
9 | add_column :pwb_sections, :key, :string, index: true
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/db/migrate/20170921063049_create_pwb_page_contents.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170915094326)
2 | class CreatePwbPageContents < ActiveRecord::Migration[5.1]
3 | def change
4 | create_table :pwb_page_contents do |t|
5 | t.boolean :is_rails_part, default: false
6 | t.string :page_part_key
7 | t.string :label
8 | t.integer :sort_order
9 | # t.string :fragment_key, index: true
10 | t.boolean :visible_on_page, default: true
11 | # t.integer :page_id
12 | # t.integer :content_id
13 | t.belongs_to :page, index: true
14 | t.belongs_to :content, index: true
15 | t.timestamps
16 | end
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/db/migrate/20161215152134_create_pwb_messages.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161128200709)
2 | class CreatePwbMessages < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_messages do |t|
5 | t.string :title
6 | t.text :content
7 | t.integer :client_id
8 | t.string :origin_ip
9 | t.string :user_agent
10 | t.float :longitude
11 | t.float :latitude
12 | t.string :locale
13 | t.string :host
14 | t.string :url
15 | t.boolean :delivery_success, :default => false
16 | t.string :delivery_email
17 | t.string :origin_email
18 |
19 | t.timestamps null: false
20 | end
21 | end
22 | end
23 |
24 |
--------------------------------------------------------------------------------
/config/initializers/inflections.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new inflection rules using the following format. Inflections
4 | # are locale specific, and you may define rules for as many different
5 | # locales as you wish. All of these examples are active by default:
6 | # ActiveSupport::Inflector.inflections(:en) do |inflect|
7 | # inflect.plural /^(ox)$/i, '\1en'
8 | # inflect.singular /^(ox)en/i, '\1'
9 | # inflect.irregular 'person', 'people'
10 | # inflect.uncountable %w( fish sheep )
11 | # end
12 |
13 | # These inflection rules are supported but not enabled by default:
14 | # ActiveSupport::Inflector.inflections(:en) do |inflect|
15 | # inflect.acronym 'RESTful'
16 | # end
17 |
--------------------------------------------------------------------------------
/config/locales/en.yml:
--------------------------------------------------------------------------------
1 | # Files in the config/locales directory are used for internationalization
2 | # and are automatically loaded by Rails. If you want to use locales other
3 | # than English, add the necessary files in this directory.
4 | #
5 | # To use the locales, use `I18n.t`:
6 | #
7 | # I18n.t 'hello'
8 | #
9 | # In views, this is aliased to just `t`:
10 | #
11 | # <%= t('hello') %>
12 | #
13 | # To use a different locale, set it with `I18n.locale`:
14 | #
15 | # I18n.locale = :es
16 | #
17 | # This would use the information in config/locales/es.yml.
18 | #
19 | # To learn more, please read the Rails Internationalization guide
20 | # available at http://guides.rubyonrails.org/i18n.html.
21 |
22 | en:
23 | hello: "Hello world"
24 |
--------------------------------------------------------------------------------
/db/migrate/20161215152128_translate_props.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161120122914)
2 | class TranslateProps < ActiveRecord::Migration[5.0]
3 | def self.up
4 | Pwb::Prop.create_translation_table!({
5 | :title => {:type => :string, :default => ''},
6 | :description => {:type => :text, :default => ''}
7 | # null false below was creating errors when a new prop was created with no title
8 | # :title => {:type => :string, :null => false, :default => ''},
9 | # :description => {:type => :text, :null => false, :default => ''}
10 | }, {
11 | :migrate_data => true
12 | })
13 | end
14 |
15 | def self.down
16 | Pwb::Prop.drop_translation_table! :migrate_data => true
17 | end
18 | end
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## June 2022 update
2 |
3 | PropertyWebBuilder is now a standalone Ruby on Rails app (it is no longer a Ruby on Rails engine)
4 |
5 | This project was only needed as a shell for loading the PropertyWebBuilder engine. As this is no longer needed this project has been discontinued. You can now deploy PropertyWebBuilder directly!
6 |
7 | For more about PropertyWebBuilder see:
8 |
9 | [PropertyWebBuilder](https://etewiah.github.io/property_web_builder/)
10 |
11 |
12 | Also, I am currently working on a tool to help with house hunting and would love to get some feedback about it.
13 |
14 | Please check it out here and let me know what you think (and if you would like it to be open-sourced):
15 |
16 | [https://propertysquares.com/](https://propertysquares.com/)
17 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PropertyWebBuilder for Heroku",
3 | "description": "An instant website for real estate agencies.",
4 | "keywords": [
5 | "realtor","property management", "cms",
6 | "rails", "proptech", "opensource"
7 | ],
8 | "website": "http://propertywebbuilder.com/",
9 | "repository": "https://github.com/etewiah/property_web_builder",
10 | "scripts": {
11 | "postdeploy": "bundle exec rake db:migrate pwb:db:seed pwb:db:seed_pages"
12 | },
13 | "addons": [
14 | "heroku-postgresql:hobby-dev",
15 | "cloudinary:starter"
16 | ],
17 | "env": {
18 | "LANG": "en_US.UTF-8",
19 | "RACK_ENV": "production",
20 | "RAILS_ENV": "production",
21 | "RAILS_LOG_TO_STDOUT": "enabled",
22 | "RAILS_SERVE_STATIC_FILES": "enabled"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6 | * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9 | * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10 | * files in this directory. Styles in this file should be added after the last require_* statement.
11 | * It is generally better to create a new file per style scope.
12 | *
13 | *= require_tree .
14 | *= require_self
15 | */
16 |
--------------------------------------------------------------------------------
/app/assets/javascripts/application.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into application.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8 | // compiled file. JavaScript code in this file should be added after the last require_* statement.
9 | //
10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11 | // about supported directives.
12 | //
13 | //= require jquery
14 | //= require jquery_ujs
15 | //= require turbolinks
16 | //= require_tree .
17 |
--------------------------------------------------------------------------------
/bin/update:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | require 'pathname'
3 | require 'fileutils'
4 | include FileUtils
5 |
6 | # path to your application root.
7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
8 |
9 | def system!(*args)
10 | system(*args) || abort("\n== Command #{args} failed ==")
11 | end
12 |
13 | chdir APP_ROOT do
14 | # This script is a way to update your development environment automatically.
15 | # Add necessary update steps to this file.
16 |
17 | puts '== Installing dependencies =='
18 | system! 'gem install bundler --conservative'
19 | system('bundle check') || system!('bundle install')
20 |
21 | puts "\n== Updating database =="
22 | system! 'bin/rails db:migrate'
23 |
24 | puts "\n== Removing old logs and tempfiles =="
25 | system! 'bin/rails log:clear tmp:clear'
26 |
27 | puts "\n== Restarting application server =="
28 | system! 'bin/rails restart'
29 | end
30 |
--------------------------------------------------------------------------------
/config/application.rb:
--------------------------------------------------------------------------------
1 | require_relative 'boot'
2 |
3 | require "rails"
4 | # Pick the frameworks you want:
5 | require "active_model/railtie"
6 | require "active_job/railtie"
7 | require "active_record/railtie"
8 | require "action_controller/railtie"
9 | require "action_mailer/railtie"
10 | require "action_view/railtie"
11 | require "action_cable/engine"
12 | require "sprockets/railtie"
13 | # require "rails/test_unit/railtie"
14 |
15 | # Require the gems listed in Gemfile, including any gems
16 | # you've limited to :test, :development, or :production.
17 | Bundler.require(*Rails.groups)
18 |
19 | module PwbForHeroku
20 | class Application < Rails::Application
21 | # Settings in config/environments/* take precedence over those specified here.
22 | # Application configuration should go into files in config/initializers
23 | # -- all .rb files in that directory are automatically loaded.
24 | end
25 | end
26 |
--------------------------------------------------------------------------------
/db/migrate/20161215152131_create_pwb_field_keys.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161123232423)
2 | class CreatePwbFieldKeys < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_field_keys do |t|
5 |
6 | t.string :global_key #i18n lookup key
7 | t.string :tag
8 | t.boolean :visible, :default => true
9 |
10 | # props_count allows me to know which field_keys are being used.
11 | # eg, a property_type like warehouse might never be used
12 | # I might choose not to show that property_type in the search dropdown box
13 | # by only showing property types with a props_count > 0
14 | t.integer :props_count, :null => false, :default => 0
15 | t.boolean :show_in_search_form, :default => true
16 |
17 | t.timestamps null: false
18 | end
19 | add_index :pwb_field_keys, :global_key, :unique => true
20 | end
21 |
22 | end
23 |
--------------------------------------------------------------------------------
/db/migrate/20171204110202_create_property_web_scraper_import_hosts.property_web_scraper.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from property_web_scraper (originally 20170628160331)
2 | class CreatePropertyWebScraperImportHosts < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :property_web_scraper_import_hosts do |t|
5 | t.integer :flags, default: 0, null: false
6 | t.string :scraper_name
7 | t.string :host
8 | t.boolean :is_https
9 | t.json :details, default: {}
10 | t.string :slug
11 | t.text :example_urls, array: true, default: []
12 | t.text :invalid_urls, array: true, default: []
13 | t.datetime :last_retrieval_at
14 | t.string :valid_url_regex
15 | t.string :pause_between_calls, default: "5.seconds"
16 | t.string :stale_age, default: "1.day"
17 | t.timestamps
18 | end
19 |
20 | add_index :property_web_scraper_import_hosts, :host, unique: true
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/db/migrate/20170921063045_create_pwb_pages.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170716075456)
2 | class CreatePwbPages < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_pages do |t|
5 | t.string :slug
6 | t.string :setup_id
7 | # t.string :link_key
8 | # t.string :link_path
9 | t.boolean :visible, default: false
10 | t.integer :last_updated_by_user_id
11 | t.integer :flags, default: 0, index: true, null: false
12 | t.json :details, default: {}
13 | t.integer :sort_order_top_nav, default: 0
14 | t.integer :sort_order_footer, default: 0
15 | t.boolean :show_in_top_nav, default: false, index: true
16 | t.boolean :show_in_footer, default: false, index: true
17 | # t.boolean :key, :string, index: true
18 | t.timestamps null: false
19 | end
20 |
21 | # add_index :pwb_pages, :link_key, :unique => true
22 | add_index :pwb_pages, :slug, :unique => true
23 | end
24 | end
25 |
--------------------------------------------------------------------------------
/config/initializers/assets.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Version of your assets, change this if you want to expire all your assets.
4 | Rails.application.config.assets.version = '1.0'
5 |
6 | # Add additional assets to the asset load path
7 | # Rails.application.config.assets.paths << Emoji.images_path
8 |
9 | # Precompile additional assets.
10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
11 | # Rails.application.config.assets.precompile += %w( search.js )
12 |
13 | # (nov 2017) PWB precompile assets are defined here
14 | # /pwb/lib/pwb/engine.rb in pwb engine
15 | # and there has not been an issue
16 | # till I added "gem 'property_web_scraper', github: 'RealEstateWebTools/property_web_scraper' "
17 | # to gemfile.
18 | # Now get "Asset was not declared to be precompiled in production" error
19 | # and need to add below to fix that:
20 | Rails.application.config.assets.precompile += %w( pwb/themes/default.css )
--------------------------------------------------------------------------------
/db/migrate/20161215152135_create_pwb_clients.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161128221919)
2 | class CreatePwbClients < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_clients do |t|
5 | t.string :first_names
6 | t.string :last_names
7 | t.string :client_title
8 | t.string :phone_number_primary
9 | t.string :phone_number_other
10 | t.string :fax
11 | t.string :nationality
12 | t.string :email
13 | t.string :skype
14 | t.string :documentation_id
15 | t.integer :documentation_type
16 | t.integer :user_id
17 | t.integer :address_id
18 | t.integer :flags, :null => false, :default => 0
19 | t.json :details, default: {}
20 |
21 | t.timestamps null: false
22 | end
23 |
24 | add_index :pwb_clients, :documentation_id, unique: true
25 | add_index :pwb_clients, [:first_names, :last_names]
26 | add_index :pwb_clients, :email, unique: true
27 |
28 | end
29 | end
30 |
--------------------------------------------------------------------------------
/bin/setup:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | require 'pathname'
3 | require 'fileutils'
4 | include FileUtils
5 |
6 | # path to your application root.
7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
8 |
9 | def system!(*args)
10 | system(*args) || abort("\n== Command #{args} failed ==")
11 | end
12 |
13 | chdir APP_ROOT do
14 | # This script is a starting point to setup your application.
15 | # Add necessary setup steps to this file.
16 |
17 | puts '== Installing dependencies =='
18 | system! 'gem install bundler --conservative'
19 | system('bundle check') || system!('bundle install')
20 |
21 | # puts "\n== Copying sample files =="
22 | # unless File.exist?('config/database.yml')
23 | # cp 'config/database.yml.sample', 'config/database.yml'
24 | # end
25 |
26 | puts "\n== Preparing database =="
27 | system! 'bin/rails db:setup'
28 |
29 | puts "\n== Removing old logs and tempfiles =="
30 | system! 'bin/rails log:clear tmp:clear'
31 |
32 | puts "\n== Restarting application server =="
33 | system! 'bin/rails restart'
34 | end
35 |
--------------------------------------------------------------------------------
/db/migrate/20171017082353_create_pwb_page_parts.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20171011212930)
2 | class CreatePwbPageParts < ActiveRecord::Migration[5.1]
3 | def change
4 | create_table :pwb_page_parts do |t|
5 | t.boolean :is_rails_part, default: false
6 | t.boolean :show_in_editor, default: true
7 | t.integer :order_in_editor
8 |
9 | t.string :page_part_key, index: true
10 | t.string :page_slug, index: true
11 | t.text :template
12 |
13 | # used to decide how to lay out the editor
14 | t.json :editor_setup, default: {}
15 |
16 | # contains the text strings (for each locale)
17 | # that will be merged with the template
18 | t.json :block_contents, default: {}
19 |
20 | # though currently (oct 2017) not implemented
21 | # below will allow future use case of per theme or locale templates
22 | t.string :theme_name
23 | t.string :locale
24 |
25 | t.integer :flags, null: false, default: 0
26 | t.timestamps
27 | end
28 | add_index :pwb_page_parts, [:page_part_key, :page_slug]
29 |
30 | end
31 | end
32 |
--------------------------------------------------------------------------------
/db/migrate/20170921063047_create_pwb_links.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170720183443)
2 | class CreatePwbLinks < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_links do |t|
5 | # t.text :params???
6 | t.string :slug
7 | t.string :parent_slug
8 | # below for association with pages
9 | t.string :page_slug, index: true
10 | t.string :icon_class
11 | t.string :href_class
12 | t.string :href_target
13 | t.boolean :is_external, default: false
14 | t.string :link_url
15 | # above for external links, below for internal
16 | t.string :link_path
17 | # below is a comma separated list of params for an
18 | # internal path such as "show_page_path"
19 | t.string :link_path_params
20 | t.boolean :visible, default: true
21 | t.boolean :is_deletable, default: false
22 | t.integer :flags, default: 0, index: true, null: false
23 | t.integer :sort_order, default: 0
24 | t.integer :placement, default: 0, index: true
25 | t.timestamps
26 | end
27 | add_index :pwb_links, :slug, :unique => true
28 |
29 | end
30 | end
31 |
--------------------------------------------------------------------------------
/config/initializers/new_framework_defaults.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 | #
3 | # This file contains migration options to ease your Rails 5.0 upgrade.
4 | #
5 | # Read the Rails 5.0 release notes for more info on each option.
6 |
7 | # Enable per-form CSRF tokens. Previous versions had false.
8 | Rails.application.config.action_controller.per_form_csrf_tokens = true
9 |
10 | # Enable origin-checking CSRF mitigation. Previous versions had false.
11 | Rails.application.config.action_controller.forgery_protection_origin_check = true
12 |
13 | # Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`.
14 | # Previous versions had false.
15 | ActiveSupport.to_time_preserves_timezone = true
16 |
17 | # Require `belongs_to` associations by default. Previous versions had false.
18 | Rails.application.config.active_record.belongs_to_required_by_default = true
19 |
20 | # Do not halt callback chains when a callback returns false. Previous versions had true.
21 | # ActiveSupport.halt_callback_chains_on_return_false = false
22 |
23 | # Configure SSL options to enable HSTS with subdomains. Previous versions had false.
24 | Rails.application.config.ssl_options = { hsts: { subdomains: true } }
25 |
--------------------------------------------------------------------------------
/db/migrate/20170925184111_create_pwb_contacts.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170923195321)
2 | class CreatePwbContacts < ActiveRecord::Migration[5.1]
3 | def change
4 | create_table :pwb_contacts do |t|
5 | t.string :first_name, index: true
6 | t.string :last_name, index: true
7 | t.string :other_names
8 | t.integer :title, default: 0, index: true
9 | t.string :primary_phone_number, index: true
10 | t.string :other_phone_number
11 | t.string :fax
12 | t.string :nationality
13 | t.string :primary_email, index: true, unique: true
14 | t.string :other_email
15 | t.string :skype_id
16 | t.string :facebook_id
17 | t.string :linkedin_id
18 | t.string :twitter_id
19 | t.string :website
20 | t.string :documentation_id, index: true, unique: true
21 | t.integer :documentation_type
22 | t.integer :user_id
23 | t.integer :primary_address_id
24 | t.integer :secondary_address_id
25 | t.integer :flags, null: false, default: 0
26 | t.json :details, default: {}
27 |
28 | t.timestamps null: false
29 | t.timestamps
30 | end
31 |
32 | add_index :pwb_contacts, [:first_name, :last_name]
33 | end
34 | end
35 |
--------------------------------------------------------------------------------
/db/migrate/20161215152126_create_pwb_agencies.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161118222543)
2 | class CreatePwbAgencies < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_agencies do |t|
5 | t.string :phone_number_primary
6 | t.string :phone_number_mobile
7 | t.string :phone_number_other
8 |
9 | t.string :analytics_id
10 | t.integer :analytics_id_type
11 |
12 | t.string :company_name
13 | t.string :display_name
14 | t.string :email_primary
15 | t.string :email_for_general_contact_form
16 | t.string :email_for_property_contact_form
17 | t.string :skype
18 | t.string :company_id
19 | t.integer :company_id_type
20 | t.string :url
21 |
22 | t.integer :primary_address_id
23 | t.integer :secondary_address_id
24 | t.integer :flags
25 | t.integer :flags, :null => false, :default => 0
26 | t.integer :payment_plan_id
27 |
28 | t.integer :site_template_id
29 | t.json :site_configuration, default: {}
30 |
31 | t.text :available_locales, array: true, default: []
32 | t.text :supported_locales, array: true, default: []
33 | t.text :available_currencies, array: true, default: []
34 | t.text :supported_currencies, array: true, default: []
35 | t.string :default_client_locale
36 | t.string :default_admin_locale
37 | t.string :default_currency
38 |
39 | t.json :social_media, default: {}
40 | t.json :details, default: {}
41 | t.text :raw_css
42 |
43 | t.timestamps null: false
44 | end
45 | add_index :pwb_agencies, :company_name
46 | add_index :pwb_agencies, :company_id, unique: true
47 |
48 | end
49 | end
50 |
--------------------------------------------------------------------------------
/public/500.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | We're sorry, but something went wrong (500)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
We're sorry, but something went wrong.
62 |
63 |
If you are the application owner check the logs for more information.
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/public/422.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The change you wanted was rejected (422)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
The change you wanted was rejected.
62 |
Maybe you tried to change something you didn't have access to.
63 |
64 |
If you are the application owner check the logs for more information.
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/public/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The page you were looking for doesn't exist (404)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
The page you were looking for doesn't exist.
62 |
You may have mistyped the address or the page may have moved.
63 |
64 |
If you are the application owner check the logs for more information.
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/config/environments/test.rb:
--------------------------------------------------------------------------------
1 | Rails.application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb.
3 |
4 | # The test environment is used exclusively to run your application's
5 | # test suite. You never need to work with it otherwise. Remember that
6 | # your test database is "scratch space" for the test suite and is wiped
7 | # and recreated between test runs. Don't rely on the data there!
8 | config.cache_classes = true
9 |
10 | # Do not eager load code on boot. This avoids loading your whole application
11 | # just for the purpose of running a single test. If you are using a tool that
12 | # preloads Rails for running tests, you may have to set it to true.
13 | config.eager_load = false
14 |
15 | # Configure public file server for tests with Cache-Control for performance.
16 | config.public_file_server.enabled = true
17 | config.public_file_server.headers = {
18 | 'Cache-Control' => 'public, max-age=3600'
19 | }
20 |
21 | # Show full error reports and disable caching.
22 | config.consider_all_requests_local = true
23 | config.action_controller.perform_caching = false
24 |
25 | # Raise exceptions instead of rendering exception templates.
26 | config.action_dispatch.show_exceptions = false
27 |
28 | # Disable request forgery protection in test environment.
29 | config.action_controller.allow_forgery_protection = false
30 | config.action_mailer.perform_caching = false
31 |
32 | # Tell Action Mailer not to deliver emails to the real world.
33 | # The :test delivery method accumulates sent emails in the
34 | # ActionMailer::Base.deliveries array.
35 | config.action_mailer.delivery_method = :test
36 |
37 | # Print deprecation notices to the stderr.
38 | config.active_support.deprecation = :stderr
39 |
40 | # Raises error for missing translations
41 | # config.action_view.raise_on_missing_translations = true
42 | end
43 |
--------------------------------------------------------------------------------
/db/migrate/20161215152137_devise_create_pwb_users.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161205223003)
2 | class DeviseCreatePwbUsers < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_users do |t|
5 | ## Database authenticatable
6 | t.string :email, null: false, default: ""
7 | t.string :encrypted_password, null: false, default: ""
8 |
9 | ## Recoverable
10 | t.string :reset_password_token
11 | t.datetime :reset_password_sent_at
12 |
13 | ## Rememberable
14 | t.datetime :remember_created_at
15 |
16 | ## Trackable
17 | t.integer :sign_in_count, default: 0, null: false
18 | t.datetime :current_sign_in_at
19 | t.datetime :last_sign_in_at
20 | t.string :current_sign_in_ip
21 | t.string :last_sign_in_ip
22 |
23 | ## Confirmable
24 | t.string :confirmation_token
25 | t.datetime :confirmed_at
26 | t.datetime :confirmation_sent_at
27 | t.string :unconfirmed_email # Only if using reconfirmable
28 |
29 | ## Lockable
30 | t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
31 | t.string :unlock_token # Only if unlock strategy is :email or :both
32 | t.datetime :locked_at
33 |
34 | t.string :authentication_token
35 |
36 | t.boolean :admin, :default => false
37 | # t.integer :agency_id
38 | t.string :first_names
39 | t.string :last_names
40 | t.string :skype
41 | t.string :phone_number_primary
42 | t.string :default_client_locale
43 | t.string :default_admin_locale
44 | t.string :default_currency
45 |
46 |
47 | t.timestamps null: false
48 | end
49 |
50 | add_index :pwb_users, :email, unique: true
51 | add_index :pwb_users, :reset_password_token, unique: true
52 | add_index :pwb_users, :confirmation_token, unique: true
53 | # add_index :pwb_users, :unlock_token, unique: true
54 | end
55 | end
56 |
--------------------------------------------------------------------------------
/config/puma.rb:
--------------------------------------------------------------------------------
1 | # Puma can serve each request in a thread from an internal thread pool.
2 | # The `threads` method setting takes two numbers a minimum and maximum.
3 | # Any libraries that use thread pools should be configured to match
4 | # the maximum value specified for Puma. Default is set to 5 threads for minimum
5 | # and maximum, this matches the default thread size of Active Record.
6 | #
7 | threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
8 | threads threads_count, threads_count
9 |
10 | # Specifies the `port` that Puma will listen on to receive requests, default is 3000.
11 | #
12 | port ENV.fetch("PORT") { 3000 }
13 |
14 | # Specifies the `environment` that Puma will run in.
15 | #
16 | environment ENV.fetch("RAILS_ENV") { "development" }
17 |
18 | # Specifies the number of `workers` to boot in clustered mode.
19 | # Workers are forked webserver processes. If using threads and workers together
20 | # the concurrency of the application would be max `threads` * `workers`.
21 | # Workers do not work on JRuby or Windows (both of which do not support
22 | # processes).
23 | #
24 | # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
25 |
26 | # Use the `preload_app!` method when specifying a `workers` number.
27 | # This directive tells Puma to first boot the application and load code
28 | # before forking the application. This takes advantage of Copy On Write
29 | # process behavior so workers use less memory. If you use this option
30 | # you need to make sure to reconnect any threads in the `on_worker_boot`
31 | # block.
32 | #
33 | # preload_app!
34 |
35 | # The code in the `on_worker_boot` will be called if you are using
36 | # clustered mode by specifying a number of `workers`. After each worker
37 | # process is booted this block will be run, if you are using `preload_app!`
38 | # option you will want to use this block to reconnect to any threads
39 | # or connections that may have been created at application boot, Ruby
40 | # cannot share connections between processes.
41 | #
42 | # on_worker_boot do
43 | # ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
44 | # end
45 |
46 | # Allow puma to be restarted by `rails restart` command.
47 | plugin :tmp_restart
48 |
--------------------------------------------------------------------------------
/db/migrate/20170217103548_create_pwb_websites.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20170131190507)
2 | class CreatePwbWebsites < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_websites do |t|
5 | t.string :analytics_id
6 | t.integer :analytics_id_type
7 |
8 | # t.string :company_name
9 | t.string :company_display_name
10 | t.string :email_for_general_contact_form
11 | t.string :email_for_property_contact_form
12 | # t.string :url
13 |
14 | # t.integer :primary_address_id
15 | t.integer :contact_address_id
16 | t.integer :flags
17 | t.integer :flags, :null => false, :default => 0
18 | # t.integer :payment_plan_id
19 |
20 | t.string :theme_name
21 | t.string :google_font_name
22 | t.json :configuration, default: {}
23 | t.json :style_variables_for_theme, default: {}
24 |
25 | t.text :sale_price_options_from, array: true, default: [
26 | "","25,000", "50,000", "75,000", "100,000", "150,000", "250,000", "500,000", "1,000,000", "2,000,000", "5,000,000", "10,000,000"
27 | ]
28 | t.text :sale_price_options_till, array: true, default: [
29 | "","25,000", "50,000", "75,000", "100,000", "150,000", "250,000", "500,000", "1,000,000", "2,000,000", "5,000,000", "10,000,000"
30 | ]
31 | t.text :rent_price_options_from, array: true, default: [
32 | "","250", "500", "750", "1,000", "1,500", "2,500", "5,000"
33 | ]
34 | t.text :rent_price_options_till, array: true, default: [
35 | "","250", "500", "750", "1,000", "1,500", "2,500", "5,000"
36 | ]
37 | # t.text :available_locales, array: true, default: []
38 | t.text :supported_locales, array: true, default: ["en-UK"]
39 | # t.text :available_currencies, array: true, default: []
40 | # supported_currencies for when instant conversions are allowed
41 | t.text :supported_currencies, array: true, default: []
42 | t.string :default_client_locale, default: "en-UK"
43 | t.string :default_admin_locale, default: "en-UK"
44 | t.string :default_currency, default: "EUR"
45 | t.integer :default_area_unit, default: 0
46 |
47 | t.json :social_media, default: {}
48 | t.text :raw_css
49 |
50 | t.timestamps
51 | end
52 | end
53 | end
54 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ruby:alpine
2 |
3 | # https://www.chrisblunt.com/rails-on-docker-getting-started-docker-ruby-rails/
4 | # https://hub.docker.com/_/ruby/
5 |
6 | # Install app's runtime dependencies
7 | RUN apk add -U tzdata git postgresql postgresql-client nodejs libffi-dev readline sqlite && \
8 | apk add --virtual build-deps build-base libc-dev linux-headers libxml2-dev libxslt-dev readline-dev postgresql-dev && \
9 | cp /usr/share/zoneinfo/Europe/London /etc/localtime && \
10 | echo "Europe/London" > /etc/timezone
11 |
12 | # Bundle into the temp directory
13 | WORKDIR /tmp
14 | ADD Gemfile ./
15 | RUN bundle install --jobs=2 && \
16 | apk del build-deps
17 |
18 | # Copy the app's code into the container
19 | ENV APP_HOME /app
20 | COPY . $APP_HOME
21 | WORKDIR $APP_HOME
22 |
23 | # Configure production environment variables
24 | ENV RAILS_ENV=production \
25 | RACK_ENV=production \
26 | RAILS_LOG_TO_STDOUT=enabled \
27 | RAILS_SERVE_STATIC_FILES=enabled \
28 | LANG=en_US.UTF-8
29 |
30 | # Expose port 3000 from the container
31 | EXPOSE 9292
32 |
33 | # setup postgresql
34 | # https://github.com/kiasaki/docker-alpine-postgres/blob/master/docker-entrypoint.sh
35 | ENV LANG=en_US.utf8 \
36 | PGDATA=/var/lib/postgresql/data \
37 | POSTGRES_DB=pwb \
38 | POSTGRES_PASSWORD=superman \
39 | POSTGRES_USER=superman \
40 | SECRET_KEY_BASE=20dbf7add3eb28096f1e77cb4e15f13a46e6692f4d0c0f9a3e9db7cb4ddaa8a7cac0912cc1f8ac9ae1fae9eb3115e2dbd32b1e626ca72da9c9fc83beb2cb6312
41 | RUN apk add sudo && \
42 | mkdir -p $PGDATA && \
43 | mkdir -p /run/postgresql/ && \
44 | chown -R postgres "$PGDATA" && \
45 | chown -R postgres /run/postgresql/ && \
46 | sudo -E -u postgres initdb && \
47 | sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" "$PGDATA"/postgresql.conf && \
48 | echo "CREATE DATABASE $POSTGRES_DB" | sudo -E -u postgres postgres --single -jE && \
49 | echo "CREATE USER $POSTGRES_USER WITH SUPERUSER PASSWORD '$POSTGRES_PASSWORD'" | sudo -E -u postgres postgres --single -jE && \
50 | echo "host all all 0.0.0.0/0 md5" >> "$PGDATA"/pg_hba.conf && \
51 | sed -e 's/pwb-for-heroku$/superman/g' \
52 | -e 's/pwb-for-heroku_production/pwb/g' \
53 | -e 's/PWB-FOR-HEROKU_DATABASE_PASSWORD/POSTGRES_PASSWORD/g' -i config/database.yml
54 |
55 | # the main entry point
56 | CMD /app/docker-entrypoint.sh
57 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 |
4 | # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5 | gem 'rails', '~> 5.2'
6 | # Use postgresql as the database for Active Record
7 | gem 'pg', '~> 0.18'
8 | # Use Puma as the app server
9 | gem 'puma', '~> 4.3'
10 | # Use SCSS for stylesheets
11 | gem 'sass-rails', '~> 5.0'
12 | # Use Uglifier as compressor for JavaScript assets
13 | gem 'uglifier', '>= 1.3.0'
14 | # Use CoffeeScript for .coffee assets and views
15 | gem 'coffee-rails', '~> 4.2'
16 | # See https://github.com/rails/execjs#readme for more supported runtimes
17 | # gem 'therubyracer', platforms: :ruby
18 |
19 | # Use jquery as the JavaScript library
20 | gem 'jquery-rails'
21 | # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
22 | gem 'turbolinks', '~> 5'
23 | # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
24 | gem 'jbuilder', '~> 2.5'
25 | # Use Redis adapter to run Action Cable in production
26 | # gem 'redis', '~> 3.0'
27 | # Use ActiveModel has_secure_password
28 | # gem 'bcrypt', '~> 3.1.7'
29 |
30 | # Use Capistrano for deployment
31 | # gem 'capistrano-rails', group: :development
32 |
33 | group :development, :test do
34 | # Call 'byebug' anywhere in the code to stop execution and get a debugger console
35 | gem 'byebug', platform: :mri
36 | end
37 |
38 | group :development do
39 | # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
40 | gem 'web-console'
41 | gem 'listen', '~> 3.0.5'
42 | # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
43 | gem 'spring'
44 | gem 'spring-watcher-listen', '~> 2.0.0'
45 | gem 'closure-compiler'
46 | gem 'yui-compressor'
47 | end
48 |
49 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
50 | gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
51 |
52 | gem 'pwb', git: 'https://github.com/etewiah/property_web_builder'
53 | # , branch: 'link-model-support'
54 | # gem 'globalize', git: 'https://github.com/globalize/globalize'
55 | gem 'paloma', git: 'https://github.com/fredngo/paloma'
56 | # fog-core 1.44.0 requires xmlrpc which is not available in ruby < 2.3...
57 | gem 'fog-core', '1.43.0'
58 | # gem 'property_web_scraper', git: 'https://github.com/RealEstateWebTools/property_web_scraper'
59 |
--------------------------------------------------------------------------------
/config/environments/development.rb:
--------------------------------------------------------------------------------
1 | Rails.application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb.
3 |
4 | # In the development environment your application's code is reloaded on
5 | # every request. This slows down response time but is perfect for development
6 | # since you don't have to restart the web server when you make code changes.
7 | config.cache_classes = false
8 |
9 | # Do not eager load code on boot.
10 | config.eager_load = false
11 |
12 | # Show full error reports.
13 | config.consider_all_requests_local = true
14 |
15 | # Enable/disable caching. By default caching is disabled.
16 | if Rails.root.join('tmp/caching-dev.txt').exist?
17 | config.action_controller.perform_caching = true
18 |
19 | config.cache_store = :memory_store
20 | config.public_file_server.headers = {
21 | 'Cache-Control' => 'public, max-age=172800'
22 | }
23 | else
24 | config.action_controller.perform_caching = false
25 |
26 | config.cache_store = :null_store
27 | end
28 |
29 | # Don't care if the mailer can't send.
30 | config.action_mailer.raise_delivery_errors = false
31 |
32 | config.action_mailer.perform_caching = false
33 |
34 | # Print deprecation notices to the Rails logger.
35 | config.active_support.deprecation = :log
36 |
37 | # Raise an error on page load if there are pending migrations.
38 | config.active_record.migration_error = :page_load
39 |
40 |
41 | # Suppress logger output for asset requests.
42 | config.assets.quiet = true
43 |
44 | # Raises error for missing translations
45 | # config.action_view.raise_on_missing_translations = true
46 |
47 | # Use an evented file watcher to asynchronously detect changes in source code,
48 | # routes, locales, etc. This feature depends on the listen gem.
49 | config.file_watcher = ActiveSupport::EventedFileUpdateChecker
50 |
51 |
52 | # Do not fallback to assets pipeline if a precompiled asset is missed.
53 | # config.assets.compile = false
54 | # TODO: - figure out why when above is set to false
55 | # font and some image files do not get served
56 | # http://stackoverflow.com/questions/19194515/rails-4-app-on-heroku-is-serving-css-and-js-but-not-image-assets?rq=1
57 |
58 | # Debug mode disables concatenation and preprocessing of assets.
59 | # This option may cause significant delays in view rendering with a large
60 | # number of complex assets.
61 | # To test assets for heroku deploy, set below to false
62 | config.assets.debug = true
63 | end
64 |
--------------------------------------------------------------------------------
/config/secrets.yml:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Your secret key is used for verifying the integrity of signed cookies.
4 | # If you change this key, all old signed cookies will become invalid!
5 |
6 | # Make sure the secret is at least 30 characters and all random,
7 | # no regular words or you'll be exposed to dictionary attacks.
8 | # You can use `rails secret` to generate a secure secret key.
9 |
10 | # Make sure the secrets in this file are kept private
11 | # if you're sharing your code publicly.
12 |
13 | development:
14 | # aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
15 | # aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
16 | # To use cloudinary in dev, get url with:
17 | # heroku config:get CLOUDINARY_URL
18 | # and export it to your local env with:
19 | # export CLOUDINARY_URL=cloudinary://.......
20 | # check it with:
21 | # printenv
22 | secret_key_base: 20dbf7add3eb28096f1e77cb4e15f13a46e6692f4d0c0f9a3e9db7cb4ddaa8a7cac0912cc1f8ac9ae1fae9eb3115e2dbd32b1e626ca72da9c9fc83beb2cb6312
23 | cloudinary_url: <%= ENV['CLOUDINARY_URL'] %>
24 | test:
25 | # aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
26 | # aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
27 | secret_key_base: a412eca4343e70b5e50093bf6935bfc4c68f1381a6d0e73b5ef262bc569da6cf022552764a4fb118e0b92b7285550bf55f32cfc18a5be36810ec5caf5d6929c3
28 | cloudinary_url: <%= ENV['CLOUDINARY_URL'] %>
29 |
30 | # Do not keep production secrets in the repository,
31 | # instead read values from the environment.
32 | production:
33 | # aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
34 | # aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
35 | secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
36 | cloudinary_url: <%= ENV['CLOUDINARY_URL'] %>
37 | sendgrid_username: <%= ENV['SENDGRID_USERNAME'] %>
38 | sendgrid_password: <%= ENV['SENDGRID_PASSWORD'] %>
39 | facebook_app_id: <%= ENV["FACEBOOK_APP_ID"] %>
40 | facebook_app_secret: <%= ENV["FACEBOOK_APP_SECRET"] %>
41 | # for heroku set these values like so:
42 | # heroku config:set AWS_ACCESS_KEY_ID='your aws_access_key_id'
43 | # heroku config:set AWS_SECRET_ACCESS_KEY='your aws_secret_access_key'
44 |
45 | # for local dev set these values like so:
46 | # export AWS_ACCESS_KEY_ID='your aws_access_key_id'
47 | # export AWS_SECRET_ACCESS_KEY='your aws_secret_access_key'
48 |
49 | precompile:
50 | secret_key_base: 20dbf7add3eb28096f1e77cb4e15f13a46e6692f4d0c0f9a3e9db7cb4ddaa8a7cac0912cc1f8ac9ae1fae9eb3115e2dbd32b1e626ca72da9c9fc83beb2cb6312
51 |
--------------------------------------------------------------------------------
/public/assets/pwb/themes/matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css:
--------------------------------------------------------------------------------
1 | .contenedor_idiomas{background:blue}ul.idiomas{float:right;padding:0 15px 10px 10px;margin:-7px 0px -5px 10px;background-color:#fff}ul.idiomas li{float:left;list-style:none outside none;margin:0 0 0 5px;padding:11px 0 0 0;width:20px}ul.idiomas li a{display:block;width:20px;height:14px;outline:1px solid #555;margin:0}ul.idiomas .es{background:url("/assets/idiomas.png") 0 0 no-repeat}ul.idiomas .en,ul.idiomas .uk{background:url("/assets/idiomas.png") -20px 0}ul.idiomas .ru{background:url("/assets/idiomas.png") -40px 0}ul.idiomas .sv{background:url("/assets/idiomas.png") -60px 0}ul.idiomas .no{background:url("/assets/idiomas.png") -80px 0}ul.idiomas .de{background:url("/assets/idiomas.png") -100px 0}ul.idiomas .fr{background:url("/assets/idiomas.png") -120px 0}ul.idiomas .ne{background:url("/assets/idiomas.png") -140px 0}ul.idiomas .ch{background:url("/assets/idiomas.png") -160px 0}ul.idiomas .fi{background:url("/assets/idiomas.png") -180px 0}ul.idiomas .eu{background:url("/assets/idiomas.png") -200px 0}ul.idiomas .pt{background:url("/assets/idiomas.png") -220px 0}ul.idiomas .ar{background:url("/assets/idiomas.png") -240px 0}ul.idiomas .ca{background:url("/assets/idiomas.png") -260px 0}ul.idiomas .br{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/br.svg") no-repeat;background-size:cover}ul.idiomas .cl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/cl.svg") no-repeat;background-size:cover}ul.idiomas .hi{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/hi.svg") no-repeat;background-size:cover}ul.idiomas .it{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/it.svg") no-repeat;background-size:cover}ul.idiomas .mx{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/mx.svg") no-repeat;background-size:cover}ul.idiomas .nl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/nl.svg") no-repeat;background-size:cover}ul.idiomas .pl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/pl.svg") no-repeat;background-size:cover}ul.idiomas .ro{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/ro.svg") no-repeat;background-size:cover}ul.idiomas .us{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/us.svg") no-repeat;background-size:cover}ul.idiomas .vi{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/vn.svg") no-repeat;background-size:cover}ul.idiomas .tr{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/tr.svg") no-repeat;background-size:cover}ul.idiomas .kr{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/kr.svg") no-repeat;background-size:cover}ul.idiomas .bg{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/bg.svg") no-repeat;background-size:cover}ul.idiomas li.selected,ul.idiomas li:hover{background:url("/assets/simple-nav-arrow.png") no-repeat top center}
2 |
--------------------------------------------------------------------------------
/config/database.yml:
--------------------------------------------------------------------------------
1 | # PostgreSQL. Versions 9.1 and up are supported.
2 | #
3 | # Install the pg driver:
4 | # gem install pg
5 | # On OS X with Homebrew:
6 | # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7 | # On OS X with MacPorts:
8 | # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9 | # On Windows:
10 | # gem install pg
11 | # Choose the win32 build.
12 | # Install PostgreSQL and put its /bin directory on your path.
13 | #
14 | # Configure Using Gemfile
15 | # gem 'pg'
16 | #
17 | default: &default
18 | adapter: postgresql
19 | encoding: unicode
20 | # For details on connection pooling, see rails configuration guide
21 | # http://guides.rubyonrails.org/configuring.html#database-pooling
22 | pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
23 |
24 | development:
25 | <<: *default
26 | database: pwb-for-heroku_development
27 |
28 | # The specified database role being used to connect to postgres.
29 | # To create additional roles in postgres see `$ createuser --help`.
30 | # When left blank, postgres will use the default role. This is
31 | # the same name as the operating system user that initialized the database.
32 | #username: pwb-for-heroku
33 |
34 | # The password associated with the postgres role (username).
35 | #password:
36 |
37 | # Connect on a TCP socket. Omitted by default since the client uses a
38 | # domain socket that doesn't need configuration. Windows does not have
39 | # domain sockets, so uncomment these lines.
40 | #host: localhost
41 |
42 | # The TCP port the server listens on. Defaults to 5432.
43 | # If your server runs on a different port number, change accordingly.
44 | #port: 5432
45 |
46 | # Schema search path. The server defaults to $user,public
47 | #schema_search_path: myapp,sharedapp,public
48 |
49 | # Minimum log levels, in increasing order:
50 | # debug5, debug4, debug3, debug2, debug1,
51 | # log, notice, warning, error, fatal, and panic
52 | # Defaults to warning.
53 | #min_messages: notice
54 |
55 | # Warning: The database defined as "test" will be erased and
56 | # re-generated from your development database when you run "rake".
57 | # Do not set this db to the same as development or production.
58 | test:
59 | <<: *default
60 | database: pwb-for-heroku_test
61 |
62 | # As with config/secrets.yml, you never want to store sensitive information,
63 | # like your database password, in your source code. If your source code is
64 | # ever seen by anyone, they now have access to your database.
65 | #
66 | # Instead, provide the password as a unix environment variable when you boot
67 | # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
68 | # for a full rundown on how to provide these environment variables in a
69 | # production deployment.
70 | #
71 | # On Heroku and other platform providers, you may have a full connection URL
72 | # available as an environment variable. For example:
73 | #
74 | # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
75 | #
76 | # You can use this database configuration with:
77 | #
78 | # production:
79 | # url: <%= ENV['DATABASE_URL'] %>
80 | #
81 | production:
82 | <<: *default
83 | database: pwb-for-heroku_production
84 | username: pwb-for-heroku
85 | password: <%= ENV['PWB-FOR-HEROKU_DATABASE_PASSWORD'] %>
86 |
87 |
88 | precompile:
89 | <<: *default
90 | database: pwb-for-heroku_development
--------------------------------------------------------------------------------
/config/environments/precompile.rb:
--------------------------------------------------------------------------------
1 | Rails.application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb.
3 |
4 | # http://blog.bigbinary.com/2015/10/31/rails-5-allows-setting-custom-http-headers-for-assets.html
5 | #
6 | config.public_file_server.headers = {
7 | 'Cache-Control' => 'public, s-maxage=31536000, maxage=15552000',
8 | 'Expires' => "#{1.year.from_now.to_formatted_s(:rfc822)}"
9 | }
10 |
11 | # Code is not reloaded between requests.
12 | config.cache_classes = true
13 |
14 | # Eager load code on boot. This eager loads most of Rails and
15 | # your application in memory, allowing both threaded web servers
16 | # and those relying on copy on write to perform better.
17 | # Rake tasks automatically ignore this option for performance.
18 | config.eager_load = true
19 |
20 | # Full error reports are disabled and caching is turned on.
21 | config.consider_all_requests_local = false
22 | config.action_controller.perform_caching = true
23 |
24 | # Disable serving static files from the `/public` folder by default since
25 | # Apache or NGINX already handles this.
26 | config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
27 |
28 | # Compress JavaScripts and CSS.
29 | # config.assets.js_compressor = :uglifier
30 | # when I try to compress js files with the above I get the ff error:
31 | # ExecJS::RuntimeError: SyntaxError: Unexpected token punc «(», expected punc «:»
32 | # config.assets.js_compressor = :closure
33 | # config.assets.js_compressor = :yui
34 |
35 |
36 | config.assets.css_compressor = :sass
37 |
38 | # Do not fallback to assets pipeline if a precompiled asset is missed.
39 | # config.assets.compile = false
40 | # http://stackoverflow.com/questions/19194515/rails-4-app-on-heroku-is-serving-css-and-js-but-not-image-assets?rq=1
41 | # to allow font files to be served
42 | # config.assets.compile = true
43 |
44 |
45 | # Enable/disable caching. By default caching is disabled.
46 | if Rails.root.join('tmp/caching-dev.txt').exist?
47 | config.action_controller.perform_caching = true
48 |
49 | config.cache_store = :memory_store
50 | config.public_file_server.headers = {
51 | 'Cache-Control' => 'public, max-age=172800'
52 | }
53 | else
54 | config.action_controller.perform_caching = false
55 |
56 | config.cache_store = :null_store
57 | end
58 |
59 | # Don't care if the mailer can't send.
60 | config.action_mailer.raise_delivery_errors = false
61 |
62 | config.action_mailer.perform_caching = false
63 |
64 | # Print deprecation notices to the Rails logger.
65 | config.active_support.deprecation = :log
66 |
67 | # Raise an error on page load if there are pending migrations.
68 | config.active_record.migration_error = :page_load
69 |
70 | # Debug mode disables concatenation and preprocessing of assets.
71 | # This option may cause significant delays in view rendering with a large
72 | # number of complex assets.
73 | config.assets.debug = false
74 |
75 | # Suppress logger output for asset requests.
76 | config.assets.quiet = true
77 |
78 | # Raises error for missing translations
79 | # config.action_view.raise_on_missing_translations = true
80 |
81 | # Use an evented file watcher to asynchronously detect changes in source code,
82 | # routes, locales, etc. This feature depends on the listen gem.
83 | config.file_watcher = ActiveSupport::EventedFileUpdateChecker
84 | end
85 |
--------------------------------------------------------------------------------
/public/assets/property_web_scraper/spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css:
--------------------------------------------------------------------------------
1 | .social-icons .fa{font-size:1.5em}.social-icons .fa{width:40px;height:40px;line-height:40px;text-align:center;color:#FFF;color:rgba(255,255,255,0.8);-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-ms-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out;cursor:pointer}.social-icons.icon-circle .fa{border-radius:50%}.social-icons.icon-rounded .fa{border-radius:5px}.social-icons.icon-flat .fa{border-radius:0}.social-icons .fa:hover,.social-icons .fa:active{color:#FFF;-webkit-box-shadow:1px 1px 3px #333;-moz-box-shadow:1px 1px 3px #333;box-shadow:1px 1px 3px #333}.social-icons.icon-zoom .fa:hover,.social-icons.icon-zoom .fa:active{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}.social-icons.icon-rotate .fa:hover,.social-icons.icon-rotate .fa:active{-webkit-transform:scale(1.1) rotate(360deg);-moz-transform:scale(1.1) rotate(360deg);-ms-transform:scale(1.1) rotate(360deg);-o-transform:scale(1.1) rotate(360deg);transform:scale(1.1) rotate(360deg)}.social-icons .fa-adn{background-color:#504e54}.social-icons .fa-apple{background-color:#aeb5c5}.social-icons .fa-android{background-color:#A5C63B}.social-icons .fa-bitbucket,.social-icons .fa-bitbucket-square{background-color:#003366}.social-icons .fa-bitcoin,.social-icons .fa-btc{background-color:#F7931A}.social-icons .fa-css3{background-color:#1572B7}.social-icons .fa-dribbble{background-color:#F46899}.social-icons .fa-dropbox{background-color:#018BD3}.social-icons .fa-facebook,.social-icons .fa-facebook-square{background-color:#3C599F}.social-icons .fa-flickr{background-color:#FF0084}.social-icons .fa-foursquare{background-color:#0086BE}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{background-color:#070709}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{background-color:#CF3D2E}.social-icons .fa-html5{background-color:#E54D26}.social-icons .fa-instagram{background-color:#A1755C}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{background-color:#0085AE}.social-icons .fa-linux{background-color:#FBC002;color:#333}.social-icons .fa-maxcdn{background-color:#F6AE1C}.social-icons .fa-pagelines{background-color:#241E20;color:#3984EA}.social-icons .fa-pinterest,.social-icons .fa-pinterest-square{background-color:#CC2127}.social-icons .fa-renren{background-color:#025DAC}.social-icons .fa-skype{background-color:#01AEF2}.social-icons .fa-stack-exchange{background-color:#245590}.social-icons .fa-stack-overflow{background-color:#FF7300}.social-icons .fa-trello{background-color:#265A7F}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{background-color:#314E6C}.social-icons .fa-twitter,.social-icons .fa-twitter-square{background-color:#32CCFE}.social-icons .fa-vimeo-square{background-color:#229ACC}.social-icons .fa-vk{background-color:#375474}.social-icons .fa-weibo{background-color:#D72B2B}.social-icons .fa-windows{background-color:#12B6F3}.social-icons .fa-xing,.social-icons .fa-xing-square{background-color:#00555C}.social-icons .fa-youtube,.social-icons .fa-youtube-play,.social-icons .fa-youtube-square{background-color:#C52F30}@media (max-width: 575px){.vue-map-container .vue-map{min-height:500px}.carousel{min-height:600px}}@media (min-width: 576px) and (max-width: 767px){.vue-map-container .vue-map{min-height:500px}.carousel{min-height:600px}}@media (min-width: 768px) and (max-width: 991px){.vue-map-container .vue-map{min-height:500px}.carousel{min-height:600px}}@media (min-width: 992px) and (max-width: 1199px){.vue-map-container .vue-map{min-height:500px}.carousel{min-height:600px}}@media (min-width: 1200px){.vue-map-container .vue-map{min-height:900px}.carousel{min-height:1000px}}.main-header{font-weight:500}
2 |
--------------------------------------------------------------------------------
/db/migrate/20161215152127_create_pwb_props.pwb.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from pwb (originally 20161120103546)
2 | class CreatePwbProps < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :pwb_props do |t|
5 |
6 | t.string :reference
7 |
8 | t.integer :year_construction, default: 0, null: false
9 | t.integer :count_bedrooms, default: 0, null: false
10 | t.integer :count_bathrooms, default: 0, null: false
11 | t.integer :count_toilets, default: 0, null: false
12 | t.integer :count_garages, default: 0, null: false
13 | t.float :plot_area, default: 0, null: false
14 | t.float :constructed_area, default: 0, null: false
15 | t.integer :energy_rating
16 | t.float :energy_performance
17 | # t.string "title"
18 | # t.text "description"
19 | # t.text "details"
20 | t.integer :flags, default: 0, null: false
21 |
22 | # booleans used in scopes
23 | t.boolean :furnished, default: false
24 | t.boolean :sold, default: false
25 | t.boolean :reserved, default: false
26 | t.boolean :highlighted, default: false
27 | t.boolean :archived, default: false
28 | # when above is set to true, below needs to be set to false
29 | t.boolean :visible, default: false
30 |
31 | t.boolean :for_rent_short_term, default: false
32 | t.boolean :for_rent_long_term, default: false
33 | t.boolean :for_sale, default: false
34 | t.boolean :hide_map, default: false
35 | t.boolean :obscure_map, default: false
36 | t.boolean :portals_enabled, default: false
37 | # if I used flag shih tzu for above, I couldn't make queries like:
38 | # Property.where('for_rent_short_term OR for_rent_long_term')
39 |
40 |
41 | t.datetime :deleted_at
42 | t.datetime :active_from
43 | t.datetime :available_to_rent_from
44 | t.datetime :available_to_rent_till
45 |
46 | t.monetize :price_sale_current
47 | t.monetize :price_sale_original
48 | # above will create below in schema.rb:
49 | # t.integer "price_sale_original_cents", default: 0, null: false
50 | # t.string "price_sale_original_currency", default: "EUR", null: false
51 |
52 | t.monetize :price_rental_monthly_current
53 | t.monetize :price_rental_monthly_original
54 | t.monetize :price_rental_monthly_low_season
55 | t.monetize :price_rental_monthly_high_season
56 | t.monetize :price_rental_monthly_standard_season
57 | t.monetize :commission
58 | t.monetize :service_charge_yearly
59 |
60 | # below is the lowest of the 3 seasonal monthly values
61 | # or the standard rental value
62 | # needed to allow me to search across diff rental types
63 | t.monetize :price_rental_monthly_for_search
64 |
65 |
66 | t.string :currency
67 |
68 | t.string :prop_origin_key, default: "", null: false
69 | t.string :prop_state_key, default: "", null: false
70 | t.string :prop_type_key, default: "", null: false
71 |
72 | t.string :street_number
73 | t.string :street_name
74 | t.string :street_address
75 | t.string :postal_code
76 | t.string :province
77 | t.string :city
78 | t.string :region
79 | t.string :country
80 | t.float :latitude
81 | t.float :longitude
82 |
83 | t.timestamps
84 | end
85 |
86 | add_index :pwb_props, :visible
87 | add_index :pwb_props, :flags
88 | add_index :pwb_props, :for_rent_short_term
89 | add_index :pwb_props, :for_rent_long_term
90 | add_index :pwb_props, :for_sale
91 | add_index :pwb_props, :highlighted
92 | add_index :pwb_props, :archived
93 | add_index :pwb_props, :reference, unique: true
94 | add_index :pwb_props, :price_rental_monthly_current_cents
95 | add_index :pwb_props, :price_sale_current_cents
96 |
97 | # add_index :pwb_props, :locality
98 | # add_index :pwb_props, :zone
99 | # https://github.com/alexreisner/geocoder
100 | add_index :pwb_props, [:latitude, :longitude]
101 | end
102 | end
103 |
--------------------------------------------------------------------------------
/db/migrate/20171204110203_create_property_web_scraper_listings.property_web_scraper.rb:
--------------------------------------------------------------------------------
1 | # This migration comes from property_web_scraper (originally 20170628201113)
2 | class CreatePropertyWebScraperListings < ActiveRecord::Migration[5.0]
3 | def change
4 | create_table :property_web_scraper_listings do |t|
5 | t.integer :flags, default: 0, null: false
6 | t.integer :area_unit, default: 0, null: false
7 | t.string :reference
8 | # -1 indicates value could not be retrieved
9 | t.integer :year_construction, default: 0 #, null: false
10 | t.integer :count_bedrooms, default: 0 #, null: false
11 | t.float :count_bathrooms, default: 0 #, null: false
12 | # turns out count_bathrooms in the US can be .5, 1.5 etc
13 | # so need a float for above
14 | t.integer :count_toilets, default: 0 #, null: false
15 | t.integer :count_garages, default: 0 #, null: false
16 | t.float :plot_area, default: 0 #, null: false
17 | t.float :constructed_area, default: 0 #, null: false
18 | t.integer :energy_rating
19 | t.float :energy_performance
20 | t.string :title
21 | t.text :description
22 | t.string :locale_code
23 | # will use locale_code to say what default lang is
24 | # but for popular languages will save in dedicated cols
25 | t.string :title_es
26 | t.text :description_es
27 | t.string :title_de
28 | t.text :description_de
29 | t.string :title_fr
30 | t.text :description_fr
31 | t.string :title_it
32 | t.text :description_it
33 |
34 |
35 | # booleans used in scopes
36 | t.boolean :furnished, default: false
37 | t.boolean :sold, default: false
38 | t.boolean :reserved, default: false
39 |
40 | t.boolean :for_rent_short_term, default: false
41 | t.boolean :for_rent_long_term, default: false
42 | t.boolean :for_sale, default: false
43 | t.boolean :for_rent, default: false
44 |
45 | t.datetime :deleted_at
46 | t.datetime :active_from
47 | t.datetime :available_to_rent_from
48 | t.datetime :available_to_rent_till
49 |
50 | t.string :price_string
51 | t.float :price_float
52 | t.monetize :price_sale
53 | # above will create below in schema.rb:
54 | # t.integer "price_sale_cents", default: 0, null: false
55 | # t.string "price_sale_currency", default: "EUR", null: false
56 | # t.monetize :price_rental
57 |
58 | t.monetize :price_sale_current
59 | t.monetize :price_sale_original
60 |
61 | t.monetize :price_rental_monthly_current
62 | t.monetize :price_rental_monthly_original
63 | t.monetize :price_rental_monthly_low_season
64 | t.monetize :price_rental_monthly_high_season
65 | t.monetize :price_rental_monthly_standard_season
66 | t.monetize :commission
67 | t.monetize :service_charge_yearly
68 |
69 | # below is the lowest of the 3 seasonal monthly values
70 | # or the standard rental value
71 | # needed to allow me to search across diff rental types
72 | t.monetize :price_rental_monthly_for_search
73 |
74 | t.string :currency
75 |
76 | t.string :address_string
77 | t.string :street_number
78 | t.string :street_name
79 | t.string :street_address
80 | t.string :postal_code
81 | t.string :province
82 | t.string :city
83 | t.string :region
84 | t.string :country
85 | t.float :latitude
86 | t.float :longitude
87 |
88 | t.datetime :last_retrieved_at
89 | # t.integer :import_host_id
90 | t.string :import_host_slug
91 | # for real estate agent ref:
92 | t.integer :re_agent_id
93 | t.string :import_url
94 | t.json :import_history, default: {}
95 |
96 | t.string :main_image_url
97 | t.text :image_urls, array: true, default: []
98 | t.text :related_urls, array: true, default: []
99 | t.text :features, array: true, default: []
100 | t.text :unknown_fields, array: true, default: []
101 |
102 | t.timestamps
103 | end
104 |
105 | add_index :property_web_scraper_listings, :flags
106 | add_index :property_web_scraper_listings, :price_float
107 | # add_index :property_web_scraper_listings, :price_rental_cents
108 | # add_index :property_web_scraper_listings, :price_sale_cents
109 | add_index :property_web_scraper_listings, :reference
110 | add_index :property_web_scraper_listings, :import_url
111 | end
112 | end
113 |
--------------------------------------------------------------------------------
/config/environments/production.rb:
--------------------------------------------------------------------------------
1 | Rails.application.configure do
2 | # Settings specified here will take precedence over those in config/application.rb.
3 |
4 | # http://blog.bigbinary.com/2015/10/31/rails-5-allows-setting-custom-http-headers-for-assets.html
5 | #
6 | config.public_file_server.headers = {
7 | 'Cache-Control' => 'public, s-maxage=31536000, maxage=15552000',
8 | 'Expires' => "#{1.year.from_now.to_formatted_s(:rfc822)}"
9 | }
10 |
11 | # Code is not reloaded between requests.
12 | config.cache_classes = true
13 |
14 | # Eager load code on boot. This eager loads most of Rails and
15 | # your application in memory, allowing both threaded web servers
16 | # and those relying on copy on write to perform better.
17 | # Rake tasks automatically ignore this option for performance.
18 | config.eager_load = true
19 |
20 | # Full error reports are disabled and caching is turned on.
21 | config.consider_all_requests_local = false
22 | config.action_controller.perform_caching = true
23 |
24 | # Disable serving static files from the `/public` folder by default since
25 | # Apache or NGINX already handles this.
26 | config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
27 |
28 | # Compress JavaScripts and CSS.
29 | config.assets.js_compressor = :uglifier
30 | # config.assets.css_compressor = :sass
31 |
32 | # Do not fallback to assets pipeline if a precompiled asset is missed.
33 | # config.assets.compile = false
34 | # http://stackoverflow.com/questions/19194515/rails-4-app-on-heroku-is-serving-css-and-js-but-not-image-assets?rq=1
35 | # to allow font files to be served
36 | config.assets.compile = true
37 |
38 | # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
39 |
40 | # Enable serving of images, stylesheets, and JavaScripts from an asset server.
41 | # config.action_controller.asset_host = 'http://assets.example.com'
42 |
43 | # Specifies the header that your server uses for sending files.
44 | # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
45 | # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
46 |
47 | # Mount Action Cable outside main process or domain
48 | # config.action_cable.mount_path = nil
49 | # config.action_cable.url = 'wss://example.com/cable'
50 | # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
51 |
52 | # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
53 | # config.force_ssl = true
54 |
55 | # Use the lowest log level to ensure availability of diagnostic information
56 | # when problems arise.
57 | config.log_level = :debug
58 |
59 | # Prepend all log lines with the following tags.
60 | config.log_tags = [ :request_id ]
61 |
62 | # Use a different cache store in production.
63 | # config.cache_store = :mem_cache_store
64 |
65 | # Use a real queuing backend for Active Job (and separate queues per environment)
66 | # config.active_job.queue_adapter = :resque
67 | # config.active_job.queue_name_prefix = "pwb-for-heroku_#{Rails.env}"
68 | config.action_mailer.perform_caching = false
69 |
70 | # Ignore bad email addresses and do not raise email delivery errors.
71 | # Set this to true and configure the email server for immediate delivery to raise delivery errors.
72 | config.action_mailer.raise_delivery_errors = false
73 |
74 | config.action_mailer.smtp_settings = {
75 | :address => "smtp.sendgrid.net",
76 | :port => 25,
77 | :domain => "propertywebbuilder.com",
78 | :authentication => :plain,
79 | :user_name => Rails.application.secrets.sendgrid_username,
80 | :password => Rails.application.secrets.sendgrid_password
81 | # If deploying to heroku, set below in secrets.yml so above works
82 | # sendgrid_username: <%= ENV['SENDGRID_USERNAME'] %>
83 | # sendgrid_password: <%= ENV['SENDGRID_PASSWORD'] %>
84 | }
85 |
86 |
87 | # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
88 | # the I18n.default_locale when a translation cannot be found).
89 | config.i18n.fallbacks = true
90 |
91 | # Send deprecation notices to registered listeners.
92 | config.active_support.deprecation = :notify
93 |
94 | # Use default logging formatter so that PID and timestamp are not suppressed.
95 | config.log_formatter = ::Logger::Formatter.new
96 |
97 | # Use a different logger for distributed setups.
98 | # require 'syslog/logger'
99 | # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
100 |
101 | if ENV["RAILS_LOG_TO_STDOUT"].present?
102 | logger = ActiveSupport::Logger.new(STDOUT)
103 | logger.formatter = config.log_formatter
104 | config.logger = ActiveSupport::TaggedLogging.new(logger)
105 | end
106 |
107 | # Do not dump schema after migrations.
108 | config.active_record.dump_schema_after_migration = false
109 | end
110 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GIT
2 | remote: https://github.com/etewiah/property_web_builder
3 | revision: 7238aea216cd8c101d7c50ad57a1a3ee2a81e5ca
4 | specs:
5 | pwb (1.4.0)
6 | active_hash
7 | activemodel-serializers-xml
8 | bootstrap-sass
9 | carrierwave
10 | cloudinary
11 | devise
12 | devise-i18n
13 | faker
14 | faraday
15 | firebase
16 | flag_shih_tzu
17 | fog-aws
18 | geocoder
19 | globalize
20 | globalize-accessors
21 | i18n-active_record
22 | jquery-rails
23 | jsonapi-resources (= 0.8.1)
24 | liquid
25 | money-rails (~> 1)
26 | nokogiri
27 | omniauth (~> 1.9.1)
28 | omniauth-facebook
29 | pg (< 1.0)
30 | rails (>= 5.2)
31 | responders
32 | rets
33 | ruby_odata
34 | simple_form
35 |
36 | GIT
37 | remote: https://github.com/fredngo/paloma
38 | revision: 40a84f5dfa5d1ba6b515cecc87470428333f81d6
39 | specs:
40 | paloma (5.0.0)
41 |
42 | GEM
43 | remote: https://rubygems.org/
44 | specs:
45 | actioncable (5.2.6)
46 | actionpack (= 5.2.6)
47 | nio4r (~> 2.0)
48 | websocket-driver (>= 0.6.1)
49 | actionmailer (5.2.6)
50 | actionpack (= 5.2.6)
51 | actionview (= 5.2.6)
52 | activejob (= 5.2.6)
53 | mail (~> 2.5, >= 2.5.4)
54 | rails-dom-testing (~> 2.0)
55 | actionpack (5.2.6)
56 | actionview (= 5.2.6)
57 | activesupport (= 5.2.6)
58 | rack (~> 2.0, >= 2.0.8)
59 | rack-test (>= 0.6.3)
60 | rails-dom-testing (~> 2.0)
61 | rails-html-sanitizer (~> 1.0, >= 1.0.2)
62 | actionview (5.2.6)
63 | activesupport (= 5.2.6)
64 | builder (~> 3.1)
65 | erubi (~> 1.4)
66 | rails-dom-testing (~> 2.0)
67 | rails-html-sanitizer (~> 1.0, >= 1.0.3)
68 | active_hash (3.1.0)
69 | activesupport (>= 5.0.0)
70 | activejob (5.2.6)
71 | activesupport (= 5.2.6)
72 | globalid (>= 0.3.6)
73 | activemodel (5.2.6)
74 | activesupport (= 5.2.6)
75 | activemodel-serializers-xml (1.0.2)
76 | activemodel (> 5.x)
77 | activesupport (> 5.x)
78 | builder (~> 3.1)
79 | activerecord (5.2.6)
80 | activemodel (= 5.2.6)
81 | activesupport (= 5.2.6)
82 | arel (>= 9.0)
83 | activestorage (5.2.6)
84 | actionpack (= 5.2.6)
85 | activerecord (= 5.2.6)
86 | marcel (~> 1.0.0)
87 | activesupport (5.2.6)
88 | concurrent-ruby (~> 1.0, >= 1.0.2)
89 | i18n (>= 0.7, < 2)
90 | minitest (~> 5.1)
91 | tzinfo (~> 1.1)
92 | addressable (2.8.0)
93 | public_suffix (>= 2.0.2, < 5.0)
94 | arel (9.0.0)
95 | autoprefixer-rails (10.4.2.0)
96 | execjs (~> 2)
97 | aws_cf_signer (0.1.3)
98 | backports (2.3.0)
99 | bcrypt (3.1.16)
100 | bindex (0.8.1)
101 | bootstrap-sass (3.4.1)
102 | autoprefixer-rails (>= 5.2.1)
103 | sassc (>= 2.0.0)
104 | builder (3.2.4)
105 | byebug (11.1.3)
106 | carrierwave (2.2.2)
107 | activemodel (>= 5.0.0)
108 | activesupport (>= 5.0.0)
109 | addressable (~> 2.6)
110 | image_processing (~> 1.1)
111 | marcel (~> 1.0.0)
112 | mini_mime (>= 0.1.3)
113 | ssrf_filter (~> 1.0)
114 | closure-compiler (1.1.14)
115 | cloudinary (1.21.0)
116 | aws_cf_signer
117 | rest-client (>= 2.0.0)
118 | coffee-rails (4.2.2)
119 | coffee-script (>= 2.2.0)
120 | railties (>= 4.0.0)
121 | coffee-script (2.4.1)
122 | coffee-script-source
123 | execjs
124 | coffee-script-source (1.12.2)
125 | concurrent-ruby (1.1.9)
126 | crass (1.0.6)
127 | devise (4.8.1)
128 | bcrypt (~> 3.0)
129 | orm_adapter (~> 0.1)
130 | railties (>= 4.1.0)
131 | responders
132 | warden (~> 1.2.3)
133 | devise-i18n (1.10.1)
134 | devise (>= 4.8.0)
135 | domain_name (0.5.20190701)
136 | unf (>= 0.0.5, < 1.0.0)
137 | erubi (1.10.0)
138 | excon (0.90.0)
139 | execjs (2.8.1)
140 | faker (2.19.0)
141 | i18n (>= 1.6, < 2)
142 | faraday (1.9.3)
143 | faraday-em_http (~> 1.0)
144 | faraday-em_synchrony (~> 1.0)
145 | faraday-excon (~> 1.1)
146 | faraday-httpclient (~> 1.0)
147 | faraday-multipart (~> 1.0)
148 | faraday-net_http (~> 1.0)
149 | faraday-net_http_persistent (~> 1.0)
150 | faraday-patron (~> 1.0)
151 | faraday-rack (~> 1.0)
152 | faraday-retry (~> 1.0)
153 | ruby2_keywords (>= 0.0.4)
154 | faraday-em_http (1.0.0)
155 | faraday-em_synchrony (1.0.0)
156 | faraday-excon (1.1.0)
157 | faraday-httpclient (1.0.1)
158 | faraday-multipart (1.0.3)
159 | multipart-post (>= 1.2, < 3)
160 | faraday-net_http (1.0.1)
161 | faraday-net_http_persistent (1.2.0)
162 | faraday-patron (1.0.0)
163 | faraday-rack (1.0.0)
164 | faraday-retry (1.0.3)
165 | ffi (1.15.5)
166 | firebase (0.2.8)
167 | googleauth
168 | httpclient (>= 2.5.3)
169 | json
170 | flag_shih_tzu (0.3.23)
171 | fog-aws (2.0.1)
172 | fog-core (~> 1.38)
173 | fog-json (~> 1.0)
174 | fog-xml (~> 0.1)
175 | ipaddress (~> 0.8)
176 | fog-core (1.43.0)
177 | builder
178 | excon (~> 0.49)
179 | formatador (~> 0.2)
180 | fog-json (1.2.0)
181 | fog-core
182 | multi_json (~> 1.10)
183 | fog-xml (0.1.4)
184 | fog-core
185 | nokogiri (>= 1.5.11, < 2.0.0)
186 | formatador (0.3.0)
187 | geocoder (1.7.2)
188 | globalid (1.0.0)
189 | activesupport (>= 5.0)
190 | globalize (6.0.1)
191 | activemodel (>= 4.2, < 7.0)
192 | activerecord (>= 4.2, < 7.0)
193 | request_store (~> 1.0)
194 | globalize-accessors (0.3.0)
195 | globalize (>= 5.0.0)
196 | googleauth (1.1.0)
197 | faraday (>= 0.17.3, < 2.0)
198 | jwt (>= 1.4, < 3.0)
199 | memoist (~> 0.16)
200 | multi_json (~> 1.11)
201 | os (>= 0.9, < 2.0)
202 | signet (>= 0.16, < 2.a)
203 | hashie (5.0.0)
204 | http-accept (1.7.0)
205 | http-cookie (1.0.4)
206 | domain_name (~> 0.5)
207 | httpclient (2.8.3)
208 | i18n (1.8.11)
209 | concurrent-ruby (~> 1.0)
210 | i18n-active_record (1.1.0)
211 | i18n (>= 0.5.0)
212 | image_processing (1.12.1)
213 | mini_magick (>= 4.9.5, < 5)
214 | ruby-vips (>= 2.0.17, < 3)
215 | ipaddress (0.8.3)
216 | jbuilder (2.11.5)
217 | actionview (>= 5.0.0)
218 | activesupport (>= 5.0.0)
219 | jquery-rails (4.4.0)
220 | rails-dom-testing (>= 1, < 3)
221 | railties (>= 4.2.0)
222 | thor (>= 0.14, < 2.0)
223 | json (2.6.1)
224 | jsonapi-resources (0.8.1)
225 | concurrent-ruby
226 | rails (>= 4.0)
227 | jwt (2.3.0)
228 | liquid (5.1.0)
229 | listen (3.0.8)
230 | rb-fsevent (~> 0.9, >= 0.9.4)
231 | rb-inotify (~> 0.9, >= 0.9.7)
232 | loofah (2.13.0)
233 | crass (~> 1.0.2)
234 | nokogiri (>= 1.5.9)
235 | mail (2.7.1)
236 | mini_mime (>= 0.1.1)
237 | marcel (1.0.2)
238 | memoist (0.16.2)
239 | method_source (1.0.0)
240 | mime-types (3.4.1)
241 | mime-types-data (~> 3.2015)
242 | mime-types-data (3.2022.0105)
243 | mini_magick (4.11.0)
244 | mini_mime (1.1.2)
245 | mini_portile2 (2.7.1)
246 | minitest (5.15.0)
247 | monetize (1.12.0)
248 | money (~> 6.12)
249 | money (6.16.0)
250 | i18n (>= 0.6.4, <= 2)
251 | money-rails (1.15.0)
252 | activesupport (>= 3.0)
253 | monetize (~> 1.9)
254 | money (~> 6.13)
255 | railties (>= 3.0)
256 | multi_json (1.15.0)
257 | multi_xml (0.6.0)
258 | multipart-post (2.1.1)
259 | netrc (0.11.0)
260 | nio4r (2.5.8)
261 | nokogiri (1.13.1)
262 | mini_portile2 (~> 2.7.0)
263 | racc (~> 1.4)
264 | oauth2 (1.4.7)
265 | faraday (>= 0.8, < 2.0)
266 | jwt (>= 1.0, < 3.0)
267 | multi_json (~> 1.3)
268 | multi_xml (~> 0.5)
269 | rack (>= 1.2, < 3)
270 | omniauth (1.9.1)
271 | hashie (>= 3.4.6)
272 | rack (>= 1.6.2, < 3)
273 | omniauth-facebook (9.0.0)
274 | omniauth-oauth2 (~> 1.2)
275 | omniauth-oauth2 (1.7.2)
276 | oauth2 (~> 1.4)
277 | omniauth (>= 1.9, < 3)
278 | orm_adapter (0.5.0)
279 | os (1.1.4)
280 | pg (0.21.0)
281 | public_suffix (4.0.6)
282 | puma (4.3.10)
283 | nio4r (~> 2.0)
284 | racc (1.6.0)
285 | rack (2.2.3)
286 | rack-test (1.1.0)
287 | rack (>= 1.0, < 3)
288 | rails (5.2.6)
289 | actioncable (= 5.2.6)
290 | actionmailer (= 5.2.6)
291 | actionpack (= 5.2.6)
292 | actionview (= 5.2.6)
293 | activejob (= 5.2.6)
294 | activemodel (= 5.2.6)
295 | activerecord (= 5.2.6)
296 | activestorage (= 5.2.6)
297 | activesupport (= 5.2.6)
298 | bundler (>= 1.3.0)
299 | railties (= 5.2.6)
300 | sprockets-rails (>= 2.0.0)
301 | rails-dom-testing (2.0.3)
302 | activesupport (>= 4.2.0)
303 | nokogiri (>= 1.6)
304 | rails-html-sanitizer (1.4.2)
305 | loofah (~> 2.3)
306 | railties (5.2.6)
307 | actionpack (= 5.2.6)
308 | activesupport (= 5.2.6)
309 | method_source
310 | rake (>= 0.8.7)
311 | thor (>= 0.19.0, < 2.0)
312 | rake (13.0.6)
313 | rb-fsevent (0.11.0)
314 | rb-inotify (0.10.1)
315 | ffi (~> 1.0)
316 | request_store (1.5.0)
317 | rack (>= 1.4)
318 | responders (3.0.1)
319 | actionpack (>= 5.0)
320 | railties (>= 5.0)
321 | rest-client (2.1.0)
322 | http-accept (>= 1.7.0, < 2.0)
323 | http-cookie (>= 1.0.2, < 2.0)
324 | mime-types (>= 1.16, < 4.0)
325 | netrc (~> 0.8)
326 | rets (0.11.2)
327 | http-cookie (~> 1.0.0)
328 | httpclient (~> 2.7)
329 | nokogiri (~> 1.5)
330 | ruby-vips (2.1.4)
331 | ffi (~> 1.12)
332 | ruby2_keywords (0.0.5)
333 | ruby_odata (0.1.0)
334 | activesupport (>= 2.3.5)
335 | backports (~> 2.3.0)
336 | nokogiri (>= 1.4.2)
337 | rest-client (>= 1.5.1)
338 | sass (3.7.4)
339 | sass-listen (~> 4.0.0)
340 | sass-listen (4.0.0)
341 | rb-fsevent (~> 0.9, >= 0.9.4)
342 | rb-inotify (~> 0.9, >= 0.9.7)
343 | sass-rails (5.1.0)
344 | railties (>= 5.2.0)
345 | sass (~> 3.1)
346 | sprockets (>= 2.8, < 4.0)
347 | sprockets-rails (>= 2.0, < 4.0)
348 | tilt (>= 1.1, < 3)
349 | sassc (2.4.0)
350 | ffi (~> 1.9)
351 | signet (0.16.0)
352 | addressable (~> 2.8)
353 | faraday (>= 0.17.3, < 2.0)
354 | jwt (>= 1.5, < 3.0)
355 | multi_json (~> 1.10)
356 | simple_form (5.1.0)
357 | actionpack (>= 5.2)
358 | activemodel (>= 5.2)
359 | spring (2.1.1)
360 | spring-watcher-listen (2.0.1)
361 | listen (>= 2.7, < 4.0)
362 | spring (>= 1.2, < 3.0)
363 | sprockets (3.7.2)
364 | concurrent-ruby (~> 1.0)
365 | rack (> 1, < 3)
366 | sprockets-rails (3.4.2)
367 | actionpack (>= 5.2)
368 | activesupport (>= 5.2)
369 | sprockets (>= 3.0.0)
370 | ssrf_filter (1.0.7)
371 | thor (1.2.1)
372 | thread_safe (0.3.6)
373 | tilt (2.0.10)
374 | turbolinks (5.2.1)
375 | turbolinks-source (~> 5.2)
376 | turbolinks-source (5.2.0)
377 | tzinfo (1.2.9)
378 | thread_safe (~> 0.1)
379 | uglifier (4.2.0)
380 | execjs (>= 0.3.0, < 3)
381 | unf (0.1.4)
382 | unf_ext
383 | unf_ext (0.0.8)
384 | warden (1.2.9)
385 | rack (>= 2.0.9)
386 | web-console (3.7.0)
387 | actionview (>= 5.0)
388 | activemodel (>= 5.0)
389 | bindex (>= 0.4.0)
390 | railties (>= 5.0)
391 | websocket-driver (0.7.5)
392 | websocket-extensions (>= 0.1.0)
393 | websocket-extensions (0.1.5)
394 | yui-compressor (0.12.0)
395 |
396 | PLATFORMS
397 | ruby
398 |
399 | DEPENDENCIES
400 | byebug
401 | closure-compiler
402 | coffee-rails (~> 4.2)
403 | fog-core (= 1.43.0)
404 | jbuilder (~> 2.5)
405 | jquery-rails
406 | listen (~> 3.0.5)
407 | paloma!
408 | pg (~> 0.18)
409 | puma (~> 4.3)
410 | pwb!
411 | rails (~> 5.2)
412 | sass-rails (~> 5.0)
413 | spring
414 | spring-watcher-listen (~> 2.0.0)
415 | turbolinks (~> 5)
416 | tzinfo-data
417 | uglifier (>= 1.3.0)
418 | web-console
419 | yui-compressor
420 |
421 | BUNDLED WITH
422 | 2.0.2
423 |
--------------------------------------------------------------------------------
/public/assets/.sprockets-manifest-758e8b8299526c3c45a4a70c9d0abb4c.json:
--------------------------------------------------------------------------------
1 | {"files":{"pwb_admin_panel/application_legacy_1-568d3433b6e6dd551f860790d3d1e1b977dd90adb59dac413ee78edc8ae26841.css":{"logical_path":"pwb_admin_panel/application_legacy_1.css","mtime":"2018-02-27T16:08:44+01:00","size":647219,"digest":"568d3433b6e6dd551f860790d3d1e1b977dd90adb59dac413ee78edc8ae26841","integrity":"sha256-Vo00M7bm3VUfhgeQ09HhuXfdkK21naxBPueO3IriaEE="},"default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css":{"logical_path":"default.css","mtime":"2018-02-14T11:39:42+01:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"pwb/themes/chic-9381e97cbdccb1e41bfc2516b7645e5c880814ef3dcaf75bf95f914a441c3678.css":{"logical_path":"pwb/themes/chic.css","mtime":"2018-02-27T16:08:44+01:00","size":74560,"digest":"9381e97cbdccb1e41bfc2516b7645e5c880814ef3dcaf75bf95f914a441c3678","integrity":"sha256-k4HpfL3MseQb/CUWt2ReXIgIFO89yvdb+V+RSkQcNng="},"pwb/themes/berlin-1cd25828607baafb1f341c5b789ea78b7e51d516018a1f49bd2b5e07f566656b.css":{"logical_path":"pwb/themes/berlin.css","mtime":"2018-02-07T19:31:15+01:00","size":186238,"digest":"1cd25828607baafb1f341c5b789ea78b7e51d516018a1f49bd2b5e07f566656b","integrity":"sha256-HNJYKGB7qvsfNBxbeJ6ni35R1RYBih9JvSteB/VmZWs="},"pwb/themes/squares-b62e3c12eea7f8422898cae3580972063d1d62d248e12f132affc6b4840051a0.css":{"logical_path":"pwb/themes/squares.css","mtime":"2018-02-27T16:08:44+01:00","size":110682,"digest":"b62e3c12eea7f8422898cae3580972063d1d62d248e12f132affc6b4840051a0","integrity":"sha256-ti48Eu6n+EIomMrjWAlyBj0dYtJI4S8TKv/GtIQAUaA="},"pwb/themes/matt-e91075e2387d2887e24d9c8f43ffb4046d4fb7cbbaba3793e1793a9f7bdb76b3.css":{"logical_path":"pwb/themes/matt.css","mtime":"2018-02-07T19:31:15+01:00","size":2724,"digest":"e91075e2387d2887e24d9c8f43ffb4046d4fb7cbbaba3793e1793a9f7bdb76b3","integrity":"sha256-6RB14jh9KIfiTZyPQ/+0BG1Pt8u6ujeT4Xk6n3vbdrM="},"pwb/themes/vic-0256d94eeb69932cfa4dccea99e19937c64cb7dd7bef9260e82c2376edcc1314.css":{"logical_path":"pwb/themes/vic.css","mtime":"2018-02-07T19:31:15+01:00","size":17050,"digest":"0256d94eeb69932cfa4dccea99e19937c64cb7dd7bef9260e82c2376edcc1314","integrity":"sha256-AlbZTutpkyz6TczqmeGZN8ZMt91775Jg6Cwjdu3MExQ="},"pwb/themes/vic-0a885b61bffa831443a2d58c4b76c9a08d90f5740e9b9578d1444a88a97ec942.js":{"logical_path":"pwb/themes/vic.js","mtime":"2018-02-27T16:08:44+01:00","size":1329327,"digest":"0a885b61bffa831443a2d58c4b76c9a08d90f5740e9b9578d1444a88a97ec942","integrity":"sha256-CohbYb/6gxRDotWMS3bJoI2Q9XQOm5V40URKiKl+yUI="},"pwb/themes/squares-d94ee752aa958db7f76bef0fd6b6f724ecb3f088356e033099be08a5945ff227.js":{"logical_path":"pwb/themes/squares.js","mtime":"2018-02-27T16:08:44+01:00","size":1815235,"digest":"d94ee752aa958db7f76bef0fd6b6f724ecb3f088356e033099be08a5945ff227","integrity":"sha256-2U7nUqqVjbf3a+8P1rb3JOyz8Ig1bgMwmb4IpZRf8ic="},"pwb/themes/berlin-4ea755fdcbb83e54ca92a2f040280de5663ac7fb6bfc9b90a41288f8f2bb6905.js":{"logical_path":"pwb/themes/berlin.js","mtime":"2018-02-27T16:08:44+01:00","size":1399324,"digest":"4ea755fdcbb83e54ca92a2f040280de5663ac7fb6bfc9b90a41288f8f2bb6905","integrity":"sha256-TqdV/cu4PlTKkqLwQCgN5WY6x/tr/JuQpBKI+PK7aQU="},"pwb_admin_panel/application_legacy_1-3fd7eee8e5898775df49f8c876c986afbf07e5412e9751bf1b999abccd7df4c8.js":{"logical_path":"pwb_admin_panel/application_legacy_1.js","mtime":"2018-02-27T16:08:44+01:00","size":1785475,"digest":"3fd7eee8e5898775df49f8c876c986afbf07e5412e9751bf1b999abccd7df4c8","integrity":"sha256-P9fu6OWJh3XfSfjIdsmGr78H5UEul1G/G5mavM199Mg="},"pwb/config-fed35e11f59bcd61c0b708d359b50d58afda27aab964962ce4865c1ea44e43a8.js":{"logical_path":"pwb/config.js","mtime":"2018-02-27T16:08:44+01:00","size":365142,"digest":"fed35e11f59bcd61c0b708d359b50d58afda27aab964962ce4865c1ea44e43a8","integrity":"sha256-/tNeEfWbzWHAtwjTWbUNWK/aJ6q5ZJYs5IZcHqROQ6g="},"pwb/themes/default-dc1a3ea2c9a58796a77566a6308ff868745724c81ed20d9bce40112d6d066687.css":{"logical_path":"pwb/themes/default.css","mtime":"2018-02-07T19:31:15+01:00","size":166812,"digest":"dc1a3ea2c9a58796a77566a6308ff868745724c81ed20d9bce40112d6d066687","integrity":"sha256-3Bo+osmlh5andWamMI/4aHRXJMge0g2bzkARLW0GZoc="},"application-e88a61432bb1bda646666bc6dfe567bdd326a2591a29a59f04838a9e0133ab3f.js":{"logical_path":"application.js","mtime":"2018-02-27T16:08:44+01:00","size":371820,"digest":"e88a61432bb1bda646666bc6dfe567bdd326a2591a29a59f04838a9e0133ab3f","integrity":"sha256-6IphQyuxvaZGZmvG3+VnvdMmolkaKaWfBIOKngEzqz8="},"application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css":{"logical_path":"application.css","mtime":"2016-12-04T10:44:09+01:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"property_web_scraper/application-117137a34146570cc9eec484b58a3652ff12927a2a4db7259299dce608fe5bc2.js":{"logical_path":"property_web_scraper/application.js","mtime":"2018-02-12T13:22:34+01:00","size":315723,"digest":"117137a34146570cc9eec484b58a3652ff12927a2a4db7259299dce608fe5bc2","integrity":"sha256-EXE3o0FGVwzJ7sSEtYo2Uv8SknoqTbclkpnc5gj+W8I="},"property_web_scraper/application-6bb4c93701711631912a6fb9b6e732e1ff498b6ae627ae5ff918e8b9844d3681.css":{"logical_path":"property_web_scraper/application.css","mtime":"2017-12-03T22:03:22+01:00","size":68,"digest":"6bb4c93701711631912a6fb9b6e732e1ff498b6ae627ae5ff918e8b9844d3681","integrity":"sha256-a7TJNwFxFjGRKm+5tucy4f9Ji2rmJ65f+RjouYRNNoE="},"pwb/application-e5dca6168b1e801a8ec369a65fcb40ba6ee2a697ad9238a27babb3a7f388d553.js":{"logical_path":"pwb/application.js","mtime":"2018-02-27T16:08:44+01:00","size":1246920,"digest":"e5dca6168b1e801a8ec369a65fcb40ba6ee2a697ad9238a27babb3a7f388d553","integrity":"sha256-5dymFosegBqOw2mmX8tAum7ippetkjiie6uzp/OI1VM="},"pwb_admin_panel/application-5e3fba293ba730d7c27a57bb45df14ba3858a75a06baf9fa07b8c4260ff00b95.js":{"logical_path":"pwb_admin_panel/application.js","mtime":"2018-01-18T19:34:29+01:00","size":1836032,"digest":"5e3fba293ba730d7c27a57bb45df14ba3858a75a06baf9fa07b8c4260ff00b95","integrity":"sha256-Xj+6KTunMNfCele7Rd8UujhYp1oGuvn6B7jEJg/wC5U="},"pwb/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css":{"logical_path":"pwb/application.css","mtime":"2018-02-27T16:08:44+01:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"pwb_admin_panel/application-533dc7df547722ab0e3328b84391671ed6a751af1b3b25bc77cd5e6f47255084.css":{"logical_path":"pwb_admin_panel/application.css","mtime":"2018-02-23T17:38:15+01:00","size":660051,"digest":"533dc7df547722ab0e3328b84391671ed6a751af1b3b25bc77cd5e6f47255084","integrity":"sha256-Uz3H31R3IqsOMyi4Q5FnHtanUa8bOyW8d81eb0clUIQ="},"pwb_admin_panel/application-3bad9a5f7fff302aed8500b4e54d77f174b73c281cade87377f6d4266addf252.js":{"logical_path":"pwb_admin_panel/application.js","mtime":"2018-02-12T13:22:34+01:00","size":1815658,"digest":"3bad9a5f7fff302aed8500b4e54d77f174b73c281cade87377f6d4266addf252","integrity":"sha256-O62aX3//MCrthQC05U138XS3PCgcrehzd/bUJmrd8lI="},"pwb/themes/berlin-ffbee86fff3c91177266b21a0d7603058d0ca3d6552f59a8d50a73f2df4d4489.css":{"logical_path":"pwb/themes/berlin.css","mtime":"2018-02-12T13:22:34+01:00","size":186379,"digest":"ffbee86fff3c91177266b21a0d7603058d0ca3d6552f59a8d50a73f2df4d4489","integrity":"sha256-/77ob/88kRdyZrIaDXYDBY0Mo9ZVL1mo1Qpz8t9NRIk="},"pwb/themes/matt-01b3ce8b3ac53d84409f3320180720000d77d3a0ee1fc9de7d5e7bac11d98a5c.css":{"logical_path":"pwb/themes/matt.css","mtime":"2018-02-12T13:22:34+01:00","size":2865,"digest":"01b3ce8b3ac53d84409f3320180720000d77d3a0ee1fc9de7d5e7bac11d98a5c","integrity":"sha256-AbPOizrFPYRAnzMgGAcgAA1306DuH8nefV57rBHZilw="},"pwb/themes/vic-41c072e56925519989fcb01708ea2d0a28a306039a03a46405baa670bb882563.css":{"logical_path":"pwb/themes/vic.css","mtime":"2018-02-12T13:22:34+01:00","size":17332,"digest":"41c072e56925519989fcb01708ea2d0a28a306039a03a46405baa670bb882563","integrity":"sha256-QcBy5WklUZmJ/LAXCOotCiijBgOaA6RkBbqmcLuIJWM="},"pwb/themes/default-c6bcf769e0e35a3e770a1d1d0fe35d8bda5e02ac4ac4e87fd641f4e02dc15531.css":{"logical_path":"pwb/themes/default.css","mtime":"2018-02-12T13:22:34+01:00","size":166953,"digest":"c6bcf769e0e35a3e770a1d1d0fe35d8bda5e02ac4ac4e87fd641f4e02dc15531","integrity":"sha256-xrz3aeDjWj53Ch0dD+Ndi9peAqxKxOh/1kH04C3BVTE="},"pwb/themes/berlin-3e019fc1e97a218b948ea9aa36386f4993994f315bdefbec0f810853269c5798.css":{"logical_path":"pwb/themes/berlin.css","mtime":"2018-02-20T19:25:04+01:00","size":186520,"digest":"3e019fc1e97a218b948ea9aa36386f4993994f315bdefbec0f810853269c5798","integrity":"sha256-PgGfwel6IYuUjqmqNjhvSZOZTzFb3vvsD4EIUyacV5g="},"pwb/themes/matt-29634fa9a0276002d135de7dbc8d27f2638c9c3fd9952387a7f2874f150c1974.css":{"logical_path":"pwb/themes/matt.css","mtime":"2018-02-20T19:25:03+01:00","size":3006,"digest":"29634fa9a0276002d135de7dbc8d27f2638c9c3fd9952387a7f2874f150c1974","integrity":"sha256-KWNPqaAnYALRNd59vI0n8mOMnD/ZlSOHp/KHTxUMGXQ="},"pwb/themes/vic-1fafb3f7c67073c20cf2a398f7ccae40ea98754547fb53bffadba211bd64b270.css":{"logical_path":"pwb/themes/vic.css","mtime":"2018-02-20T19:25:03+01:00","size":17614,"digest":"1fafb3f7c67073c20cf2a398f7ccae40ea98754547fb53bffadba211bd64b270","integrity":"sha256-H6+z98Zwc8IM8qOY98yuQOqYdUVH+1O/+tuiEb1ksnA="},"pwb/themes/default-f3051cb6721202ee912ec89f7abb9ecd24f9232e2f0918754f5f1b73ef3ac741.css":{"logical_path":"pwb/themes/default.css","mtime":"2018-02-20T19:25:04+01:00","size":167094,"digest":"f3051cb6721202ee912ec89f7abb9ecd24f9232e2f0918754f5f1b73ef3ac741","integrity":"sha256-8wUctnISAu6RLsiferuezST5Iy4vCRh1T18bc+86x0E="},"property_web_scraper/spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css":{"logical_path":"property_web_scraper/spp_vuetify.css","mtime":"2018-02-14T11:39:42+01:00","size":3837,"digest":"bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6","integrity":"sha256-vNYuZ19q2stq7tW5yoIgRtmUteYOWuUwRQDcWOLqeMY="},"property_web_scraper/spp_vuetify-bcab8bceb36bd36f6749c520653852328354e35319808ffd2f238fb794ceb5c1.js":{"logical_path":"property_web_scraper/spp_vuetify.js","mtime":"2018-02-14T11:39:42+01:00","size":1377565,"digest":"bcab8bceb36bd36f6749c520653852328354e35319808ffd2f238fb794ceb5c1","integrity":"sha256-vKuLzrNr029nScUgZThSMoNU41MZgI/9LyOPt5TOtcE="},"property_web_scraper/application-c29ff4bd1a1696fa1399310bb2e558f0db9ef3e7aa0efbf1f91289861a2289fc.js":{"logical_path":"property_web_scraper/application.js","mtime":"2018-02-27T16:08:44+01:00","size":315740,"digest":"c29ff4bd1a1696fa1399310bb2e558f0db9ef3e7aa0efbf1f91289861a2289fc","integrity":"sha256-wp/0vRoWlvoTmTELsuVY8Nue8+eqDvvx+RKJhhoiifw="},"property_web_scraper/application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css":{"logical_path":"property_web_scraper/application.css","mtime":"2018-02-14T11:39:42+01:00","size":153,"digest":"41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c","integrity":"sha256-QbjjqmwUyUhnO0T48eTsUPi3g/7LKxQR/loSHOUnvBw="},"pwb_admin_panel/application-fcf470d4911d3080d2732d4aaa67dc892e0b4a32c429899cff0a7a9f28cc2347.js":{"logical_path":"pwb_admin_panel/application.js","mtime":"2018-02-23T17:38:15+01:00","size":1815690,"digest":"fcf470d4911d3080d2732d4aaa67dc892e0b4a32c429899cff0a7a9f28cc2347","integrity":"sha256-/PRw1JEdMIDScy1KqmfciS4LSjLEKYmc/wp6nyjMI0c="},"pwb/themes/berlin-2fde7a30162ec3181e3212732933517bb1381ca5213da1bf286622cb0f5ff03a.css":{"logical_path":"pwb/themes/berlin.css","mtime":"2018-02-27T16:08:44+01:00","size":186661,"digest":"2fde7a30162ec3181e3212732933517bb1381ca5213da1bf286622cb0f5ff03a","integrity":"sha256-L956MBYuwxgeMhJzKTNRe7E4HKUhPaG/KGYiyw9f8Do="},"pwb/themes/matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css":{"logical_path":"pwb/themes/matt.css","mtime":"2018-02-27T16:08:44+01:00","size":3147,"digest":"e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f","integrity":"sha256-4yR9Xx9T30HBcFKgwNB4E00SD8mpMCK3c10HYk3E9E8="},"pwb/themes/vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css":{"logical_path":"pwb/themes/vic.css","mtime":"2018-02-27T16:08:44+01:00","size":17896,"digest":"45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df","integrity":"sha256-RfGUrsix/9G+Hlegd0jFSvOgjPPJmeMsi8/Dd9Ibh98="},"pwb/themes/default-33611212fcdf06d092b4315a20db16a516ec01c039699e9e3a171a3c50af50a7.css":{"logical_path":"pwb/themes/default.css","mtime":"2018-02-27T16:08:44+01:00","size":167235,"digest":"33611212fcdf06d092b4315a20db16a516ec01c039699e9e3a171a3c50af50a7","integrity":"sha256-M2ESEvzfBtCStDFaINsWpRbsAcA5aZ6eOhcaPFCvUKc="},"pwb_admin_panel/application-27fbcf92fb23e2e1398960a8770a935d7e163a9760c49bfe61eeb36670cee94a.js":{"logical_path":"pwb_admin_panel/application.js","mtime":"2018-02-27T16:08:44+01:00","size":1816125,"digest":"27fbcf92fb23e2e1398960a8770a935d7e163a9760c49bfe61eeb36670cee94a","integrity":"sha256-J/vPkvsj4uE5iWCodwqTXX4WOpdgxJv+Ye6zZnDO6Uo="},"pwb_admin_panel/application-921b322c827540c7f7b6e2eedccf942c1062cd10415556e2d140ab48767b6915.css":{"logical_path":"pwb_admin_panel/application.css","mtime":"2018-02-27T16:08:44+01:00","size":660178,"digest":"921b322c827540c7f7b6e2eedccf942c1062cd10415556e2d140ab48767b6915","integrity":"sha256-khsyLIJ1QMf3tuLu3M+ULBBizRBBVVbi0UCrSHZ7aRU="}},"assets":{"pwb_admin_panel/application_legacy_1.css":"pwb_admin_panel/application_legacy_1-568d3433b6e6dd551f860790d3d1e1b977dd90adb59dac413ee78edc8ae26841.css","default.css":"default-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css","pwb/themes/chic.css":"pwb/themes/chic-9381e97cbdccb1e41bfc2516b7645e5c880814ef3dcaf75bf95f914a441c3678.css","pwb/themes/berlin.css":"pwb/themes/berlin-2fde7a30162ec3181e3212732933517bb1381ca5213da1bf286622cb0f5ff03a.css","pwb/themes/squares.css":"pwb/themes/squares-b62e3c12eea7f8422898cae3580972063d1d62d248e12f132affc6b4840051a0.css","pwb/themes/matt.css":"pwb/themes/matt-e3247d5f1f53df41c17052a0c0d078134d120fc9a93022b7735d07624dc4f44f.css","pwb/themes/vic.css":"pwb/themes/vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css","pwb/themes/vic.js":"pwb/themes/vic-0a885b61bffa831443a2d58c4b76c9a08d90f5740e9b9578d1444a88a97ec942.js","pwb/themes/squares.js":"pwb/themes/squares-d94ee752aa958db7f76bef0fd6b6f724ecb3f088356e033099be08a5945ff227.js","pwb/themes/berlin.js":"pwb/themes/berlin-4ea755fdcbb83e54ca92a2f040280de5663ac7fb6bfc9b90a41288f8f2bb6905.js","pwb_admin_panel/application_legacy_1.js":"pwb_admin_panel/application_legacy_1-3fd7eee8e5898775df49f8c876c986afbf07e5412e9751bf1b999abccd7df4c8.js","pwb/config.js":"pwb/config-fed35e11f59bcd61c0b708d359b50d58afda27aab964962ce4865c1ea44e43a8.js","pwb/themes/default.css":"pwb/themes/default-33611212fcdf06d092b4315a20db16a516ec01c039699e9e3a171a3c50af50a7.css","application.js":"application-e88a61432bb1bda646666bc6dfe567bdd326a2591a29a59f04838a9e0133ab3f.js","application.css":"application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css","property_web_scraper/application.js":"property_web_scraper/application-c29ff4bd1a1696fa1399310bb2e558f0db9ef3e7aa0efbf1f91289861a2289fc.js","property_web_scraper/application.css":"property_web_scraper/application-41b8e3aa6c14c948673b44f8f1e4ec50f8b783fecb2b1411fe5a121ce527bc1c.css","pwb/application.js":"pwb/application-e5dca6168b1e801a8ec369a65fcb40ba6ee2a697ad9238a27babb3a7f388d553.js","pwb_admin_panel/application.js":"pwb_admin_panel/application-27fbcf92fb23e2e1398960a8770a935d7e163a9760c49bfe61eeb36670cee94a.js","pwb/application.css":"pwb/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css","pwb_admin_panel/application.css":"pwb_admin_panel/application-921b322c827540c7f7b6e2eedccf942c1062cd10415556e2d140ab48767b6915.css","property_web_scraper/spp_vuetify.css":"property_web_scraper/spp_vuetify-bcd62e675f6adacb6aeed5b9ca822046d994b5e60e5ae5304500dc58e2ea78c6.css","property_web_scraper/spp_vuetify.js":"property_web_scraper/spp_vuetify-bcab8bceb36bd36f6749c520653852328354e35319808ffd2f238fb794ceb5c1.js"}}
--------------------------------------------------------------------------------
/public/assets/pwb/themes/vic-45f194aec8b1ffd1be1e57a07748c54af3a08cf3c999e32c8bcfc377d21b87df.css:
--------------------------------------------------------------------------------
1 | .contenedor_idiomas{background:blue}ul.idiomas{float:right;padding:0 15px 10px 10px;margin:-7px 0px -5px 10px;background-color:#fff}ul.idiomas li{float:left;list-style:none outside none;margin:0 0 0 5px;padding:11px 0 0 0;width:20px}ul.idiomas li a{display:block;width:20px;height:14px;outline:1px solid #555;margin:0}ul.idiomas .es{background:url("/assets/idiomas.png") 0 0 no-repeat}ul.idiomas .en,ul.idiomas .uk{background:url("/assets/idiomas.png") -20px 0}ul.idiomas .ru{background:url("/assets/idiomas.png") -40px 0}ul.idiomas .sv{background:url("/assets/idiomas.png") -60px 0}ul.idiomas .no{background:url("/assets/idiomas.png") -80px 0}ul.idiomas .de{background:url("/assets/idiomas.png") -100px 0}ul.idiomas .fr{background:url("/assets/idiomas.png") -120px 0}ul.idiomas .ne{background:url("/assets/idiomas.png") -140px 0}ul.idiomas .ch{background:url("/assets/idiomas.png") -160px 0}ul.idiomas .fi{background:url("/assets/idiomas.png") -180px 0}ul.idiomas .eu{background:url("/assets/idiomas.png") -200px 0}ul.idiomas .pt{background:url("/assets/idiomas.png") -220px 0}ul.idiomas .ar{background:url("/assets/idiomas.png") -240px 0}ul.idiomas .ca{background:url("/assets/idiomas.png") -260px 0}ul.idiomas .br{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/br.svg") no-repeat;background-size:cover}ul.idiomas .cl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/cl.svg") no-repeat;background-size:cover}ul.idiomas .hi{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/hi.svg") no-repeat;background-size:cover}ul.idiomas .it{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/it.svg") no-repeat;background-size:cover}ul.idiomas .mx{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/mx.svg") no-repeat;background-size:cover}ul.idiomas .nl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/nl.svg") no-repeat;background-size:cover}ul.idiomas .pl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/pl.svg") no-repeat;background-size:cover}ul.idiomas .ro{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/ro.svg") no-repeat;background-size:cover}ul.idiomas .us{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/us.svg") no-repeat;background-size:cover}ul.idiomas .vi{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/vn.svg") no-repeat;background-size:cover}ul.idiomas .tr{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/tr.svg") no-repeat;background-size:cover}ul.idiomas .kr{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/kr.svg") no-repeat;background-size:cover}ul.idiomas .bg{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/bg.svg") no-repeat;background-size:cover}ul.idiomas li.selected,ul.idiomas li:hover{background:url("/assets/simple-nav-arrow.png") no-repeat top center}.slick-slider{position:relative;display:block;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.slick-track{position:relative;top:0;left:0;display:block}.slick-track:before,.slick-track:after{display:table;content:''}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir='rtl'] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.slick-loading .slick-list{background:#fff url("/assets/ajax-loader.gif") center center no-repeat}@font-face{}.slick-prev,.slick-next{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;height:20px;margin-top:-10px;padding:0;cursor:pointer;color:transparent;border:none;outline:none;z-index:9}.slick-prev:hover:before,.slick-prev:focus:before,.slick-next:hover:before,.slick-next:focus:before{opacity:1}.slick-prev.slick-disabled:before,.slick-next.slick-disabled:before{opacity:.6}.slick-prev:before,.slick-next:before{font-family:'fontAwesome';font-size:20px;line-height:1;opacity:1;color:white;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:0}[dir='rtl'] .slick-prev{right:-25px;left:auto}.slick-prev:before{content:'\f104'}[dir='rtl'] .slick-prev:before{content:'\f104'}.slick-next{right:0}[dir='rtl'] .slick-next{right:auto;left:-25px}.slick-next:before{content:'\f105'}[dir='rtl'] .slick-next:before{content:'\f105'}.slick-dots{position:absolute;bottom:-45px;display:block;width:100%;padding:0;list-style:none;text-align:center}.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0 5px;padding:0;cursor:pointer}.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent}.slick-dots li button:hover,.slick-dots li button:focus{outline:none}.slick-dots li button:hover:before,.slick-dots li button:focus:before{opacity:1}.slick-dots li button:before{font-family:'slick';font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:'•';text-align:center;opacity:.25;color:black;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-dots li.slick-active button:before{opacity:.75;color:black}.contenedor_idiomas{background:blue}ul.idiomas{float:right;padding:0 15px 10px 10px;margin:-7px 0px -5px 10px;background-color:#fff}ul.idiomas li{float:left;list-style:none outside none;margin:0 0 0 5px;padding:11px 0 0 0;width:20px}ul.idiomas li a{display:block;width:20px;height:14px;outline:1px solid #555;margin:0}ul.idiomas .es{background:url("/assets/idiomas.png") 0 0 no-repeat}ul.idiomas .en,ul.idiomas .uk{background:url("/assets/idiomas.png") -20px 0}ul.idiomas .ru{background:url("/assets/idiomas.png") -40px 0}ul.idiomas .sv{background:url("/assets/idiomas.png") -60px 0}ul.idiomas .no{background:url("/assets/idiomas.png") -80px 0}ul.idiomas .de{background:url("/assets/idiomas.png") -100px 0}ul.idiomas .fr{background:url("/assets/idiomas.png") -120px 0}ul.idiomas .ne{background:url("/assets/idiomas.png") -140px 0}ul.idiomas .ch{background:url("/assets/idiomas.png") -160px 0}ul.idiomas .fi{background:url("/assets/idiomas.png") -180px 0}ul.idiomas .eu{background:url("/assets/idiomas.png") -200px 0}ul.idiomas .pt{background:url("/assets/idiomas.png") -220px 0}ul.idiomas .ar{background:url("/assets/idiomas.png") -240px 0}ul.idiomas .ca{background:url("/assets/idiomas.png") -260px 0}ul.idiomas .br{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/br.svg") no-repeat;background-size:cover}ul.idiomas .cl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/cl.svg") no-repeat;background-size:cover}ul.idiomas .hi{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/hi.svg") no-repeat;background-size:cover}ul.idiomas .it{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/it.svg") no-repeat;background-size:cover}ul.idiomas .mx{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/mx.svg") no-repeat;background-size:cover}ul.idiomas .nl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/nl.svg") no-repeat;background-size:cover}ul.idiomas .pl{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/pl.svg") no-repeat;background-size:cover}ul.idiomas .ro{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/ro.svg") no-repeat;background-size:cover}ul.idiomas .us{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/us.svg") no-repeat;background-size:cover}ul.idiomas .vi{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/vn.svg") no-repeat;background-size:cover}ul.idiomas .tr{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/tr.svg") no-repeat;background-size:cover}ul.idiomas .kr{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/kr.svg") no-repeat;background-size:cover}ul.idiomas .bg{background:url("https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/flags/4x3/bg.svg") no-repeat;background-size:cover}ul.idiomas li.selected,ul.idiomas li:hover{background:url("/assets/simple-nav-arrow.png") no-repeat top center}.social-icons .fa{font-size:1.5em}.social-icons .fa{width:40px;height:40px;line-height:40px;text-align:center;color:#FFF;color:rgba(255,255,255,0.8);-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-ms-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out;cursor:pointer}.social-icons.icon-circle .fa{border-radius:50%}.social-icons.icon-rounded .fa{border-radius:5px}.social-icons.icon-flat .fa{border-radius:0}.social-icons .fa:hover,.social-icons .fa:active{color:#FFF;-webkit-box-shadow:1px 1px 3px #333;-moz-box-shadow:1px 1px 3px #333;box-shadow:1px 1px 3px #333}.social-icons.icon-zoom .fa:hover,.social-icons.icon-zoom .fa:active{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}.social-icons.icon-rotate .fa:hover,.social-icons.icon-rotate .fa:active{-webkit-transform:scale(1.1) rotate(360deg);-moz-transform:scale(1.1) rotate(360deg);-ms-transform:scale(1.1) rotate(360deg);-o-transform:scale(1.1) rotate(360deg);transform:scale(1.1) rotate(360deg)}.social-icons .fa-adn{background-color:#504e54}.social-icons .fa-apple{background-color:#aeb5c5}.social-icons .fa-android{background-color:#A5C63B}.social-icons .fa-bitbucket,.social-icons .fa-bitbucket-square{background-color:#003366}.social-icons .fa-bitcoin,.social-icons .fa-btc{background-color:#F7931A}.social-icons .fa-css3{background-color:#1572B7}.social-icons .fa-dribbble{background-color:#F46899}.social-icons .fa-dropbox{background-color:#018BD3}.social-icons .fa-facebook,.social-icons .fa-facebook-square{background-color:#3C599F}.social-icons .fa-flickr{background-color:#FF0084}.social-icons .fa-foursquare{background-color:#0086BE}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{background-color:#070709}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{background-color:#CF3D2E}.social-icons .fa-html5{background-color:#E54D26}.social-icons .fa-instagram{background-color:#A1755C}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{background-color:#0085AE}.social-icons .fa-linux{background-color:#FBC002;color:#333}.social-icons .fa-maxcdn{background-color:#F6AE1C}.social-icons .fa-pagelines{background-color:#241E20;color:#3984EA}.social-icons .fa-pinterest,.social-icons .fa-pinterest-square{background-color:#CC2127}.social-icons .fa-renren{background-color:#025DAC}.social-icons .fa-skype{background-color:#01AEF2}.social-icons .fa-stack-exchange{background-color:#245590}.social-icons .fa-stack-overflow{background-color:#FF7300}.social-icons .fa-trello{background-color:#265A7F}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{background-color:#314E6C}.social-icons .fa-twitter,.social-icons .fa-twitter-square{background-color:#32CCFE}.social-icons .fa-vimeo-square{background-color:#229ACC}.social-icons .fa-vk{background-color:#375474}.social-icons .fa-weibo{background-color:#D72B2B}.social-icons .fa-windows{background-color:#12B6F3}.social-icons .fa-xing,.social-icons .fa-xing-square{background-color:#00555C}.social-icons .fa-youtube,.social-icons .fa-youtube-play,.social-icons .fa-youtube-square{background-color:#C52F30}.gm-style-iw{top:1px !important;left:0px !important;background-color:#fff}#iw-container{margin-bottom:0px}#iw-container .iw-title{font-family:'Open Sans Condensed', sans-serif;font-size:22px;font-weight:400;padding:10px;background-color:#48b5e9;color:white;margin:0;border-radius:2px 2px 0 0}#iw-container .iw-content{font-size:13px;line-height:18px;font-weight:400;overflow-y:auto;overflow-x:hidden}.iw-subTitle{font-size:16px;font-weight:700;padding:5px}.slick-slider{width:100%}.slick-slider .slick-arrow{height:80px;width:80px}.slick-slider .slick-prev,.slick-slider .slick-next{background-color:transparent;-webkit-transition:all 0.5s;-moz-transition:all 0.5s;-ms-transition:all 0.5s;-o-transition:all 0.5s;transition:all 0.5s}.slick-slider .slick-prev::before,.slick-slider .slick-next::before{font-family:"fontAwesome";font-size:50px}.slick-slider .aa-top-slider-single{width:100%;position:relative}.slick-slider .aa-top-slider-single img{width:100%;height:700px;object-fit:cover}.slick-slider .aa-top-slider-single .aa-top-slider-content{background-color:rgba(255,255,255,0.8);left:20%;padding:30px;position:absolute;top:40%;z-index:999}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-catg{font-family:"Poppins", sans-serif;font-size:25px;font-weight:bold;letter-spacing:5px;text-transform:uppercase;color:#555;line-height:25px}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-title{color:#555;font-size:40px;font-weight:bold;padding-bottom:5px;text-transform:uppercase}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-location{font-size:14px}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-location i{margin-right:5px}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-off{font-size:14px;font-family:"Poppins", sans-serif;color:#555;display:inline-block;margin-top:10px;font-weight:bold}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-price{font-family:"Poppins", sans-serif;font-size:30px;font-weight:bold;text-transform:uppercase;margin-top:-5px}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-btn{display:inline-block;-webkit-transition:all 0.5s;-moz-transition:all 0.5s;-ms-transition:all 0.5s;-o-transition:all 0.5s;transition:all 0.5s;text-transform:uppercase;font-size:15px}.slick-slider .aa-top-slider-single .aa-top-slider-content .aa-top-slider-btn span{margin-left:3px}.listing-card .card-image{max-height:250px}ul.aux-info{width:100%;margin:0;padding:0;display:block;background:#fcfcfc;border-top:1px solid #e0eded}ul.aux-info li{display:table-cell;padding:10px 15px;vertical-align:middle;border-right:1px solid #e0eded}ul.aux-info li:last-child{border:0}ul.aux-info li i{font-size:18px;margin-right:8px;color:#333}ul.aux-info{display:table;width:100%;border:1px solid #e0eded}ul.aux-info li{padding:10px 10px;font-size:11px;text-align:center}ul.aux-info li i{display:block}.wp-block.property.list .wp-block-content .content-title{color:#333}.primary-image .ribbon{position:absolute;right:15px}ul.aux-info{margin-top:9px}ul.aux-info li{font-size:14px;width:25%}ul.aux-info li i{display:inline}.estate .thumbnail-images{margin-bottom:0}#form_solicitar_info textarea{min-height:100px;width:100%}#extras_ficha{padding:0px}#extras_ficha li{float:left;width:33%}#extras_ficha li i{font-size:18px}#resp_enviar{float:left;width:100%;margin:15px 0 0 0}@media (max-width: 767px){ul.list-listings .listing-body .meta-info{max-width:50%}.wp-block{margin-bottom:15px !important}ul.aux-info{width:100%;display:table}ul.aux-info li{padding:10px;font-size:11px;text-align:center}ul.aux-info li:last-child{border:0}ul.aux-info li i{display:block;font-size:18px;margin-right:0;color:#333}}.service-panel{min-height:400px}.section .icon-service{color:#B2B2B2;font-size:45px;border:1px solid #B2B2B2;-webkit-border-radius:100px;-moz-border-radius:100px;-ms-border-radius:100px;-o-border-radius:100px;border-radius:100px;transition:all 300ms ease-in-out;-o-transition:all 300ms ease-in-out;-moz-transition:all 300ms ease-in-out;-webkit-transition:all 300ms ease-in-out;text-align:center;width:110px;padding:30px;margin:13px 0}.parallax-container{min-height:380px;line-height:0;height:auto;color:rgba(255,255,255,0.9)}.parallax-container .section{width:100%}@media only screen and (max-width: 992px){.parallax-container .section{position:absolute;top:40%}#index-banner .section{top:10%}}@media only screen and (max-width: 600px){#index-banner .section{top:0}}.breadcrumb-container{margin-right:20px}.breadcrumb-nav{margin:0px 1px 0px 1px;width:auto}.material-icons{max-width:30px;overflow:hidden}nav ul a,nav .brand-logo{color:#444}p{line-height:2rem}.button-collapse{color:#26a69a}.main-container{margin:0 auto;max-width:1280px;width:100%}@media only screen and (min-width: 601px){.main-container{width:95%}}@media only screen and (min-width: 993px){.main-container{width:70%}}.icon-block{padding:0 15px}.icon-block .material-icons{font-size:inherit}footer.page-footer{margin:0}body{display:flex;min-height:100vh;flex-direction:column}main{flex:1 0 auto}.container-off{padding:0px 15px}
2 |
--------------------------------------------------------------------------------
/db/schema.rb:
--------------------------------------------------------------------------------
1 | # This file is auto-generated from the current state of the database. Instead
2 | # of editing this file, please use the migrations feature of Active Record to
3 | # incrementally modify your database, and then regenerate this schema definition.
4 | #
5 | # Note that this schema.rb definition is the authoritative source for your
6 | # database schema. If you need to create the application database on another
7 | # system, you should be using db:schema:load, not running all the migrations
8 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9 | # you'll amass, the slower it'll run and the greater likelihood for issues).
10 | #
11 | # It's strongly recommended that you check this file into your version control system.
12 |
13 | ActiveRecord::Schema.define(version: 20180130121938) do
14 |
15 | # These are extensions that must be enabled in order to support this database
16 | enable_extension "plpgsql"
17 |
18 | create_table "property_web_scraper_import_hosts", id: :serial, force: :cascade do |t|
19 | t.integer "flags", default: 0, null: false
20 | t.string "scraper_name"
21 | t.string "host"
22 | t.boolean "is_https"
23 | t.json "details", default: {}
24 | t.string "slug"
25 | t.text "example_urls", default: [], array: true
26 | t.text "invalid_urls", default: [], array: true
27 | t.datetime "last_retrieval_at"
28 | t.string "valid_url_regex"
29 | t.string "pause_between_calls", default: "5.seconds"
30 | t.string "stale_age", default: "1.day"
31 | t.datetime "created_at", null: false
32 | t.datetime "updated_at", null: false
33 | t.index ["host"], name: "index_property_web_scraper_import_hosts_on_host", unique: true
34 | end
35 |
36 | create_table "property_web_scraper_listings", id: :serial, force: :cascade do |t|
37 | t.integer "flags", default: 0, null: false
38 | t.integer "area_unit", default: 0, null: false
39 | t.string "reference"
40 | t.integer "year_construction", default: 0
41 | t.integer "count_bedrooms", default: 0
42 | t.float "count_bathrooms", default: 0.0
43 | t.integer "count_toilets", default: 0
44 | t.integer "count_garages", default: 0
45 | t.float "plot_area", default: 0.0
46 | t.float "constructed_area", default: 0.0
47 | t.integer "energy_rating"
48 | t.float "energy_performance"
49 | t.string "title"
50 | t.text "description"
51 | t.string "locale_code"
52 | t.string "title_es"
53 | t.text "description_es"
54 | t.string "title_de"
55 | t.text "description_de"
56 | t.string "title_fr"
57 | t.text "description_fr"
58 | t.string "title_it"
59 | t.text "description_it"
60 | t.boolean "furnished", default: false
61 | t.boolean "sold", default: false
62 | t.boolean "reserved", default: false
63 | t.boolean "for_rent_short_term", default: false
64 | t.boolean "for_rent_long_term", default: false
65 | t.boolean "for_sale", default: false
66 | t.boolean "for_rent", default: false
67 | t.datetime "deleted_at"
68 | t.datetime "active_from"
69 | t.datetime "available_to_rent_from"
70 | t.datetime "available_to_rent_till"
71 | t.string "price_string"
72 | t.float "price_float"
73 | t.integer "price_sale_cents", default: 0, null: false
74 | t.string "price_sale_currency", default: "EUR", null: false
75 | t.integer "price_sale_current_cents", default: 0, null: false
76 | t.string "price_sale_current_currency", default: "EUR", null: false
77 | t.integer "price_sale_original_cents", default: 0, null: false
78 | t.string "price_sale_original_currency", default: "EUR", null: false
79 | t.integer "price_rental_monthly_current_cents", default: 0, null: false
80 | t.string "price_rental_monthly_current_currency", default: "EUR", null: false
81 | t.integer "price_rental_monthly_original_cents", default: 0, null: false
82 | t.string "price_rental_monthly_original_currency", default: "EUR", null: false
83 | t.integer "price_rental_monthly_low_season_cents", default: 0, null: false
84 | t.string "price_rental_monthly_low_season_currency", default: "EUR", null: false
85 | t.integer "price_rental_monthly_high_season_cents", default: 0, null: false
86 | t.string "price_rental_monthly_high_season_currency", default: "EUR", null: false
87 | t.integer "price_rental_monthly_standard_season_cents", default: 0, null: false
88 | t.string "price_rental_monthly_standard_season_currency", default: "EUR", null: false
89 | t.integer "commission_cents", default: 0, null: false
90 | t.string "commission_currency", default: "EUR", null: false
91 | t.integer "service_charge_yearly_cents", default: 0, null: false
92 | t.string "service_charge_yearly_currency", default: "EUR", null: false
93 | t.integer "price_rental_monthly_for_search_cents", default: 0, null: false
94 | t.string "price_rental_monthly_for_search_currency", default: "EUR", null: false
95 | t.string "currency"
96 | t.string "address_string"
97 | t.string "street_number"
98 | t.string "street_name"
99 | t.string "street_address"
100 | t.string "postal_code"
101 | t.string "province"
102 | t.string "city"
103 | t.string "region"
104 | t.string "country"
105 | t.float "latitude"
106 | t.float "longitude"
107 | t.datetime "last_retrieved_at"
108 | t.string "import_host_slug"
109 | t.integer "re_agent_id"
110 | t.string "import_url"
111 | t.json "import_history", default: {}
112 | t.string "main_image_url"
113 | t.text "image_urls", default: [], array: true
114 | t.text "related_urls", default: [], array: true
115 | t.text "features", default: [], array: true
116 | t.text "unknown_fields", default: [], array: true
117 | t.datetime "created_at", null: false
118 | t.datetime "updated_at", null: false
119 | t.index ["flags"], name: "index_property_web_scraper_listings_on_flags"
120 | t.index ["import_url"], name: "index_property_web_scraper_listings_on_import_url"
121 | t.index ["price_float"], name: "index_property_web_scraper_listings_on_price_float"
122 | t.index ["reference"], name: "index_property_web_scraper_listings_on_reference"
123 | end
124 |
125 | create_table "pwb_addresses", id: :serial, force: :cascade do |t|
126 | t.float "longitude"
127 | t.float "latitude"
128 | t.string "street_number"
129 | t.string "street_address"
130 | t.string "postal_code"
131 | t.string "city"
132 | t.string "region"
133 | t.string "country"
134 | t.datetime "created_at", null: false
135 | t.datetime "updated_at", null: false
136 | end
137 |
138 | create_table "pwb_agencies", id: :serial, force: :cascade do |t|
139 | t.string "phone_number_primary"
140 | t.string "phone_number_mobile"
141 | t.string "phone_number_other"
142 | t.string "analytics_id"
143 | t.integer "analytics_id_type"
144 | t.string "company_name"
145 | t.string "display_name"
146 | t.string "email_primary"
147 | t.string "email_for_general_contact_form"
148 | t.string "email_for_property_contact_form"
149 | t.string "skype"
150 | t.string "company_id"
151 | t.integer "company_id_type"
152 | t.string "url"
153 | t.integer "primary_address_id"
154 | t.integer "secondary_address_id"
155 | t.integer "flags", default: 0, null: false
156 | t.integer "payment_plan_id"
157 | t.integer "site_template_id"
158 | t.json "site_configuration", default: {}
159 | t.text "available_locales", default: [], array: true
160 | t.text "supported_locales", default: [], array: true
161 | t.text "available_currencies", default: [], array: true
162 | t.text "supported_currencies", default: [], array: true
163 | t.string "default_client_locale"
164 | t.string "default_admin_locale"
165 | t.string "default_currency"
166 | t.json "social_media", default: {}
167 | t.json "details", default: {}
168 | t.text "raw_css"
169 | t.datetime "created_at", null: false
170 | t.datetime "updated_at", null: false
171 | t.string "theme_name"
172 | t.index ["company_id"], name: "index_pwb_agencies_on_company_id", unique: true
173 | t.index ["company_name"], name: "index_pwb_agencies_on_company_name"
174 | end
175 |
176 | create_table "pwb_authorizations", force: :cascade do |t|
177 | t.bigint "user_id"
178 | t.string "provider"
179 | t.string "uid"
180 | t.datetime "created_at", null: false
181 | t.datetime "updated_at", null: false
182 | t.index ["user_id"], name: "index_pwb_authorizations_on_user_id"
183 | end
184 |
185 | create_table "pwb_clients", id: :serial, force: :cascade do |t|
186 | t.string "first_names"
187 | t.string "last_names"
188 | t.string "client_title"
189 | t.string "phone_number_primary"
190 | t.string "phone_number_other"
191 | t.string "fax"
192 | t.string "nationality"
193 | t.string "email"
194 | t.string "skype"
195 | t.string "documentation_id"
196 | t.integer "documentation_type"
197 | t.integer "user_id"
198 | t.integer "address_id"
199 | t.integer "flags", default: 0, null: false
200 | t.json "details", default: {}
201 | t.datetime "created_at", null: false
202 | t.datetime "updated_at", null: false
203 | t.index ["documentation_id"], name: "index_pwb_clients_on_documentation_id", unique: true
204 | t.index ["email"], name: "index_pwb_clients_on_email", unique: true
205 | t.index ["first_names", "last_names"], name: "index_pwb_clients_on_first_names_and_last_names"
206 | end
207 |
208 | create_table "pwb_contacts", force: :cascade do |t|
209 | t.string "first_name"
210 | t.string "last_name"
211 | t.string "other_names"
212 | t.integer "title", default: 0
213 | t.string "primary_phone_number"
214 | t.string "other_phone_number"
215 | t.string "fax"
216 | t.string "nationality"
217 | t.string "primary_email"
218 | t.string "other_email"
219 | t.string "skype_id"
220 | t.string "facebook_id"
221 | t.string "linkedin_id"
222 | t.string "twitter_id"
223 | t.string "website"
224 | t.string "documentation_id"
225 | t.integer "documentation_type"
226 | t.integer "user_id"
227 | t.integer "primary_address_id"
228 | t.integer "secondary_address_id"
229 | t.integer "flags", default: 0, null: false
230 | t.json "details", default: {}
231 | t.datetime "created_at", null: false
232 | t.datetime "updated_at", null: false
233 | t.index ["documentation_id"], name: "index_pwb_contacts_on_documentation_id"
234 | t.index ["first_name", "last_name"], name: "index_pwb_contacts_on_first_name_and_last_name"
235 | t.index ["first_name"], name: "index_pwb_contacts_on_first_name"
236 | t.index ["last_name"], name: "index_pwb_contacts_on_last_name"
237 | t.index ["primary_email"], name: "index_pwb_contacts_on_primary_email"
238 | t.index ["primary_phone_number"], name: "index_pwb_contacts_on_primary_phone_number"
239 | t.index ["title"], name: "index_pwb_contacts_on_title"
240 | end
241 |
242 | create_table "pwb_content_photos", id: :serial, force: :cascade do |t|
243 | t.integer "content_id"
244 | t.string "image"
245 | t.string "description"
246 | t.string "folder"
247 | t.integer "file_size"
248 | t.integer "sort_order"
249 | t.datetime "created_at", null: false
250 | t.datetime "updated_at", null: false
251 | t.string "block_key"
252 | t.index ["content_id"], name: "index_pwb_content_photos_on_content_id"
253 | end
254 |
255 | create_table "pwb_content_translations", force: :cascade do |t|
256 | t.integer "pwb_content_id", null: false
257 | t.string "locale", null: false
258 | t.datetime "created_at", null: false
259 | t.datetime "updated_at", null: false
260 | t.text "raw"
261 | t.index ["locale"], name: "index_pwb_content_translations_on_locale"
262 | t.index ["pwb_content_id"], name: "index_pwb_content_translations_on_pwb_content_id"
263 | end
264 |
265 | create_table "pwb_contents", id: :serial, force: :cascade do |t|
266 | t.string "key"
267 | t.string "tag"
268 | t.string "input_type"
269 | t.string "status"
270 | t.integer "last_updated_by_user_id"
271 | t.integer "sort_order"
272 | t.string "target_url"
273 | t.datetime "created_at", null: false
274 | t.datetime "updated_at", null: false
275 | t.string "section_key"
276 | t.string "page_part_key"
277 | t.index ["key"], name: "index_pwb_contents_on_key", unique: true
278 | end
279 |
280 | create_table "pwb_features", id: :serial, force: :cascade do |t|
281 | t.string "feature_key"
282 | t.integer "prop_id"
283 | t.datetime "created_at", null: false
284 | t.datetime "updated_at", null: false
285 | t.index ["feature_key"], name: "index_pwb_features_on_feature_key"
286 | end
287 |
288 | create_table "pwb_field_keys", id: :serial, force: :cascade do |t|
289 | t.string "global_key"
290 | t.string "tag"
291 | t.boolean "visible", default: true
292 | t.integer "props_count", default: 0, null: false
293 | t.boolean "show_in_search_form", default: true
294 | t.datetime "created_at", null: false
295 | t.datetime "updated_at", null: false
296 | t.index ["global_key"], name: "index_pwb_field_keys_on_global_key", unique: true
297 | end
298 |
299 | create_table "pwb_link_translations", force: :cascade do |t|
300 | t.integer "pwb_link_id", null: false
301 | t.string "locale", null: false
302 | t.datetime "created_at", null: false
303 | t.datetime "updated_at", null: false
304 | t.string "link_title", default: ""
305 | t.index ["locale"], name: "index_pwb_link_translations_on_locale"
306 | t.index ["pwb_link_id"], name: "index_pwb_link_translations_on_pwb_link_id"
307 | end
308 |
309 | create_table "pwb_links", id: :serial, force: :cascade do |t|
310 | t.string "slug"
311 | t.string "parent_slug"
312 | t.string "page_slug"
313 | t.string "icon_class"
314 | t.string "href_class"
315 | t.string "href_target"
316 | t.boolean "is_external", default: false
317 | t.string "link_url"
318 | t.string "link_path"
319 | t.string "link_path_params"
320 | t.boolean "visible", default: true
321 | t.boolean "is_deletable", default: false
322 | t.integer "flags", default: 0, null: false
323 | t.integer "sort_order", default: 0
324 | t.integer "placement", default: 0
325 | t.datetime "created_at", null: false
326 | t.datetime "updated_at", null: false
327 | t.index ["flags"], name: "index_pwb_links_on_flags"
328 | t.index ["page_slug"], name: "index_pwb_links_on_page_slug"
329 | t.index ["placement"], name: "index_pwb_links_on_placement"
330 | t.index ["slug"], name: "index_pwb_links_on_slug", unique: true
331 | end
332 |
333 | create_table "pwb_messages", id: :serial, force: :cascade do |t|
334 | t.string "title"
335 | t.text "content"
336 | t.integer "client_id"
337 | t.string "origin_ip"
338 | t.string "user_agent"
339 | t.float "longitude"
340 | t.float "latitude"
341 | t.string "locale"
342 | t.string "host"
343 | t.string "url"
344 | t.boolean "delivery_success", default: false
345 | t.string "delivery_email"
346 | t.string "origin_email"
347 | t.datetime "created_at", null: false
348 | t.datetime "updated_at", null: false
349 | t.integer "contact_id"
350 | end
351 |
352 | create_table "pwb_page_contents", force: :cascade do |t|
353 | t.boolean "is_rails_part", default: false
354 | t.string "page_part_key"
355 | t.string "label"
356 | t.integer "sort_order"
357 | t.boolean "visible_on_page", default: true
358 | t.bigint "page_id"
359 | t.bigint "content_id"
360 | t.datetime "created_at", null: false
361 | t.datetime "updated_at", null: false
362 | t.bigint "website_id"
363 | t.index ["content_id"], name: "index_pwb_page_contents_on_content_id"
364 | t.index ["page_id"], name: "index_pwb_page_contents_on_page_id"
365 | t.index ["website_id"], name: "index_pwb_page_contents_on_website_id"
366 | end
367 |
368 | create_table "pwb_page_parts", force: :cascade do |t|
369 | t.boolean "is_rails_part", default: false
370 | t.boolean "show_in_editor", default: true
371 | t.integer "order_in_editor"
372 | t.string "page_part_key"
373 | t.string "page_slug"
374 | t.text "template"
375 | t.json "editor_setup", default: {}
376 | t.json "block_contents", default: {}
377 | t.string "theme_name"
378 | t.string "locale"
379 | t.integer "flags", default: 0, null: false
380 | t.datetime "created_at", null: false
381 | t.datetime "updated_at", null: false
382 | t.index ["page_part_key", "page_slug"], name: "index_pwb_page_parts_on_page_part_key_and_page_slug"
383 | t.index ["page_part_key"], name: "index_pwb_page_parts_on_page_part_key"
384 | t.index ["page_slug"], name: "index_pwb_page_parts_on_page_slug"
385 | end
386 |
387 | create_table "pwb_page_translations", force: :cascade do |t|
388 | t.integer "pwb_page_id", null: false
389 | t.string "locale", null: false
390 | t.datetime "created_at", null: false
391 | t.datetime "updated_at", null: false
392 | t.text "raw_html", default: ""
393 | t.string "page_title", default: ""
394 | t.string "link_title", default: ""
395 | t.index ["locale"], name: "index_pwb_page_translations_on_locale"
396 | t.index ["pwb_page_id"], name: "index_pwb_page_translations_on_pwb_page_id"
397 | end
398 |
399 | create_table "pwb_pages", id: :serial, force: :cascade do |t|
400 | t.string "slug"
401 | t.string "setup_id"
402 | t.boolean "visible", default: false
403 | t.integer "last_updated_by_user_id"
404 | t.integer "flags", default: 0, null: false
405 | t.json "details", default: {}
406 | t.integer "sort_order_top_nav", default: 0
407 | t.integer "sort_order_footer", default: 0
408 | t.boolean "show_in_top_nav", default: false
409 | t.boolean "show_in_footer", default: false
410 | t.datetime "created_at", null: false
411 | t.datetime "updated_at", null: false
412 | t.index ["flags"], name: "index_pwb_pages_on_flags"
413 | t.index ["show_in_footer"], name: "index_pwb_pages_on_show_in_footer"
414 | t.index ["show_in_top_nav"], name: "index_pwb_pages_on_show_in_top_nav"
415 | t.index ["slug"], name: "index_pwb_pages_on_slug", unique: true
416 | end
417 |
418 | create_table "pwb_prop_photos", id: :serial, force: :cascade do |t|
419 | t.integer "prop_id"
420 | t.string "image"
421 | t.string "description"
422 | t.string "folder"
423 | t.integer "file_size"
424 | t.integer "sort_order"
425 | t.datetime "created_at", null: false
426 | t.datetime "updated_at", null: false
427 | t.index ["prop_id"], name: "index_pwb_prop_photos_on_prop_id"
428 | end
429 |
430 | create_table "pwb_prop_translations", force: :cascade do |t|
431 | t.integer "pwb_prop_id", null: false
432 | t.string "locale", null: false
433 | t.datetime "created_at", null: false
434 | t.datetime "updated_at", null: false
435 | t.string "title", default: ""
436 | t.text "description", default: ""
437 | t.index ["locale"], name: "index_pwb_prop_translations_on_locale"
438 | t.index ["pwb_prop_id"], name: "index_pwb_prop_translations_on_pwb_prop_id"
439 | end
440 |
441 | create_table "pwb_props", id: :serial, force: :cascade do |t|
442 | t.string "reference"
443 | t.integer "year_construction", default: 0, null: false
444 | t.integer "count_bedrooms", default: 0, null: false
445 | t.float "count_bathrooms", default: 0.0, null: false
446 | t.integer "count_toilets", default: 0, null: false
447 | t.integer "count_garages", default: 0, null: false
448 | t.float "plot_area", default: 0.0, null: false
449 | t.float "constructed_area", default: 0.0, null: false
450 | t.integer "energy_rating"
451 | t.float "energy_performance"
452 | t.integer "flags", default: 0, null: false
453 | t.boolean "furnished", default: false
454 | t.boolean "sold", default: false
455 | t.boolean "reserved", default: false
456 | t.boolean "highlighted", default: false
457 | t.boolean "archived", default: false
458 | t.boolean "visible", default: false
459 | t.boolean "for_rent_short_term", default: false
460 | t.boolean "for_rent_long_term", default: false
461 | t.boolean "for_sale", default: false
462 | t.boolean "hide_map", default: false
463 | t.boolean "obscure_map", default: false
464 | t.boolean "portals_enabled", default: false
465 | t.datetime "deleted_at"
466 | t.datetime "active_from"
467 | t.datetime "available_to_rent_from"
468 | t.datetime "available_to_rent_till"
469 | t.bigint "price_sale_current_cents", default: 0, null: false
470 | t.string "price_sale_current_currency", default: "EUR", null: false
471 | t.bigint "price_sale_original_cents", default: 0, null: false
472 | t.string "price_sale_original_currency", default: "EUR", null: false
473 | t.integer "price_rental_monthly_current_cents", default: 0, null: false
474 | t.string "price_rental_monthly_current_currency", default: "EUR", null: false
475 | t.integer "price_rental_monthly_original_cents", default: 0, null: false
476 | t.string "price_rental_monthly_original_currency", default: "EUR", null: false
477 | t.integer "price_rental_monthly_low_season_cents", default: 0, null: false
478 | t.string "price_rental_monthly_low_season_currency", default: "EUR", null: false
479 | t.integer "price_rental_monthly_high_season_cents", default: 0, null: false
480 | t.string "price_rental_monthly_high_season_currency", default: "EUR", null: false
481 | t.integer "price_rental_monthly_standard_season_cents", default: 0, null: false
482 | t.string "price_rental_monthly_standard_season_currency", default: "EUR", null: false
483 | t.integer "commission_cents", default: 0, null: false
484 | t.string "commission_currency", default: "EUR", null: false
485 | t.integer "service_charge_yearly_cents", default: 0, null: false
486 | t.string "service_charge_yearly_currency", default: "EUR", null: false
487 | t.integer "price_rental_monthly_for_search_cents", default: 0, null: false
488 | t.string "price_rental_monthly_for_search_currency", default: "EUR", null: false
489 | t.string "currency"
490 | t.string "prop_origin_key", default: "", null: false
491 | t.string "prop_state_key", default: "", null: false
492 | t.string "prop_type_key", default: "", null: false
493 | t.string "street_number"
494 | t.string "street_name"
495 | t.string "street_address"
496 | t.string "postal_code"
497 | t.string "province"
498 | t.string "city"
499 | t.string "region"
500 | t.string "country"
501 | t.float "latitude"
502 | t.float "longitude"
503 | t.datetime "created_at", null: false
504 | t.datetime "updated_at", null: false
505 | t.integer "area_unit", default: 0
506 | t.index ["archived"], name: "index_pwb_props_on_archived"
507 | t.index ["flags"], name: "index_pwb_props_on_flags"
508 | t.index ["for_rent_long_term"], name: "index_pwb_props_on_for_rent_long_term"
509 | t.index ["for_rent_short_term"], name: "index_pwb_props_on_for_rent_short_term"
510 | t.index ["for_sale"], name: "index_pwb_props_on_for_sale"
511 | t.index ["highlighted"], name: "index_pwb_props_on_highlighted"
512 | t.index ["latitude", "longitude"], name: "index_pwb_props_on_latitude_and_longitude"
513 | t.index ["price_rental_monthly_current_cents"], name: "index_pwb_props_on_price_rental_monthly_current_cents"
514 | t.index ["price_sale_current_cents"], name: "index_pwb_props_on_price_sale_current_cents"
515 | t.index ["reference"], name: "index_pwb_props_on_reference", unique: true
516 | t.index ["visible"], name: "index_pwb_props_on_visible"
517 | end
518 |
519 | create_table "pwb_sections", id: :serial, force: :cascade do |t|
520 | t.string "link_key"
521 | t.string "link_path"
522 | t.integer "sort_order"
523 | t.boolean "visible"
524 | t.datetime "created_at", null: false
525 | t.datetime "updated_at", null: false
526 | t.integer "flags", default: 0, null: false
527 | t.json "details", default: {}
528 | t.boolean "is_page", default: false
529 | t.boolean "show_in_top_nav", default: false
530 | t.boolean "show_in_footer", default: false
531 | t.string "key"
532 | t.index ["link_key"], name: "index_pwb_sections_on_link_key", unique: true
533 | end
534 |
535 | create_table "pwb_users", id: :serial, force: :cascade do |t|
536 | t.string "email", default: "", null: false
537 | t.string "encrypted_password", default: "", null: false
538 | t.string "reset_password_token"
539 | t.datetime "reset_password_sent_at"
540 | t.datetime "remember_created_at"
541 | t.integer "sign_in_count", default: 0, null: false
542 | t.datetime "current_sign_in_at"
543 | t.datetime "last_sign_in_at"
544 | t.string "current_sign_in_ip"
545 | t.string "last_sign_in_ip"
546 | t.string "confirmation_token"
547 | t.datetime "confirmed_at"
548 | t.datetime "confirmation_sent_at"
549 | t.string "unconfirmed_email"
550 | t.integer "failed_attempts", default: 0, null: false
551 | t.string "unlock_token"
552 | t.datetime "locked_at"
553 | t.string "authentication_token"
554 | t.boolean "admin", default: false
555 | t.string "first_names"
556 | t.string "last_names"
557 | t.string "skype"
558 | t.string "phone_number_primary"
559 | t.string "default_client_locale"
560 | t.string "default_admin_locale"
561 | t.string "default_currency"
562 | t.datetime "created_at", null: false
563 | t.datetime "updated_at", null: false
564 | t.index ["confirmation_token"], name: "index_pwb_users_on_confirmation_token", unique: true
565 | t.index ["email"], name: "index_pwb_users_on_email", unique: true
566 | t.index ["reset_password_token"], name: "index_pwb_users_on_reset_password_token", unique: true
567 | end
568 |
569 | create_table "pwb_websites", id: :serial, force: :cascade do |t|
570 | t.string "analytics_id"
571 | t.integer "analytics_id_type"
572 | t.string "company_display_name"
573 | t.string "email_for_general_contact_form"
574 | t.string "email_for_property_contact_form"
575 | t.integer "contact_address_id"
576 | t.integer "flags", default: 0, null: false
577 | t.string "theme_name"
578 | t.string "google_font_name"
579 | t.json "configuration", default: {}
580 | t.json "style_variables_for_theme", default: {}
581 | t.text "sale_price_options_from", default: ["", "25,000", "50,000", "75,000", "100,000", "150,000", "250,000", "500,000", "1,000,000", "2,000,000", "5,000,000", "10,000,000"], array: true
582 | t.text "sale_price_options_till", default: ["", "25,000", "50,000", "75,000", "100,000", "150,000", "250,000", "500,000", "1,000,000", "2,000,000", "5,000,000", "10,000,000"], array: true
583 | t.text "rent_price_options_from", default: ["", "250", "500", "750", "1,000", "1,500", "2,500", "5,000"], array: true
584 | t.text "rent_price_options_till", default: ["", "250", "500", "750", "1,000", "1,500", "2,500", "5,000"], array: true
585 | t.text "supported_locales", default: ["en-UK"], array: true
586 | t.text "supported_currencies", default: [], array: true
587 | t.string "default_client_locale", default: "en-UK"
588 | t.string "default_admin_locale", default: "en-UK"
589 | t.string "default_currency", default: "EUR"
590 | t.integer "default_area_unit", default: 0
591 | t.json "social_media", default: {}
592 | t.text "raw_css"
593 | t.datetime "created_at", null: false
594 | t.datetime "updated_at", null: false
595 | end
596 |
597 | create_table "translations", id: :serial, force: :cascade do |t|
598 | t.string "locale"
599 | t.string "key"
600 | t.text "value"
601 | t.text "interpolations"
602 | t.boolean "is_proc", default: false
603 | t.string "tag"
604 | t.datetime "created_at", null: false
605 | t.datetime "updated_at", null: false
606 | end
607 |
608 | end
609 |
--------------------------------------------------------------------------------