Skip to content

Commit

Permalink
Implement VAR for C23_WMDE_iPad_01
Browse files Browse the repository at this point in the history
- VAR has logo payment buttons
- add comma in slides for both banners

Ticket: https://phabricator.wikimedia.org/T349700
  • Loading branch information
Abban authored and moiikana committed Nov 1, 2023
1 parent 2f71906 commit 12d7c6a
Show file tree
Hide file tree
Showing 13 changed files with 507 additions and 14 deletions.
6 changes: 3 additions & 3 deletions banners/pad/banner_var.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { createVueApp } from '@src/createVueApp';

import './styles/styles.scss';
import './styles/styles_var.scss';

import BannerConductor from '@src/components/BannerConductor/BannerConductor.vue';
import Banner from './components/BannerCtrl.vue';
import Banner from './components/BannerVar.vue';
import getBannerDelay from '@src/utils/getBannerDelay';
import { WindowResizeHandler } from '@src/utils/ResizeHandler';
import PageWPORG from '@src/page/PageWPORG';
Expand All @@ -18,7 +18,7 @@ import DynamicTextPlugin from '@src/DynamicTextPlugin';
import { LocalImpressionCount } from '@src/utils/LocalImpressionCount';

// Channel specific form setup
import { createFormItems } from './form_items';
import { createFormItems } from './form_items_var';
import { createFormActions } from '@src/createFormActions';

// Content
Expand Down
167 changes: 167 additions & 0 deletions banners/pad/components/BannerVar.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
<template>
<div class="wmde-banner-wrapper" :class="contentState">
<MainBanner
@close="onCloseMain"
@form-interaction="onFormInteraction"
v-if="contentState === ContentStates.Main"
:bannerState="bannerState"
>
<template #banner-slides="{ play }: any">
<div class="wmde-banner-content-headline">
<span class="wmde-banner-content-headline-text">Ist Ihnen Wikipedia 5&nbsp;€ wert?</span>
</div>
<KeenSlider :with-navigation="true" :play="play" :interval="5000">

<template #slides="{ currentSlide }: any">
<BannerSlides :currentSlide="currentSlide"/>
</template>

<template #left-icon>
<ChevronLeftIcon :fill="'#990a00'"/>
</template>

<template #right-icon>
<ChevronRightIcon :fill="'#990a00'"/>
</template>

</KeenSlider>
</template>

<template #progress>
<ProgressBar amount-to-show-on-right="TARGET"/>
</template>

<template #donation-form="{ formInteraction }: any">
<MultiStepDonation :step-controllers="stepControllers" @form-interaction="formInteraction">

<template #[FormStepNames.MainDonationFormStep]="{ pageIndex, submit, isCurrent, previous }: any">
<MainDonationForm :page-index="pageIndex" @submit="submit" :is-current="isCurrent" @previous="previous">

<template #label-payment-ppl>
<span class="wmde-banner-select-group-label with-logos paypal"><PayPalLogo/></span>
</template>

<template #label-payment-bez>
<span class="wmde-banner-select-group-label with-logos sepa"><SepaLogo/></span>
</template>

<template #label-payment-mcp>
<span class="wmde-banner-select-group-label with-logos credit-cards">
<VisaLogo/>
<MastercardLogo/>
<AmexLogo/>
</span>
</template>

</MainDonationForm>
</template>

<template #[FormStepNames.UpgradeToYearlyFormStep]="{ pageIndex, submit, isCurrent, previous }: any">
<UpgradeToYearlyButtonForm :page-index="pageIndex" @submit="submit" :is-current="isCurrent" @previous="previous">
<template #back>
<ChevronLeftIcon/>
</template>
</UpgradeToYearlyButtonForm>
</template>

</MultiStepDonation>
</template>

<template #footer>
<BannerFooter @showFundsModal="isFundsModalVisible = true"/>
</template>
</MainBanner>

<SoftClose
v-if="contentState === ContentStates.SoftClosing"
@close="() => onClose( 'SoftClose', CloseChoices.Close )"
@maybe-later="() => onClose( 'SoftClose', CloseChoices.MaybeLater )"
@time-out-close="() => onClose( 'SoftClose', CloseChoices.TimeOut )"
/>

<FundsModal
:content="useOfFundsContent"
:is-funds-modal-visible="isFundsModalVisible"
@hideFundsModal="isFundsModalVisible = false"
/>

</div>
</template>

<script setup lang="ts">
import { BannerStates } from '@src/components/BannerConductor/StateMachine/BannerStates';
import { nextTick, ref, watch } from 'vue';
import { UseOfFundsContent as useOfFundsContentInterface } from '@src/domain/UseOfFunds/UseOfFundsContent';
import SoftClose from '@src/components/SoftClose/SoftClose.vue';
import MainBanner from './MainBanner.vue';
import FundsModal from '@src/components/UseOfFunds/FundsModal.vue';
import BannerSlides from '../content/BannerSlides.vue';
import ProgressBar from '@src/components/ProgressBar/ProgressBar.vue';
import MultiStepDonation from '@src/components/DonationForm/MultiStepDonation.vue';
import MainDonationForm from '@src/components/DonationForm/Forms/MainDonationForm.vue';
import ChevronRightIcon from '@src/components/Icons/ChevronRightIcon.vue';
import KeenSlider from '@src/components/Slider/KeenSlider.vue';
import ChevronLeftIcon from '@src/components/Icons/ChevronLeftIcon.vue';
import UpgradeToYearlyButtonForm from '@src/components/DonationForm/Forms/UpgradeToYearlyButtonForm.vue';
import { useFormModel } from '@src/components/composables/useFormModel';
import {
createSubmittableMainDonationForm
} from '@src/components/DonationForm/StepControllers/SubmittableMainDonationForm';
import {
createSubmittableUpgradeToYearly
} from '@src/components/DonationForm/StepControllers/SubmittableUpgradeToYearly';
import { CloseChoices } from '@src/domain/CloseChoices';
import { CloseEvent } from '@src/tracking/events/CloseEvent';
import { TrackingFeatureName } from '@src/tracking/TrackingEvent';
import MastercardLogo from '@src/components/PaymentLogos/MastercardLogo.vue';
import SepaLogo from '@src/components/PaymentLogos/SepaLogo.vue';
import VisaLogo from '@src/components/PaymentLogos/VisaLogo.vue';
import AmexLogo from '@src/components/PaymentLogos/AmexLogo.vue';
import PayPalLogo from '@src/components/PaymentLogos/PayPalLogo.vue';
import BannerFooter from '@src/components/Footer/BannerFooter.vue';
enum ContentStates {
Main = 'wmde-banner-wrapper--main',
SoftClosing = 'wmde-banner-wrapper--soft-closing'
}
enum FormStepNames {
MainDonationFormStep = 'MainDonationForm',
UpgradeToYearlyFormStep = 'UpgradeToYearlyForm'
}
interface Props {
bannerState: BannerStates;
useOfFundsContent: useOfFundsContentInterface;
}
defineProps<Props>();
const emit = defineEmits( [ 'bannerClosed', 'bannerContentChanged' ] );
const isFundsModalVisible = ref<boolean>( false );
const contentState = ref<ContentStates>( ContentStates.Main );
const formModel = useFormModel();
const stepControllers = [
createSubmittableMainDonationForm( formModel, FormStepNames.UpgradeToYearlyFormStep ),
createSubmittableUpgradeToYearly( formModel, FormStepNames.MainDonationFormStep, FormStepNames.MainDonationFormStep )
];
watch( contentState, async () => {
emit( 'bannerContentChanged' );
} );
function onFormInteraction(): void {
nextTick( () => {
emit( 'bannerContentChanged' );
} );
}
function onCloseMain(): void {
contentState.value = ContentStates.SoftClosing;
}
function onClose( feature: TrackingFeatureName, userChoice: CloseChoices ): void {
emit( 'bannerClosed', new CloseEvent( feature, userChoice ) );
}
</script>
4 changes: 2 additions & 2 deletions banners/pad/content/BannerSlides.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
<p>
<InfoIcon/>
An alle, die Wikipedia in Deutschland nutzen: Vielleicht kommen wir gerade ungelegen,
aber dennoch: Klicken Sie jetzt bitte nicht weg! Am heutigen {{ currentDayName }} den {{ currentDate }} bitten wir Sie
aber dennoch: Klicken Sie jetzt bitte nicht weg! Am heutigen {{ currentDayName }}, den {{ currentDate }}, bitten wir Sie
bescheiden, die Unabhängigkeit von Wikipedia zu sichern.
</p>
</KeenSliderSlide>
<KeenSliderSlide :is-current="currentSlide === 1">
<p>{{ campaignDaySentence }} Insgesamt spenden 99% nichts – sie übergehen diesen Aufruf. Wikipedia wird
durch Spenden von durchschnittlich 22,66&nbsp;€ finanziert.</p>
durch Spenden von durchschnittlich 22,25&nbsp;€ finanziert.</p>
</KeenSliderSlide>
<KeenSliderSlide :is-current="currentSlide === 2">
<p>Doch schon mit einer Spende von 5&nbsp;€ kann Wikipedia sich auch in Zukunft erfolgreich
Expand Down
20 changes: 20 additions & 0 deletions banners/pad/form_items_var.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import FormItemsBuilder from '@src/utils/FormItemsBuilder/FormItemsBuilder';
import { Translator } from '@src/Translator';
import { DonationFormItems } from '@src/utils/FormItemsBuilder/DonationFormItems';
import { Intervals } from '@src/utils/FormItemsBuilder/fields/Intervals';
import { PaymentMethods } from '@src/utils/FormItemsBuilder/fields/PaymentMethods';
import { NumberFormatter } from '@src/utils/DynamicContent/formatters/NumberFormatter';

export function createFormItems( translations: Translator, amountFormatter: NumberFormatter ): DonationFormItems {
return new FormItemsBuilder( translations, amountFormatter )
.setIntervals(
Intervals.ONCE,
Intervals.MONTHLY,
Intervals.YEARLY
)
.setAmounts( 5, 10, 20, 25, 50, 100 )
.setPaymentMethods(
PaymentMethods.PAYPAL,
PaymentMethods.CREDIT_CARD
).getItems();
}
18 changes: 14 additions & 4 deletions banners/pad/styles/MainBanner.scss
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
@use 'src/themes/Treedip/variables/colors';
@use 'src/themes/Treedip/variables/fonts';
@use 'src/themes/Treedip/variables/breakpoints';

$banner-height: 353px !default;
$form-width: 256px !default;

.wmde-banner {
&-main {
min-height: $banner-height;
height: $banner-height;
display: flex;
flex-direction: column;
padding: 12px 24px 0;
Expand All @@ -22,18 +23,27 @@ $form-width: 256px !default;
font-weight: bold;
text-align: center;
margin-top: 20px;
padding: 0 52px;
padding: 0 20px;
position: relative;

@include breakpoints.medium-up {
padding: 0 52px;
}

&::before {
content: '';
position: absolute;
height: 1px;
top: 50%;
left: 52px;
right: 52px;
left: 20px;
right: 20px;
background: colors.$primary;
z-index: 98;

@include breakpoints.medium-up {
left: 52px;
right: 52px;
}
}

&-text {
Expand Down
82 changes: 82 additions & 0 deletions banners/pad/styles/MainBannerVar.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
@use 'src/themes/Treedip/variables/colors';
@use 'src/themes/Treedip/variables/fonts';
@use 'src/themes/Treedip/variables/breakpoints';

$banner-height: 353px !default;
$form-width: 256px !default;

.wmde-banner {
&-main {
height: $banner-height;
display: flex;
flex-direction: column;
padding: 12px 24px 0;
}

&-content {
display: flex;
flex: 1 1 auto;

&-headline {
font-family: fonts.$content;
font-size: 21px;
font-weight: bold;
text-align: center;
margin-top: 20px;
padding: 0 20px;
position: relative;

@include breakpoints.medium-up {
padding: 0 52px;
}

&::before {
content: '';
position: absolute;
height: 1px;
top: 50%;
left: 20px;
right: 20px;
background: colors.$primary;
z-index: 98;

@include breakpoints.medium-up {
left: 52px;
right: 52px;
}
}

&-text {
position: relative;
display: inline-block;
z-index: 99;
padding: 0 10px;
line-height: 24px;
background: colors.$white;
}
}
}

&-column-left {
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 1 1 auto;
overflow-y: hidden;
margin-right: 20px;

border: 5px solid colors.$primary;
border-radius: 9px;
padding: 20px 0;
}

&-column-right {
flex: 1 1 $form-width;
width: $form-width;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
padding: 10px 16px 10px 0;
}
}
2 changes: 1 addition & 1 deletion banners/pad/styles/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
@use 'src/components/BannerConductor/banner-transition';
@use './Banner';
@use 'MainBanner' with (
$banner-height: 353px,
$banner-height: 378px,
$form-width: 256px
);
@use 'src/themes/UseOfFunds/UseOfFunds';
Expand Down
Loading

0 comments on commit 12d7c6a

Please sign in to comment.