@capillarytech/creatives-library 2.0.70 → 2.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.js +1 -1
- package/components/Ckeditor/index.js +2 -1
- package/components/EmailMobilePreview/index.scss +0 -1
- package/components/EmailPreviewV2/_emailPreviewV2.scss +4 -1
- package/components/EmailPreviewV2/index.js +1 -1
- package/components/FormBuilder/index.js +25 -10
- package/components/Header/index.js +3 -1
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +38 -3
- package/components/TemplatePreview/index.js +45 -51
- package/components/TemplatePreview/messages.js +1 -1
- package/config/app.js +1 -0
- package/containers/Cap/actions.js +0 -5
- package/containers/Cap/reducer.js +1 -1
- package/containers/Cap/selectors.js +0 -13
- package/containers/Ebill/index.js +1 -2
- package/containers/Email/_email.scss +1 -0
- package/containers/Email/actions.js +3 -8
- package/containers/Email/constants.js +0 -1
- package/containers/Email/index.js +947 -322
- package/containers/Email/reducer.js +0 -3
- package/containers/Email/sagas.js +6 -3
- package/containers/Email/selectors.js +1 -4
- package/containers/Line/Create/index.js +1 -2
- package/containers/Line/Edit/_lineEdit.scss +4 -0
- package/containers/Line/Edit/index.js +1 -3
- package/containers/MobilePush/Create/_mobilePushCreate.scss +3 -12
- package/containers/MobilePush/Create/actions.js +0 -6
- package/containers/MobilePush/Create/constants.js +0 -1
- package/containers/MobilePush/Create/index.js +1133 -628
- package/containers/MobilePush/Create/messages.js +1 -5
- package/containers/MobilePush/Create/reducer.js +0 -2
- package/containers/MobilePush/Create/selectors.js +3 -3
- package/containers/MobilePush/Edit/_mobilePushCreate.scss +3 -9
- package/containers/MobilePush/Edit/index.js +1127 -393
- package/containers/MobilePush/Edit/messages.js +0 -4
- package/containers/MobilePush/Edit/reducer.js +1 -2
- package/containers/MobilePush/Edit/selectors.js +3 -6
- package/containers/Sms/Create/_smsCreate.scss +2 -1
- package/containers/Sms/Create/actions.js +4 -4
- package/containers/Sms/Create/index.js +570 -102
- package/containers/Sms/Create/sagas.js +2 -1
- package/containers/Sms/Edit/actions.js +5 -10
- package/containers/Sms/Edit/constants.js +0 -1
- package/containers/Sms/Edit/index.js +548 -103
- package/containers/Sms/Edit/reducer.js +0 -2
- package/containers/Sms/Edit/sagas.js +3 -1
- package/containers/TagList/index.js +3 -3
- package/containers/Templates/actions.js +1 -3
- package/containers/Templates/index.js +299 -268
- package/containers/Templates/messages.js +90 -122
- package/containers/Templates/reducer.js +3 -3
- package/containers/Templates/sagas.js +1 -5
- package/containers/Templates/selectors.js +1 -41
- package/containers/WeChat/MapTemplates/index.js +3 -4
- package/containers/WeChat/RichmediaTemplates/Create/index.js +18 -4
- package/containers/WeChat/RichmediaTemplates/Create/messages.js +4 -0
- package/containers/WeChat/RichmediaTemplates/Edit/index.js +3 -1
- package/containers/WeChat/RichmediaTemplates/View/index.js +3 -1
- package/index.js +31 -31
- package/initialState.js +6 -0
- package/package.json +3 -3
- package/routes.js +24 -19
- package/services/api.js +6 -2
- package/services/getSchema.js +18 -0
- package/v2Containers/App/actions.js +7 -0
- package/v2Containers/App/constants.js +3 -0
- package/v2Containers/App/reducer.js +19 -0
- package/v2Containers/App/sagas.js +26 -0
- package/v2Containers/App/selectors.js +25 -0
- package/v2Containers/App/tests/actions.test.js +18 -0
- package/v2Containers/App/tests/reducer.test.js +9 -0
- package/v2Containers/App/tests/sagas.test.js +15 -0
- package/v2Containers/App/tests/selectors.test.js +10 -0
- package/v2Containers/Assets/Gallery/_gallery.scss +0 -0
- package/v2Containers/Assets/Gallery/actions.js +37 -0
- package/v2Containers/Assets/Gallery/constants.js +23 -0
- package/v2Containers/Assets/Gallery/index.js +479 -0
- package/v2Containers/Assets/Gallery/messages.js +97 -0
- package/v2Containers/Assets/Gallery/reducer.js +81 -0
- package/v2Containers/Assets/Gallery/sagas.js +84 -0
- package/v2Containers/Assets/Gallery/selectors.js +25 -0
- package/v2Containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +7 -0
- package/v2Containers/Assets/Gallery/tests/actions.test.js +26 -0
- package/v2Containers/Assets/Gallery/tests/index.test.js +10 -0
- package/v2Containers/Assets/Gallery/tests/reducer.test.js +95 -0
- package/v2Containers/Assets/Gallery/tests/sagas.test.js +15 -0
- package/v2Containers/Assets/Gallery/tests/selectors.test.js +10 -0
- package/v2Containers/CallTask/_callTask.scss +5 -0
- package/v2Containers/CallTask/actions.js +15 -0
- package/v2Containers/CallTask/constants.js +7 -0
- package/v2Containers/CallTask/index.js +141 -0
- package/v2Containers/CallTask/messages.js +21 -0
- package/v2Containers/CallTask/reducer.js +23 -0
- package/v2Containers/CallTask/sagas.js +11 -0
- package/v2Containers/CallTask/selectors.js +25 -0
- package/v2Containers/CallTask/tests/actions.test.js +18 -0
- package/v2Containers/CallTask/tests/index.test.js +10 -0
- package/v2Containers/CallTask/tests/reducer.test.js +9 -0
- package/v2Containers/CallTask/tests/sagas.test.js +15 -0
- package/v2Containers/CallTask/tests/selectors.test.js +10 -0
- package/v2Containers/Cap/actions.js +64 -0
- package/v2Containers/Cap/constants.js +24 -0
- package/v2Containers/Cap/index.js +349 -0
- package/v2Containers/Cap/messsages.js +63 -0
- package/v2Containers/Cap/reducer.js +111 -0
- package/v2Containers/Cap/sagas.js +143 -0
- package/v2Containers/Cap/selectors.js +85 -0
- package/v2Containers/Cap/tests/index.test.js +16 -0
- package/v2Containers/Cap/tests/selectors.test.js +28 -0
- package/v2Containers/ChannelTemplates/actions.js +20 -0
- package/v2Containers/ChannelTemplates/constants.js +8 -0
- package/v2Containers/ChannelTemplates/index.js +48 -0
- package/v2Containers/ChannelTemplates/messages.js +13 -0
- package/v2Containers/ChannelTemplates/reducer.js +34 -0
- package/v2Containers/ChannelTemplates/sagas.js +32 -0
- package/v2Containers/ChannelTemplates/selectors.js +25 -0
- package/v2Containers/ChannelTemplates/tests/actions.test.js +18 -0
- package/v2Containers/ChannelTemplates/tests/index.test.js +10 -0
- package/v2Containers/ChannelTemplates/tests/reducer.test.js +9 -0
- package/v2Containers/ChannelTemplates/tests/sagas.test.js +15 -0
- package/v2Containers/ChannelTemplates/tests/selectors.test.js +10 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +257 -0
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +45 -0
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +70 -0
- package/v2Containers/CreativesContainer/actions.js +27 -0
- package/v2Containers/CreativesContainer/constants.js +16 -0
- package/v2Containers/CreativesContainer/index.js +483 -0
- package/v2Containers/CreativesContainer/index.scss +27 -0
- package/v2Containers/CreativesContainer/messages.js +293 -0
- package/v2Containers/CreativesContainer/reducer.js +29 -0
- package/v2Containers/CreativesContainer/sagas.js +11 -0
- package/v2Containers/CreativesContainer/selectors.js +30 -0
- package/v2Containers/CreativesContainer/tests/actions.test.js +18 -0
- package/v2Containers/CreativesContainer/tests/index.test.js +10 -0
- package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -0
- package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -0
- package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -0
- package/v2Containers/Dashboard/actions.js +15 -0
- package/v2Containers/Dashboard/constants.js +7 -0
- package/v2Containers/Dashboard/index.js +54 -0
- package/v2Containers/Dashboard/messages.js +13 -0
- package/v2Containers/Dashboard/reducer.js +21 -0
- package/v2Containers/Dashboard/sagas.js +11 -0
- package/v2Containers/Dashboard/selectors.js +25 -0
- package/v2Containers/Dashboard/tests/actions.test.js +18 -0
- package/v2Containers/Dashboard/tests/index.test.js +10 -0
- package/v2Containers/Dashboard/tests/reducer.test.js +9 -0
- package/v2Containers/Dashboard/tests/sagas.test.js +15 -0
- package/v2Containers/Dashboard/tests/selectors.test.js +10 -0
- package/v2Containers/Ebill/_ebill.scss +5 -0
- package/v2Containers/Ebill/actions.js +43 -0
- package/v2Containers/Ebill/constants.js +20 -0
- package/v2Containers/Ebill/index.js +1261 -0
- package/v2Containers/Ebill/messages.js +73 -0
- package/v2Containers/Ebill/reducer.js +72 -0
- package/v2Containers/Ebill/sagas.js +65 -0
- package/v2Containers/Ebill/selectors.js +25 -0
- package/v2Containers/Ebill/tests/actions.test.js +18 -0
- package/v2Containers/Ebill/tests/index.test.js +10 -0
- package/v2Containers/Ebill/tests/reducer.test.js +9 -0
- package/v2Containers/Ebill/tests/sagas.test.js +15 -0
- package/v2Containers/Ebill/tests/selectors.test.js +10 -0
- package/v2Containers/Email/_email.scss +140 -0
- package/v2Containers/Email/actions.js +86 -0
- package/v2Containers/Email/constants.js +37 -0
- package/v2Containers/Email/index.js +2703 -0
- package/v2Containers/Email/initialSchema.js +540 -0
- package/v2Containers/Email/messages.js +237 -0
- package/v2Containers/Email/reducer.js +147 -0
- package/v2Containers/Email/sagas.js +133 -0
- package/v2Containers/Email/selectors.js +34 -0
- package/v2Containers/Email/tests/actions.test.js +18 -0
- package/v2Containers/Email/tests/index.test.js +10 -0
- package/v2Containers/Email/tests/reducer.test.js +9 -0
- package/v2Containers/Email/tests/sagas.test.js +15 -0
- package/v2Containers/Email/tests/selectors.test.js +10 -0
- package/v2Containers/EmailWrapper/actions.js +15 -0
- package/v2Containers/EmailWrapper/constants.js +7 -0
- package/v2Containers/EmailWrapper/index.js +258 -0
- package/v2Containers/EmailWrapper/messages.js +57 -0
- package/v2Containers/EmailWrapper/reducer.js +23 -0
- package/v2Containers/EmailWrapper/sagas.js +11 -0
- package/v2Containers/EmailWrapper/selectors.js +25 -0
- package/v2Containers/EmailWrapper/tests/actions.test.js +18 -0
- package/v2Containers/EmailWrapper/tests/index.test.js +10 -0
- package/v2Containers/EmailWrapper/tests/reducer.test.js +9 -0
- package/v2Containers/EmailWrapper/tests/sagas.test.js +15 -0
- package/v2Containers/EmailWrapper/tests/selectors.test.js +10 -0
- package/v2Containers/LanguageProvider/actions.js +17 -0
- package/v2Containers/LanguageProvider/constants.js +8 -0
- package/v2Containers/LanguageProvider/index.js +46 -0
- package/v2Containers/LanguageProvider/reducer.js +30 -0
- package/v2Containers/LanguageProvider/selectors.js +20 -0
- package/v2Containers/LanguageProvider/tests/actions.test.js +19 -0
- package/v2Containers/LanguageProvider/tests/index.test.js +49 -0
- package/v2Containers/LanguageProvider/tests/reducer.test.js +20 -0
- package/v2Containers/LanguageProvider/tests/selectors.test.js +15 -0
- package/v2Containers/Line/Create/_lineCreate.scss +43 -0
- package/v2Containers/Line/Create/actions.js +90 -0
- package/v2Containers/Line/Create/constants.js +39 -0
- package/v2Containers/Line/Create/index.js +822 -0
- package/v2Containers/Line/Create/messages.js +173 -0
- package/v2Containers/Line/Create/reducer.js +99 -0
- package/v2Containers/Line/Create/sagas.js +107 -0
- package/v2Containers/Line/Create/selectors.js +36 -0
- package/v2Containers/Line/Edit/_lineEdit.scss +21 -0
- package/v2Containers/Line/Edit/actions.js +79 -0
- package/v2Containers/Line/Edit/constants.js +27 -0
- package/v2Containers/Line/Edit/index.js +1050 -0
- package/v2Containers/Line/Edit/messages.js +157 -0
- package/v2Containers/Line/Edit/reducer.js +83 -0
- package/v2Containers/Line/Edit/sagas.js +81 -0
- package/v2Containers/Line/Edit/selectors.js +29 -0
- package/v2Containers/Line/Edit/tests/actions.test.js +18 -0
- package/v2Containers/Line/Edit/tests/index.test.js +10 -0
- package/v2Containers/Line/Edit/tests/reducer.test.js +9 -0
- package/v2Containers/Line/Edit/tests/sagas.test.js +15 -0
- package/v2Containers/Line/Edit/tests/selectors.test.js +10 -0
- package/v2Containers/Login/assets/images/capillary_logo.png +0 -0
- package/v2Containers/Login/components/LoginForm/index.js +59 -0
- package/v2Containers/Login/components/LoginForm/messages.js +21 -0
- package/v2Containers/Login/components/LoginForm/tests/index.test.js +10 -0
- package/v2Containers/Login/index.js +106 -0
- package/v2Containers/Login/messages.js +21 -0
- package/v2Containers/Login/selectors.js +25 -0
- package/v2Containers/Login/tests/index.test.js +10 -0
- package/v2Containers/Login/tests/sagas.test.js +15 -0
- package/v2Containers/Login/tests/selectors.test.js +10 -0
- package/v2Containers/MobilePush/Create/_mobilePushCreate.scss +41 -0
- package/v2Containers/MobilePush/Create/actions.js +52 -0
- package/v2Containers/MobilePush/Create/constants.js +24 -0
- package/v2Containers/MobilePush/Create/index.js +1759 -0
- package/v2Containers/MobilePush/Create/messages.js +237 -0
- package/v2Containers/MobilePush/Create/reducer.js +72 -0
- package/v2Containers/MobilePush/Create/sagas.js +60 -0
- package/v2Containers/MobilePush/Create/selectors.js +28 -0
- package/v2Containers/MobilePush/Create/tests/actions.test.js +18 -0
- package/v2Containers/MobilePush/Create/tests/index.test.js +10 -0
- package/v2Containers/MobilePush/Create/tests/reducer.test.js +9 -0
- package/v2Containers/MobilePush/Create/tests/sagas.test.js +15 -0
- package/v2Containers/MobilePush/Create/tests/selectors.test.js +10 -0
- package/v2Containers/MobilePush/Edit/_mobilePushCreate.scss +38 -0
- package/v2Containers/MobilePush/Edit/actions.js +91 -0
- package/v2Containers/MobilePush/Edit/constants.js +35 -0
- package/v2Containers/MobilePush/Edit/index.js +1851 -0
- package/v2Containers/MobilePush/Edit/messages.js +253 -0
- package/v2Containers/MobilePush/Edit/reducer.js +113 -0
- package/v2Containers/MobilePush/Edit/sagas.js +119 -0
- package/v2Containers/MobilePush/Edit/selectors.js +32 -0
- package/v2Containers/MobilePush/Edit/tests/actions.test.js +18 -0
- package/v2Containers/MobilePush/Edit/tests/index.test.js +10 -0
- package/v2Containers/MobilePush/Edit/tests/reducer.test.js +9 -0
- package/v2Containers/MobilePush/Edit/tests/sagas.test.js +15 -0
- package/v2Containers/MobilePush/Edit/tests/selectors.test.js +10 -0
- package/v2Containers/MobilePush/commonMethods.js +249 -0
- package/v2Containers/MobilePush/eventsMap.js +127 -0
- package/v2Containers/MobilePush/initialSchema.js +1739 -0
- package/v2Containers/MobilepushWrapper/_mobilepushWrapper.scss +18 -0
- package/v2Containers/MobilepushWrapper/index.js +136 -0
- package/v2Containers/MobilepushWrapper/messages.js +29 -0
- package/v2Containers/MobilepushWrapper/tests/index.test.js +10 -0
- package/v2Containers/NotFoundPage/index.js +25 -0
- package/v2Containers/NotFoundPage/messages.js +13 -0
- package/v2Containers/NotFoundPage/tests/index.test.js +17 -0
- package/v2Containers/Sms/Create/_smsCreate.scss +58 -0
- package/v2Containers/Sms/Create/actions.js +27 -0
- package/v2Containers/Sms/Create/constants.js +16 -0
- package/v2Containers/Sms/Create/index.js +1017 -0
- package/v2Containers/Sms/Create/messages.js +85 -0
- package/v2Containers/Sms/Create/reducer.js +41 -0
- package/v2Containers/Sms/Create/sagas.js +35 -0
- package/v2Containers/Sms/Create/selectors.js +28 -0
- package/v2Containers/Sms/Create/tests/actions.test.js +18 -0
- package/v2Containers/Sms/Create/tests/index.test.js +10 -0
- package/v2Containers/Sms/Create/tests/reducer.test.js +9 -0
- package/v2Containers/Sms/Create/tests/sagas.test.js +15 -0
- package/v2Containers/Sms/Create/tests/selectors.test.js +10 -0
- package/v2Containers/Sms/Edit/actions.js +45 -0
- package/v2Containers/Sms/Edit/constants.js +18 -0
- package/v2Containers/Sms/Edit/index.js +1018 -0
- package/v2Containers/Sms/Edit/messages.js +89 -0
- package/v2Containers/Sms/Edit/reducer.js +52 -0
- package/v2Containers/Sms/Edit/sagas.js +50 -0
- package/v2Containers/Sms/Edit/selectors.js +32 -0
- package/v2Containers/Sms/Edit/tests/actions.test.js +18 -0
- package/v2Containers/Sms/Edit/tests/index.test.js +10 -0
- package/v2Containers/Sms/Edit/tests/reducer.test.js +9 -0
- package/v2Containers/Sms/Edit/tests/sagas.test.js +15 -0
- package/v2Containers/Sms/Edit/tests/selectors.test.js +10 -0
- package/v2Containers/Sms/initialSchema.js +281 -0
- package/v2Containers/TagList/_tagList.scss +8 -0
- package/v2Containers/TagList/actions.js +15 -0
- package/v2Containers/TagList/constants.js +7 -0
- package/v2Containers/TagList/index.js +236 -0
- package/v2Containers/TagList/messages.js +13 -0
- package/v2Containers/TagList/reducer.js +23 -0
- package/v2Containers/TagList/sagas.js +11 -0
- package/v2Containers/TagList/selectors.js +25 -0
- package/v2Containers/TagList/tests/actions.test.js +18 -0
- package/v2Containers/TagList/tests/index.test.js +10 -0
- package/v2Containers/TagList/tests/reducer.test.js +9 -0
- package/v2Containers/TagList/tests/sagas.test.js +15 -0
- package/v2Containers/TagList/tests/selectors.test.js +10 -0
- package/v2Containers/Templates/_templates.scss +349 -0
- package/v2Containers/Templates/actions.js +110 -0
- package/v2Containers/Templates/constants.js +45 -0
- package/v2Containers/Templates/index.js +1725 -0
- package/v2Containers/Templates/messages.js +278 -0
- package/v2Containers/Templates/reducer.js +142 -0
- package/v2Containers/Templates/sagas.js +180 -0
- package/v2Containers/Templates/selectors.js +68 -0
- package/v2Containers/Templates/tests/actions.test.js +18 -0
- package/v2Containers/Templates/tests/index.test.js +10 -0
- package/v2Containers/Templates/tests/reducer.test.js +9 -0
- package/v2Containers/Templates/tests/sagas.test.js +15 -0
- package/v2Containers/Templates/tests/selectors.test.js +10 -0
- package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
- package/v2Containers/TemplatesV2/actions.js +16 -0
- package/v2Containers/TemplatesV2/constants.js +10 -0
- package/v2Containers/TemplatesV2/index.js +217 -0
- package/v2Containers/TemplatesV2/messages.js +29 -0
- package/v2Containers/TemplatesV2/selectors.js +25 -0
- package/v2Containers/TemplatesV2/tests/actions.test.js +18 -0
- package/v2Containers/TemplatesV2/tests/index.test.js +10 -0
- package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -0
- package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -0
- package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -0
- package/v2Containers/TestPage/constants.js +7 -0
- package/v2Containers/TestPage/index.js +31 -0
- package/v2Containers/TestPage/messages.js +13 -0
- package/v2Containers/TestPage/reducer.js +21 -0
- package/v2Containers/TestPage/sagas.js +11 -0
- package/v2Containers/Testv2/actions.js +15 -0
- package/v2Containers/Testv2/constants.js +7 -0
- package/v2Containers/Testv2/index.js +47 -0
- package/v2Containers/Testv2/messages.js +13 -0
- package/v2Containers/Testv2/reducer.js +23 -0
- package/v2Containers/Testv2/sagas.js +11 -0
- package/v2Containers/Testv2/selectors.js +25 -0
- package/v2Containers/Testv2/tests/actions.test.js +18 -0
- package/v2Containers/Testv2/tests/index.test.js +10 -0
- package/v2Containers/Testv2/tests/reducer.test.js +9 -0
- package/v2Containers/Testv2/tests/sagas.test.js +15 -0
- package/v2Containers/Testv2/tests/selectors.test.js +10 -0
- package/v2Containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
- package/v2Containers/WeChat/MapTemplates/actions.js +52 -0
- package/v2Containers/WeChat/MapTemplates/constants.js +28 -0
- package/v2Containers/WeChat/MapTemplates/index.js +1385 -0
- package/v2Containers/WeChat/MapTemplates/messages.js +73 -0
- package/v2Containers/WeChat/MapTemplates/reducer.js +74 -0
- package/v2Containers/WeChat/MapTemplates/sagas.js +86 -0
- package/v2Containers/WeChat/MapTemplates/selectors.js +25 -0
- package/v2Containers/WeChat/MapTemplates/tests/actions.test.js +18 -0
- package/v2Containers/WeChat/MapTemplates/tests/index.test.js +10 -0
- package/v2Containers/WeChat/MapTemplates/tests/reducer.test.js +9 -0
- package/v2Containers/WeChat/MapTemplates/tests/sagas.test.js +15 -0
- package/v2Containers/WeChat/MapTemplates/tests/selectors.test.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +1053 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +141 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +48 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/tests/actions.test.js +18 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/tests/index.test.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/tests/reducer.test.js +9 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/tests/sagas.test.js +15 -0
- package/v2Containers/WeChat/RichmediaTemplates/Create/tests/selectors.test.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/index.js +116 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +32 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/actions.test.js +18 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/index.test.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/reducer.test.js +9 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/sagas.test.js +15 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/selectors.test.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/index.js +47 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +13 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/tests/actions.test.js +18 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/tests/index.test.js +10 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/tests/reducer.test.js +9 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/tests/sagas.test.js +15 -0
- package/v2Containers/WeChat/RichmediaTemplates/View/tests/selectors.test.js +10 -0
|
@@ -8,13 +8,14 @@ import PropTypes from 'prop-types';
|
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { connect } from 'react-redux';
|
|
11
|
-
import
|
|
11
|
+
import Helmet from 'react-helmet';
|
|
12
|
+
import { injectIntl, intlShape } from 'react-intl';
|
|
12
13
|
import { createStructuredSelector } from 'reselect';
|
|
13
14
|
import moment from "moment";
|
|
14
15
|
import _ from 'lodash';
|
|
15
16
|
import { bindActionCreators } from 'redux';
|
|
16
|
-
import { Dropdown, Menu, Modal} from 'antd';
|
|
17
|
-
import {
|
|
17
|
+
import { Row, Select, Spin, Dropdown, Col, Breadcrumb, Menu, Modal} from 'antd';
|
|
18
|
+
import { CapInput, CapButton, CapPopover, CapSelect } from '@capillarytech/cap-ui-library/';
|
|
18
19
|
import { makeSelectTemplates, makeSelectTemplatesResponse } from './selectors';
|
|
19
20
|
import { makeSelectCreate as makeSelectCreateSms} from '../Sms/Create/selectors';
|
|
20
21
|
import { makeSelectCreate as makeSelectCreateMobilePush } from '../MobilePush/Create/selectors';
|
|
@@ -42,10 +43,10 @@ import * as commonUtil from '../../utils/common';
|
|
|
42
43
|
import SlideBox from '../../components/SlideBox';
|
|
43
44
|
import Pagination from '../../components/Pagination';
|
|
44
45
|
import EmailPreview from '../../components/EmailPreview';
|
|
45
|
-
import CreativesContainer from '../CreativesContainer';
|
|
46
46
|
import WechatRichmediaTemplatePreview from '../../components/TemplatePreview/WechatRichmediaTemplatePreview';
|
|
47
47
|
const MenuItem = Menu.Item;
|
|
48
|
-
const
|
|
48
|
+
const Option = Select.Option;
|
|
49
|
+
const BreadcrumbItem = Breadcrumb.Item;
|
|
49
50
|
|
|
50
51
|
export class Templates extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
51
52
|
constructor(props) {
|
|
@@ -70,7 +71,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
70
71
|
searchedTemplates: false,
|
|
71
72
|
defaultAccount: true,
|
|
72
73
|
modeType: null,
|
|
73
|
-
routeParams: null,
|
|
74
74
|
};
|
|
75
75
|
this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
|
|
76
76
|
this.handleOnItemClick = this.handleOnItemClick.bind(this);
|
|
@@ -96,7 +96,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
96
96
|
componentWillMount() {
|
|
97
97
|
if (this.state.channel === '') {
|
|
98
98
|
let channel = '';
|
|
99
|
-
|
|
99
|
+
console.log('templates props', this.props);
|
|
100
100
|
switch (this.props.route.name.toLowerCase()) {
|
|
101
101
|
case "sms":
|
|
102
102
|
channel = 'Sms';
|
|
@@ -122,9 +122,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
122
122
|
channel = '';
|
|
123
123
|
}
|
|
124
124
|
this.setState({ channel });
|
|
125
|
-
|
|
126
|
-
this.props.actions.getUserList();
|
|
127
|
-
}
|
|
125
|
+
this.props.actions.getUserList();
|
|
128
126
|
}
|
|
129
127
|
}
|
|
130
128
|
|
|
@@ -154,10 +152,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
154
152
|
// this.props.actions.getEdmDefaultTemplates();
|
|
155
153
|
// }
|
|
156
154
|
}
|
|
157
|
-
|
|
155
|
+
console.log('added listener templates,', this.props);
|
|
158
156
|
window.addEventListener("message", this.handleFrameTasks);
|
|
159
157
|
}
|
|
160
158
|
componentWillReceiveProps(nextProps) {
|
|
159
|
+
console.log('nextProps templates', nextProps, this.props.Create);
|
|
161
160
|
const params = {
|
|
162
161
|
name: this.state.searchText,
|
|
163
162
|
sortBy: this.state.sortBy,
|
|
@@ -187,6 +186,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
187
186
|
} else if (nextProps.route.name.toLowerCase() === 'line') {
|
|
188
187
|
channel = 'Line';
|
|
189
188
|
}
|
|
189
|
+
// console.log('Next Props details ', nextProps.route.name, channel);
|
|
190
190
|
this.setState({ channel }, () => {
|
|
191
191
|
if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(nextProps.Templates.selectedWeChatAccount))) {
|
|
192
192
|
if (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
@@ -240,6 +240,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
240
240
|
this.getAllTemplates({params});
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
|
+
if (this.state.channel.toLowerCase() === "sms" && nextProps.Create && nextProps.Create.response && nextProps.Create.response.templateId && nextProps.Create.response.templateId !== '') {
|
|
244
|
+
const message = getMessageObject('success', `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`, true);
|
|
245
|
+
this.props.globalActions.addMessageToQueue(message);
|
|
246
|
+
this.getAllTemplates({params, resetPage: true});
|
|
247
|
+
this.props.smsActions.clearCreateResponse();
|
|
248
|
+
}
|
|
243
249
|
if (this.state.channel.toLowerCase() === "mobilepush" && nextProps.CreateMobilePush && nextProps.CreateMobilePush.response && nextProps.CreateMobilePush.response.templateId && nextProps.CreateMobilePush.response.templateId !== '') {
|
|
244
250
|
if (this.state.channel.toLowerCase() === "mobilepush" && !_.isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
245
251
|
params.accountId = nextProps.Templates.selectedWeChatAccount.id;
|
|
@@ -290,12 +296,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
290
296
|
}
|
|
291
297
|
if (!nextProps.Templates.deleteTemplateInProgress && !_.isEqual(nextProps.Templates.deleteTemplateInProgress, this.props.Templates.deleteTemplateInProgress) &&
|
|
292
298
|
nextProps.Templates.deleteResponse) {
|
|
299
|
+
console.log("delete");
|
|
293
300
|
const message = getMessageObject('success', `${this.state.channel.toUpperCase()} ${this.props.intl.formatMessage(messages['Template deleted successfully'])}`, true);
|
|
294
301
|
nextProps.globalActions.addMessageToQueue(message);
|
|
295
302
|
this.getAllTemplates({params, resetPage: true});
|
|
296
303
|
}
|
|
297
304
|
|
|
298
305
|
if (!nextProps.Templates.sendingFile && !_.isEqual(this.props.Templates.sendingFile, nextProps.Templates.sendingFile) && !nextProps.Templates.errorSendingFile) {
|
|
306
|
+
console.log('Got html Content ', nextProps.Templates.selectedEmailLayout);
|
|
299
307
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
300
308
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
301
309
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
@@ -304,10 +312,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
304
312
|
this.props.createNew();
|
|
305
313
|
return;
|
|
306
314
|
}
|
|
307
|
-
this.
|
|
315
|
+
this.props.router.push({
|
|
308
316
|
pathname: `/${nextProps.route.name.toLowerCase()}/create`,
|
|
309
317
|
query: type === 'embedded' ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module},
|
|
310
|
-
}
|
|
318
|
+
});
|
|
311
319
|
}
|
|
312
320
|
|
|
313
321
|
if (!nextProps.Templates.sendingFile && !_.isEqual(this.props.Templates.sendingFile, nextProps.Templates.sendingFile) && nextProps.Templates.errorSendingFile) {
|
|
@@ -343,13 +351,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
343
351
|
}
|
|
344
352
|
|
|
345
353
|
componentWillUnmount() {
|
|
354
|
+
console.log('removed listener templates');
|
|
346
355
|
window.removeEventListener("message", this.handleFrameTasks);
|
|
347
356
|
this.props.actions.resetTemplateStoreData();
|
|
348
|
-
this.props.globalActions.clearMetaEntities();
|
|
349
357
|
// this.setState({defaultAccount: false});
|
|
350
358
|
}
|
|
351
359
|
|
|
352
|
-
onAccountSelect(value) {
|
|
360
|
+
onAccountSelect(value, option) {
|
|
361
|
+
console.log('Selected Account ', value, option);
|
|
353
362
|
this.setState({selectedAccount: value}, () => {
|
|
354
363
|
const params = {
|
|
355
364
|
name: this.state.searchText,
|
|
@@ -368,39 +377,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
368
377
|
this.getAllTemplates({params, resetPage: true});
|
|
369
378
|
});
|
|
370
379
|
}
|
|
371
|
-
|
|
372
|
-
onCreateComplete = () => {
|
|
373
|
-
this.setState({routeParams: null});
|
|
374
|
-
}
|
|
375
|
-
getCurrentWindow(e) {
|
|
376
|
-
const response = {
|
|
377
|
-
action: e.action,
|
|
378
|
-
value: 'templates',
|
|
379
|
-
direction: e.value,
|
|
380
|
-
};
|
|
381
|
-
parent.postMessage(JSON.stringify(response), '*');
|
|
382
|
-
}
|
|
383
|
-
getCreativesParams = () => {
|
|
384
|
-
const routeParams = this.state.routeParams;
|
|
385
|
-
const creativesParams = {mode: ''};
|
|
386
|
-
if (!_.isEmpty(routeParams)) {
|
|
387
|
-
if (routeParams.pathname.indexOf('create') > -1) {
|
|
388
|
-
creativesParams.mode = 'create';
|
|
389
|
-
} else if (routeParams.pathname.indexOf('edit') > -1) {
|
|
390
|
-
creativesParams.mode = 'edit';
|
|
391
|
-
creativesParams._id = routeParams.pathname.split('/')[3];
|
|
392
|
-
creativesParams.type = this.state.channel.toUpperCase();
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
return creativesParams;
|
|
396
|
-
}
|
|
397
|
-
getMappedLocale = (locale) => {
|
|
398
|
-
const map = {
|
|
399
|
-
'en': 'en',
|
|
400
|
-
'zh-cn': 'zh',
|
|
401
|
-
};
|
|
402
|
-
return map[locale];
|
|
403
|
-
};
|
|
380
|
+
|
|
404
381
|
setLocale = () => {
|
|
405
382
|
const user = localStorage.getItem('user');
|
|
406
383
|
let locale = 'en';
|
|
@@ -409,12 +386,22 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
409
386
|
}
|
|
410
387
|
locale = this.getMappedLocale(locale);
|
|
411
388
|
//locale = 'zh';
|
|
412
|
-
|
|
389
|
+
console.log('Setting final locale as', locale);
|
|
413
390
|
moment.locale(locale);
|
|
414
391
|
};
|
|
392
|
+
|
|
393
|
+
getMappedLocale = (locale) => {
|
|
394
|
+
const map = {
|
|
395
|
+
'en': 'en',
|
|
396
|
+
'zh-cn': 'zh',
|
|
397
|
+
};
|
|
398
|
+
return map[locale];
|
|
399
|
+
};
|
|
400
|
+
|
|
415
401
|
getAllTemplates = ({params, getNextPage, resetPage}, resetTemplates) => {
|
|
416
402
|
let queryParams = params;
|
|
417
403
|
let page = this.state.page;
|
|
404
|
+
console.log('Get all templates ', this.props.Templates.getAllTemplatesInProgress, resetPage, page, this.state.templatesCount, this.state.perPageLimit, getNextPage);
|
|
418
405
|
if (resetTemplates) {
|
|
419
406
|
queryParams.name = this.state.searchText;
|
|
420
407
|
queryParams.sortBy = this.state.sortBy;
|
|
@@ -456,58 +443,37 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
456
443
|
});
|
|
457
444
|
}
|
|
458
445
|
};
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
};
|
|
469
|
-
if (currentChannel === "SMS") {
|
|
470
|
-
templateData.content = template.versions.base['sms-editor'];
|
|
471
|
-
} else if (currentChannel === "EMAIL") {
|
|
472
|
-
templateData.url = template.versions.base.preview_http_url;
|
|
473
|
-
} else if (currentChannel === "MOBILEPUSH" && template.type === "MOBILEPUSH") {
|
|
474
|
-
templateData.content = template;
|
|
475
|
-
}
|
|
476
|
-
return templateData;
|
|
477
|
-
});
|
|
478
|
-
return (<div>
|
|
479
|
-
{filterContent}
|
|
480
|
-
<CapSpin spinning={isLoading} tip={loadingTip}>
|
|
481
|
-
{!_.isEmpty(templates) && <div className="pagination-container">
|
|
482
|
-
<CapCustomCardList key={`${currentChannel}-card-list`} cardList={cardDataList} type={currentChannel} />
|
|
483
|
-
</div>}
|
|
484
|
-
{(this.state.selectedAccount === '' && _.isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
485
|
-
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noAccountMessage)}</span>
|
|
486
|
-
</div>}
|
|
487
|
-
</CapSpin>
|
|
488
|
-
|
|
489
|
-
</div>);
|
|
446
|
+
|
|
447
|
+
getCurrentWindow(e) {
|
|
448
|
+
console.log('in sms templates', e);
|
|
449
|
+
const response = {
|
|
450
|
+
action: e.action,
|
|
451
|
+
value: 'templates',
|
|
452
|
+
direction: e.value,
|
|
453
|
+
};
|
|
454
|
+
parent.postMessage(JSON.stringify(response), '*');
|
|
490
455
|
}
|
|
456
|
+
|
|
491
457
|
skipTemplateSelection = (e) => {
|
|
458
|
+
console.log("vvv", e);
|
|
492
459
|
const type = this.props.location.query.type;
|
|
493
460
|
const module = (type === 'embedded') ? this.props.location.query.module : 'default';
|
|
494
|
-
let routeParams = {};
|
|
495
461
|
if (this.state.channel.toLowerCase() === 'email') {
|
|
496
462
|
const isLanguageSupport = this.props.location.query.isLanguageSupport || false;
|
|
497
|
-
|
|
463
|
+
this.props.router.push({
|
|
498
464
|
pathname: `/email/view`,
|
|
499
465
|
query: type === 'embedded' ? {type: 'embedded', module, isLanguageSupport} : {},
|
|
500
|
-
};
|
|
466
|
+
});
|
|
501
467
|
} else if (this.state.channel.toLowerCase() === 'sms') {
|
|
502
|
-
|
|
468
|
+
this.props.router.push({
|
|
503
469
|
pathname: `/sms/view`,
|
|
504
470
|
query: type === 'embedded' ? {type: 'embedded', module} : {},
|
|
505
|
-
};
|
|
471
|
+
});
|
|
506
472
|
} else if (this.state.channel.toLowerCase() === 'mobilepush') {
|
|
507
|
-
|
|
473
|
+
this.props.router.push({
|
|
508
474
|
pathname: `/mobilepush/edit/${e.template_id}`,
|
|
509
475
|
query: type === 'embedded' ? {type: 'embedded', module, account_id: e.account_id} : {},
|
|
510
|
-
};
|
|
476
|
+
});
|
|
511
477
|
} else if (this.state.channel.toLowerCase() === 'wechat') {
|
|
512
478
|
if (e.template_type && e.template_type === 'RICHMEDIA_WECHAT_TEMPLATE') {
|
|
513
479
|
this.props.router.push({
|
|
@@ -521,18 +487,21 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
521
487
|
});
|
|
522
488
|
}
|
|
523
489
|
} else if (this.state.channel.toLowerCase() === 'line') {
|
|
524
|
-
|
|
490
|
+
this.props.router.push({
|
|
525
491
|
pathname: `/line/view/${e.msg_type}/`,
|
|
526
492
|
query: type === 'embedded' ? {type: 'embedded', module, account_id: e.account_id } : {},
|
|
527
|
-
};
|
|
493
|
+
});
|
|
528
494
|
}
|
|
529
|
-
this.setState({loading: true
|
|
495
|
+
this.setState({loading: true});
|
|
530
496
|
}
|
|
531
497
|
|
|
532
|
-
handleMenuAction = (item) => {
|
|
498
|
+
handleMenuAction = (item, key) => {
|
|
499
|
+
console.log('Menu Clicked ', item.key, key);
|
|
533
500
|
if (item.key.toLowerCase() === 'uploadfile') {
|
|
534
501
|
document.getElementById('filename').click();
|
|
502
|
+
console.log('Upload File');
|
|
535
503
|
} else if (item.key.toLowerCase() === 'useeditor') {
|
|
504
|
+
console.log('Use Editor');
|
|
536
505
|
this.toggleEdmEmailTemplateSelection();
|
|
537
506
|
}
|
|
538
507
|
};
|
|
@@ -540,7 +509,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
540
509
|
handleBlankTemplateAction = (item, channel) => {
|
|
541
510
|
const type = this.props.location.query.type;
|
|
542
511
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
543
|
-
let routeParams = {};
|
|
544
512
|
if (item === "uploadFile") {
|
|
545
513
|
document.getElementById('filename').click();
|
|
546
514
|
} else if (item === "editor") {
|
|
@@ -548,17 +516,16 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
548
516
|
} else if (this.isEnabledInLibraryModule("callCreateFromProps")) {
|
|
549
517
|
this.props.createNew(item);
|
|
550
518
|
} else if (item === 'textTemplate') {
|
|
551
|
-
|
|
519
|
+
this.props.router.push({
|
|
552
520
|
pathname: `/${channel === 'line' ? 'line' : 'mobilepush'}/create/text`,
|
|
553
521
|
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
554
|
-
};
|
|
522
|
+
});
|
|
555
523
|
} else if (item === 'imageTemplate') {
|
|
556
|
-
|
|
524
|
+
this.props.router.push({
|
|
557
525
|
pathname: `/${channel === 'line' ? 'line' : 'mobilepush'}/create/image`,
|
|
558
526
|
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
559
|
-
};
|
|
527
|
+
});
|
|
560
528
|
}
|
|
561
|
-
this.setState({routeParams});
|
|
562
529
|
}
|
|
563
530
|
|
|
564
531
|
handleFileUpload = (e, {files}) => {
|
|
@@ -570,11 +537,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
570
537
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
571
538
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
572
539
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
573
|
-
|
|
540
|
+
console.log('File Params ', fileExtension);
|
|
574
541
|
if (supportedZipFormats.indexOf(fileExtension.toLowerCase()) !== -1) {
|
|
542
|
+
console.log('Zip Format got');
|
|
575
543
|
this.props.actions.handleZipUpload(files[0]);
|
|
576
544
|
document.getElementById("filename").value = "";
|
|
577
545
|
} else if (fileExtension === 'html' || fileExtension === 'htm') {
|
|
546
|
+
console.log('html Format got');
|
|
578
547
|
const reader = new FileReader();
|
|
579
548
|
reader.onload = () => {
|
|
580
549
|
const text = reader.result;
|
|
@@ -585,10 +554,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
585
554
|
this.props.createNew();
|
|
586
555
|
return;
|
|
587
556
|
}
|
|
588
|
-
this.
|
|
557
|
+
this.props.router.push({
|
|
589
558
|
pathname: `/${this.props.route.name.toLowerCase()}/create`,
|
|
590
559
|
query: type === 'embedded' ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module},
|
|
591
|
-
}
|
|
560
|
+
});
|
|
592
561
|
};
|
|
593
562
|
reader.readAsText(files[0]);
|
|
594
563
|
} else {
|
|
@@ -700,15 +669,17 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
700
669
|
return result;
|
|
701
670
|
}
|
|
702
671
|
startLoading(ifEdit) {
|
|
672
|
+
console.log('startLoading', ifEdit);
|
|
703
673
|
if (ifEdit) {
|
|
704
674
|
this.setState({loading: true});
|
|
705
675
|
}
|
|
706
676
|
}
|
|
707
677
|
|
|
708
678
|
startTemplateCreation(data) {
|
|
679
|
+
console.log('startTemplateCreation', data);
|
|
709
680
|
if (data.edit) {
|
|
710
681
|
const ifUnicode = checkUnicode(data.content);
|
|
711
|
-
|
|
682
|
+
console.log('smsDetails', ifUnicode, data.content);
|
|
712
683
|
const content = data.content;
|
|
713
684
|
const tempData = {
|
|
714
685
|
'sms-editor': content,
|
|
@@ -723,8 +694,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
723
694
|
}
|
|
724
695
|
|
|
725
696
|
handleFrameTasks = (e) => {
|
|
697
|
+
console.log('data listened to is 222', e.data, e);
|
|
726
698
|
const type = e.data;
|
|
727
699
|
if (typeof type === 'object') {
|
|
700
|
+
console.log('received something', type);
|
|
728
701
|
const action = type.action;
|
|
729
702
|
switch (action) {
|
|
730
703
|
case "startTemplateCreation":
|
|
@@ -748,11 +721,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
748
721
|
this.getFormData(e);
|
|
749
722
|
break;
|
|
750
723
|
case "startTemplateCreation":
|
|
751
|
-
|
|
724
|
+
console.log('Starting to create template');
|
|
752
725
|
//this.getFormData(e);
|
|
753
726
|
break;
|
|
754
727
|
case "validateContent":
|
|
755
|
-
|
|
728
|
+
console.log('validating Content');
|
|
756
729
|
this.validateContent(e);
|
|
757
730
|
break;
|
|
758
731
|
default:
|
|
@@ -765,21 +738,19 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
765
738
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
766
739
|
const channel = this.state.channel.toLowerCase();
|
|
767
740
|
//const keyType = ev.key && ev.key.toLowerCase() !== undefined ? ev.state.toLowerCase() : '';
|
|
768
|
-
let routeParams = {};
|
|
769
741
|
if (this.isEnabledInLibraryModule("callCreateFromProps")) {
|
|
770
742
|
this.props.createNew();
|
|
771
743
|
} else if (ev.key && (ev.key.toLowerCase() === "text" || ev.key.toLowerCase() === "image")) {
|
|
772
|
-
|
|
744
|
+
this.props.router.push({
|
|
773
745
|
pathname: `/${channel === 'line' ? 'line' : 'mobilepush'}/create/${ev.key.toLowerCase()}`,
|
|
774
746
|
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
775
|
-
};
|
|
747
|
+
});
|
|
776
748
|
} else {
|
|
777
|
-
|
|
778
|
-
pathname:
|
|
749
|
+
this.props.router.push({
|
|
750
|
+
pathname: `/${this.state.channel.toLowerCase()}/create`,
|
|
779
751
|
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
780
|
-
};
|
|
752
|
+
});
|
|
781
753
|
}
|
|
782
|
-
this.setState({routeParams});
|
|
783
754
|
}
|
|
784
755
|
|
|
785
756
|
menuOnClickEvent(ev) {
|
|
@@ -817,6 +788,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
817
788
|
}
|
|
818
789
|
|
|
819
790
|
searchTemplate(data) {
|
|
791
|
+
console.log('searching template', data);
|
|
820
792
|
this.setState({searchText: data}, () => {
|
|
821
793
|
const params = {
|
|
822
794
|
name: this.state.searchText,
|
|
@@ -870,12 +842,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
870
842
|
if (this.state.channel.toLowerCase() === 'ebill' || this.state.channel.toLowerCase() === 'email') {
|
|
871
843
|
this.toggleEmailPreview();
|
|
872
844
|
} else {
|
|
845
|
+
console.log('toggle Preview ', this.state.previewOpen);
|
|
873
846
|
this.setState( (prevState) => ({
|
|
874
847
|
previewOpen: !prevState.previewOpen}));
|
|
875
848
|
}
|
|
876
849
|
}
|
|
877
850
|
|
|
878
851
|
toggleEdmEmailTemplateSelection = () => {
|
|
852
|
+
console.log('toggle Selection ', this.state.showEdmEmailTemplates);
|
|
879
853
|
this.setState( (prevState) => ({
|
|
880
854
|
showEdmEmailTemplates: !prevState.showEdmEmailTemplates}), () => {
|
|
881
855
|
this.props.actions.getEdmDefaultTemplates();
|
|
@@ -883,27 +857,18 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
883
857
|
};
|
|
884
858
|
|
|
885
859
|
deleteTemplate(template) {
|
|
860
|
+
console.log('deleting template', template);
|
|
886
861
|
this.props.actions.deleteTemplate(this.state.channel.toUpperCase(), template._id);
|
|
887
862
|
this.setState({actionTemplate: {}});
|
|
888
863
|
}
|
|
889
864
|
|
|
890
865
|
duplicateTemplate(template) {
|
|
866
|
+
console.log('dup template', template);
|
|
891
867
|
const duplicateObj = _.cloneDeep(template);
|
|
892
868
|
duplicateObj.name = `Copy of ${template.name} ${moment().format('MM-DD-YYYY hh:mma')}`;
|
|
893
869
|
delete duplicateObj._id;
|
|
894
|
-
const params = {
|
|
895
|
-
name: this.state.searchText,
|
|
896
|
-
sortBy: this.state.sortBy,
|
|
897
|
-
};
|
|
898
870
|
if (this.state.channel.toLowerCase() === "sms") {
|
|
899
|
-
this.props.smsActions.createTemplate(duplicateObj
|
|
900
|
-
if (response && response.templateId) {
|
|
901
|
-
const message = getMessageObject('success', `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`, true);
|
|
902
|
-
this.props.globalActions.addMessageToQueue(message);
|
|
903
|
-
this.getAllTemplates({params, resetPage: true});
|
|
904
|
-
this.props.smsActions.clearCreateResponse();
|
|
905
|
-
}
|
|
906
|
-
});
|
|
871
|
+
this.props.smsActions.createTemplate(duplicateObj);
|
|
907
872
|
} else if (this.state.channel.toLowerCase() === "mobilepush") {
|
|
908
873
|
duplicateObj.definition.accountId = this.props.Templates.selectedWeChatAccount.id;
|
|
909
874
|
this.props.mobilepushActions.createTemplate(duplicateObj);
|
|
@@ -917,6 +882,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
917
882
|
}
|
|
918
883
|
|
|
919
884
|
handleOnHoverItem(isHovering, id) {
|
|
885
|
+
console.log('parent handle hover', isHovering, id);
|
|
920
886
|
if (isHovering) {
|
|
921
887
|
this.setState({hoveredItem: id});
|
|
922
888
|
} else {
|
|
@@ -925,6 +891,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
925
891
|
}
|
|
926
892
|
|
|
927
893
|
handleOnItemClick(isClicked, id) {
|
|
894
|
+
console.log('parent handle click', isClicked, id);
|
|
928
895
|
this.setState({clickedItem: id});
|
|
929
896
|
}
|
|
930
897
|
|
|
@@ -936,7 +903,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
936
903
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
937
904
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
938
905
|
let getQuery = '';
|
|
939
|
-
|
|
906
|
+
console.log('Selected EDM Data ', data);
|
|
940
907
|
this.props.actions.setEdmTemplate(data);
|
|
941
908
|
if (this.state.channel && this.state.channel.toLowerCase() === 'email') {
|
|
942
909
|
getQuery = (type === 'embedded') ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module, isLanguageSupport, isEdmSupport};
|
|
@@ -947,14 +914,15 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
947
914
|
this.props.createNew();
|
|
948
915
|
return;
|
|
949
916
|
}
|
|
950
|
-
this.
|
|
917
|
+
this.props.router.push({
|
|
951
918
|
pathname: `/${this.state.channel.toLowerCase()}/create`,
|
|
952
919
|
query: getQuery,
|
|
953
|
-
}
|
|
920
|
+
});
|
|
954
921
|
}
|
|
955
922
|
};
|
|
956
923
|
|
|
957
924
|
handleEditClick(e, id, modeType, path) {
|
|
925
|
+
console.log('inside props****', this.props);
|
|
958
926
|
if (modeType && modeType !== undefined) {
|
|
959
927
|
this.setState({modeType});
|
|
960
928
|
}
|
|
@@ -964,8 +932,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
964
932
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
965
933
|
let getQuery = "";
|
|
966
934
|
let pathName = path;
|
|
935
|
+
console.log('type**** ', type);
|
|
967
936
|
e.stopPropagation();
|
|
968
|
-
|
|
937
|
+
console.log('clicked', id);
|
|
969
938
|
this.props.actions.resetTemplateData();
|
|
970
939
|
if (this.state.channel.toLowerCase() === 'sms') {
|
|
971
940
|
pathName = `/sms/edit/${id}`;
|
|
@@ -993,10 +962,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
993
962
|
if (this.state.channel.toLowerCase() === 'ebill') {
|
|
994
963
|
pathName = `/ebill/edit/${id}`;
|
|
995
964
|
}
|
|
996
|
-
this.
|
|
965
|
+
this.props.router.push({
|
|
997
966
|
pathname: pathName,
|
|
998
967
|
query: getQuery,
|
|
999
|
-
}
|
|
968
|
+
});
|
|
1000
969
|
}
|
|
1001
970
|
}
|
|
1002
971
|
|
|
@@ -1013,6 +982,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1013
982
|
templateInfo.content = template.versions.base;
|
|
1014
983
|
templateInfo.appName = this.props.Templates.selectedWeChatAccount.name;
|
|
1015
984
|
} else if (this.state.channel.toLowerCase() === "email") {
|
|
985
|
+
console.log('Test ', template);
|
|
1016
986
|
this.props.actions.getTemplateDetails(template._id);
|
|
1017
987
|
} else if (this.state.channel.toLowerCase() === 'ebill') {
|
|
1018
988
|
this.props.actions.getTemplateDetails(template._id);
|
|
@@ -1086,11 +1056,26 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1086
1056
|
content,
|
|
1087
1057
|
}
|
|
1088
1058
|
);
|
|
1089
|
-
}
|
|
1059
|
+
} /*else if (type === 'embedded' && this.state.channel.toLowerCase() === "mobilepush") {
|
|
1060
|
+
items.push({
|
|
1061
|
+
id: 'blankTemplate',
|
|
1062
|
+
content: <div className={this.state.clickedItem === 'blankTemplate' ? 'sms-text-blurred' : ''}>
|
|
1063
|
+
<div>
|
|
1064
|
+
<div
|
|
1065
|
+
style={{textAlign: 'center', lineHeight: '260px'}}
|
|
1066
|
+
className="sms-text">{this.props.intl.formatMessage(messages.blankTemplate)}</div>
|
|
1067
|
+
</div>
|
|
1068
|
+
{this.state.clickedItem === 'blankTemplate' && <CapButton
|
|
1069
|
+
onClick={() => { this.createTemplate({key: 'text'}); }} key="text" className="edit-button" type="secondary">Text</CapButton>}
|
|
1070
|
+
{this.state.clickedItem === 'blankTemplate' && <CapButton
|
|
1071
|
+
onClick={() => { this.createTemplate({key: 'image'}); }} key="image" className="preview-button" type="secondary">image</CapButton>}
|
|
1072
|
+
</div>,
|
|
1073
|
+
});
|
|
1074
|
+
}*/
|
|
1090
1075
|
data.map( (template) => {
|
|
1091
|
-
//
|
|
1076
|
+
// console.log("Templates ", template._id, " Data ", template);
|
|
1092
1077
|
const temp = {};
|
|
1093
|
-
//
|
|
1078
|
+
// console.log('template ', template);
|
|
1094
1079
|
const updateDateTime = (moment().format('DD-MM-YYYY') === moment(template.updatedAt).format('DD-MM-YYYY')) ? moment(template.updatedAt).format('hh:mma') : moment(template.updatedAt).format('DD MMM YYYY');
|
|
1095
1080
|
let content = '';
|
|
1096
1081
|
temp.id = template._id;
|
|
@@ -1116,12 +1101,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1116
1101
|
);
|
|
1117
1102
|
}
|
|
1118
1103
|
} else if (this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill') {
|
|
1119
|
-
//
|
|
1120
|
-
|
|
1104
|
+
// console.log('Data Prepare');
|
|
1105
|
+
console.log('Data Prepare');
|
|
1121
1106
|
const imgSrc = template && template.versions && template.versions.base ? template.versions.base.preview_http_url : '';
|
|
1122
|
-
|
|
1107
|
+
const ifPreviewGenerated = template && template.versions && template.versions.base ? template.versions.base.isPreviewGenerated : 0;
|
|
1123
1108
|
content = <img src={imgSrc || ''} alt={this.props.intl.formatMessage(messages.previewGenerateText)} width="100%" height="100%"/>;
|
|
1124
|
-
|
|
1109
|
+
console.log('qwerty template preview', imgSrc, template, ifPreviewGenerated, content);
|
|
1125
1110
|
temp.content = (
|
|
1126
1111
|
<div
|
|
1127
1112
|
className="sms-template-content">
|
|
@@ -1234,6 +1219,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1234
1219
|
changePreviewDevice = (device) => {
|
|
1235
1220
|
this.setState({ device });
|
|
1236
1221
|
};
|
|
1222
|
+
|
|
1237
1223
|
//Gets called only when creatives gets used as node library
|
|
1238
1224
|
isEnabledInLibraryModule = (property) => {
|
|
1239
1225
|
if (this.props.location.query.type === "embedded" && this.props.location.query.module === "library") {
|
|
@@ -1290,7 +1276,75 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1290
1276
|
/>
|
|
1291
1277
|
);
|
|
1292
1278
|
}
|
|
1279
|
+
|
|
1293
1280
|
render() {
|
|
1281
|
+
let pageHeaderText = '';
|
|
1282
|
+
const moduleName = this.props.location.query.module;
|
|
1283
|
+
if (this.props.location.query.type !== 'embedded') {
|
|
1284
|
+
if (this.state.channel.toUpperCase() === 'WECHAT') {
|
|
1285
|
+
pageHeaderText = this.props.intl.formatMessage(messages.wechatHeader);
|
|
1286
|
+
} else if (this.state.channel.toUpperCase() === 'SMS') {
|
|
1287
|
+
pageHeaderText = this.props.intl.formatMessage(messages.smsHeader);
|
|
1288
|
+
} else if (this.state.channel.toUpperCase() === 'EMAIL') {
|
|
1289
|
+
pageHeaderText = this.props.intl.formatMessage(messages.emailHeader);
|
|
1290
|
+
} else if (this.state.channel.toUpperCase() === 'MOBILEPUSH') {
|
|
1291
|
+
pageHeaderText = this.props.intl.formatMessage(messages.mobilepushHeader);
|
|
1292
|
+
} else if (this.state.channel.toUpperCase() === 'EBILL') {
|
|
1293
|
+
pageHeaderText = this.props.intl.formatMessage(messages.ebillHeader);
|
|
1294
|
+
} else if (this.state.channel.toUpperCase() === 'LINE') {
|
|
1295
|
+
pageHeaderText = this.props.intl.formatMessage(messages.lineHeader);
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
const options = [
|
|
1299
|
+
{
|
|
1300
|
+
value: "Most Recent",
|
|
1301
|
+
label: this.props.intl.formatMessage(messages.mostRecentOption),
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
value: "Alphabetically",
|
|
1305
|
+
label: this.props.intl.formatMessage(messages.alphabeticallyOption),
|
|
1306
|
+
},
|
|
1307
|
+
];
|
|
1308
|
+
const typeOptions = [
|
|
1309
|
+
{
|
|
1310
|
+
value: "All",
|
|
1311
|
+
label: "All",
|
|
1312
|
+
},
|
|
1313
|
+
{
|
|
1314
|
+
label: "Text",
|
|
1315
|
+
value: 'Text',
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
label: "Image",
|
|
1319
|
+
value: "Image",
|
|
1320
|
+
},
|
|
1321
|
+
];
|
|
1322
|
+
const filterContent = (
|
|
1323
|
+
<div className="action-container">
|
|
1324
|
+
<CapInput
|
|
1325
|
+
className="search-text"
|
|
1326
|
+
style={{width: '210px'}}
|
|
1327
|
+
placeholder={this.props.intl.formatMessage(messages.searchText)}
|
|
1328
|
+
prefix={<i className="material-icons" style={{ margin: '0', fontSize: '16px'}}>search</i>}
|
|
1329
|
+
value={this.state.searchText}
|
|
1330
|
+
onChange={(e) => this.searchTemplate(e.target.value)}
|
|
1331
|
+
/>
|
|
1332
|
+
<div className="action-container">
|
|
1333
|
+
<div style={{display: "flex", justifyContent: "space-between", alignItems: 'center'}}>
|
|
1334
|
+
<div className="select-font">{this.props.intl.formatMessage(messages.sortBy)}</div>
|
|
1335
|
+
<CapSelect key={"select-account"} style={{width: '120px', marginLeft: '16px', minWidth: 'initial'}} defaultValue="Most Recent" onChange={this.handleSortBy} options={options}>
|
|
1336
|
+
</CapSelect>
|
|
1337
|
+
</div>
|
|
1338
|
+
{ (this.state.channel.toLowerCase() === 'mobilepush' || this.state.channel.toLowerCase() === 'line') &&
|
|
1339
|
+
<div style={{display: "flex", justifyContent: "space-between", alignItems: 'center', marginLeft: '16px'}}>
|
|
1340
|
+
<div className="select-font">Type</div>
|
|
1341
|
+
<CapSelect key={"select-type"} style={{width: '120px', marginLeft: '16px', minWidth: 'initial'}} defaultValue="All" onChange={this.handleType} options={typeOptions}>
|
|
1342
|
+
</CapSelect>
|
|
1343
|
+
</div>
|
|
1344
|
+
}
|
|
1345
|
+
</div>
|
|
1346
|
+
</div>
|
|
1347
|
+
);
|
|
1294
1348
|
const accountOptions = [];
|
|
1295
1349
|
if ((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && !_.isEmpty(this.props.Templates.weCrmAccounts)) {
|
|
1296
1350
|
_.forEach(this.props.Templates.weCrmAccounts, (account) => {
|
|
@@ -1298,55 +1352,53 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1298
1352
|
if (this.props.location.query.type === 'embedded' && (!this.props.location.query.module || (this.props.location.query.module && this.props.location.query.module !== 'library'))) {
|
|
1299
1353
|
if (this.props.location.query.source_account_id && account.sourceAccountIdentifier === this.props.location.query.source_account_id) {
|
|
1300
1354
|
accountOptions.push(
|
|
1301
|
-
|
|
1302
|
-
label: account.name,
|
|
1303
|
-
value: account.name,
|
|
1304
|
-
}
|
|
1355
|
+
<Option key={this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid} value={account.name}>{account.name}</Option>
|
|
1305
1356
|
);
|
|
1306
1357
|
} else if (this.props.location.query.module && (this.state.channel.toUpperCase() === "WECHAT" || this.state.channel.toUpperCase() === "MOBILEPUSH")) {
|
|
1307
1358
|
accountOptions.push(
|
|
1308
|
-
{
|
|
1309
|
-
key: this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid,
|
|
1310
|
-
value: account.name,
|
|
1311
|
-
label: account.name,
|
|
1312
|
-
}
|
|
1359
|
+
<Option key={this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid} value={account.name}>{account.name}</Option>
|
|
1313
1360
|
);
|
|
1314
1361
|
}
|
|
1315
1362
|
} else {
|
|
1316
1363
|
accountOptions.push(
|
|
1317
|
-
{
|
|
1318
|
-
key: this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid,
|
|
1319
|
-
value: account.name,
|
|
1320
|
-
label: account.name,
|
|
1321
|
-
}
|
|
1364
|
+
<Option key={this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid} value={account.name}>{account.name}</Option>
|
|
1322
1365
|
);
|
|
1323
1366
|
}
|
|
1324
1367
|
}
|
|
1325
1368
|
});
|
|
1326
1369
|
}
|
|
1370
|
+
let templateText = this.state.channel.toUpperCase() === 'WECHAT' ? this.props.intl.formatMessage(messages.selectWechatHeader) : this.props.intl.formatMessage(messages.selectSmsHeader);
|
|
1371
|
+
|
|
1372
|
+
let titleText = this.state.channel.toUpperCase() === 'SMS' ? this.props.intl.formatMessage(messages.smsChannelTemplatesHeader) : this.props.intl.formatMessage(messages.wechatChannelTemplatesHeader);
|
|
1373
|
+
if (this.state.channel.toUpperCase() === "MOBILEPUSH") {
|
|
1374
|
+
templateText = "Select Mobile Push Template";
|
|
1375
|
+
titleText = "Mobile push";
|
|
1376
|
+
} else if (this.state.channel.toUpperCase() === "EMAIL") {
|
|
1377
|
+
templateText = "Select Email Template";
|
|
1378
|
+
titleText = "Email";
|
|
1379
|
+
} else if (this.state.channel.toUpperCase() === "EBILL") {
|
|
1380
|
+
templateText = "Select Ebill Template";
|
|
1381
|
+
titleText = "Ebill";
|
|
1382
|
+
} else if (this.state.channel.toUpperCase() === "LINE") {
|
|
1383
|
+
templateText = "Select Line Template";
|
|
1384
|
+
titleText = "Line";
|
|
1385
|
+
}
|
|
1327
1386
|
const pageHeader = (
|
|
1328
1387
|
<div>
|
|
1388
|
+
{(this.props.location.query.type !== 'embedded') ? `${pageHeaderText}` : templateText}
|
|
1329
1389
|
{(this.isEnabledInLibraryModule("showAccountSelection") || (((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && (this.props.location.query.type !== 'embedded') && !_.isEmpty(this.props.Templates.weCrmAccounts)))) &&
|
|
1330
|
-
<
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined}
|
|
1334
|
-
placeholder={this.props.intl.formatMessage(messages.selectAccount)}
|
|
1335
|
-
options={accountOptions}
|
|
1336
|
-
/>
|
|
1337
|
-
}
|
|
1390
|
+
<Select className="selectAccount" onSelect={this.onAccountSelect} value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}>
|
|
1391
|
+
{accountOptions}
|
|
1392
|
+
</Select>}
|
|
1338
1393
|
</div>
|
|
1339
1394
|
);
|
|
1340
1395
|
const pageHeaderDvs = (
|
|
1341
1396
|
<div>
|
|
1397
|
+
{(this.props.location.query.type === 'embedded' && moduleName === 'dvs') ? `${templateText}` : pageHeaderText}
|
|
1342
1398
|
{((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && (this.props.location.query.type === 'embedded') && !_.isEmpty(this.props.Templates.weCrmAccounts)) &&
|
|
1343
|
-
<
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}
|
|
1347
|
-
options={accountOptions}
|
|
1348
|
-
/>
|
|
1349
|
-
}
|
|
1399
|
+
<Select className="selectAccount" onSelect={this.onAccountSelect} value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}>
|
|
1400
|
+
{accountOptions}
|
|
1401
|
+
</Select>}
|
|
1350
1402
|
</div>
|
|
1351
1403
|
);
|
|
1352
1404
|
let actionButton = '';
|
|
@@ -1471,28 +1523,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1471
1523
|
>
|
|
1472
1524
|
</CardGrid>
|
|
1473
1525
|
);
|
|
1474
|
-
const filterContent = (
|
|
1475
|
-
<div className="action-container">
|
|
1476
|
-
<CapInput.Search
|
|
1477
|
-
className="search-text"
|
|
1478
|
-
style={{width: '210px'}}
|
|
1479
|
-
placeholder={this.props.intl.formatMessage(messages.searchText)}
|
|
1480
|
-
value={this.state.searchText}
|
|
1481
|
-
onChange={(e) => this.searchTemplate(e.target.value)}
|
|
1482
|
-
/>
|
|
1483
|
-
<div style={{display: "flex", justifyContent: "space-between", alignItems: 'center'}}>
|
|
1484
|
-
{(this.props.location.query.type === 'embedded' ) ? pageHeaderDvs : pageHeader}
|
|
1485
|
-
<CapButton
|
|
1486
|
-
type={this.props.isFullMode ? "primary" : "secondary"}
|
|
1487
|
-
disabled={isLoading || _.isEmpty(this.props.Templates.selectedWeChatAccount)}
|
|
1488
|
-
style={{marginLeft: '8px'}}
|
|
1489
|
-
onClick={(ev) => this.props.isFullMode ? this.createTemplate(ev) : this.handleBlankTemplateAction()} >
|
|
1490
|
-
{ this.props.intl.formatMessage(messages.createNewActionButton) }
|
|
1491
|
-
</CapButton>
|
|
1492
|
-
</div>
|
|
1493
1526
|
|
|
1494
|
-
</div>
|
|
1495
|
-
);
|
|
1496
1527
|
let htmlPreviewContent = "";
|
|
1497
1528
|
if (this.state.channel.toLowerCase() === 'ebill') {
|
|
1498
1529
|
htmlPreviewContent = this.state.previewTemplate && this.state.previewTemplate.versions && this.state.previewTemplate.versions.base && this.state.previewTemplate.versions.base['ebill-editor'];
|
|
@@ -1503,20 +1534,36 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1503
1534
|
const templateList = this.populateTemplatesList(this.props.TemplatesList, true);
|
|
1504
1535
|
|
|
1505
1536
|
const isSearch = this.props.Templates.isSearch;
|
|
1506
|
-
const creativesParams = this.getCreativesParams();
|
|
1507
|
-
const {isFullMode, route} = this.props;
|
|
1508
|
-
const loadingTip = (this.props.Templates.sendingFile && (this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill')) ? this.props.intl.formatMessage(messages.uploadingFile) : this.props.intl.formatMessage(messages.gettingAllTemplates);
|
|
1509
1537
|
return (
|
|
1510
1538
|
<div>
|
|
1511
|
-
<
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
<
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1539
|
+
<Spin
|
|
1540
|
+
tip={(this.props.Templates.sendingFile && (this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill')) ? this.props.intl.formatMessage(messages.uploadingFile) : this.props.intl.formatMessage(messages.gettingAllTemplates)}
|
|
1541
|
+
spinning={isLoading}
|
|
1542
|
+
>
|
|
1543
|
+
<input type="file" id="filename" style={{ display: 'none'}} accept=".zip, .html, .htm" onChange={(event) => this.handleFileUpload(event, {files: event.target.files})} />
|
|
1544
|
+
<Row>
|
|
1545
|
+
<Col>
|
|
1546
|
+
{this.props.location.query.type !== "embedded" &&
|
|
1547
|
+
<Breadcrumb>
|
|
1548
|
+
<BreadcrumbItem>{this.props.intl.formatMessage(messages.campaigns)}</BreadcrumbItem>
|
|
1549
|
+
<BreadcrumbItem>{this.props.intl.formatMessage(messages.creatives)}</BreadcrumbItem>
|
|
1550
|
+
<BreadcrumbItem>{ this.state.channel }</BreadcrumbItem>
|
|
1551
|
+
</Breadcrumb>
|
|
1552
|
+
}
|
|
1553
|
+
</Col>
|
|
1554
|
+
</Row>
|
|
1555
|
+
<Row className="template-header-container">
|
|
1556
|
+
<div className="template-header">{(this.props.location.query.type === 'embedded' && moduleName === 'dvs') ? pageHeaderDvs : pageHeader}</div>
|
|
1557
|
+
{actionButton}
|
|
1558
|
+
</Row>
|
|
1559
|
+
<Row>
|
|
1560
|
+
<Helmet
|
|
1561
|
+
title={titleText}
|
|
1562
|
+
meta={[
|
|
1563
|
+
{ name: 'description', content: 'Description of Templates' },
|
|
1564
|
+
]}
|
|
1565
|
+
/>
|
|
1566
|
+
{((templateList && templateList.length > 0) || isSearch) && <Pagination onPageChange={() => { console.log('getting all templates pagination'); this.getAllTemplates({getNextPage: true}); }} paginationSelector="pagination-container">
|
|
1520
1567
|
<CardGrid
|
|
1521
1568
|
className={this.state.channel.toLowerCase() === "mobilepush" ? "mobilepush-templates" : ""}
|
|
1522
1569
|
listItem={templateList}
|
|
@@ -1524,80 +1571,67 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1524
1571
|
onHoverItem={this.handleOnHoverItem}
|
|
1525
1572
|
onItemClick={this.handleOnItemClick}
|
|
1526
1573
|
enablePagination
|
|
1527
|
-
isLoading={isLoading}
|
|
1528
|
-
loadingTip={loadingTip}
|
|
1529
1574
|
>
|
|
1530
1575
|
</CardGrid>
|
|
1531
1576
|
</Pagination>}
|
|
1532
|
-
|
|
1533
|
-
|
|
1577
|
+
{(this.state.selectedAccount === '' && _.isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1578
|
+
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noAccountMessage)}</span>
|
|
1534
1579
|
</div>}
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
</CapRow>
|
|
1550
|
-
<CapRow>
|
|
1551
|
-
{this.state.channel.toLowerCase() === 'wechat' && this.state.previewTemplate && this.state.previewTemplate.definition && this.state.previewTemplate.definition.msgcontent && this.state.previewTemplate.definition.msgcontent === 'RICH_MEDIA_WECHAT' ?
|
|
1552
|
-
<WechatRichmediaTemplatePreview
|
|
1553
|
-
show={this.state.previewOpen}
|
|
1554
|
-
closeSlideBox={this.togglePreview}
|
|
1555
|
-
header={this.state.previewTemplate.name}
|
|
1556
|
-
width={30}
|
|
1557
|
-
showSlidebox
|
|
1558
|
-
const type={this.props.location && this.props.location.query.type ? this.props.location.query.type : ''}
|
|
1559
|
-
content={this.state.previewTemplate.versions.base.mediaList}
|
|
1560
|
-
onEditClick={this.handleEditClick}
|
|
1561
|
-
showEdit
|
|
1562
|
-
templateId={this.state.previewTemplate._id}
|
|
1563
|
-
path={`/wechat/richmedia/edit/${this.state.previewTemplate._id}`}
|
|
1564
|
-
/>
|
|
1565
|
-
:
|
|
1566
|
-
<PreviewSideBar
|
|
1567
|
-
showPreview={this.state.previewOpen}
|
|
1568
|
-
templateData={this.state.previewTemplate}
|
|
1569
|
-
channel={this.state.channel}
|
|
1570
|
-
handleClose={this.togglePreview}
|
|
1580
|
+
{(((this.state.selectedAccount !== '' && !_.isEmpty(this.props.Templates.selectedWeChatAccount) && this.state.channel.toLowerCase() === 'wechat') || this.state.channel.toLowerCase() !== 'wechat') && _.isEmpty(this.props.TemplatesList)) && !this.props.Templates.getAllTemplatesInProgress && <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
|
|
1581
|
+
<span style={{ fontFamily: 'open-sans', fontSize: '24px', color: '#B5B5B5'}}>{this.props.intl.formatMessage(messages.noTemplatesMessage)}</span>
|
|
1582
|
+
</div>}
|
|
1583
|
+
</Row>
|
|
1584
|
+
<Row>
|
|
1585
|
+
{this.state.channel.toLowerCase() === 'wechat' && this.state.previewTemplate && this.state.previewTemplate.definition && this.state.previewTemplate.definition.msgcontent && this.state.previewTemplate.definition.msgcontent === 'RICH_MEDIA_WECHAT' ?
|
|
1586
|
+
<WechatRichmediaTemplatePreview
|
|
1587
|
+
show={this.state.previewOpen}
|
|
1588
|
+
closeSlideBox={this.togglePreview}
|
|
1589
|
+
header={this.state.previewTemplate.name}
|
|
1590
|
+
width={30}
|
|
1591
|
+
showSlidebox
|
|
1592
|
+
const type={this.props.location && this.props.location.query.type ? this.props.location.query.type : ''}
|
|
1593
|
+
content={this.state.previewTemplate.versions.base.mediaList}
|
|
1571
1594
|
onEditClick={this.handleEditClick}
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1595
|
+
showEdit
|
|
1596
|
+
templateId={this.state.previewTemplate._id}
|
|
1597
|
+
path={`/wechat/richmedia/edit/${this.state.previewTemplate._id}`}
|
|
1598
|
+
/>
|
|
1599
|
+
:
|
|
1600
|
+
<PreviewSideBar
|
|
1601
|
+
showPreview={this.state.previewOpen}
|
|
1602
|
+
templateData={this.state.previewTemplate}
|
|
1603
|
+
channel={this.state.channel}
|
|
1604
|
+
handleClose={this.togglePreview}
|
|
1605
|
+
onEditClick={this.handleEditClick}
|
|
1606
|
+
embedded={this.props.location.query.type === 'embedded'}
|
|
1607
|
+
onDuplicateClick={this.duplicateTemplate}
|
|
1608
|
+
location={this.props.location}
|
|
1609
|
+
>
|
|
1610
|
+
</PreviewSideBar>
|
|
1577
1611
|
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1612
|
+
}
|
|
1613
|
+
{(this.state.channel.toLowerCase() === 'ebill' || this.state.channel.toLowerCase() === 'email') && htmlPreviewContent && <EmailPreview
|
|
1614
|
+
header={previewHeader}
|
|
1615
|
+
content={htmlPreviewContent}
|
|
1616
|
+
show={this.state.showHtmlPreview}
|
|
1617
|
+
device={this.state.device}
|
|
1618
|
+
handleClose={this.toggleEmailPreview}
|
|
1619
|
+
changePreviewDevice={this.changePreviewDevice}
|
|
1620
|
+
lastModified={this.state.previewTemplate ? this.state.previewTemplate.updatedAt : ''}
|
|
1621
|
+
updatedByName={commonUtil.getUserNameById(parseInt(this.state.previewTemplate.updatedBy, 10), commonUtil.getMergedUserList(this.props.Templates.userList))}
|
|
1622
|
+
/>}
|
|
1623
|
+
<SlideBox
|
|
1624
|
+
header={(<h3>{this.props.intl.formatMessage(messages.layoutSelection)}</h3>)}
|
|
1625
|
+
width={60}
|
|
1626
|
+
content={cmsTemplateSelectionContent}
|
|
1627
|
+
show={this.state.showEdmEmailTemplates}
|
|
1628
|
+
handleClose={this.toggleEdmEmailTemplateSelection}
|
|
1629
|
+
loadingText={"Loading EDM Templates"}
|
|
1630
|
+
isLoading={this.props.Templates.getCmsTemplatesInProgress}
|
|
1597
1631
|
/>
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1632
|
+
{this.renderDeleteConfirmationModal()}
|
|
1633
|
+
</Row>
|
|
1634
|
+
</Spin>
|
|
1601
1635
|
</div>
|
|
1602
1636
|
);
|
|
1603
1637
|
}
|
|
@@ -1613,6 +1647,7 @@ Templates.propTypes = {
|
|
|
1613
1647
|
TemplatesList: PropTypes.array,
|
|
1614
1648
|
Templates: PropTypes.object,
|
|
1615
1649
|
route: PropTypes.object,
|
|
1650
|
+
router: PropTypes.object,
|
|
1616
1651
|
Create: PropTypes.object,
|
|
1617
1652
|
location: PropTypes.object,
|
|
1618
1653
|
globalActions: PropTypes.object,
|
|
@@ -1621,10 +1656,6 @@ Templates.propTypes = {
|
|
|
1621
1656
|
createNew: PropTypes.func,
|
|
1622
1657
|
onSelectTemplate: PropTypes.func,
|
|
1623
1658
|
lineActions: PropTypes.object,
|
|
1624
|
-
isFullMode: PropTypes.bool,
|
|
1625
|
-
renderNewCardGrid: PropTypes.func,
|
|
1626
|
-
handlePeviewTemplate: PropTypes.func,
|
|
1627
|
-
router: PropTypes.object,
|
|
1628
1659
|
};
|
|
1629
1660
|
|
|
1630
1661
|
const mapStateToProps = createStructuredSelector({
|