* Add Sponsorship model
* Add Sponsorship to admin
* Add correct relationships between models
* Add temporary script to migrate sponsorship data
* Use constants for enums
* Use Sponsorship model in PartnershipsController
* Use Sponsorship in the views
* Validate sponsorship levels and tag combos
* Replace the rest of the sponsorship code to use Sponsorship
* add location to classified_listings
create rails migration and ran rake db:migrate
* add faker city to seed
* add location to index json
* add location as searchable attribute in algolia
* add form text field for adding location to new listing
* add location to dashboard json
* add location field for editing listings
* add location to listing_params in controller
* add location to single listing view
* add location to listing row in dashboard
* add location to dashboard test
* adjust listing dashboard row spacing
* reduce character limit
* reduce lines of conditional html elements
* compress listing card const
* fix form call for location in edit page
* update snapshot in dashboard
* add location length validation in listing model
* shorten limit and update location in edit page
* Transform GET sign in links into POST
* Ignore CVE-2015-9284 for now
* Update app/views/layouts/_signup_modal.html.erb
Co-Authored-By: Mac Siri <krairit.siri@gmail.com>
* Modify sponsorship copy
* Update sponsorship stuff
* Fix spec and add tag sponsorship
* Add #purchase to Credit
* Assigns spent credits to the listing
* Add Credits::Ledger and use it
* Localize ledger datetimes
* Add organization to the ledger
* Add tests for ledger
* Remove unused class
* Fix scope error
* Compare UTC times
* Fix broken specs
* Wrap listing create in a transaction
* Wrap listings bump into a transaction
* Avoid microseconds issue with datetimes in tests
* Use .detect instead of .select.first
* Fix spec description
* init wip
still needs html, styling, and specs
* add more html
similar to singleListing.jsx
* add generate_new_liquid method to spec
* remove unexpected period
* add error handling for invalid slugs and expired listings
* initial styling
* styling for author and tags
* import variables to sass
* more styling and swithc tags and author info
* add specs
* handle error for slug with no category
* add listing tag to editor guide
* reduce complexity
* render expired listing rather than raise error
* update expired listing spec
* import mixins to classified listing tag styling
* Podcasts reachable status #2952
* Specs for podcasts statuses
* Moved podcast episode create to a separate ActiveJob
* Use RssItemData wrapper in GetEpisode for consistency
* Reorganize services/podcasts
* Lint some quotation marks
* Add BackupData table
* Add identity and removal functionality
* Test additional functionality
* Remove dependent destroy for backup data
* Add auth_data_dump column
* Add challenge to reserved words
* Add more shoulda matchers
* Make readingList testable
* Make history and readingList more similar
* Extract ItemListTags component
* Simplify load next page logic
* History and reading list load more should be the same
* Extract ItemListLoadMoreButton component
* Use the same exact CSS for both
* Use empty instead of 0
* Extract ItemListItem component
* Remove unnecessary else
* Same search function
* Use a common module to group related functionality
* Extract loadNextPage and fix load more button presence logic
* Extract toggleTag
* Refactor toggleStatusView and pass page
* Added additional tests
* Reorganize PageViewsController
* Add domain and path to PageView model
* Add before_create callback to populate domain and path
* Add list of referrers to AnalyticsService
* Add referrers to the UI
* Remove useless referrers card and tweak table line height
* Add referrer stats to article stats page
* Add not null and empty default to domain and path
* Refactor JS analytics client
* create_list is a step back here
* Revert "Add not null and empty default to domain and path"
This reverts commit bc02440076047a887c65d300bccd4661ecc8ffd0.
* Add index on domain concurrently
* Make the script more robust