* 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
* 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
* Add failing tests for social previews controller. HTML changes between
requests, which breaks caching.
Since we use the HTML to generate the cache key. When the views have any
randomness in them, it breaks the cache, which means we regenerate
images on each request, rather than using what's in memcached.
Adding test to protect from regressions
* Fix randomness in social card templates
The aria tags are randomly generated. Since this is for rendering
images, they aren't needed.
* Make the linter happy by using the sanitize helper
* adjust validations to allow org admins to edit listings
also adjusted presented elements based on bumped_at dates and published boolean status
* allow org admins to edit listings under diff user_id
adjust statement in edit so that it has to be admin not just member
* pluck via attribute not string of attribute name
* update policy for org admins
* make authorizing org admin for listing private
* update classified listing spec
user_id is required for classified listing
There was a bug where the frontend was not passing the organization id to the backend, and thus the fetching of the stats failed for organization articles.
This also adds a bit of error handling for `fetch` API
* Add base history support
* Add tags and ranking and make it work
* Fix styling
* Add article title and text excerpt to the index
* Add pagination support
* Debounce the search to 300ms
* Show history only to pro users
* Use routing helpers instead of hardcoding
* Raise the page size to 100
* Remove console log
* A bit of regrouping
* init wip react components
* wip add dashboard to listing views
- create a html.erb view to hold listing/dashboard with javascript_pack_tag
- create listingDashboard.jsx in packs
- create listingDashboard component and dashboard folder with smaller components
- added view to controller and routes
* slowly adding some formatting
adjusted styling, info
* remove listing body from dashboard
* add some styling and adjust info
* wip adding org listings
* wip multi org in dashboard
* adjust for multi org
* add styling and better multi org support
* comment out bump and delete -- save for upcoming PR
* reduce lines
* listing form has link to listings dashboard instead of listings
* adjust header boxes flex direction for mobile
* fix organization id query
* WIP testing
needs more rigorous tests
* finalize tests