FEATURE: Add group and category restrictions to house ads (#205)
# Description
This PR adds the ability to apply **group** and **category** restrictions to a **house ad**.
# What is included
- In order to get the group and category selectors to work within `admin/assets/javascripts/discourse/controllers/admin-plugins-house-ads-show.js` I needed to modernize the file.
- I dropped the `bufferedProperty` implementation in favor of a vanilla ember approach
- I added `category_ids` and `group_ids` to our house ads model
- I added tests for group / category restrictions
- I added a preview button to display the house ad
- `/site.json` would return a object called `house_creatives` and a list of key value pairs that matched the ad name with the html, like so:
```js
{ AD_KEY: ad.html }
```
I need access to the category ids on the client to conditionally render the house ads so the new format will be:
```js
{ AD_KEY: { html: ad.html, category_ids: ad.category_ids } }
```
# Screenshots
<img width="658" alt="Screenshot 2024-04-08 at 2 39 22 PM" src="https://github.com/discourse/discourse-adplugin/assets/50783505/b44b386d-65a1-4a2a-a487-d735b13357dd">
# Preview Video
https://github.com/discourse/discourse-adplugin/assets/50783505/6d0d8253-afef-4e15-b6fc-c6f696efd169
This commit is contained in:
@@ -78,7 +78,14 @@ export default AdComponent.extend({
|
||||
}
|
||||
let ad = houseAds.creatives[adNames[adIndex[placement]]] || "";
|
||||
adIndex[placement] = (adIndex[placement] + 1) % adNames.length;
|
||||
return ad;
|
||||
// check if the ad includes the current category, or if no category restrictions are set for the ad
|
||||
// otherwise don't show it
|
||||
if (
|
||||
!ad.category_ids?.length ||
|
||||
ad.category_ids.includes(this.currentCategoryId)
|
||||
) {
|
||||
return ad.html;
|
||||
}
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user