diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9cc3d5078..e05ccbd61 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [1.4.0] - 2019-11-22
+### Added
+- Conversions definition
+- Target URL placeholders
+- Pops ad units configuration
+- Site domain requirement
+### Changed
+- Hid Requires section from site filtering
+
## [1.2.5] - 2019-10-01
### Changed
- Upgrade @angular/cli to version 1.7.0
@@ -133,7 +142,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Advertiser features (Campaigns & Ads)
- Publisher features (Sites & AdUnits)
-[Unreleased]: https://github.com/adshares/adpanel/compare/v1.2.5...develop
+[Unreleased]: https://github.com/adshares/adpanel/compare/v1.4.0...develop
+[1.4.0]: https://github.com/adshares/adpanel/compare/v1.2.5...v1.4.0
[1.2.5]: https://github.com/adshares/adpanel/compare/v1.2.4...v1.2.5
[1.2.4]: https://github.com/adshares/adpanel/compare/v1.2.1...v1.2.4
[1.2.1]: https://github.com/adshares/adpanel/compare/v0.11.0...v1.2.1
diff --git a/src/app/admin/dashboard/dashboard.component.ts b/src/app/admin/dashboard/dashboard.component.ts
index 55f825c21..55513e0a7 100644
--- a/src/app/admin/dashboard/dashboard.component.ts
+++ b/src/app/admin/dashboard/dashboard.component.ts
@@ -42,7 +42,7 @@ export class DashboardComponent extends HandleSubscription implements OnInit {
link: '/admin/dashboard/privacy',
values: [
{name: 'Privacy', icon: 'assets/images/preferences.svg'},
- {name: 'Terms and condition', icon: 'assets/images/preferences.svg'},
+ {name: 'Terms and conditions', icon: 'assets/images/preferences.svg'},
],
},
{
diff --git a/src/app/admin/finances/finances-settings.component.html b/src/app/admin/finances/finances-settings.component.html
index a30d35eb4..478675459 100644
--- a/src/app/admin/finances/finances-settings.component.html
+++ b/src/app/admin/finances/finances-settings.component.html
@@ -65,7 +65,7 @@
diff --git a/src/app/advertiser/advertiser-routing.module.ts b/src/app/advertiser/advertiser-routing.module.ts
index b4cc184b7..e58896083 100644
--- a/src/app/advertiser/advertiser-routing.module.ts
+++ b/src/app/advertiser/advertiser-routing.module.ts
@@ -4,6 +4,7 @@ import { RouterModule, Routes } from '@angular/router';
import { AdvertiserComponent } from './advertiser.component';
import { EditCampaignComponent } from './edit-campaign/edit-campaign.component';
import { EditCampaignBasicInformationComponent } from './edit-campaign/edit-campaign-basic-info/edit-campaign-basic-information.component';
+import { EditCampaignConversionComponent } from './edit-campaign/edit-campaign-conversion/edit-campaign-conversion.component';
import { EditCampaignAdditionalTargetingComponent } from './edit-campaign/edit-campaign-additional-targeting/edit-campaign-additional-targeting.component';
import { EditCampaignCreateAdsComponent } from './edit-campaign/edit-campaign-create-ads/edit-campaign-create-ads.component';
import { EditCampaignSummaryComponent } from './edit-campaign/edit-campaign-summary/edit-campaign-summary.component';
@@ -64,6 +65,10 @@ const advertiserRoutes: Routes = [
path: 'basic-information',
component: EditCampaignBasicInformationComponent,
},
+ {
+ path: 'conversion',
+ component: EditCampaignConversionComponent,
+ },
{
path: 'additional-targeting',
component: EditCampaignAdditionalTargetingComponent,
diff --git a/src/app/advertiser/advertiser.module.ts b/src/app/advertiser/advertiser.module.ts
index 6553d6bc3..46d57f5cd 100644
--- a/src/app/advertiser/advertiser.module.ts
+++ b/src/app/advertiser/advertiser.module.ts
@@ -6,13 +6,15 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatMomentDateModule } from '@angular/material-moment-adapter';
-import { MatInputModule } from '@angular/material';
+import { MatCheckboxModule, MatInputModule } from '@angular/material';
import { MatSelectModule } from '@angular/material/select';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatMenuModule } from '@angular/material/menu';
+import { MatTabsModule } from '@angular/material/tabs';
import { FileUploadModule } from 'ng2-file-upload';
-import { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_FORMATS } from 'ng-pick-datetime';
+import { OWL_DATE_TIME_FORMATS, OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';
import { OwlMomentDateTimeModule } from 'ng-pick-datetime-moment';
+import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { AppCommonModule } from 'common/common.module';
import { AdvertiserComponent } from './advertiser.component';
import { AdvertiserRoutingModule } from './advertiser-routing.module';
@@ -20,6 +22,7 @@ import { EditCampaignComponent } from './edit-campaign/edit-campaign.component';
import { CampaignListComponent } from './campaign-list/campaign-list.component';
import { CampaignListItemComponent } from './campaign-list/campaign-list-item/campaign-list-item.component';
import { EditCampaignBasicInformationComponent } from './edit-campaign/edit-campaign-basic-info/edit-campaign-basic-information.component';
+import { EditCampaignConversionComponent } from './edit-campaign/edit-campaign-conversion/edit-campaign-conversion.component';
import { EditCampaignAdditionalTargetingComponent } from './edit-campaign/edit-campaign-additional-targeting/edit-campaign-additional-targeting.component';
import { EditCampaignCreateAdsComponent } from './edit-campaign/edit-campaign-create-ads/edit-campaign-create-ads.component';
import { EditCampaignSummaryComponent } from './edit-campaign/edit-campaign-summary/edit-campaign-summary.component';
@@ -28,32 +31,32 @@ import { CampaignDetailsComponent } from './campaign-details/campaign-details.co
import { AdListComponent } from './campaign-details/ad-list/ad-list.component';
import { AdListItemComponent } from './campaign-details/ad-list/ad-list-item/ad-list-item.component';
-import { CampaignBudgetPerDayPipe } from "common/pipes/campaign-budget-per-day.pipe";
+import { CampaignBudgetPerDayPipe } from 'common/pipes/campaign-budget-per-day.pipe';
import { AdvertiserGuard } from './advertiser-guard.service';
import { CampaignResolver } from './resolvers/campaign.resolver';
import { TargetingCriteriaResolver } from './resolvers/targeting-criteria.resolver';
-import {
- DATE_AND_TIME_PICKER_FORMATS
-} from "common/utilities/consts";
-
+import { DATE_AND_TIME_PICKER_FORMATS } from 'common/utilities/consts';
const matModules = [
+ MatCheckboxModule,
MatExpansionModule,
MatFormFieldModule,
MatMomentDateModule,
MatDatepickerModule,
MatInputModule,
MatMenuModule,
- MatSelectModule
+ MatSelectModule,
+ MatTabsModule,
];
const editCampaignComponents = [
EditCampaignComponent,
EditCampaignBasicInformationComponent,
+ EditCampaignConversionComponent,
EditCampaignAdditionalTargetingComponent,
EditCampaignCreateAdsComponent,
- EditCampaignSummaryComponent
+ EditCampaignSummaryComponent,
];
const advertiserComponents = [
@@ -63,7 +66,7 @@ const advertiserComponents = [
DashboardComponent,
CampaignDetailsComponent,
AdListComponent,
- AdListItemComponent
+ AdListItemComponent,
];
@NgModule({
@@ -72,25 +75,26 @@ const advertiserComponents = [
HttpModule,
AppCommonModule,
AdvertiserRoutingModule,
+ FontAwesomeModule,
FormsModule,
ReactiveFormsModule,
FileUploadModule,
OwlDateTimeModule,
OwlNativeDateTimeModule,
OwlMomentDateTimeModule,
- ...matModules
+ ...matModules,
],
providers: [
AdvertiserGuard,
CampaignResolver,
TargetingCriteriaResolver,
- {provide: OWL_DATE_TIME_FORMATS, useValue: DATE_AND_TIME_PICKER_FORMATS}
+ {provide: OWL_DATE_TIME_FORMATS, useValue: DATE_AND_TIME_PICKER_FORMATS},
],
declarations: [
CampaignBudgetPerDayPipe,
...advertiserComponents,
- ...editCampaignComponents
+ ...editCampaignComponents,
]
})
export class AdvertiserModule {
diff --git a/src/app/advertiser/advertiser.service.ts b/src/app/advertiser/advertiser.service.ts
index a90e7bf0c..7137f78ec 100644
--- a/src/app/advertiser/advertiser.service.ts
+++ b/src/app/advertiser/advertiser.service.ts
@@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Store } from "@ngrx/store";
import { environment } from 'environments/environment';
-import { Campaign, CampaignTotalsResponse } from 'models/campaign.model';
+import { Campaign, CampaignConversion, CampaignTotalsResponse } from 'models/campaign.model';
import { TargetingOption } from 'models/targeting-option.model';
import { parseTargetingForBackend } from 'common/components/targeting/targeting.helpers';
import { NavigationStart, Router } from "@angular/router";
@@ -59,7 +59,6 @@ export class AdvertiserService {
const targetingObject = parseTargetingForBackend(campaign.targetingArray);
Object.assign(campaign, {targeting: targetingObject});
}
-
return this.http.patch
(`${environment.apiUrl}/campaigns/${campaign.id}`, {campaign});
}
diff --git a/src/app/advertiser/campaign-details/campaign-details.component.html b/src/app/advertiser/campaign-details/campaign-details.component.html
index 85cc9b9a0..80387a793 100644
--- a/src/app/advertiser/campaign-details/campaign-details.component.html
+++ b/src/app/advertiser/campaign-details/campaign-details.component.html
@@ -12,7 +12,7 @@
class="
dwmth-copy
dwmth-copy--small">
- My Campaigns
+ My campaigns
- Delete Campaign
+ Delete campaign
@@ -188,7 +188,7 @@
class="
dwmth-copy--small
label">
- Max Cpm
+ Max CPM
- Date of Start
+ dwmth-copy--small
+ label"
+ >
+ Start date