Compare commits

...

979 Commits

Author SHA1 Message Date
561438ccae Release 3.23.0 2019-04-02 05:33:38 -04:00
697ce9e981 Update Beamer announcement date 2019-04-02 10:42:55 +03:00
d5ccc13187 Fix the form selector [MAILPOET-1816] 2019-04-01 07:20:32 -04:00
806e3f19d6 Add acceptance test for reimporting csv
[MAILPOET-1931]
2019-04-01 07:12:27 -04:00
b43a4b222d Fix "Next step" button not visible after reimporting file
[MAILPOET-1931]
2019-04-01 07:12:27 -04:00
acbf363412 Prevent scheduling welcome emails
If subscriber is imported we don't want to send them welcome emails if their data are updated

[MAILPOET-1908]
2019-04-01 07:02:54 -04:00
47cc90f058 Update vulerable dependencies 2019-04-01 06:58:11 -04:00
a0fcea56d2 Refactor Twig related classes to use modernized twig namespace
[MAILPOET-1929]
2019-04-01 05:43:25 -04:00
59a8857a44 Add unwanted class aliases cleanup into twig fix script
[MAILPOET-1929]
2019-04-01 05:43:25 -04:00
3d69b3aeec Move Twig to prefixed dependencies
Closes #1904
[MAILPOET-1929]
2019-04-01 05:43:25 -04:00
51de087c01 Remove top padding for ALC & Post block titles
[MAILPOET-1701]
2019-03-29 11:44:22 -04:00
8d689f4f60 Remove heading bottom margin for ALC, Post, and header-only blocks
[MAILPOET-1701]
2019-03-29 11:44:22 -04:00
c9b9ae4806 Change image "Full width" setting to "No padding"
[MAILPOET-1701]
2019-03-29 11:44:22 -04:00
1b5afa92da Change 20px bottom block margin to 10px top+bottom padding in Renderer
[MAILPOET-1701]
2019-03-29 11:44:22 -04:00
76fe906875 Change 20px bottom block margin to 10px top+bottom padding in Editor
[MAILPOET-1701]
2019-03-29 11:44:22 -04:00
a70129e5f7 Allow setting multiple categories and tags for WC products
[MAILPOET-1842]
2019-03-28 15:32:50 -04:00
06ed6cf61a Add products block config
[MAILPOET-1842]
2019-03-28 15:32:50 -04:00
9ec31ae39d Automatically generate random SKU for WC products when not provided
[MAILPOET-1842]
2019-03-28 15:32:50 -04:00
a1bec7e68e Fix button not clickable in ManageSubscriptionLinkCest
[MAILPOET-1842]
2019-03-28 15:32:50 -04:00
38f8cd9439 Create acceptance test for testing products widget
[MAILPOET-1842]
2019-03-28 15:32:50 -04:00
f05e513ff5 List products in products widget
[MAILPOET-1842]
2019-03-28 15:32:50 -04:00
6f85c27d4f Fix PHPStan warnings 2019-03-28 15:20:28 -04:00
5c2b34e9da Move WC functions to WC Helper 2019-03-28 15:20:28 -04:00
5bd51baef8 Fix tests 2019-03-28 15:20:28 -04:00
dce4f4ece8 Rewrite WPFunctions methods 2019-03-28 15:20:28 -04:00
92a2934e51 Replace double quotes with unicode alternative
[MAILPOET-1937]
2019-03-28 12:50:22 -04:00
wxa
ed775c31cd Fix subscribing old WooCommerce customers to WC list [MAILPOET-1939] 2019-03-28 11:48:15 -04:00
7a61f1a576 [MQ-96] Test logging method switching 2019-03-28 11:18:57 -04:00
65ade03fb0 Register ServiceChecker to DI container
[MAILPOET-1938]
2019-03-28 11:15:33 -04:00
5693918aae Fix message construction
[MAILPOET-1890]
2019-03-28 07:19:22 -04:00
72fc8cecf2 Add test for sender warning
[MAILPOET-1890]
2019-03-28 07:19:22 -04:00
7067b82e06 Improve message handling
[MAILPOET-1890]
2019-03-28 07:19:22 -04:00
6fc68bb979 Update sender warning message
[MAILPOET-1890]
2019-03-28 07:19:22 -04:00
ff4d5be38a Add a non breaking space
Instead of a normal space that has been removed by outlook I added a non breaking space

[MAILPOET-1827]
2019-03-27 09:45:21 -04:00
1175d99cc7 Add cleanup methods to wooCommerce data factories
[MAILPOET-1936]
2019-03-27 08:38:08 -04:00
90c0e8d33b Add WooCommerce order factory
[MAILPOET-1936]
2019-03-27 08:38:08 -04:00
e4f68c62a0 Add customer factory for WooCommerce acceptance tests
[MAILPOET-1936]
2019-03-27 08:38:08 -04:00
f119884d2d Add WooCommerce products factory to acceptance tests
[MAILPOET-1936]
2019-03-27 08:38:08 -04:00
3c41b671ed Add WooCommerce plugin to acceptance tests
[MAILPOET-1936]
2019-03-27 08:38:08 -04:00
36ba91335d Fix single site acceptance tests initialization
[MAILPOET-1936]
2019-03-27 08:38:08 -04:00
d31a3ae1e9 Fix the order
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
c3657c4b16 Fix Rock Band thumbnail
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
0a05dca1ac Fix category for RockBand template
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
e056519b2d Update templates after latest fixes
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
92fce51eca Clear MailPoet links from templates
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
66afb7734a Move templates from notification category
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
306ec79a06 Update broken thumbnails
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
be22169364 Use texts from the first template in tests
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
9d05f7343b Use the correct category
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
3d4b113ba3 Update tests to use a template with an ALC block
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
e33bb7dab6 Reorder templates
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
43b5dbd853 Rename templates
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
e4b9fa07ca Add new templates
[MAILPOET-1617]
2019-03-27 08:24:57 -04:00
0a84516289 Form editor fixes
[MAILPOET-1892]
2019-03-26 13:58:35 -04:00
8edf58b2b2 Remove constants from state in wizard steps controller
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
1edfedbe01 Refactor NpsPoll to custom effect
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
3dc67ac481 Use satismeter loader for loading satismeter script
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
3ddf14213d Refactor welcome wizard controller to function component
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
496103da5e Refactor nps poll component using hooks
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
22100799ff Add eslint module and rules for react hooks
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
a7edda0f05 Update eslint library
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
e87ed90cd8 Update react-dom library
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
87c33d840d Update react library
[MAILPOET-1916]
2019-03-26 11:06:56 -04:00
d7610955b9 Release 3.22.0 2019-03-25 15:09:02 -04:00
1ef7ca983c Always create new segment with subscriber when sending newsletter in tests
[MAILPOET-1934]
2019-03-25 11:59:34 -04:00
deeab63088 Mention the need to have a folder 2019-03-25 08:33:02 -04:00
55d0e7fb8f Update package-lock.json 2019-03-25 08:33:02 -04:00
7cd8df11d8 Update to latest handlebars, fixes #1905 2019-03-25 08:33:02 -04:00
edb0920787 Fix UnauthorizedAddress test button not being clickable
[MAILPOET-1882]
2019-03-25 08:27:06 -04:00
96de1c0faa Fix selecting monthly post notification frequency
[MAILPOET-1866]
2019-03-25 07:12:03 -04:00
54868de4e0 Larger area for form fields
There has to be max-height and 'overflow: hidden' for animations to work properly. I just doubled the height, which gives spaces for 40+ possible fields, which seems like a reasonable limit.

[MAILPOET-1910]
2019-03-21 14:16:58 -04:00
c5b5d8f45d Downgrade PHPStan level to 4
[MAILPOET-1915]
2019-03-21 14:02:59 -04:00
f3f769316a Upgrade PHPStan level to 5
[MAILPOET-1915]
2019-03-21 14:02:59 -04:00
21766421d5 Upgrade PHPStan level to 4
I had to add some ignore errors until phpstan/phpstan#1482 is resolved

[MAILPOET-1915]
2019-03-21 14:02:59 -04:00
7d6f69ec1d Upgrade PHPStan level to 3
[MAILPOET-1915]
2019-03-21 14:02:59 -04:00
7b3f230081 Use PHPStan 0.11.4
[MAILPOET-1915]
2019-03-21 14:02:59 -04:00
bce05ce486 Fix statically calling non-static method
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
bd3d6467bd More robust setting sending method in UnauthorizedAddressCest
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
a8e3fe79c2 Remove unnecessary HTML elements from strings
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
b1d417c26d Remove static from checking if email is on free domain
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
9751dd326a Add acceptance test for unauthorized address notices
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
3ec5bf10bb Show different error message when sending from unauthorized *free* email address
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
5621d1df25 Set newsletter's ID when sending preview or actual newsletter
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
e2cde798df Unify detecting free domain in JS and PHP from one source
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
9b16a403e8 Create FreeDomains class
[MAILPOET-1882]
2019-03-21 13:15:29 -04:00
7a8ba52b57 Skip "Won't Do" issues from changelog
[MAILPOET-1867]
2019-03-21 15:58:48 +01:00
f10014d864 Remove unnecessary filtering 2019-03-21 10:03:21 -04:00
fee3b58e4e Fix small bugs 2019-03-21 10:03:21 -04:00
17949d06d5 Clean DB on _before() 2019-03-21 10:03:21 -04:00
f80a83386e Use VARCHAR instead of LONGTEXT for flags 2019-03-21 10:03:21 -04:00
7f131d256c Remove debugging code 2019-03-21 10:03:21 -04:00
de3d3331b0 Refactor tests [MAILOET-1677] 2019-03-21 10:03:21 -04:00
4fc53d2b36 Make all users able to edit flags [MAILOET-1677] 2019-03-21 10:03:21 -04:00
92cf0cc7db Refactor UserFlagsController 2019-03-21 10:03:21 -04:00
dd497d93c6 Filter flags values before saving them 2019-03-21 10:03:21 -04:00
f208a25f9a Pass only needed flags to views 2019-03-21 10:03:21 -04:00
22fc3089e6 Rename UserFlags to UserFlagsController 2019-03-21 10:03:21 -04:00
bc31db7d91 Avoid dynamic constant names 2019-03-21 10:03:21 -04:00
114a8281a9 Fix tests, code typos and style 2019-03-21 10:03:21 -04:00
afe7aa0a54 Move user flags from settings [MAILPOET-1677] 2019-03-21 10:03:21 -04:00
6218166ca1 Add user flags API endpoint [MAILPOET-1677] 2019-03-21 10:03:21 -04:00
33847397f3 Add UserFlags controller [MAILPOET-1677] 2019-03-21 10:03:21 -04:00
6801204232 Add UserFlag model [MAILPOET-1677] 2019-03-21 10:03:21 -04:00
31a8ca2dc0 Refactor Model::_createOrUpdate 2019-03-21 10:03:21 -04:00
3c282bcbb3 Refactor Database::defineTables [MAILPOET-1677] 2019-03-21 10:03:21 -04:00
c043f0c666 Add user_flags table [MAILPOET-1677] 2019-03-21 10:03:21 -04:00
wxa
0a9e23d2c4 Add tests [MAILPOET-1922] 2019-03-21 08:30:45 -04:00
wxa
59622cd5a0 Move bulkSendConfirmationEmail() method out of the Subscriber model [MAILPOET-1922] 2019-03-21 08:30:45 -04:00
wxa
a822114c6d Add bulk action factory to be able to use custom classes for actions [MAILPOET-1922] 2019-03-21 08:30:45 -04:00
92f5ef200f Add stylelint when compiling css, warn about slow watch task
[MAILPOET-1917]
2019-03-21 08:14:54 -04:00
668f7750e1 Fix error by variable defined after it's used 2019-03-21 08:14:54 -04:00
395e08e576 Add stylelint rule: 'order/properties-alphabetical-order'
[MAILPOET-1917]
2019-03-21 08:14:54 -04:00
fd2c90e6d3 Add qa:lint-css task, incorporate style linting into current flow
[MAILPOET-1917]
2019-03-21 08:14:54 -04:00
f7c34c8b5c Fix autoprefixer issues with old gradient syntax 2019-03-21 08:14:54 -04:00
c708163d22 Simplify compiling scss and autoprefixing
[MAILPOET-1917]
2019-03-21 08:14:54 -04:00
4021dff2d6 Add stylelint dependencies
[MAILPOET-1917]
2019-03-21 08:14:54 -04:00
wxa
f0683f5226 Revert "Get rid of double html parsing during render" [MAILPOET-1914]
This reverts commit 6056dcd417.
2019-03-20 09:23:14 -04:00
46416e410b Rename posts to product
[MAILPOET-1709]
2019-03-19 10:25:06 -04:00
abebf5ce49 Add a feature flag
[MAILPOET-1709]
2019-03-19 10:25:06 -04:00
1fd64330d2 Create a products widget in editor
[MAILPOET-1709]
2019-03-19 10:25:06 -04:00
2a774e24b2 [MQ-92] tests task scheduler toggle 2019-03-19 13:39:14 +01:00
e2462c8fb9 Fix acceptance tests domain for multisite tests 2019-03-19 08:00:12 -04:00
6be3c9d9f7 Configure acceptance tests to run on test domain
[MQ-99]
2019-03-18 12:33:35 -04:00
ba255a9e87 Update acceptance test sql dump to avoid running migrations
[MQ-99]
2019-03-18 12:33:35 -04:00
7e295e1ba2 Add ENV variables dump for acceptance tests circle run
[MQ-99]
2019-03-18 12:33:35 -04:00
74fbbc65b5 [MQ-99] fix so test can find .env in Circle, pt 2 2019-03-18 12:33:35 -04:00
81eb21ec0c [MQ-99] fix so test can find .env in Circle 2019-03-18 12:33:35 -04:00
a7a0b9a425 [MQ-99] tests that MailPoet API key can be added to settings 2019-03-18 12:33:35 -04:00
wxa
4b8889c918 Release 3.21.1 2019-03-18 12:31:44 -04:00
c7fd6a5bfe Change sender for mailer send test to use authorized sending address 2019-03-18 11:17:04 -04:00
cc9a0c4141 Fix block and container highlight for resizing
Previously the position of cursor (inside/outside block) was tracked during the resizing.
This commit changes this focus detection so that it is detected once at the end of resizing based on the final mouse position.
Thanks to event bubbling parent containers could set correct highlight state as well.
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
ad05c0ca94 Add resize events bubbling from block to containers
https://marionettejs.com/docs/master/events.html#event-bubbling
[MAIPOET-1816]
2019-03-18 06:07:30 -04:00
d445495cba Refactor event within view detection into utils
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
b8ce70ec2f Fix ALC block view settings opening on click
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
265b35586d Fix black border artifacts displaying on mouse leave on container in editor
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
ae84cdc859 Fix resize handle hiding after block resize finishes
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
1b044f77a3 Fix for mouseleave not being triggered during resize
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
727240ca0c Add block highlight during resizing
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
d69e0dea9e Refactor block highlight to be managed fully by highlight behavior
[MAILPOET-1819]
2019-03-18 06:07:30 -04:00
c526ba97e0 Fix typos
[MAILPOET-1790]
2019-03-13 16:10:09 -04:00
fefcf4fed5 Synchronise subscribers status
[MAILPOET-1790]
2019-03-13 16:10:09 -04:00
032e5a20ba Add forceSync link to woocommerce segment
[MAILPOET-1790]
2019-03-13 16:10:09 -04:00
93a25815bb Add settings field for subscribe
[MAILPOET-1790]
2019-03-13 16:10:09 -04:00
85f0bdde88 Display WooCommerce tab only if woo is active
[MAILPOET-1790]
2019-03-13 16:10:09 -04:00
97c51f6a53 Add WooCommerce tab to settings
[MAILPOET-1790]
2019-03-13 16:10:09 -04:00
86db17c7d9 Fix mp2migrator
[MAILPOET-1887]
2019-03-13 15:17:37 -04:00
0e3af79baa Refactor DB parameters initialization into separate method
[MAILPOET-1886]
2019-03-13 09:45:42 -04:00
5193df6a6d Fix unix_socket parsing from DB_HOST
[MAILPOET-1886]
2019-03-13 09:45:42 -04:00
a35d7dc7c6 Refactor Config\Env to accept DB constants as parameters
[MAILPOET-1886]
2019-03-13 09:45:42 -04:00
b42f184b1d Fix render warning [MAILPOET-1873] 2019-03-13 09:37:10 -04:00
ddc860187e Fix React key warning [MAILPOET-1873] 2019-03-13 09:37:10 -04:00
514db707d0 Fix using tracking data from API in NPS poll
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
442b138d83 Refactor NPS poll component to separate poll and wrapper components
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
777eb1f7b7 Add status, deleted_at index to subscribers table
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
0dac1cacfb Add alias for WooCommerceHelper for better readability
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
453aebb738 Remove forgotten use statement
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
51682cf6e5 Switch from DateTime to Carbon in Analytics\Reporter
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
43dde40393 Add type, status index to newsletters table
Type is used for listings tabs and type in combination with status is used in analytics + a few other not that frequent queries
[MAILPOERT-1815]
2019-03-12 10:45:46 -04:00
4d4735defd Wrap newsletters listing tabs to nps poll instead of individual listings
Wrapping causes that wrapped component receive props and componentWillReceiveProps is used in listing for fetching data from API. This means that wrapping listing leads to multiple api fetch.
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
0ab7f7b1e8 Add installed_at into tracking data
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
e3741def1d Refactor NPS tracking data fetching to use API call
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
7bc16e4ba7 Refactor nps_poll to a high order component
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
429671f78f Add new items to NPS traits
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
efc5aa5900 Enhance Analytics\Reporter to fetch tracking data
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
f91b89bba5 Move satismeter script before our scripts to handle race condition
[MAILPOET-1815]
2019-03-12 10:45:46 -04:00
cde6e4285e Update vulnerable dependency twig/twig
[MAILPOET-1895]
2019-03-12 10:29:57 -04:00
2330532f35 Use default sender
[MAILPOET-1868]
2019-03-12 07:35:00 -04:00
2ede5caad0 Releasing 3.21.0 2019-03-11 14:01:45 -04:00
wxa
4d3e5192a5 Remove the ci-test-deploy branch from the whitelist [MAILPOET-1845] 2019-03-11 16:11:17 +02:00
wxa
f89f52da15 Add test deployment CI job [MAILPOET-1845] 2019-03-11 16:11:17 +02:00
d4abbf1fb6 Fix email authorization URL address
[MAILPOET-1876]
2019-03-11 09:47:06 -04:00
01c992fd11 Update plugin banners for repository
[MAILPOET-1881]
2019-03-08 11:16:51 -05:00
214f439893 Use RAM version of CircleCI DB images for faster builds
[MAILPOET-1864]
2019-03-07 10:07:38 -05:00
aa212692b3 Update CircleCI configuration to newer PHP 7.3 Docker image
[MAILPOET-1864]
2019-03-07 10:07:38 -05:00
a4c1b07db5 Remove dot announcement
[MAILPOET-1862]
2019-03-07 08:56:23 -05:00
bee5e2f5d1 Return Subscriber::subscribe static method
This method is used by Thrive Leads plugin
[MAILPOET-1865]
2019-03-07 08:48:31 -05:00
f128b2471d Fix some typos 2019-03-07 08:30:14 -05:00
ab097d356a Fix PHPStan errors 2019-03-07 08:30:14 -05:00
3ff55d85a9 Fix tests 2019-03-07 08:30:14 -05:00
0a436087e1 Replace all WP function calls 2019-03-07 08:30:14 -05:00
986482e34b Make WPFunctions a singleton and add WP fns 2019-03-07 08:30:14 -05:00
4ff8e4031a Move getImageInfo to PostTransformer 2019-03-07 08:30:14 -05:00
51a1187439 Refactor waiting for ALC to load within a test
[MAILPOET-1875]
2019-03-07 10:10:33 +01:00
e035c5131d Adjust acceptance test timeouts
[MAILPOET-1875]
2019-03-07 10:10:33 +01:00
4c82c24bf8 Add switching sending method back to SMTP in acceptance test
[MAILPOET-1875]
2019-03-07 10:10:33 +01:00
ee89a1e4b8 Add longer timeouts 2019-03-06 09:26:53 -05:00
b0ba1a3329 Enforce NPM version 6.8.x
[MAILPOET-1837]
2019-03-06 08:05:43 -05:00
4c2f187880 Use cache for 'npm ci'
[MAILPOET-1837]
2019-03-06 08:05:43 -05:00
eef5f47a1a Use 'npm ci' instead of 'npm install' in scripts
[MAILPOET-1837]
2019-03-06 08:05:43 -05:00
169452825c Fix out-of-sync package-lock.json
[MAILPOET-1837]
2019-03-06 08:05:43 -05:00
c5b5e7afbb Update NodeJS on CircleCI
[MAILPOET-1837]
2019-03-06 08:05:43 -05:00
26cf741311 Remove long explicit timeouts
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
c522086d01 Use local image instead of webservice
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
48f603afa5 Add empty lines to test
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
c8f2ff7f30 Update condition for better readability
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
ae3c03f985 Add JS test
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
56680816c0 Update test to a new component
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
5df73d3e0c Add test for ALC position in editor
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
6d3beaa45d Render post position
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
ece7e711c9 Add an option to select title option
[MAILPOET-1710]
2019-03-06 07:48:33 -05:00
f8e4975c0d Fix missing translation string
[MAILPOET-1871]
2019-03-06 07:12:25 -05:00
00f6a5bcd8 Add annotations to renderer
[MAILPOET-1797]
2019-03-05 13:47:15 -05:00
a657554f66 Do not wait for template to confirm being saved on send page
[MAILPOET-1797]
2019-03-05 13:47:15 -05:00
66ae3edf78 Get rid of double html parsing during render
[MAILPOET-1797]
2019-03-05 13:47:15 -05:00
59d960b42f Add nodes query cache for CSS inlining
[MAILPOET-1797]
2019-03-05 13:47:15 -05:00
4e27152c93 Add private access to internal methods in Renderer
[MAILPOET-1797]
2019-03-05 13:47:15 -05:00
65b5f355fa Change thumbnail generating at send page to start earlier
[MAILPOET-1797]
2019-03-05 13:47:15 -05:00
2c1bcdcf9b Add missing return to Settings data factory
[MAILPOET-1699]
2019-03-05 10:27:30 -05:00
b4586331b0 Fix typos in strings
[MAILPOET-1699]
2019-03-05 10:27:30 -05:00
cf17d5b693 Add tests for sending error notices
[MAILPOET-1699]
2019-03-05 10:27:30 -05:00
89e2cb3f18 Display friendlier mailer errors when sending preview fails
[MAILPOET-1699]
2019-03-05 10:27:30 -05:00
fee5b0d5fa Display friendlier mailer errors when sending paused
[MAILPOET-1699]
2019-03-05 10:27:30 -05:00
9a533a5caf Add acceptance test for line-height settings
[MAILPOET-1450]
2019-03-05 07:21:16 -05:00
9c06ae6534 Apply model defaults also on nested levels
[MAILPOET-1450]
2019-03-05 07:21:16 -05:00
35d39a6ac9 Implement adjustable line-height
[MAILPOET-1450]
2019-03-05 07:21:16 -05:00
7d032df7ea Releasing 3.20.0 2019-03-05 05:39:00 -05:00
f59d4a391b Change repository banner image 2019-03-04 11:05:00 -05:00
wxa
bc8528660e Allow to activate MSS with an expiring key [MAILPOET-1852] 2019-03-04 10:56:35 -05:00
c637339035 Fix 2-1 1-2 columns rendering in editor
[MAILPOET-1851]
2019-03-04 10:01:12 -05:00
dea2eb2311 Update translations in readme
[MAILPOET-1678]
2019-03-04 09:42:17 -05:00
1e658a8dc6 Fix BC compatibility for Elementor properly
[MAILPOET-1863]
2019-03-04 08:51:08 -05:00
wxa
2ccfe14708 Add an index to the newsletter links url [PREMIUM-114] 2019-03-04 07:50:00 -05:00
wxa
abaf7e5c93 Make models without 'deleted_at' field duplicable [PREMIUM-114] 2019-03-04 07:50:00 -05:00
658f4a6eb1 Add tests 2019-02-28 15:56:40 -05:00
b5bc6ec3c6 Remove ununsed method 2019-02-28 15:56:40 -05:00
4a64fff0ff Optimize queries on WordPress trigger 2019-02-28 15:56:40 -05:00
ef0f6c9a5a Reduce the number of SQL queries 2019-02-28 15:56:40 -05:00
4dbca3efb3 Remove unnecessary condition 2019-02-28 15:56:40 -05:00
837a380642 Ensure highlighted block when it is re-rendered during edit
[MAILPOET-1805]
2019-02-28 13:11:21 -05:00
c9a70c4870 Keep container block highlighted and tools displayed when editing settings
[MAILPOET-1805]
2019-02-28 13:11:21 -05:00
6662f4e4d2 Keep block highlighted and tools displayed when editing settings
[MAILPOET-1805]
2019-02-28 13:11:21 -05:00
wxa
8f8eb24b67 Do SVN checkout before publishing [MAILPOET-1848] 2019-02-28 13:09:07 -05:00
3ade09255a Fix lint error
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
b65a54d93b Hide success notice when unauthorized address notice is shown
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
602929356c Show unauthorized address right after sending email
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
bad69b0e24 Save translated message to logs, not just translation key
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
10acb7eff9 Don't show empty paragraphs in notices
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
af39ae89c4 Use DI for ServicesChecker
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
fc55e5f7ec Fix integration test
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
b95dc9296c Move generating 403 error messages to separate methods
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
b5224927d0 Remove unused optional parameters, make function private, since it's not used outside
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
5c78028232 Add rel="noopener noreferrer" to links
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
a79b60b17a Check if key exists
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
f5feb032fe Show error notice when email is sent from unauthorized email
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
79bd178123 Add integration test for unauthorized email
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
1da2263d83 Allow showing error notice without "MailPoet Error:" title
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
833d197753 Allow rendering WP notices without paragraph element
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
91c88bc93f Better error code name when not able to send mails
[MAILPOET-1787]
2019-02-28 12:28:53 -05:00
wxa
de4a95cf92 Add release preparation command [MAILPOET-1847] 2019-02-28 12:02:09 -05:00
17d361c108 Allow dynamic height for email type selector
[MAILPOET-1711]
2019-02-28 09:58:39 -05:00
fa6dabe37c Fix video badge sizing
[MAILPOET-1711]
2019-02-28 09:58:39 -05:00
775d8d1a5b Fix a typo
[MAILPOET-1849]
2019-02-28 09:24:29 -05:00
1b65551e7b Disable WP auto update in tests
[MAILPOET-1844]
2019-02-28 10:50:10 +01:00
1a424c6f16 Refactor test constant settings to a nicer style
[MAILPOET-1844]
2019-02-28 10:50:10 +01:00
3e4252cb9e Fix pagination controls styles in WP 5.1.x
[MAILPOET-1838]
2019-02-27 14:54:11 -05:00
973103db59 Bump "Tested up to" version to 5.1
[MAILPOET-1835]
2019-02-27 10:52:31 -05:00
e9b43d2ad8 Change drag-drop demo video 2019-02-27 09:40:39 -05:00
04dd2fc002 Add generated folder cleanup during build
[MAILPOET-1832
2019-02-26 11:38:33 -05:00
0d8180c07e Fix multiple initialization of form editor
[MAILPOET-1817]
2019-02-26 10:26:56 -05:00
9c410fe983 Prepare a release for 3.19.3 2019-02-26 07:37:07 -05:00
6b0f7c70ad Update LAST_ANNOUNCEMENT_DATE
[MAILPOET-1833]
2019-02-25 11:17:38 -05:00
a4f8a5c835 Fix invalid CSS value 2019-02-25 07:32:49 -05:00
5eca8c1dfa Fix invalid CSS values after conversion from Stylus
[MAILPOET-1836]
2019-02-25 07:32:49 -05:00
89b90af92e Fix missing styles for progress bar
[MAILPOET-1834]
2019-02-25 07:32:49 -05:00
1868d1e45f Add a lazy instantiation of Mailer in NewSubscriberNofiticationMailer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
ccc300cd80 Remove container dependency from Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
6048ccba85 Inject CronTrigger into Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
096359741d Inject Hooks, Changelog and Menu into Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
db8c68460d Inject Router into Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
4a6fb923e0 Inject Activator and SettingsController into Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
d5ea906433 Inject API into Initializer using container
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
f64e1c81fe Inject AccessControl into Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
b1c9133330 Add current_user_can WP function into WPFunctions wrapper
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
1179747324 Refactor AccessControl static methods to instance methods
[MAIPOET-1823]
2019-02-25 06:38:25 -05:00
171b3564f9 Inject Renderer to Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
d8503cf3c2 Create Initializer using DI
[MAIPOET-1823]
2019-02-25 06:38:25 -05:00
b7bc54a07e Move Env init out of Initializer
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
344b46e862 Update Symfony DI library
[MAILPOET-1823]
2019-02-25 06:38:25 -05:00
8d20edb65f [MQ-94][MQ-91] fixed spacing, removed unneeded data-automation-id 2019-02-22 10:33:05 +01:00
7bff5ff4cb [MQ-94][MQ-91] changed name, added assertions, added test for bounce email with assertion 2019-02-22 10:33:05 +01:00
64c138e50a [MQ-94]Fixed file name to match class 2019-02-22 10:33:05 +01:00
49bce630ce [MQ-94]Fixed naming, added better assertions 2019-02-22 10:33:05 +01:00
7058b729d1 [MQ-94] Tests that anon data toggle can be toggled 2019-02-22 10:33:05 +01:00
41547b2283 Convert last import step to react
[MAILPOET-1807]
2019-02-21 14:11:43 -05:00
bed80e67f1 Use phpstan level 2
[MAILPOET-1822]
2019-02-21 13:49:52 -05:00
37d2134811 Update phpstan version
[MAILPOET-1822]
2019-02-21 13:49:52 -05:00
ce0a761eab Fix import of a module that does not use 'export default'
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
5c92af4881 Add and fix comma-dangle rules for *.js files
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
61ab593dcb Fix order of definitions, remove unnecesary vars
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
e95e7d3b4c Remove unused imports
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
bb658f77ec Fix indentaition in *.js files (auto-fix by ESLint)
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
a2e89039c6 Allow ES6 features in the old ES5 & tests linter setting
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
b0c3972ab2 Use Babel also for .js
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
1e1ed6f251 Replace amd-inject-loader with inject-loader & use Babel trick for ES6 support
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
112d780de5 Fix modules with "return" outside of function
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
afcde00003 Convert AMD and CommonJS odules to ES6
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
5a0d905bd4 Do not use named AMD modules
[MAILPOET-1829]
2019-02-21 11:52:39 -05:00
67baf7e4cf [MQ-178] Fixed one more snake case var 2019-02-21 11:12:36 -05:00
c143730d2e [MQ-178 refactor ManageWelcomeEmailCest tests 2019-02-21 11:12:36 -05:00
f9950fdfd0 [MQ-178 refactor ManageWelcomeEmailCest tests 2019-02-21 11:12:36 -05:00
wxa
fb77167a1f Remove unused imports [MAILPOET-1825] 2019-02-21 09:51:53 -05:00
wxa
2f487fd300 Inject subscribe() action instead of calling it statically [MAILPOET-1825] 2019-02-21 09:51:53 -05:00
wxa
7528f0f52b Move subscribe() method to a separate class an make it non-static [MAILPOET-1825] 2019-02-21 09:51:53 -05:00
56f6441d36 Add duplicate functionality for ALC
[MAILPOET-1810]
2019-02-21 08:43:23 -05:00
cdefaddc76 Add rules for naming SCSS files in CONTRIBUTING
[MAILPOET-1813]
2019-02-21 08:26:32 -05:00
db464fad17 Remove trailing whitespace in .scss files 2019-02-21 08:26:32 -05:00
d8f3df3f45 Remove prefixed CSS properties
[MAILPOET-1814]
2019-02-21 08:26:32 -05:00
aaafff68c8 Use autoprefixer when compiling styles
[MAILPOET-1814]
2019-02-21 08:26:32 -05:00
3dd3d93159 Add autoprefixer and postcss-cli dependencies
[MAILPOET-1814]
2019-02-21 08:26:32 -05:00
d6e2365fb0 Replace all .styl files with .scss, move all component files into separate folder
[MAILPOET-1813]
2019-02-21 08:26:32 -05:00
c9c6c0651e Replace Stylus with SCSS, update watch and compile tasks
[MAILPOET-1813]
2019-02-21 08:26:32 -05:00
60d3a736c4 [MQ-177] Refactor edit existing newsletter test 2019-02-21 07:26:49 -05:00
ce9af5cc5c [MQ-177] Refactor edit existing newsletter test 2019-02-21 07:26:49 -05:00
ff1b079131 [MQ-176] delete unneeded assertions from acceptance tests 2019-02-21 08:37:01 +01:00
958296c0b7 Move resize handler a little bit higher
[MAILPOET-1803]
2019-02-20 08:07:25 -05:00
c73d02c2e8 Show element controls when resizing divider/spacer
[MAILPOET-1803]
2019-02-20 08:07:25 -05:00
99731cfebe Show element controls when resizing image
[MAILPOET-1803]
2019-02-20 08:07:25 -05:00
66887daaaa Redesign spacer, divider and image resize handler
[MAILPOET-1803]
2019-02-20 08:07:25 -05:00
9d10b4aee1 Flip column and content highlight colors
[MAILPOET-1803]
2019-02-20 08:07:25 -05:00
cf957ad6ef Show import validation only if more than 500 rows
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
8a09d3ac42 Prefix class names
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
afd97cf246 Update acceptance test to new import flow
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
d531cd8678 Refactor buttons to reusable component
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
8656756d2b Include validation step in import flow
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
17f54daea6 Style import 2nd step
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
b50defa24e Add id for inputs for labels
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
dfe02a9145 Translate all strings
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
3f32b6f467 Enable next step button only if all checkboxes are checked
[MAILPOET-1626
2019-02-19 08:46:32 -05:00
26db3d0cd9 Add all checkboxes
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
ba7085614a Add next and previous buttons
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
2ef2131411 Add a new step to import flow
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
c0c28b03ab Remove old warning
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
57c5e19a7d Rename current steps
[MAILPOET-1626]
2019-02-19 08:46:32 -05:00
b8225084c9 Prepare a release for 3.19.2 2019-02-19 07:51:30 -05:00
5c81c537ec Remove no longer needed icon fonts
[MAILPOET-1804]
2019-02-14 08:32:09 -05:00
bb896e90d7 Fix missing icon in Members' plugin, replace iconfont with base64 SVG
[MAILPOET-1804]
2019-02-14 08:32:09 -05:00
97ad950aea Remove all eslint exceptions
[MAILPOET-1727]
2019-02-14 07:48:30 -05:00
45f4cdaf33 Don't show editor controls when dragging or resizing
[MAILPOET-1727]
2019-02-14 07:48:30 -05:00
6cabecbe52 Add hiding of tinymce editor when a user drags anything
[MAILPOET-1726]
2019-02-13 12:58:44 -05:00
df40833024 Add deprecation warning for Setting::getValue
[MAILPOET-1802]
2019-02-13 12:30:33 -05:00
wxa
898d61de2d Don't update versions for already tagged tickets, rename a method [MAILPOET-1783] 2019-02-13 12:20:00 -05:00
wxa
a829e05bfb Make version optional, remove Premium-related code [MAILPOET-1783] 2019-02-13 12:20:00 -05:00
wxa
84f0816dca Add a command to assign release versions to Jira tickets [MAILPOET-1783] 2019-02-13 12:20:00 -05:00
8a23a9def8 Update database for newer Wordpress
[MAILPOET-1764]
2019-02-13 11:49:53 -05:00
8be5ba0d61 Use newer versions in our acceptance tests
[MAILPOET-1764]
2019-02-13 11:49:53 -05:00
b6bf98e375 [MQ-89][MQ-90]Test MailPoet default and custom confirmation pages. 2019-02-13 18:30:11 +03:00
4fea19ea8d [MQ-89][MQ-90]Test MailPoet default and custom confirmation pages. 2019-02-13 18:30:11 +03:00
65967166c8 Add space rule to CONTRIBUTING 2019-02-13 08:26:27 -05:00
3ee58aea10 Add space between if and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
a935b091d3 Add space between elseif/else if and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
100db25ed9 Add space between while and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
9e9561e576 Add space between catch and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
a8972ca281 Add space between switch and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
ebbdec5ebd Add space between foreach and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
fba2914392 Add space between for and ‘(‘
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
b2e5952896 Update code sniffer rules to require space after keywords
[MAILPOET-1791]
2019-02-13 08:26:27 -05:00
102a994a81 Fix small templates issues 2019-02-13 07:00:36 -05:00
3c96187f63 Update some templates 2019-02-13 07:00:36 -05:00
9ce086f949 Add new templates [MAILPOET-1671] 2019-02-13 07:00:36 -05:00
217172711d Blacklist woocommerce and some wp_filter globals for integration tests to work with WC active
MAILPOET-1765
2019-02-12 12:11:35 -05:00
cb3b0e7f1e Fix scroll up when clicking on the bottom of long textareas
[MAILPOET-1728]
2019-02-12 11:38:47 -05:00
b0681c0be9 Robustness level upped to bulletproof. [MQ-174] 2019-02-12 11:36:23 -05:00
93f05ec0ff [MQ-174] added alternate assertion that's less flaky 2019-02-12 11:36:23 -05:00
6d3019e874 [MQ-174] added robustness and bypassed error in test writer's logic 2019-02-12 11:36:23 -05:00
c9fc819053 [MQ-174] Added extra assertion to make sure default beamer icon is hidden 2019-02-12 11:36:23 -05:00
582dd1737e [MQ-174] Beamer acceptance test 2019-02-12 11:36:23 -05:00
9b2ede0cc8 Fix small bug on release task 2019-02-12 16:21:16 +01:00
wxa
7074421a5a Test first/last names priority in WC sync [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
6844317cae Remove a redundant switch statement [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
6258ea6d1f Use encapsulated WP function [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
95f162592b Move WooCommerceHelper instantiation to constructor [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
6e8cad2307 Use the settings controller in WooCommerce sync [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
83896d39d3 Override the source for new registered customers [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
10364051ce Temporarily disable WC hooks (except for testing) [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
9c7af744b3 Fix code style [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
4335872280 Add WooCommerce sync tests [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
eb860c487b Add a scheduled task for WooCommerce sync [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
3f1e690d90 Add WooCommerce synchronization [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
wxa
35ac4a40da Move WooCommerce detection to a helper [MAILPOET-1723] 2019-02-12 08:56:40 -05:00
36ccb65753 Release version 3.19.1 2019-02-12 08:19:45 -05:00
457016363f Redesign element and column tools
[MAILPOET-1708]
2019-02-11 13:27:30 -05:00
47bf32c0a5 Remove no longer needed highlighting behaviour
[MAILPOET-1708]
2019-02-11 13:27:30 -05:00
11cf31a561 Show different highlight borders for column and content blocks
[MAILPOET-1708]
2019-02-11 13:27:30 -05:00
8510e837ab More readable code
[MAILPOET-1708]
2019-02-11 13:27:30 -05:00
6ce047d619 Update block control icons
[MAILPOET-1708]
2019-02-11 13:27:30 -05:00
14df9afb9a Simplify rendering social icons styles in editor
[MAILPOET-1731]
2019-02-11 12:28:04 -05:00
876bfd5dea Add context for translators to icons alignment settings
[MAILPOET-1731]
2019-02-11 12:28:04 -05:00
88833c5c76 Add eslint rule to prevent .only tests
[MAILPOET-1731]
2019-02-11 12:28:04 -05:00
0cfc9055c4 Add support for social icons alignment to renderer
[MAILPOET-1731]
2019-02-11 12:28:04 -05:00
5c4ecd8e22 Add alignment settings for social icons to editor
[MAILPOET-1731]
2019-02-11 12:28:04 -05:00
cc1c1bb405 Fix jQuery event targets
[MAILPOET-1794]
2019-02-11 12:16:29 -05:00
5425b91321 Fix async queue
[MAILPOET-1794]
2019-02-11 12:16:29 -05:00
bf6b121796 Move data sanitisation to separate file
[MAILPOET-1794]
2019-02-11 12:16:29 -05:00
9a247439b3 Convert import to ES6
[MAILPOET-1794]
2019-02-11 12:16:29 -05:00
704c066d73 Remove AMD syntax
[MAILPOET-1794]
2019-02-11 12:16:29 -05:00
90d369a721 Fix fatal error with confirmation email sending thru MP API
[MAILPOET-1801]
2019-02-11 11:14:35 -05:00
65df4327dd Refactor code to work with prefixed Sabberworm\CSS\Parser
[MAILPOET-1761]
2019-02-11 10:29:05 -05:00
4a6d69bae2 Move Sabberworm\CSS\Parser to vendor_prefixed depependencies
[MAILPOET-1761]
2019-02-11 10:29:05 -05:00
053825fe2d [MQ-42] Preview standard newsletter 2019-02-11 07:33:16 -05:00
9feb7eea6c Make small inputs in editor larger to fit 4 digits
[MAILPOET-1722]
2019-02-11 07:05:09 -05:00
0a02b578a5 Run composer validation on CircleCI to ensure composer.lock is never out of sync
[MAILPOET-1760]
2019-02-11 06:51:34 -05:00
c5bff28542 [MQ-175] added whitespace around binary operator 2019-02-11 12:08:10 +01:00
aac9509605 [MQ-175] Fix three failing acceptance tests incompatible with WP 5.0 and above. Cleaned up sloppy methods. 2019-02-11 12:08:10 +01:00
7bc61add13 [MQ-102] removed concatenation, fixed formatting, added escapeshellarg, some shine 2019-02-11 05:58:53 -05:00
bb20246d81 [MQ-102] Create custom unsubscribe page with shortcode 2019-02-11 05:58:53 -05:00
0d7591a342 [MQ-86] replaced concatenated strings with inline, avoided gutenberg publish UI, grew past escape \s, improved readability, and added spaces around binary operators 2019-02-11 09:28:51 +01:00
9cb2f7d8fd [MQ-86] Fixed typo 2019-02-11 09:28:51 +01:00
807dde3f81 [MQ-86] Acceptance test for subscriber count shortcode. 2019-02-11 09:28:51 +01:00
ebca53724e Return static Setting call to fix Elementor integration
[MAILPOET-1800]
2019-02-10 19:45:34 -05:00
9eac99d614 Change element controls position in editor
MAILPOET-1700
2019-02-10 19:34:25 -05:00
c857bcadde Make drag button in editor wider
[MAILPOET-1729]
2019-02-10 19:03:35 -05:00
82bdd343bd Add new fonts
[MAILPOET-1733]
2019-02-10 18:39:59 -05:00
0a23d78d90 Update TinyMCE from 4.5.6 to 4.6.5 to fix formatting getting lost in editor
[MAILPOET-1702]
2019-02-10 18:07:25 -05:00
b48b9b62e9 Add job to build zip
[MAILPOET-17771]
2019-02-10 17:52:26 -05:00
745198e406 Add Robofile commands for changelog update and get
[MAILPOET-1770]
2019-02-08 12:20:23 -05:00
e1601b20de Add changelog controller and Jira
[MAILPOET-1770]
2019-02-08 12:20:23 -05:00
e040190d5e Update instagram icon
[MAILPOET-1768]
2019-02-07 21:24:56 -05:00
5cf75bcd60 Add sender warning to sign-up confirmation page
[MAILPOET-1769]
2019-02-07 16:30:19 -05:00
11e5243de3 Fix Delete button clickable only in the middle
[MAILPOET-1772]
2019-02-07 09:52:07 -05:00
771a288327 Rewritten alert to use MailPoet.Modal.popup()
[MAILPOET-1772]
2019-02-07 09:52:07 -05:00
0a93a0905d Fix outdated updated_at value in newsletter save API response
[MAILPOET-1778]
2019-02-07 09:17:06 -05:00
02fa9f0647 Set default day in post notification
If user doesn't select a day they see 1st in the UI but
because the action is onChange which never fired
the system remembers the default value 0

[MAILPOET-1781]
2019-02-07 08:14:09 -05:00
eea9f7fb4e Use 'nolock' option to fix issues with NFS volumes on Mac
[MAILPOET-1795]
2019-02-07 10:04:18 +01:00
198a8509fc Remove olark integration
[MAILPOET-1775]
2019-02-06 13:25:56 -05:00
3ec727b660 Fix settings save race condition in tests 2019-02-06 09:24:59 -05:00
1f3edef513 [MQ-85] the new code this time 2019-02-06 13:29:09 +01:00
de0a54bd5c Added assertion for shortcode output 2019-02-06 13:29:09 +01:00
763a805e07 [MQ-85] Test MP archive page shortcode 2019-02-06 13:29:09 +01:00
e89d242b7f Use amOnPage instead of clicks in menu 2019-02-06 14:59:15 +03:00
0599bfbb38 Add test statistics for acceptance tests 2019-02-06 14:59:15 +03:00
d7b26ce7d6 Add docker-compose override sample for NFS & MacOS 2019-02-06 14:59:15 +03:00
4bd38f8e89 Move test-related Docker files to tests/docker 2019-02-06 14:59:15 +03:00
a8aa4c1afd [MQ-43] Preview Post Notification 2019-02-06 11:32:20 +01:00
3d1baebdc9 Merge pull request #1785 from mailpoet/release-3.19.0
Release 3.19.0
2019-02-05 08:00:44 -05:00
wxa
b6e89827e2 Fix webpack production build on WSL 2019-02-05 15:50:05 +03:00
wxa
f3ab0120ec Release 3.19.0 2019-02-05 15:49:37 +03:00
e08ce426a5 Merge pull request #1781 from mailpoet/di-dump-fix
Fix passing constants to renderer [MAILPOET-1780]
2019-02-05 05:45:18 -05:00
f60898557e Hotfix passing constants to renderer
[MAILPOET-1780]
2019-02-05 10:00:07 +01:00
f1653df8d1 Merge pull request #1767 from mailpoet/beamer-autoopen
Fix beamer auto-opening, because of their new auto-refresh feature
2019-02-04 09:47:13 -05:00
86803aa6a1 Merge pull request #1780 from mailpoet/fix-sender
Fix sender editation & add test for the error [MAILPOET-1777]
2019-02-04 08:59:58 -05:00
2d1298ea4d Fix sender editation & add test for the error
[MAILPOET-1777]
2019-02-04 13:25:05 +01:00
b60ba1fce8 Use JS source maps for development
[MAILPOET-1752]
2019-02-04 12:52:17 +01:00
2e7f4d7448 Merge pull request #1754 from mailpoet/acceptance-tests-timeout
Introduce default timeout to acceptance tests, remove custom timeouts [MAILPOET-1759]
2019-02-04 06:44:05 -05:00
11fca4584e Merge pull request #1779 from mailpoet/linux-cron-fix
Use DI to get container [MAILPOET-1776]
2019-02-04 06:41:40 -05:00
ab1a9598ce Add empty element for Beamer, so they won't automatically show their icon
MAILPOET-1720
2019-02-04 11:40:40 +01:00
759ee9a919 Fix beamer auto-opening, because of their new auto-refresh feature
MAILPOET-1720
2019-02-04 11:40:40 +01:00
4a22d3c03c Use DI to get container
[MAILPOET-1776]
2019-02-04 11:23:06 +01:00
wxa
d4bf85bfdb Remove the default wait timeout constant [MAILPOET-1759] 2019-02-04 11:29:38 +03:00
wxa
6397ec2bdd Fix indentation [MAILPOET-1759] 2019-02-04 11:29:38 +03:00
wxa
5ca0f2b6c9 Remove custom timeouts from acceptance tests 2019-02-04 11:28:57 +03:00
wxa
e5a6e541cc Override waitFor* AcceptanceTester functions to have a default timeout 2019-02-04 11:28:57 +03:00
c424f43156 Merge pull request #1762 from mailpoet/release-version-command
Add release version command [MAILPOET-1754]
2019-02-01 09:19:01 -05:00
9b980e9388 Merge pull request #1758 from mailpoet/new-logo-free-users
Use new logo for free users emails [MAILPOET-1744]
2019-01-31 17:43:06 -05:00
ce79b8dc5c Merge pull request #1772 from mailpoet/chrome-update
Chrome update [MAILPOET-1738]
2019-01-31 16:57:54 -05:00
513970dd73 Merge pull request #1744 from mailpoet/js-deps-update
Update JS dependencies [MAILPOET-1758]
2019-01-31 16:14:14 -05:00
a5556cc683 Merge pull request #1764 from mailpoet/fix-bold-button
Fix bold button checkbox [MAILPOET-1746]
2019-01-31 15:46:33 -05:00
1b2a759297 Merge pull request #1761 from mailpoet/renderer-css-specificity
Css specificity fixes in renderer [MAILPOET-1730]
2019-01-31 15:27:06 -05:00
8cb00c2d8b Merge pull request #1770 from mailpoet/assets-img
Update images URLs on CSS [MAILPOET-1773]
2019-01-31 14:21:51 -05:00
ed674bef93 Merge pull request #1766 from mailpoet/settings-controller
Settings controller [MAILPOET-1757]
2019-01-31 13:39:11 -05:00
5fb2841e55 Merge pull request #1765 from mailpoet/migrations-fix
Migrations fix [MAILPOET-1717]
2019-01-31 10:18:12 -05:00
2f0a4f89cf Merge pull request #1769 from mailpoet/js-error-fix
Update Prototype.js from 1.7.2 to 1.7.3 to fix compatibility with WP5 [MAILPOET-1763]
2019-01-31 10:09:42 -05:00
10e56d860d Move Setting getValue and setValue to controller as a private methods
[MAILPOET-1757]
2019-01-31 15:57:59 +01:00
2c921a16aa Move default setting values from Setting model to new controller
[MAILPOET-1757]
2019-01-31 15:57:59 +01:00
62dca415d4 Improve naming in SettingsController
[MAILPOET-1757]
2019-01-31 15:57:59 +01:00
a12d0ff4bc Refactor newly added cron workers to use new settings
[MAILPOET-1757]
2019-01-31 15:57:59 +01:00
5f9aa306c4 Refactor tests data factories to work new settings
[MAILPOET-1757]
2019-01-31 15:57:59 +01:00
e060caeeba Refactor MailPoet\Twig, Utils to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
ce7ad292b8 Refactor MailPoet\Subscribers, Subscription to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
9399e19e3b Refactor MailPoet\Router, Services to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
fce709a7fc Refactor MailPoet\Newsletter to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
3a7ea60d3f Refactor MailPoet\Model to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
f4f1770b1d Refactor MailPoet\Mailer to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
71405a74e7 Refactor MailPoet\From, Helpscout and Logging to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
ff238bf69a Refactor MailPoet\Cron to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
6e79705128 Refactor MailPoet\Config to use new settings
[MAILPOET-1757]
2019-01-31 15:57:58 +01:00
3b5962d36a Refactor MailPoet\API to use new settings
[MAILPOET-1757]
2019-01-31 15:57:46 +01:00
5495e4c2eb Add test to ensure unwated migrations are not produced
[MAILPOET-1717]
2019-01-31 15:11:46 +01:00
fc4f0a2851 Fix DB changes being detected on every upgrade
[MAILPOET-1717]
2019-01-31 15:11:46 +01:00
3aa0926fb9 Remove setting and getting of nested values on Setting model
[MAILPOET-1757]
2019-01-31 14:51:07 +01:00
4c6e76dd44 Add SettingsController cache reset to integration tests
[MAILPOET-1757]
2019-01-31 14:51:07 +01:00
f7aecf1d63 Add new settings service
[MAILPOET-1757]
2019-01-31 14:48:01 +01:00
7a3de54864 Delete empty test 2019-01-31 14:48:01 +01:00
cd2ababade Refactor utils CSS so that it can be used as service in DI container
[MAILPOET-1730]
2019-01-31 14:36:26 +01:00
f1ab901e02 Preserve inlined link styles in header and footer
[MAILPOET-1730]
2019-01-31 14:36:26 +01:00
f43f3497af Fix styles inlining so that more specific styles are preserved
[MAILPOET-1730]
2019-01-31 14:36:26 +01:00
b6516068a0 Fix parseCss to return rules in correct order
[MAILPOET-1730]
2019-01-31 14:36:17 +01:00
a39b40e9b7 Merge pull request #1743 from mailpoet/encapsulate-wp
Encapsulate WP calls
2019-01-31 08:28:27 -05:00
6c4aa4ab2d Fix occasionally frozen new tabs on newer Chrome versions
[MAILPOET-1738]
2019-01-31 13:59:41 +01:00
6f934e2c87 Update Chrome for acceptance tests to current version
[MAILPOET-1738]
2019-01-31 13:49:45 +01:00
f1c7e48176 Remove debugging code 2019-01-31 13:28:29 +01:00
f83b7453fc Use DI container whever possible 2019-01-31 13:25:00 +01:00
8b602bd947 Move WPHooks methods to WPFunctions 2019-01-31 13:25:00 +01:00
d452cfcae7 Wrap calls in DateTime and Emoji classes 2019-01-31 13:23:32 +01:00
06f1dad120 Merge pull request #1759 from mailpoet/subscriber-confirmations-limit
Limit number of confirmation emails sent to one email
2019-01-31 07:09:59 -05:00
49d2f16705 Update images URLs on CSS 2019-01-31 11:54:00 +01:00
5dfde1428e Add release version command
[MAILPOET-1754]
2019-01-31 09:19:20 +01:00
78d3f1f7c2 Update Prototype.js from 1.7.2 to 1.7.3 to fix compatibility with WP5
[MAILPOET-1763]
2019-01-31 08:56:20 +01:00
28898037f5 Merge pull request #1760 from mailpoet/full-width
Fix images with full-width [MAILPOET-1743]
2019-01-30 11:22:13 -05:00
6a1185be74 Fix styling problems 2019-01-30 16:35:51 +01:00
05dedc7579 Fix bold button checkbox
[MAILPOET-1746]
2019-01-30 14:03:59 +01:00
f96e65dc15 Add integration test for limiting confirmation emails 2019-01-30 13:59:49 +01:00
b663d9761e Encapsulate is_user_logged_in function 2019-01-30 13:59:49 +01:00
8e51a56426 Limit number of confirmation emails sent to one email
MAILPOET-1734
2019-01-30 13:59:49 +01:00
64105b4542 Merge pull request #1757 from mailpoet/clarify-nl-settings
Clarify newsletter settings [MAILPOET-1703]
2019-01-30 07:11:57 -05:00
87d74cbe19 Merge pull request #1763 from mailpoet/fix-test-flakiness
Fix test flakiness [MAILPOET-1766]
2019-01-30 11:35:30 +01:00
41404ee34e Fix full width images on mobile clients
[MAILPOET-1743]
2019-01-30 11:33:34 +01:00
f41a69ea4a Fix test flakiness
[MAILPOET-1766]
2019-01-30 11:19:31 +01:00
922572971d Merge pull request #1745 from mailpoet/subsription-form-registration-page
Subscribe to MP on registration page [MQ-82]
2019-01-30 10:24:14 +02:00
961747e549 Fix styling problems 2019-01-30 09:10:04 +01:00
6ffac49364 Fix new code 2019-01-30 09:10:04 +01:00
3128da45b3 Fix broken forms 2019-01-30 09:04:32 +01:00
fb7095d3af Fix broken sending page 2019-01-30 09:04:32 +01:00
f1cbc4a7c6 Fix eslint rules in ES5 files 2019-01-30 09:04:32 +01:00
20ae36cf0b Fix eslint rules 2019-01-30 09:04:32 +01:00
91c974e08f Use safer setState 2019-01-30 09:04:32 +01:00
9de2a10bc2 Fix react indentation 2019-01-30 09:04:32 +01:00
91513edd09 Remove default declaration for required properties 2019-01-30 09:04:31 +01:00
4646086660 Add noopener noreferrer attribute to links 2019-01-30 09:04:31 +01:00
f054f7ba1f Remove unused state fields 2019-01-30 09:04:31 +01:00
dbfa672542 Fix react/no-this-in-sfc eslint rule 2019-01-30 09:04:31 +01:00
6af3aabd24 Fix sort-comp eslint rule 2019-01-30 09:04:31 +01:00
0a7a5ee0b9 Fix max length eslint rule 2019-01-30 09:04:31 +01:00
28f43c4077 Fix accessibility eslint rules 2019-01-30 09:04:31 +01:00
e694438033 Auto fix broken rules 2019-01-30 09:04:31 +01:00
0b062cef09 Update eslint to 5.12.1 2019-01-30 09:04:31 +01:00
8dc3fc8684 Fix images with full-width [MAILPOET-1743] 2019-01-29 16:15:05 +01:00
65a0357d67 Merge pull request #1739 from mailpoet/move-assets-to-dist
Move generated assets to dist [MAILPOET-1687]
2019-01-29 09:04:23 -05:00
086a8b1956 Fix broken test 2019-01-29 14:40:12 +01:00
29a0b42ebd Use new logo for free users emails
[MAILPOET-1744]
2019-01-29 14:18:36 +01:00
c4720aeebc Merge pull request #1751 from mailpoet/test-free-email-as-from-address
[MQ-173] acceptance test to confirm free email address in FROM field …
2019-01-29 06:25:58 -05:00
4df0f9077a Use strpos instead of substr 2019-01-29 11:51:17 +01:00
6b00b62992 Merge pull request #1756 from mailpoet/release-3.18.2
Release 3.18.2
2019-01-29 05:47:27 -05:00
05c79fd4d0 Clarify newsletter settings
[MAILPOET-1703]
2019-01-29 11:42:53 +01:00
9d1f02f1e3 Release 3.18.2 2019-01-29 11:37:55 +01:00
d3e30a0f0f Merge pull request #1755 from mailpoet/composer-fix
Fix out-of-sync composer.lock with unwanted updates
2019-01-29 10:42:04 +01:00
a5c4405d38 Fix out-of-sync composer.lock with unwanted updates 2019-01-29 10:12:37 +01:00
73a720c8d5 Merge pull request #1753 from mailpoet/fix-master-static-anal
Fix master static analysis on master
2019-01-29 08:34:37 +01:00
44b27c32ce Fix undefined property 2019-01-29 08:25:32 +01:00
9f533ad5c7 Fix undefined method 2019-01-29 08:17:55 +01:00
0e3f27add3 Merge pull request #1728 from mailpoet/stats-notifications
Stats notifications [ MAILPOET-1571]
2019-01-28 13:22:21 -05:00
59418efa99 Merge pull request #1746 from mailpoet/phpstan-cleanup
Raise PHPStan strictness level to 1
2019-01-28 10:47:24 -05:00
7f31ccb41b Merge pull request #1734 from mailpoet/add-svn-push-templates
Add command to push templates assets
2019-01-28 10:17:00 -05:00
8e4ae8a989 Merge pull request #1752 from mailpoet/update-beamer-date
Update last announcement date [MAILPOET-1740]
2019-01-28 10:02:40 -05:00
f694247d97 Make text consistent
[MAILPOET-1571]
2019-01-28 15:08:34 +01:00
7a9154a5a0 Update type to fix an error
[MAILPOET-1571]
2019-01-28 14:17:09 +01:00
d7db761f73 Add text template
[MAILPOET-1571]
2019-01-28 14:16:43 +01:00
f51e6f26d6 Merge pull request #1740 from mailpoet/form-loading
Subscription form loading on submit [MAILPOET-1567]
2019-01-28 07:09:26 -05:00
b3c32121db Update last announcement date
[MAILPOET-1740]
2019-01-28 12:50:28 +01:00
1210873621 [MQ-173] acceptance test to confirm free email address in FROM field triggers alert 2019-01-28 06:45:39 -05:00
3eb640597b Fix rates
[MAILPOET-1571]
2019-01-28 11:09:06 +01:00
7469c26d1a Prevent rendering shortcode links
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
06370ea245 Fix links
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
9eeda50b07 Render newsletters without clicked links
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
de106e8828 Fix typo
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
e76f8d5159 Prevent sending stats newsletter if tracking is disabled
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
627088e43d Add condition to WordPress trigger method
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
b66c724c4a Fix tests
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
1db75f40fb Add statistics to template
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
3bd80aecd3 Move dependencies creation to DI container
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
ef5eba31d1 Add test
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
96f2f79d48 Refactor Stats notifications to spearate classes
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
6452e83476 Only schedule notification for standard newsletters
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
1d34613b17 Schedule a notification
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
d346a44974 Use a separate table instead of sending_queue
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
9080b5260e Create a new table for stats notification
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
423341abb0 Add stats notifications email scheduler
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
75761d57ed Refactor Daemon to use DI
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
195efad742 Add stats notifications settings
[MAILPOET-1571]
2019-01-28 10:56:01 +01:00
cc8e0db927 Merge pull request #1748 from mailpoet/parallel-acceptance
Parallel acceptance tests
2019-01-28 10:30:45 +01:00
c88b0301db Run acceptance tests in parallel, run multisite testing only on master branch 2019-01-28 10:16:20 +01:00
0aa2dcfa8f Fix flaky tests 2019-01-28 10:16:20 +01:00
d060794110 Group acceptance tests into 4 groups to run in parallel 2019-01-28 10:16:20 +01:00
43d8ba38a0 Merge pull request #1749 from mailpoet/editor-post-images
Fix post images detection in editor
2019-01-25 09:49:42 -05:00
29ef3da9f7 Merge pull request #1732 from mailpoet/new-modal
New modal [MAILPOET-1510]
2019-01-25 08:51:35 -05:00
eb1376eeef Fix post images detection in editor
MAILPOET-1756
2019-01-25 09:42:04 +01:00
d7a5978949 [MQ-82] improved robustness 2019-01-24 14:01:45 -05:00
d2bfd75605 Merge pull request #1736 from mailpoet/woocommerce-list
Add WooCommerce customers list [MAILPOET-1721]
2019-01-24 10:55:33 -05:00
646d527c52 Merge pull request #1742 from mailpoet/not-use-yahoo-gmail
Warn user if using Gmail as sender [MAILPOET-1573]
2019-01-24 10:38:20 -05:00
f719ae69c5 Fix the PHPStan report about passing in arguments into empty constructor 2019-01-24 15:20:29 +02:00
3db4de6ec6 Move the private property definition to the top of the class 2019-01-24 15:16:53 +02:00
0dfc967153 Clarify unknown MailChimp error message 2019-01-24 15:15:42 +02:00
b1ce9b8b91 Move PHPDoc properties to actual properties in MP2Migrator 2019-01-24 15:14:59 +02:00
26284b3a8e Add reply-to field to wizard
[MAILPOET-1573]
2019-01-24 10:43:11 +01:00
889712af5c Not render settings if not on settings page
[MAILPOET-1573]
2019-01-24 10:43:11 +01:00
8cba3ba9d2 Display the correct domain in the message
[MAILPOET-1573]
2019-01-24 10:43:11 +01:00
4fb4e5a37a Display sender warning for other newsletter types
[MAILPOET-1573]
2019-01-24 10:43:11 +01:00
cdbb8d7c62 Display sender warning on settings page
[MAILPOET-1573]
2019-01-24 10:43:11 +01:00
82c238fe81 Display sender warning on send page
[MAILPOET-1573]
2019-01-24 10:43:04 +01:00
28f7eeea94 Create sender warning component
[MAILPOET-1573]
2019-01-24 10:31:03 +01:00
c7ce7012f2 fixing lint errors [MQ-82] 2019-01-23 14:50:12 -05:00
1af4666744 Declare missing properties and methods for PHPStan 2019-01-23 21:30:24 +02:00
44bc27df90 Define default variable values in cases when they can be undefined 2019-01-23 21:29:46 +02:00
3bfba7c642 Refactor unnecessary constants into class properties 2019-01-23 21:27:45 +02:00
36288f47f7 Raise PHPStan level to 1 2019-01-23 21:27:01 +02:00
db3ea80b87 Skip reporting ignored errors if they do not happen 2019-01-23 21:26:11 +02:00
c3c59a995a fixing lint errors [MQ-82] 2019-01-23 13:56:34 -05:00
abed315785 added check for MU or single, custom steps for each registration process. [MQ-82] 2019-01-23 13:42:29 -05:00
c077f4a140 Subscribe to MP on registration page [MQ-82] 2019-01-23 12:08:52 -05:00
e13789b768 Fix "Static call to instance method" errors on Models
Paris uses magic methods to create model instance for static calls
2019-01-23 18:44:43 +02:00
c09766a4df Add undocumented Model methods to PHPDoc to fix Premium rules 2019-01-23 16:36:17 +02:00
9f13f68e39 Fix "Access to undefined property" rule violations 2019-01-23 11:33:47 +02:00
b2bb7b0023 Add mising ABSPATH checks to prevent execution on direct file access 2019-01-23 11:32:40 +02:00
51b484ee91 Merge pull request #1723 from mailpoet/test-create-automatic-email
Add data-automation-id to woocommerce events [MQ-163]
2019-01-22 09:00:50 -05:00
7ee2a7cd88 Fix iframe content sometimes rendered over border
[MAILPOET-1510]
2019-01-22 12:52:13 +01:00
1241cad588 Merge pull request #1741 from mailpoet/release-3.18.1
Prepare release 3.18.1
2019-01-22 06:42:12 -05:00
f738410bfc Prepare release 3.18.1 2019-01-22 10:53:35 +01:00
wxa
5bf968fbc6 Address PR review remarks [MAILPOET-1721] 2019-01-22 12:25:59 +03:00
9f3c98380f Add submit animation styles to form editor
[MAILPOET-1567]
2019-01-22 10:03:09 +01:00
0d433c7f7c Add loading animation to form submit button
[MAILPOET-1567]
2019-01-22 10:03:09 +01:00
9562d8704c Fix public.js to follow eslint rules
[MAILPOET-1567]
2019-01-22 10:03:09 +01:00
f47f7e38ae Add device border to newsletter preview modal
[MAILPOET-1510]
2019-01-22 10:02:58 +01:00
784c952229 Merge pull request #1726 from mailpoet/remove-feedback-badges
Remove feedback badges [MAILPOET-1691]
2019-01-22 03:51:37 -05:00
03c2eb5730 Reduce spacing in newsletter preview modal to make it larger
[MAILPOET-1510]
2019-01-22 09:33:26 +01:00
e6ba34faf8 Remove template preview padding since we can't display background at the moment
[MAILPOET-1510]
2019-01-22 09:31:24 +01:00
7e187f69bf Adjust drag & drop tutorial for new modal design
[MAILPOET-1510]
2019-01-22 09:31:24 +01:00
4da9a2b6fa Adjust email previews for new modal style, use flex
[MAILPOET-1510]
2019-01-22 09:31:24 +01:00
78f052e263 Use flex instead of "random" percentual heights in modal popup
[MAILPOET-1510]
2019-01-22 09:30:06 +01:00
62f69b2cdb Do not respect modal min-width on mobile
[MAILPOET-1510]
2019-01-22 09:30:06 +01:00
affab195ca Fix body scrolling when modal is displayed
[MAILPOET-1510]
2019-01-22 09:30:05 +01:00
bf62034b4a Fix wrong modal scroll when previous modal scrolled down
[MAILPOET-1510]
2019-01-22 09:30:05 +01:00
2fd6c0abf1 Fade modal popup in on load
[MAILPOET-1510]
2019-01-22 09:30:05 +01:00
8fb96ee2bd Add spacing between modal title and body
[MAILPOET-1510]
2019-01-22 09:30:05 +01:00
dd2b496718 Add new modal close icon
[MAILPOET-1510]
2019-01-22 09:30:05 +01:00
081dd0d37f Make modal popup title a simple heading
[MAILPOET-1510]
2019-01-22 09:23:17 +01:00
390a376829 Use larger spacing in modal popup
[MAILPOET-1510]
2019-01-22 09:21:19 +01:00
fdd16b3ee3 Make modal white, add border radius & shadow
[MAILPOET-1510]
2019-01-22 09:21:08 +01:00
ae0b515df1 Merge pull request #1738 from mailpoet/button-font-select
Fix size of font selection for button [MAILPOET-1745]
2019-01-21 13:53:26 -05:00
77df2c41dd Merge pull request #1735 from mailpoet/remove-zip-dependency
Remove zip extension dependency [MAILPOET-1718]
2019-01-21 13:49:54 -05:00
65cb1b2750 Fix tests [MAILPOET-1687] 2019-01-21 17:52:21 +01:00
27a6ef11ae Move generated js files to assets/dist/js 2019-01-21 17:28:31 +01:00
9735167815 Merge pull request #1696 from mailpoet/new-templates-1
Add 9 new templates [MAILPOET-1572]
2019-01-21 11:13:43 -05:00
b52c615ab1 Fix size of font selection for button
[MAILPOET-1745]
2019-01-21 16:59:47 +01:00
9c93c5bc01 Merge pull request #1729 from mailpoet/jquery-noconflict
Fix editor not loading when jQuery in noConflict mode
2019-01-21 10:26:47 -05:00
4434c326df Move generated css files to assets/dist/css 2019-01-21 12:48:40 +01:00
38dcf245b1 Make the notice inline 2019-01-21 11:55:28 +01:00
3dd95f63b4 Merge pull request #1731 from mailpoet/remove-new-hs
Remove HelpScout mailbox for Free Users [MAILPOET-1686]
2019-01-18 11:10:29 -05:00
e834ba1c77 Merge pull request #1730 from mailpoet/update-banner
Update banner images [MAILPOET-1735]
2019-01-18 08:39:06 -05:00
wxa
a4ff9822ad Add WooCommerce customers list [MAILPOET-1721] 2019-01-17 21:42:57 +03:00
29da613481 Add warning to Export page 2019-01-17 16:56:40 +01:00
00764ff3e9 Remove ZIP extension requirement 2019-01-17 16:30:34 +01:00
9cd887d75d Add command to push templates assets 2019-01-17 13:12:50 +01:00
fec5bbb6ed updating screenshots 2019-01-16 16:03:14 +01:00
c62b520253 Remove HelpScout mailbox for Free Users
[MAILPOET-1686]
2019-01-16 15:42:31 +01:00
9bcef747ab Update the banner images
[MAILPOET-1735]
2019-01-16 15:25:55 +01:00
d4eced5b63 Fix editor not loading when jQuery in noConflict mode
MAILPOET-1736
2019-01-16 11:21:01 +01:00
77597a0e91 Fix social icons URLs [MAILPOET-1572] 2019-01-16 11:00:20 +01:00
ad8b366ea5 Merge pull request #1727 from mailpoet/release-3.18.0
Release 3.18.0
2019-01-15 05:14:19 -05:00
105f7fcbf8 Release 3.18.0 2019-01-15 10:26:46 +01:00
538e015caa Merge pull request #1725 from mailpoet/webpack-upgrade
Webpack upgrade [MAILPOET-1667]
2019-01-14 21:30:09 -05:00
c0bc8307e3 Merge pull request #1724 from mailpoet/image-width-value
Fix empty image width slider [MAILPOET-1685]
2019-01-14 09:35:29 -05:00
wxa
20335dc170 Remove a feedback button from the select template step [MAILPOET-1691] 2019-01-14 16:50:31 +03:00
79a103c48c Prefix data-automation-id with create_ 2019-01-14 14:44:45 +01:00
71d7d41162 Add comments to clarify some Webpack settings
[MAILPOET-1667]
2019-01-14 12:49:30 +01:00
ca66f077d7 Merge pull request #1720 from mailpoet/carrot-button-fix
Fix in app announcements carrot button appearance on mobile [MAILPOET-1706]
2019-01-14 06:17:01 -05:00
c934856f45 Add workaround fix for Webpack 4 & Premium plugin
We need this until https://github.com/webpack/webpack/pull/8614 is merged into Webpack.

[MAILPOET-1667]
2019-01-14 09:32:17 +01:00
0801ba0463 Use 'const' instead of 'var' in Webpack config
[MAILPOET-1667]
2019-01-14 09:32:17 +01:00
38ef9a669e Use native JS functions instead of UnderscoreJS
[MAILPOET-1667]
2019-01-14 09:32:17 +01:00
aaa2dc2c6f Replace UglifyJS with Terser webpack plugin (new Webpack default)
[MAILPOET-1667]
2019-01-14 09:32:17 +01:00
e2cab54df6 Fix amd-inject-loader for Webpack 4
[MAILPOET-1667]
2019-01-14 09:32:17 +01:00
04fb9033d2 Upgrade Webpack to version 4
[MAILPOET-1667]
2019-01-14 09:32:17 +01:00
80210f6ce8 Merge pull request #1721 from mailpoet/wizard-update
Wizard update [MAILPOET-1704]
2019-01-11 23:23:05 -05:00
06911e1fed Merge pull request #1648 from mailpoet/poll-success-send
Poll first email sending success/failure [MAILPOET-1417]
2019-01-11 12:36:06 -05:00
109f64a827 Add size detection for images without specified size
[MAILPOET-1685]
2019-01-10 17:32:44 +01:00
2a1647bd09 Merge pull request #1722 from mailpoet/post-settings-ui-fixes
Posts widget settings UI fixes [MAILPOET-1712]
2019-01-10 10:47:40 -05:00
0c389f7a0c Merge pull request #1709 from mailpoet/upgrade-codeception
Upgrade codeception and lucatume/wp-browser [MAILPOET-1713]
2019-01-10 07:07:34 -05:00
7fb55a045b Add data-automation-id to woocommerce events 2019-01-10 12:57:56 +01:00
291a0197b2 Remove deprecated attribute from iframe
The allowtransparency attribute is needed only for IE8 and lower

[MAILPOET-1704]
2019-01-10 09:51:45 +01:00
0d753a443e Fix ALC post category select width
[MAILPOET-1712]
2019-01-10 08:51:59 +01:00
247385a9dd Fix missing border in post block inputs in editor
[MAILPOET-1712]
2019-01-09 17:32:14 +01:00
e529ea7b8e Update second step in wizard
[MAILPOET-1704]
2019-01-09 15:57:11 +01:00
dcf05ef7b8 Update wizard logo
[MAILPOET-1704]
2019-01-09 15:31:27 +01:00
cd60d1af81 Show poll about success delivery after sending preview or campaign 2019-01-09 13:58:26 +01:00
321af0f366 Remove global mailpoet_settings variable 2019-01-09 13:58:26 +01:00
bf9e7e7b46 Add window.mailpoet_locale constant 2019-01-09 13:55:58 +01:00
3faedb0844 Merge pull request #1714 from mailpoet/php56-warning-improvement
Improve PHP 5.6 warning [MAILPOET-1690]
2019-01-09 07:48:05 -05:00
61460392f2 Merge pull request #1719 from mailpoet/product-purchase-email-test
Add ability to create a newsletter with products metadata [MQ-169]
2019-01-09 06:33:26 -05:00
0e37468344 Add ability to create a newsletter with products metadata
[MQ-169]
2019-01-09 10:50:51 +01:00
98cc4945c5 Fix in app announcements carrot button appearance on mobile
[MAILPOET-1706]
2019-01-09 10:23:42 +01:00
b33e1733ef Merge pull request #1717 from mailpoet/save-redirect-fix
Fix redirect when saving WooCommerce email [MAILPOET-1714]
2019-01-08 12:17:36 -05:00
5fd0d06f48 Merge pull request #1716 from mailpoet/image-alignment
Image alignment [MAILPOET-1684]
2019-01-08 12:03:18 -05:00
3a26049270 Add missing array & class typehints
[MAILPOET-1684]
2019-01-08 14:48:05 +01:00
08a2fa8f8f Split transform tags code to multiple methods
[MAILPOET-1684]
2019-01-08 14:47:19 +01:00
dcfb588ae5 Merge pull request #1718 from mailpoet/release-3.17.2
Release 3.17.2
2019-01-08 06:15:13 -05:00
cb3aba0613 Prepare release 3.17.2 2019-01-08 12:31:02 +02:00
0e86d02a4e Fix redirect when saving WooCommerce email
[MAILPOET-1714]
2019-01-08 10:27:43 +01:00
0d80d7492a Filter out <figure> tags without images
[MAILPOET-1684]
2019-01-08 09:34:03 +01:00
88f14575dc Use image alignment from <figure> or <img>
[MAILPOET-1684]
2019-01-08 08:48:46 +01:00
4d97a2f6a7 Extract nested img element more safely
[MAILPOET-1684]
2019-01-08 08:48:46 +01:00
0c7c725629 Simplify code transforming images from posts
[MAILPOET-1684]
2019-01-08 08:48:46 +01:00
c53ecebfae Merge pull request #1712 from mailpoet/outdated-annoucements-cleanup
Outdated annoucements cleanup [MAILPOET-1672]
2019-01-07 16:29:18 -05:00
9fc1f7501d Remove free welcome emails announcement
[MAILPOET-1672]
2019-01-07 16:26:28 +01:00
5d453eabfa Remove background images editor announcement
[MAILPOET-1672]
2019-01-07 16:26:28 +01:00
3adb2331e5 Unify naming in test data factory
[MQ-168]
2019-01-07 16:12:16 +01:00
7bec84b3ff Merge pull request #1675 from mailpoet/reinstall-test
Add acceptance test ReinstallFromScratch [MQ-97]
2019-01-07 10:12:11 -05:00
67c0d86e8f Higher timeout when waiting for page load 2019-01-07 14:10:27 +01:00
b0e7e2b70e Move skipping tutorials to settings data factory 2019-01-07 14:08:55 +01:00
ee55e815bc Merge pull request #1713 from Julien-prrs/patch-1
Avoid conflic between multiple WebPack config - webpack.config.js [MAILPOET-1715]
2019-01-07 07:57:48 -05:00
ead095c6b5 Remove unnecessary comment 2019-01-07 13:12:18 +01:00
a13a18875b Merge pull request #1710 from mailpoet/sentence-fix
Fix sentence without verb [MAILPOET-1692]
2019-01-07 07:09:49 -05:00
6fde02f7a0 Merge pull request #1711 from mailpoet/wc-template-fix
Fix WooCommerce templates not selected [MAILPOET-1698]
2019-01-07 07:00:59 -05:00
8562e486a6 Avoid conflic between multiple WebPack config - webpack.config.js
Changed jsonpFunction name to avoid problems between themes or extensions who also use webpack with the default name
2019-01-03 20:51:52 +01:00
d355e36002 Fix WooCommerce templates not selected when creating WooCommerce email
[MAILPOET-1698]
2019-01-03 16:09:14 +01:00
afb61700a3 Improve PHP 5.6 warning
[MAILPOET-1690]
2019-01-03 14:34:22 +01:00
37dbdee7d9 Fix sentence without verb
[MAILPOET-1692]
2019-01-03 13:59:30 +01:00
d76d5d2675 Upgrade codeception and lucatume/wp-browser and minor deps versions
[MAILPOET-1713]
2019-01-03 11:30:08 +01:00
6b8600864a Fix SearchForNotificationCest to wait for emails to load and not name of newsletter which was populated before tests were run 2019-01-03 09:47:11 +01:00
58c1095114 Repopulate DB after reinstalling from scratch, so following tests have same default data 2019-01-03 09:47:11 +01:00
b1e7db1ee0 Destroy Codeception's user session after logout 2019-01-03 09:47:11 +01:00
563e1da7df Unify using $I instead of $this in AcceptanceTester 2019-01-03 09:47:11 +01:00
fe9ad3a03d Fix checking success message in SubscriptionFormEditCest, because it might already be in widget which would result in different success message (but still OK for test) 2019-01-03 09:47:11 +01:00
4ad420492f Fix SubscriptionFormCest when form is longer than visible part of the page and click would be recieved by <body> 2019-01-03 09:47:11 +01:00
88f335eaed Remove unused code and fix typos in SubscribeToMultipleListsCest 2019-01-03 09:47:11 +01:00
4d5bd430ee Fix SaveNewsletterAsDraftCest to check for newsletter which was saved and not the one which was populated before tests were run 2019-01-03 09:45:15 +01:00
c13fbd1343 Add acceptance test ReinstallFromScratch 2019-01-03 09:45:15 +01:00
2658a32e37 Merge pull request #1708 from mailpoet/automatic-email-factory
Add automatic email type to newsletters factory [MQ-170]
2019-01-02 12:45:01 +01:00
28cf751840 Add automatic email type to newsletters factory
[MQ-170]
2019-01-02 11:57:56 +01:00
b33b5762f0 Merge pull request #1707 from mailpoet/fix-wp-func-merge
Fix a duplicate constructor after merging encapsulated WP functions
2019-01-02 11:18:30 +01:00
26220f73ee Inject WP Functions to newsletters API endpoint using DI container 2019-01-02 11:02:08 +01:00
wxa
93f5bc0bf1 Fix a duplicate constructor after merging encapsulated WP functions 2018-12-27 11:15:07 +03:00
wxa
0573a7915e Merge pull request #1689 from mailpoet/wp-functions
Encapsulating WP calls
2018-12-27 11:05:08 +03:00
182d99bc88 Merge branch 'master' of github-mp:mailpoet/mailpoet into new-templates-1 2018-12-26 11:18:58 +01:00
aec3524843 Merge pull request #1706 from mailpoet/edit-segment-test
Make segment data factory extendable by Premium dynamic segment data factory [MQ-157]
2018-12-26 10:17:40 +01:00
wxa
38c40709a4 Make segment data factory extendable by Premium dynamic segment data dactory [MQ-157] 2018-12-26 10:19:36 +03:00
a2e6ffbece Add new templates [MAILPOET-1572] 2018-12-24 16:31:43 +01:00
92f2424d9d Merge pull request #1705 from mailpoet/open-stats-page-test
Add methods for sent newsletters to data factory [MQ-162]
2018-12-20 12:11:12 -05:00
da27680224 Merge pull request #1695 from mailpoet/di-hacking-refactor
Hacking day - DI Refactor [MAILPOET-1689]
2018-12-20 11:13:05 -05:00
wxa
0d5e094481 And methods for sent newsletters to data factory [MQ-162] 2018-12-20 17:43:25 +03:00
847b78d4e7 Merge pull request #1700 from mailpoet/css-cleanup
Remove outdated vendor prefixes and mixins - hacking day [MAILPOET-1695]
2018-12-20 08:39:58 -05:00
d45e5db808 Merge pull request #1693 from mailpoet/settings-data-factory
Create a data factory for settings [MAILPOET-1665]
2018-12-20 07:54:40 -05:00
ed29d568d3 Add withConfirmationEmailFrom to settings factory
[MAILPOET-1665]
2018-12-20 10:48:24 +01:00
52cc6d5604 Create a data factory for settings
[MAILPOET-1665]
2018-12-20 10:46:33 +01:00
a0a5d2b76e Merge pull request #1690 from mailpoet/tests-fixes
Fix acceptance tests that failed locally  [MAILPOET-1694]
2018-12-19 10:42:56 -05:00
f6d3d45fb4 Merge pull request #1704 from mailpoet/release-3-17-1
Release 3.17.1
2018-12-19 08:10:41 -05:00
b05534b71f Release 3.17.1 2018-12-19 13:39:56 +01:00
d553c33edf Merge pull request #1703 from mailpoet/di-race-condition-fix
Add ability to additionally initialize mailpoet-premium container [MAILPOET-1696]
2018-12-19 07:21:00 -05:00
acc4c89255 Add ability to additionally initialize mailpoet-premium container
[MAILPOET-1696]
2018-12-19 12:37:27 +01:00
2dedcdb6cf Merge pull request #1702 from mailpoet/release-3-17-0
Release 3.17.0
2018-12-18 09:22:00 -05:00
996df463e3 Release 3.17.0 2018-12-18 14:42:48 +01:00
wxa
fd7a7fca67 Remove miscellaneous outdated prefixes 2018-12-18 16:15:13 +03:00
wxa
6469ee3234 Remove box-shadow mixin 2018-12-18 16:02:58 +03:00
wxa
cca34fd1bd Remove border-radius mixin 2018-12-18 15:42:47 +03:00
82e8877ec5 Merge pull request #1677 from mailpoet/mobile-preview
Add mobile preview mode [MAILPOET-1583]
2018-12-17 17:19:25 -05:00
fc675c7f1f Merge pull request #1697 from mailpoet/no-empty-subject
Use a default subject if a rendered newsletter subject is empty [MAILPOET-1462]
2018-12-17 14:27:07 -05:00
58a1b867b9 Merge pull request #1699 from mailpoet/fix-alc-images-width
Fix padded ALC images breaking out of width on mobile [MAILPOET-1693]
2018-12-17 13:04:12 -05:00
140d2e98dd Refactor acceptance tests with unified waiting for select2 to load 2018-12-17 18:52:50 +01:00
b57da87bb5 Merge pull request #1682 from mailpoet/woo-stats
Report more WooCommerce stats [MAILPOET-1646]
2018-12-17 12:30:27 -05:00
a0fa3c6a0d Create helper for searching, which handle waiting for element, filling input and clicking button 2018-12-17 17:26:30 +01:00
38aaed77d8 Create helper to load mailhog app and wait for angular to load 2018-12-17 17:25:36 +01:00
eea62cd4f7 Create helper for waiting for list to load 2018-12-17 17:25:02 +01:00
1277acc92e Merge pull request #1698 from mailpoet/nps-init-fix
Initialize NPS poll only once [MAILPOET-1688]
2018-12-17 10:30:39 -05:00
wxa
c2955bdf35 Fix padded ALC images breaking out of width on mobile [MAILPOET-1693] 2018-12-17 18:06:16 +03:00
f13c340d87 Inject dependencies to hooks directly
[MAILPOET-1689]
2018-12-17 15:29:50 +01:00
66a05e1b19 Inject Listing Handler and Segments Subscriber Listing using DI
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
a69ae0eea7 Refactor listing handler to reusable service
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
fd4bcee5f5 Inject bulk action controller using DI
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
2839c86017 Refactor bulk action into reusable controller
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
5c8e99dcf3 Fix namespace classname conflict
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
de5385ed03 Get rid of static instantiation of JSON API
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
ece5e9a9d1 Refactor subscription form processing
[MAILPOET-1689]
2018-12-17 15:02:42 +01:00
15d43ea716 Initialize NPS poll only once
[MAILPOET-1688]
2018-12-17 15:01:41 +01:00
5190c23274 Merge pull request #1692 from mailpoet/review-requests
Review requests [MAILPOET-1647]
2018-12-17 08:53:10 -05:00
d363017ac2 Merge pull request #1669 from mailpoet/beamer
Add Beamer for the What's New announcement [MAILPOET-1627]
2018-12-17 07:33:30 -05:00
wxa
660c174b21 Revert "Use localStorage as a backup for users who can't update settings [MAILPOET-1627]"
This reverts commit f7057b3bd3d37f557e23dd390b298e1bdf2f37a4.
2018-12-17 14:56:49 +03:00
wxa
cb9c4ff238 Use localStorage as a backup for users who can't update settings [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
wxa
5f46e35183 Use another variable for passing last_announcement_seen to JS [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
wxa
33bd42c76c Fix per-user announcement dates storage [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
wxa
0f8a3b701c Store last_announcement_seen dates per each WP user [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
wxa
4a0f7aee47 Fix PR remarks, encapsulate logic in a React component [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
wxa
11052427c0 Move in-app announcements to announcements folder [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
wxa
bb1cdc1f5a Add Beamer for a What's New announcement [MAILPOET-1627] 2018-12-17 14:56:49 +03:00
5ade6299b6 Use recommended way to check if WC is active 2018-12-17 09:58:26 +03:00
746fb86bf5 Report more WooCommerce stats [MAILPOET-1646] 2018-12-17 09:58:26 +03:00
eda8043aa2 Merge pull request #1694 from mailpoet/nps-poll-fix
Nps poll fix [MAILPOET-1670]
2018-12-16 17:12:43 -05:00
c835feea16 Fix SubscribersListingCest - wait for search input to be visible before filling value 2018-12-15 13:08:47 +01:00
a662329edf Fix SearchForStandardNewsletterCest - wait for search input to be visible before filling value 2018-12-15 13:08:47 +01:00
ed11528868 Fix EnableAndDisableSignupConfirmationCest - remove all emails before running tests 2018-12-15 13:08:47 +01:00
b9ceb2a906 Fix EnableAndDisableSignupConfirmationCest - wait for list of mails to render before checking number of them 2018-12-15 13:08:47 +01:00
c126228352 Unify selecting emails in EnableAndDisableSignupConfirmationCest 2018-12-15 13:08:47 +01:00
f6e9601e04 Fix SubscriberManagementCest - wait for select2 to render and add more specific selector for Save button (was failing randomly) 2018-12-15 13:08:47 +01:00
4260960b59 Fix typos - subsciber => subscriber 2018-12-15 13:08:47 +01:00
090fd092cb Fix SubscriberManagementCest - wait for subscribers to finish loading before assessing 2018-12-15 13:08:47 +01:00
1bc31c0927 Fix ScheduleNewsletterCest - wait for select2 to render before selecting value 2018-12-15 13:08:47 +01:00
64f6e8c88f Fix SaveNotificationAsDraftCest - wait for select2 to render before selecting value 2018-12-15 13:08:47 +01:00
83f1849328 Fix SaveNewsletterAsDraftCest - wait for select2 to render before selecting value 2018-12-15 13:08:47 +01:00
cf9f38cdb4 Fix NewsletterCreationCest - wait for select2 to render before selecting value 2018-12-15 13:08:47 +01:00
f0b65721db Fix EditExistingNewsletterCest - wait for select2 to render before selecting value 2018-12-15 13:08:47 +01:00
5d14bb4240 Fix DuplicatePostNotificationCest - wait for table to finish loading 2018-12-15 13:08:47 +01:00
b4af87c83c Merge pull request #1685 from mailpoet/new-woo-email
Disable WooCommerce emails for free users [MAILPOET-1674]
2018-12-14 10:58:20 -05:00
wxa
a1fa3dcd28 Use a default subject if a rendered newsletter subject is empty [MAILPOET-1462] 2018-12-13 22:13:01 +03:00
wxa
b3d8b6aee3 Remove unnecessary CSS vendor prefixes [MAILPOET-1583] 2018-12-13 18:51:34 +03:00
de82df3820 Style ReviewRequest modal
[MAILPOET-1647]
2018-12-13 16:30:53 +01:00
24edbee0a4 Show ReviewRequest modal when NPS poll submitted with score 9 or 10
[MAILPOET-1647]
2018-12-13 16:30:53 +01:00
3fa4092777 Add ReviewRequest component for asking users for plugin reviews
[MAILPOET-1647]
2018-12-13 16:30:53 +01:00
b3e5f0ace8 Remove duplicit line
[MAILPOET-1670]
2018-12-13 15:49:25 +01:00
f27ecdc079 Always load NPS poll on newsletters page
[MAILPOET-1670]
2018-12-13 15:48:51 +01:00
7135fe512c Merge pull request #1665 from mailpoet/premium-di
Premium Plugin DI [PREMIUM-99]
2018-12-13 08:19:34 -05:00
f79aee36fc Merge pull request #1688 from mailpoet/babel-upgrade
Upgrade Babel to v7 [MAILPOET-1683]
2018-12-13 07:45:53 -05:00
e623f1a998 Merge pull request #1691 from mailpoet/release-3-16-3
Release 3.16.3
2018-12-13 05:31:29 -05:00
f15793a864 Release 3.16.3 2018-12-13 09:37:41 +01:00
baf0fb18c0 Merge pull request #1687 from mailpoet/images-fix
Fix images without dimensions being given size of 0 [MAILPOET-1680]
2018-12-12 12:34:06 -05:00
adf1783cd9 Add test ensuring image renderer understands dimensions both with & without 'px'
[MAILPOET-1680]
2018-12-12 17:34:45 +01:00
970123d0ce Add test for images with 'auto' dimensions
[MAILPOET-1680]
2018-12-12 17:32:41 +01:00
28356a522a Fix images without dimensions being given size of 0
[MAILPOET-1680]
2018-12-12 17:32:41 +01:00
a46d98ec44 Refactor WPFunctions to be injectable with DI 2018-12-12 16:43:52 +01:00
73ef682832 Merge pull request #1686 from mailpoet/subs-bulk-action-warning
Fix a warning when selecting bulk actions in the subscribers listing [MAILPOET-1669]
2018-12-12 09:51:24 -05:00
ee994fd042 Upgrade Babel to v7
[MAILPOET-1683]
2018-12-12 13:12:03 +01:00
e059ee7364 Merge pull request #1674 from mailpoet/fix-3-column-full-width-image
Add css for images in columns for mobile devices [MAILPOET-1653]
2018-12-12 06:05:36 -05:00
525fb5289b Add check that API endpoint class is a registered service in DI
[PREMIUM-99]
2018-12-12 08:53:28 +01:00
fc61377fd8 Move container dump from application code to Robofile and to generated dir
[PREMIUM-99]
2018-12-12 08:53:28 +01:00
c73741e727 Add ability to register premium service as a dependency of free plugin
[PREMIUM-99]
2018-12-12 08:53:28 +01:00
26472d8b9a Introduce ContainerWrapper
Container wrapper wraps both premium and free containers and adds ability for free plugin to use premium plugin services directly.
[PREMIUM-99]
2018-12-12 08:52:11 +01:00
884cabb51f Introduce Container Configurator
Container factory is now responsible only for building or loading cached container. Container configuration is done within the ContainerConfigurator
[PREMIUM-99]
2018-12-12 08:52:11 +01:00
b5bc4b2609 Replace symfony container types by PSR interface
[PREMIUM-99]
2018-12-12 08:52:11 +01:00
b48b854095 Merge pull request #1683 from mailpoet/fix-select-all
Fix select all functionality
2018-12-11 13:37:34 -05:00
wxa
b5733de3bf Fix a warning when selecting bulk actions in subs listing [MAILPOET-1669] 2018-12-11 20:20:44 +03:00
537d94a18f Merge pull request #1684 from mailpoet/routes-fix
Fix routes after React Router upgrade [MAILPOET-1675]
2018-12-11 12:10:50 -05:00
3c3e550310 Disable WooCommerce emails for free users 2018-12-11 17:26:11 +01:00
wxa
bed5c3a31f Fix React Router routes [MAILPOET-1675] 2018-12-11 19:10:04 +03:00
d0ed229373 Add css for images in columns for mobile devices
[MAILPOET-1653]
2018-12-11 16:41:19 +01:00
39b0bfeba4 Merge pull request #1681 from mailpoet/captions-fix
Fix broken button captions in listings [MAILPOET-1676]
2018-12-11 10:03:34 -05:00
bc0ece08da Fix select all functionality
I don't know what was wrong. I found out that with class check-column React
handler wasn't called. Something somewhere stopped the event propagation.
I guess something in WordPress, but I am not sure. So I renamed the class
now it is working.

[MAILPOET-1681]
2018-12-11 15:37:44 +01:00
f1d612ba77 Fix broken button captions in listings
[MAILPOET-1676]
2018-12-11 15:00:33 +01:00
045a69dafb Merge pull request #1680 from mailpoet/release-3-16-2
Release 3.16.2
2018-12-11 08:15:58 -05:00
68c4f4bf97 Release 3.16.2 2018-12-11 13:10:08 +01:00
a87cdc89e8 Merge pull request #1679 from mailpoet/premium-js-fix
Put back explicit Webpack admin_vendor listing to ensure modules for premium
2018-12-11 12:55:10 +01:00
c27a7b6e94 Put back explicit Webpack admin_vendor listing to ensure modules for premium 2018-12-11 12:11:39 +01:00
5425a507cf Merge pull request #1678 from mailpoet/autoloader-fix
Fix appended autoloder causing more detected plugin conflicts [MAILPOET-1679]
2018-12-11 11:02:14 +01:00
697552f575 Fix appended autoloder causing more detected plugin conflicts
[MAILPOET-1679]
2018-12-11 10:45:06 +01:00
f600d9f143 Merge pull request #1662 from mailpoet/webpack-cleanup
Webpack cleanup [MAILPOET-1644]
2018-12-10 16:57:48 -05:00
07862df359 Merge pull request #1673 from mailpoet/phpstan-dev
Phpstan dev [MAILPOET-1657]
2018-12-10 15:58:39 -05:00
302c97353a Merge pull request #1640 from mailpoet/react-modal
Change React Confirm Alert style [MAILPOET-1625]
2018-12-10 12:14:38 -05:00
8b675fe25b Merge pull request #1667 from mailpoet/background-img-adj
Add background images warning [MAILPOET-1603]
2018-12-10 11:00:07 -05:00
bec21970e7 Add ./do qa:phpstan to README
[MAILPOET-1657]
2018-12-10 16:15:39 +01:00
fec15e3872 Add PHPStan build to .gitignore
[MAILPOET-1657]
2018-12-10 16:15:39 +01:00
81eda57fa6 Use latest PHPStan
[MAILPOET-1657]
2018-12-10 16:15:39 +01:00
48d202ee99 Add Robo task for PHPstan, avoid conflicts using other working dir
[MAILPOET-1657]
2018-12-10 16:15:39 +01:00
7080eda121 Merge pull request #1672 from mailpoet/custom-fields-modal
Make form editor modals wider [MAILPOET-1565]
2018-12-10 10:03:27 -05:00
4e70058b7f Merge pull request #1661 from mailpoet/longer-notice-timeout
Increase admin notices timeout [MAILPOET-1451]
2018-12-10 08:56:01 -05:00
wxa
1b0ee7e4b2 Remember the desktop/mobile preview switch value [MAILPOET-1583] 2018-12-10 14:31:37 +03:00
wxa
419224d7b6 Add mobile preview mode [MAILPOET-1583] 2018-12-10 14:31:37 +03:00
fa039798f8 Merge pull request #1664 from mailpoet/edit-confirmation-email-test
Add test to edit sign up confirmation email [MQ-88]
2018-12-10 05:54:35 -05:00
wxa
7d14851aea Merge pull request #1676 from mailpoet/update-symfony-form
Update vulnerable symfony/form package [MAILPOET-1673]
2018-12-10 13:04:42 +03:00
359e30ea8d Update vulnerable symfony/form package
[MAILPOET-1673]
2018-12-10 10:47:51 +01:00
99065ebff9 Remove no longer used react-confirm-alert 2018-12-06 20:59:28 +01:00
dc8a74e190 Replace react-confirm-alert with custom component with consistent UI 2018-12-06 20:59:06 +01:00
6429f7a689 Refactor modal to use flexbox instead of JS for positioning 2018-12-06 20:57:57 +01:00
182e5c0139 Refactor modal styles to use classes instead of IDs 2018-12-06 20:56:57 +01:00
cfb4ce1a9c Merge pull request #1663 from mailpoet/subject-post-notification
Update Post notification default subject [MAILPOET-1615]
2018-12-06 12:33:23 -05:00
b40916c9fa Make form editor modals wider
[MAILPOET-1565]
2018-12-06 13:22:56 +01:00
1f19a851c3 Merge pull request #1671 from mailpoet/release-3.16.1
Release version 3.16.1
2018-12-05 10:49:52 -05:00
15a7c2819a Release version 3.16.1 2018-12-05 16:29:35 +01:00
ea00db6c26 Merge pull request #1670 from mailpoet/release-3.16.0
Release the version 3.16.0
2018-12-05 08:25:23 -05:00
696a889c19 Release the version 3.16.0 2018-12-05 13:55:28 +01:00
cae2ae846a Merge pull request #1668 from mailpoet/react-fix
Fix react router
2018-12-05 06:13:53 -05:00
1370c0939b Try to fix flaky SubscribersTest
[MAILPOET-1582]
2018-12-05 09:06:43 +01:00
b6dd13c5c0 Fix react router 2018-12-04 18:35:37 +01:00
df5288652f Add background images warning
[MAILPOET-1603]
2018-12-04 17:30:33 +01:00
8e7f9ec73e Add test to edit sign up confirmation email
[MQ-88]
2018-12-04 14:59:11 +01:00
3831f127c1 Merge pull request #1655 from mailpoet/php-scoper
Replace Mozart with PHP-Scoper [MAILPOET-1651]
2018-12-04 05:48:16 -05:00
e634ac71fd Fix overriding baseConfig plugins in Webpack config
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
d88718d69a Fix imports to be relative to JS root
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
a053dda748 Fix export to work also in JS tests
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
a44148954c Fix setting production environment for Webpack builds
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
567b5f8964 Reduce size of JS builds by sharing more admin code in admin_vendor
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
b8a161e1d4 Extract initializations from WebPack & make load order more deterministic
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
454c927eff Load different versions of MailPoet module more explicitly
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
e98ea3c0eb Remove libs that are autoresolved by imports, comment why others cannot be removed
[MAILPOET-1644]
2018-12-04 10:22:24 +01:00
191876aac0 Update Post notification default subject
[MAILPOET-1615]
2018-12-04 10:01:44 +01:00
8936836e0a Merge pull request #1626 from mailpoet/react-upgrade
Upgrade react to v16 [MAILPOET-1634]
2018-12-03 12:50:24 -05:00
ce06998b3e Merge pull request #1652 from mailpoet/more-post-hooks
Add more hooks to catch specific use-cases [MAILPOET-1638]
2018-12-03 11:48:25 -05:00
401db671bc Add autoload dump to build after prefixed dependencies are processed
[MAILPOET-1638]
2018-12-03 17:13:35 +01:00
4bf07a0278 Fix download instructions for PHP-Scoper in readme
[MAILPOET-1638]
2018-12-03 17:13:35 +01:00
94f78bca04 Run composer for prefixed deps only if necessary
[MAILPOET-1638]
2018-12-03 17:13:35 +01:00
385e53bc98 Add platform restriction to PHP 5.6 and update required php version
[MAILPOET-1638]
2018-12-03 17:13:35 +01:00
81d46e3062 Create an empty vendor-prefixed in CI build
[MAILPOET-1651]
2018-12-03 17:13:35 +01:00
8beadc9d07 Remove Mozart
[MAILPOET-1651]
2018-12-03 17:13:35 +01:00
f99e10a114 Remove Mozart from README.md and add PHP-Scoper
[MAILPOET-1651]
2018-12-03 17:13:35 +01:00
ef5737437f Update builds to use PHP-Scoper instead of Mozart
[MAILPOET-1651]
2018-12-03 17:13:35 +01:00
09d37027c2 Add and configure PHP-Scoper
[MAILPOET-1651]
2018-12-03 17:13:35 +01:00
beb7557068 Merge pull request #1657 from mailpoet/preview-mailer-errors
Fix Mailer error messages not displaying in previews [MAILPOET-1662]
2018-12-03 11:13:18 -05:00
ed8325c6f9 Upgrade react to v16
[MAILPOET-1634]
2018-12-03 12:54:07 +01:00
b9532240ab Merge pull request #1659 from mailpoet/php-56-warning-and-wizard
Hide notices in the welcome wizard, change PHP 5.6 notice [MAILPOET-1659]
2018-12-03 06:30:44 -05:00
5db3536ded Use a different hook for post notifications
[MAILPOET-1638]
2018-12-03 10:41:06 +01:00
4d45b5f64a Merge pull request #1658 from mailpoet/stop-spammer-sending
Pause sending of spammer users [MAILPOET-1649]
2018-11-30 11:08:10 -05:00
7c7b6b62ea Increase admin notices timeout
[MAILPOET-1451]
2018-11-29 17:10:48 +01:00
wxa
bd9118a42e Change outdated PHP version notice [MAILPOET-1659] 2018-11-29 16:06:50 +03:00
wxa
d93a3bb52f Exclude permanent notices in the welcome wizard [MAILPOET-1659] 2018-11-29 16:06:50 +03:00
wxa
e35d5d7a18 Hide admin notices in the welcome wizard [MAILPOET-1659] 2018-11-29 16:06:50 +03:00
23df6c5936 Merge pull request #1660 from mailpoet/fix-acceptance-tests
Fix acceptance tests
2018-11-29 14:05:14 +01:00
e462703c06 Fix acceptance tests 2018-11-29 11:03:34 +01:00
160d4ae3ec Pause sending of spammer users [MAILPOET-1649] 2018-11-28 18:27:44 +01:00
d1aea940a5 Merge pull request #1650 from mailpoet/signup-confirmation
Test signup confirmation [MQ-87]
2018-11-28 08:56:35 -05:00
7fcf9f6f72 Add acceptance test for sign up confirmation
[MQ-87]
2018-11-28 11:58:08 +01:00
ddaf9e361d Merge pull request #1654 from mailpoet/php-update-message
Update the PHP version message [MAILPOET-1660]
2018-11-28 05:54:12 -05:00
wxa
758711c722 Fix Mailer error messages not displaying in previews [MAILPOET-1662] 2018-11-28 10:36:29 +03:00
061c8c2d28 Merge pull request #1653 from mailpoet/release-3.15.0
Release 3.15.0
2018-11-27 10:34:52 -05:00
250a02f7f8 Update the PHP version message
[MAILPOET-1660]
2018-11-27 16:29:39 +01:00
wxa
fc0166d616 Release 3.15.0 2018-11-27 18:13:03 +03:00
0e4de4197d Merge pull request #1651 from mailpoet/array-column-fix
User polyfill for array_column [MAILPOET-1618]
2018-11-27 07:51:31 -05:00
384cd94727 Merge pull request #1644 from mailpoet/images-to-cdn
Move large images and videos to CDN [MAILPOET-1643]
2018-11-27 07:18:11 -05:00
9761ae176e Merge pull request #1645 from mailpoet/js-minification
JS minification [MAILPOET-1606]
2018-11-27 06:27:21 -05:00
a9f3eeeb0d User polyfill for array_column
[MAILPOET-1618]
2018-11-27 11:13:00 +01:00
4d5d00f777 Make minified JS code more readable keeping identifier names
[MAILPOET-1606]
2018-11-27 10:12:05 +01:00
a5d1416b45 Minify production JS using UglifyJS Webpack plugin
[MAILPOET-1606]
2018-11-27 10:12:05 +01:00
521791b3d4 Merge pull request #1643 from mailpoet/tinymce-cleanup
Tinymce cleanup [MAILPOET-1641]
2018-11-27 10:04:47 +01:00
43398d2dd6 Remove tests if path exists (no need to check when using 'rm' with '-f')
[MAILPOET-1642]
2018-11-27 09:39:51 +01:00
4092dd27f7 Fix IF to shell style instead of Bash (shebang line says '#!/bin/sh -e', not bash)
Running the script was outputting errors (alghough working), this should work on both shell & bash.

[MAILPOET-1642]
2018-11-27 09:38:01 +01:00
82cf412b63 Clean up unused TinyMCE files during build
[MAILPOET-1641]
2018-11-27 09:38:01 +01:00
5161afb01f Use TinyMCE without packaged jQuery
[MAILPOET-1641]
2018-11-27 09:38:01 +01:00
936696cde3 Merge pull request #1642 from mailpoet/vendor-cleanup
Vendor cleanup [MAILPOET-1642]
2018-11-26 14:28:27 -05:00
5ea76a87df Merge pull request #1627 from mailpoet/move-test-files
Move tests without dependencies to unit folder [MAILPOET-1607]
2018-11-26 13:27:46 -05:00
c4b40fd45e Merge pull request #1646 from mailpoet/readme-mail-poet
Add 'Mail poet' to readme.txt [MAILPOET-1654]
2018-11-26 12:22:20 -05:00
b9369ec35b Merge pull request #1638 from mailpoet/form-editor-fixes
Form editor fixes [MAILPOET-1622]
2018-11-26 12:19:11 -05:00
ea7684c270 Merge pull request #1647 from mailpoet/do-not-include-pluggable
Do not require pluggable.php [MAILPOET-1650]
2018-11-26 12:02:08 -05:00
b4c7818d02 Hide honeypot form field in form preview
[MAILPOET-1622]
2018-11-26 16:12:25 +01:00
a2a1064a3c Improve form preview success/error messages
[MAILPOET-1622]
2018-11-26 16:12:25 +01:00
98dcc49fe5 Merge pull request #1639 from mailpoet/stats-errors
Unify types of statistics summary data [MAILPOET-1645]
2018-11-26 07:43:02 -05:00
66f6632311 Merge pull request #1649 from mailpoet/welcome-emails-status
Correct the welcome email status [MAILPOET-1658]
2018-11-26 06:40:02 -05:00
5b4fd87728 Use 'cdn_url' function for all CDN URLs in views
[MAILPOET-1643]
2018-11-26 10:58:50 +01:00
b12ccd0c37 Add 'cdn_url' function for Twig templates
[MAILPOET-1643]
2018-11-26 10:58:50 +01:00
c29b6e1f8e Correct the welcome email status
[MAILPOET-1658]
2018-11-26 10:11:38 +01:00
4b215051ae Add plugin's 'base_url' to config
[MAILPOET-1643]
2018-11-23 15:18:57 +01:00
wxa
467bef1d61 Do not require pluggable.php [MAILPOET-1650] 2018-11-22 17:01:33 +03:00
wxa
a051b82ade Add 'Mail poet' to readme.txt [MAILPOET-1654] 2018-11-22 16:16:52 +03:00
0b9f10cf23 Move large images and videos to CDN & add datetime as version
[MAILPOET-1643]
2018-11-21 15:14:02 +01:00
bf7e6a601e Move prefixed dependencies from lib/Dependencies to vendor-prefixed
[MAILPOET-1642]
2018-11-20 14:11:33 +01:00
4b462a3963 Remove unnecessary symfony/config & related cleanups from mozart's composer.json
[MAILPOET-1642]
2018-11-20 14:11:33 +01:00
848b4263fd Clean up common unused files in vendor also for lib/Dependencies
[MAILPOET-1642]
2018-11-20 14:11:31 +01:00
d62f679c3f Add some more explicitly removed paths in vendor during build
[MAILPOET-1642]
2018-11-20 14:10:51 +01:00
7088c2a458 Sort explicitely removed vendor paths alphabetically
[MAILPOET-1642]
2018-11-20 14:10:51 +01:00
89acfa29d0 Remove some common dotfiles from vendor during build
[MAILPOET-1642]
2018-11-20 14:10:46 +01:00
18cc914db0 Remove more files (like composer.*, phpunit.xml, doxyfile) from vendor during build
[MAILPOET-1642]
2018-11-20 14:06:49 +01:00
1a52dc36cd Move sensiolabs/security-checker to dev dependencies
[MAILPOET-1642]
2018-11-20 14:06:49 +01:00
012dc25a5b Releasing 3.14.1 2018-11-20 11:24:46 +01:00
a2393d7889 Merge pull request #1571 from mailpoet/export-subscribers
Export subscribers [MQ-76]
2018-11-20 11:15:39 +02:00
1babbee2cf Removes unused data-automation-ids 2018-11-20 10:38:45 +02:00
754afa2363 Remove unused csv list of exportable subscribers 2018-11-20 10:34:25 +02:00
cfbb20aa46 Unify type of statistics summary data
[MAILPOET-1645]
2018-11-19 16:10:29 +01:00
f447473840 Merge pull request #1634 from mailpoet/subscribe-multiple-lists
Subscribe to multiple lists. [MQ-11]
2018-11-16 08:42:29 -05:00
2a7cea9e6e add admin login to sub form test to avoid 60 sec wait time 2018-11-15 18:19:04 -05:00
9c951741cf Subscribe to multiple lists. [MQ-11] 2018-11-15 17:45:33 -05:00
dcd6dda277 Subscribe to multiple lists. [MQ-11] 2018-11-15 17:42:04 -05:00
9cb24fcdae fixes, clean-up, better selectors 2018-11-15 14:41:12 -05:00
c3891f36cd Merge pull request #1632 from mailpoet/premium-plugin-api-fix
Add fallback for API endpoint instantiation [MAILPOET-1639]
2018-11-15 12:30:37 -05:00
528f223a70 Add fallback for API endpoint instantiation for endpoints which are not in DI
[MAILPOET-1639]
2018-11-15 18:03:51 +01:00
3af3c46fde Merge pull request #1618 from mailpoet/more-tags
Implement pagination to tags and categories query [MAILPOET-1613]
2018-11-15 10:57:45 -05:00
d83f584106 Merge pull request #1631 from mailpoet/fix-translation-function
Fix translation function [MAILPOET-1449]
2018-11-15 10:10:58 -05:00
5a5f65c39c Fix translation function
[MAILPOET-1449]
2018-11-15 15:52:11 +01:00
72c039f35f Merge pull request #1630 from mailpoet/form-bold
Make success message bold [MAILPOET-1564]
2018-11-15 09:28:36 -05:00
bc5b896e67 Merge pull request #1625 from mailpoet/default-form
Create a default form [MAILPOET-1449]
2018-11-15 09:08:00 -05:00
64513f400f Merge pull request #1628 from mailpoet/mp-api-di
Introduce DI to plugin API [MAILPOET-1637]
2018-11-15 07:55:11 -05:00
bb3433948f Make success message bold
[MAILPOET-1564]
2018-11-15 13:01:58 +01:00
ccb93ba308 Merge pull request #1620 from mailpoet/remove-tooltip
Remove font tooltip [MAILPOET-1623]
2018-11-15 07:01:10 -05:00
8557cbccb1 Refactor SimpleWorker to be more expressive (so PHPStan understands it) 2018-11-15 11:41:04 +01:00
9d0b7077d0 Fix catching non-existent exception & missing exception instantiation 2018-11-15 11:41:04 +01:00
60a5fe2732 Remove unused parameters & variabeles, fix calls with wrong number of args 2018-11-15 11:41:04 +01:00
aac7744dee Fix case in use statements 2018-11-15 11:41:04 +01:00
0a12d64cbf Added PHPStan on level 0 for lib directory 2018-11-15 11:41:04 +01:00
ab0d94aea2 Remove font tooltip
[MAILPOET-1623]
2018-11-15 10:05:30 +01:00
141cb09a54 Implement pagination to tags and categories query
[MAILPOET-1613]
2018-11-15 09:50:13 +01:00
c36aad1345 Ensure container for third party plugins using MP api
[MAILPOET-1637]
2018-11-15 09:05:33 +01:00
38e9d806b8 Refactor ALC endpoint to follow DI
[MAILPOET-1637]
2018-11-15 09:04:46 +01:00
e0863e4b7e Reorder services in container factory by namespace
[MAILPOET-1637]
2018-11-15 09:04:27 +01:00
d49b2a72a9 Refactor JSON API to use container for creating endpoints
[MAILPOET-1637]
2018-11-15 09:04:15 +01:00
a42787d10d Refactor MP v1 API to obtain services via constructor
[MAILPOET-1637]
2018-11-15 09:03:43 +01:00
ad85c7e4b1 Create a default form
[MAILPOET-1449]
2018-11-15 09:00:10 +01:00
wxa
0fbbcf3f9e Fix conflicts for test coverage to work [MAILPOET-1607] 2018-11-14 17:51:20 +03:00
wxa
8944fdbf1e Move tests without dependencies to unit folder [MAILPOET-1607] 2018-11-14 17:38:17 +03:00
a393ad5b61 Merge pull request #1615 from mailpoet/simplify-template-categories
Simplify email template categories [MAILPOET-1557]
2018-11-14 08:32:40 -05:00
3a4e4ee047 Merge pull request #1619 from mailpoet/fix-flaky-templates-test
Try to fix test flakiness [MAILPOET-1580]
2018-11-14 08:06:25 -05:00
1a926b32b5 Merge pull request #1614 from mailpoet/welcome-email-status
Display number of welcome notification on listings page [MAILPOET-1562]
2018-11-14 07:58:29 -05:00
a4e90929b8 Try to fix test flakiness
[MAILPOET-1580]
2018-11-13 11:35:35 +01:00
wxa
0c53c19cc6 Add a migration for updating categories [MAILPOET-1557] 2018-11-12 19:01:45 +03:00
wxa
99ff540ebe change categories in templates [MAILPOET-1557] 2018-11-12 18:17:25 +03:00
wxa
4cb2f78bb8 Change template category tabs [MAILPOET-1557] 2018-11-12 18:08:16 +03:00
362235e96a Display number of welcome notification on listings page
[MAILPOET-1562]
2018-11-12 15:32:02 +01:00
43a4b57073 push to complete rebase, fixes 2018-11-05 14:01:34 -05:00
64f2ea591d Codesniffer fixes [MQ-76] 2018-11-05 12:42:00 -05:00
67e6e81092 Export subscribers [MQ-76] 2018-11-05 12:42:00 -05:00
1270 changed files with 95426 additions and 29754 deletions

View File

@ -1,5 +1,28 @@
{
"presets": [
"es2015", "react", "stage-2"
"@babel/preset-react",
"@babel/preset-env"
],
"plugins": [
"@babel/plugin-proposal-class-properties",
[
"@babel/plugin-transform-runtime", {
"sourceType": "unambiguous",
"corejs": 2
}
],
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
],
"@babel/plugin-proposal-function-sent",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-throw-expressions"
]
}

View File

@ -3,7 +3,7 @@ jobs:
build_and_code_qa:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.1_20181009.1
- image: mailpoet/wordpress:7.3_20190306.1
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
@ -11,15 +11,19 @@ jobs:
- restore_cache:
key: composer-{{ checksum "composer.json" }}-{{ checksum "composer.lock" }}
- restore_cache:
key: npm-{{ checksum "package.json" }}
keys:
- npm-{{ checksum "package-lock.json" }}
- npm- # fallback to most recent npm-* if not found by checksum
- run:
name: "Set up test environment"
command: |
# Install NodeJS+NPM
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install nodejs build-essential
# install plugin dependencies
curl -sL https://github.com/humbug/php-scoper/releases/download/0.11.4/php-scoper.phar --output php-scoper.phar
chmod 755 php-scoper.phar
mkdir -p vendor-prefixed
curl -sS https://getcomposer.org/installer | php
./composer.phar validate --no-check-all --no-check-publish
./composer.phar validate --no-check-all --no-check-publish --working-dir=prefixer
./composer.phar install
./do install
./do compile:all --env production
@ -28,13 +32,21 @@ jobs:
paths:
- vendor
- save_cache:
key: npm-{{ checksum "package.json" }}
key: npm-{{ checksum "package-lock.json" }}
paths:
- node_modules
- ~/.npm
- run:
name: "Composer security check"
command: |
./do s:composer
- run:
name: Group acceptance tests to run in parallel
command: |
./do test:acceptance-group-tests
- run:
name: Dump tests ENV variables for acceptance tests
command: |
printenv | grep WP_TEST_ > .env
- run:
name: "QA Scripts"
command: ./do qa
@ -42,11 +54,29 @@ jobs:
root: /home/circleci/mailpoet
paths:
- .
static_analysis:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.3_20190306.1
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up environment"
command: |
source ./.circleci/setup.bash && setup php7
wget https://github.com/phpstan/phpstan/releases/download/0.11.4/phpstan.phar
- run:
name: "Static analysis"
command: ./do qa:phpstan
php5_unit:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:5.6.30_20180417.1
- image: circleci/mysql:5.7
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
@ -74,7 +104,7 @@ jobs:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:5.6.30_20180417.1
- image: circleci/mysql:5.7
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
@ -111,7 +141,7 @@ jobs:
- store_artifacts:
path: /tmp/fake-mailer/
destination: fake-mailer
acceptance_tests:
acceptance_tests_1:
working_directory: /home/circleci/mailpoet
machine: true
steps:
@ -120,22 +150,16 @@ jobs:
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: "Set up test environment"
command: |
sudo apt-get update
sudo apt-get install circleci-php-5.6.23
sudo rm /usr/bin/php
sudo ln -s /opt/circleci/php/5.6.23/bin/php /usr/bin/php
- run:
name: Run acceptance tests
command: |
docker-compose run -e SKIP_DEPS=1 codeception --steps --debug -vvv --html --xml
cd tests/docker
docker-compose run -e SKIP_DEPS=1 codeception -g acceptance_group_1 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_multisite:
acceptance_tests_2:
working_directory: /home/circleci/mailpoet
machine: true
steps:
@ -145,16 +169,118 @@ jobs:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: "Set up test environment"
name: Run acceptance tests
command: |
sudo apt-get update
sudo apt-get install circleci-php-5.6.23
sudo rm /usr/bin/php
sudo ln -s /opt/circleci/php/5.6.23/bin/php /usr/bin/php
cd tests/docker
docker-compose run -e SKIP_DEPS=1 codeception -g acceptance_group_2 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_3:
working_directory: /home/circleci/mailpoet
machine: true
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: Run acceptance tests
command: |
docker-compose run -e SKIP_DEPS=1 -e MULTISITE=1 codeception --steps --debug -vvv --html --xml
cd tests/docker
docker-compose run -e SKIP_DEPS=1 codeception -g acceptance_group_3 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_4:
working_directory: /home/circleci/mailpoet
machine: true
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: Run acceptance tests
command: |
cd tests/docker
docker-compose run -e SKIP_DEPS=1 codeception -g acceptance_group_4 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_multisite_1:
working_directory: /home/circleci/mailpoet
machine: true
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: Run acceptance tests
command: |
cd tests/docker
docker-compose run -e SKIP_DEPS=1 -e MULTISITE=1 codeception -g acceptance_group_1 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_multisite_2:
working_directory: /home/circleci/mailpoet
machine: true
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: Run acceptance tests
command: |
cd tests/docker
docker-compose run -e SKIP_DEPS=1 -e MULTISITE=1 codeception -g acceptance_group_2 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_multisite_3:
working_directory: /home/circleci/mailpoet
machine: true
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: Run acceptance tests
command: |
cd tests/docker
docker-compose run -e SKIP_DEPS=1 -e MULTISITE=1 codeception -g acceptance_group_3 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
path: tests/_output
acceptance_tests_multisite_4:
working_directory: /home/circleci/mailpoet
machine: true
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up virtual host"
command: echo 127.0.0.1 mailpoet.loc | sudo tee -a /etc/hosts
- run:
name: Run acceptance tests
command: |
cd tests/docker
docker-compose run -e SKIP_DEPS=1 -e MULTISITE=1 codeception -g acceptance_group_4 --steps --debug -vvv --html --xml
- store_artifacts:
path: tests/_output
- store_test_results:
@ -162,8 +288,8 @@ jobs:
php7_unit:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.1_20181009.1
- image: circleci/mysql:5.7
- image: mailpoet/wordpress:7.3_20190306.1
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
@ -193,8 +319,8 @@ jobs:
php7_integration:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.1_20181009.1
- image: circleci/mysql:5.7
- image: mailpoet/wordpress:7.3_20190306.1
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
@ -224,8 +350,8 @@ jobs:
php7_integration_multisite:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.1_20181009.1
- image: circleci/mysql:5.7
- image: mailpoet/wordpress:7.3_20190306.1
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
@ -252,6 +378,52 @@ jobs:
- store_artifacts:
path: /tmp/fake-mailer/
destination: fake-mailer
build_release_zip:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.3_20190306.1
- image: circleci/mysql:5.7-ram
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Set up environment"
command: |
source ./.circleci/setup.bash && setup php7
sudo apt-get update
sudo apt-get install python-pip gettext
sudo pip install transifex-client
mv wordpress ..
sed -i 's/^WP_ROOT=.*$/WP_ROOT=\/home\/circleci\/wordpress/g' .env
echo ${CIRCLE_BUILD_NUM} > release_zip_build_number.txt
- run:
name: "Build"
command: ./build.sh
- store_artifacts:
path: /home/circleci/mailpoet/mailpoet.zip
- persist_to_workspace:
root: /home/circleci/mailpoet
paths:
- release_zip_build_number.txt
test_deployment:
working_directory: /home/circleci/mailpoet
docker:
- image: mailpoet/wordpress:7.1_20181009.1
environment:
TZ: /usr/share/zoneinfo/Etc/UTC
steps:
- attach_workspace:
at: /home/circleci/mailpoet
- run:
name: "Deploy"
command: |
RELEASE_ZIP_BUILD_NUMBER=`cat release_zip_build_number.txt`
curl "${MAILPOET_TEST_DEPLOY_HOST}/wp-admin/admin-ajax.php?action=mailpoet_test_deploy&key=${MAILPOET_TEST_DEPLOY_KEY}&build=${RELEASE_ZIP_BUILD_NUMBER}&plugin_name=${CIRCLE_PROJECT_REPONAME}" | tee deploy.log | grep "Done! Installed successfully"
- store_artifacts:
path: deploy.log
workflows:
version: 2
build_and_test:
@ -263,18 +435,69 @@ workflows:
- php7_unit:
requires:
- build_and_code_qa
- static_analysis:
requires:
- build_and_code_qa
- acceptance_tests_1:
requires:
- php5_unit
- acceptance_tests_2:
requires:
- php5_unit
- acceptance_tests_3:
requires:
- php5_unit
- acceptance_tests_4:
requires:
- php5_unit
- php5_integration_and_js:
requires:
- php5_unit
- php7_integration:
requires:
- php7_unit
- acceptance_tests_multisite_1:
requires:
- php5_unit
filters:
branches:
only: master
- acceptance_tests_multisite_2:
requires:
- php5_unit
filters:
branches:
only: master
- acceptance_tests_multisite_3:
requires:
- php5_unit
filters:
branches:
only: master
- acceptance_tests_multisite_4:
requires:
- php5_unit
filters:
branches:
only: master
- php7_integration_multisite:
requires:
- php7_unit
- acceptance_tests:
filters:
branches:
only: master
- build_release_zip:
requires:
- php5_unit
- acceptance_tests_multisite:
- build_and_code_qa
- acceptance_tests_1
- acceptance_tests_2
- acceptance_tests_3
- acceptance_tests_4
- php5_integration_and_js
- php7_integration
- test_deployment:
requires:
- php5_unit
- build_release_zip
filters:
branches:
only: master

View File

@ -1,7 +1,7 @@
#!/usr/local/bin/php
<?php
$path = "/tmp/fake-mailer";
if(!file_exists($path)) {
if (!file_exists($path)) {
mkdir($path);
}
$filename = $path . '/mailpoet-' . microtime(true) . '.txt';
@ -10,7 +10,7 @@ $file_handle = fopen($filename, "w");
$call_arguments = print_r($argv, true) . "\n";
fwrite($file_handle, $call_arguments);
while($line = fgets(STDIN)) {
while ($line = fgets(STDIN)) {
fwrite($file_handle, $line);
}

View File

@ -25,3 +25,5 @@ WP_TEST_MAILER_SMTP_PASSWORD=""
WP_SVN_USERNAME=""
WP_SVN_PASSWORD=""
WP_TRANSIFEX_API_TOKEN=""
WP_JIRA_USER="" // Jira username/email
WP_JIRA_TOKEN="" // Jira token (https://confluence.atlassian.com/cloud/api-tokens-938839638.html) or password

View File

@ -1,3 +1,4 @@
**/vendor/**
**/vendor-prefixed/**
**/testBundles/**
assets/js/src/newsletter_editor/tinymce/wplink/plugin.js

View File

@ -5,9 +5,11 @@
"browser": true
},
"parserOptions": {
"ecmaVersion": 5
"ecmaVersion": 6,
"sourceType": "module"
},
"rules": {
"no-underscore-dangle": 0 // Backbone uses underscores, we cannot remove them
"no-underscore-dangle": 0, // Backbone uses underscores, we cannot remove them
"comma-dangle": ["error", "always-multiline"]
}
}

View File

@ -11,13 +11,26 @@
"jsx": true
}
},
"plugins": [
"react-hooks"
],
"settings": {
"import/resolver": "webpack"
},
"rules": {
// Hooks
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
// Exceptions
"comma-dangle": ["error", "always-multiline"],
"no-script-url": 0,
"import/extensions": 0 // we wouldn't be able to import jQuery without this line
"import/extensions": 0, // we wouldn't be able to import jQuery without this line
"react/destructuring-assignment": 0, // that would be too many changes to fix this one
"prefer-destructuring": 0, // that would be too many changes to fix this one
"jsx-a11y/label-has-for": [2, {
"required": {"some": ["nesting", "id"]} // some of our labels are hidden and we cannot nest those
}],
"jsx-a11y/anchor-is-valid": 0 // cannot fix this one, it would break wprdpress themes
}
}

View File

@ -5,12 +5,16 @@
"mocha": true
},
"parserOptions": {
"ecmaVersion": 6
"ecmaVersion": 6,
"sourceType": "module"
},
"rules": {
"no-only-tests/no-only-tests": 2,
// Exceptions
"func-names": 0,
"comma-dangle": ["error", "always-multiline"],
// Temporary
"no-underscore-dangle": 0
}
},
"plugins": ["no-only-tests"]
}

15
.gitignore vendored
View File

@ -1,7 +1,10 @@
.DS_Store
TODO
composer.phar
php-scoper.phar
phpstan.phar
/vendor
/vendor-prefixed
/vendor_backup
tests/_output/*
tests/_support/_generated/*
@ -14,17 +17,13 @@ temp
.idea
mailpoet.zip
tests/javascript/testBundles
assets/css/*.css
assets/css/*.json
assets/js/*.js
assets/js/*.json
assets/dist
.vagrant
lang
.mp_svn
/nbproject/
tests/_data/acceptanceGenerated.sql
lib/Dependencies
lib/DI/CachedContainer.php
mozart/Dependencies
mozart/Classes
mozart/vendor
prefixer/vendor
prefixer/build
docker-compose.override.yml

1
.npmrc Normal file
View File

@ -0,0 +1 @@
engine-strict=true

9
.stylelintrc Normal file
View File

@ -0,0 +1,9 @@
{
"plugins": [
"stylelint-order",
"stylelint-scss"
],
"rules": {
"order/properties-alphabetical-order": true,
},
}

View File

@ -2,6 +2,7 @@
## PHP Code
- Two spaces indentation.
- Space between keyword (if, for, switch...) and left bracket
- CamelCase for classes.
- camelCase for methods.
- snake_case for variables and class properties.
@ -13,6 +14,10 @@
- Ensure compatibility with PHP 5.5 and newer versions.
- Cover your code in tests.
## SCSS Code
- camelCase for file name
- Components files are prefixed with underscore, to indicate, that they aren't compiled separately.
## JS Code
- Javascript code should follow the [Airbnb style guide](https://github.com/airbnb/javascript).

View File

@ -30,6 +30,11 @@ $ cp .env.sample .env
# download composer
$ curl -sS https://getcomposer.org/installer | php
$ chmod +x ./composer.phar
# download a PHP-Scoper
$ curl -sL https://github.com/humbug/php-scoper/releases/download/0.11.4/php-scoper.phar --output php-scoper.phar
# needed for installation.
$ mkdir -p vendor-prefixed
$ chmod +x ./php-scoper.phar
# install PHP dependencies
$ ./composer.phar install
# install all dependencies (PHP and JS)
@ -42,7 +47,7 @@ $ ./do compile:all
- [Paris ORM](https://github.com/j4mie/paris).
- [Symfony/dependency-injection](https://github.com/symfony/dependency-injection) ([docs for 3.4](https://symfony.com/doc/3.4/components/dependency_injection.html)).
- [Mozart](https://github.com/coenjacobs/mozart) for moving dependencies into MP namespace
- [PHP-Scoper](https://github.com/humbug/php-scoper) for moving dependencies into MP namespace
- [Twig](https://twig.symfony.com/) and [Handlebars](https://handlebarsjs.com/) are used for templates rendering.
- [Monolog](https://seldaek.github.io/monolog/) is used for logging.
- [Robo](https://robo.li/) is used to write and run workflow commands.
@ -50,7 +55,7 @@ $ ./do compile:all
- [Docker](https://www.docker.com/), [Docker Compose](https://docs.docker.com/compose/) and [Selenium](https://www.seleniumhq.org/) to run acceptance tests.
- [React](https://reactjs.org/) is used to create most of UIs.
- [Marionette](https://marionettejs.com/) is used to build the newsletters editor.
- [Stylus](http://stylus-lang.com/) is used to write styles.
- [SCSS](http://sass-lang.com/) is used to write styles.
- [Mocha](https://mochajs.org/), [Chai](https://www.chaijs.com/) and [Sinon](https://sinonjs.org/) are used to write Javascript tests.
- [ESLint](https://eslint.org/) is used to lint JS files.
- [Webpack](https://webpack.js.org/) is used to bundle assets.
@ -61,7 +66,7 @@ $ ./do compile:all
$ ./do install # install PHP and JS dependencies
$ ./do update # update PHP and JS dependencies
$ ./do compile:css # compiles Stylus files into CSS.
$ ./do compile:css # compiles SCSS files into CSS.
$ ./do compile:js # bundles JS files for the browser.
$ ./do compile:all # compiles CSS and JS files.
@ -95,8 +100,12 @@ $ ./do delete:docker # stop and remove all running docker containers.
$ ./do qa:lint # PHP code linter.
$ ./do qa:lint:javascript # JS code linter.
$ ./do qa:phpstan # PHP code static analysis using PHPStan.
$ ./do qa # PHP and JS linters.
$ ./do changelog:get [--version-name=...] # Prints out changelog and release notes for given version or for newest version.
$ ./do changelog:update [--version-name=...] [--quiet] # Updates changelog in readme.txt for given version or for newest version.
$ ./do container:dump # Generates DI container cache.
```
@ -108,10 +117,10 @@ We use Symfony/dependency-injection container. Container configuration can be fo
The container is configured and used with minimum sub-dependencies to keep final package size small.
You can check [the docs](https://symfony.com/doc/3.4/components/dependency_injection.html) to learn more about Symfony Container.
## Mozart
## PHP-Scoper
We use Mozart plugin for composer to prevent plugin libraries conflicts in PHP. Two plugins may be using different versions of a library. Mozart prefix dependencies namespaces and moves them into `libs\Dependencies` directory.
Dependencies handled by Mozart are configured in extra configuration file `mozart/composer.json`. Installation and processing is triggered in post scripts of the main `composer.json` file.
We use PHP-Scoper package to prevent plugin libraries conflicts in PHP. Two plugins may be using different versions of a library. PHP-Scoper prefix dependencies namespaces and they are then moved into `vendor-prefixed` directory.
Dependencies handled by PHP-Scoper are configured in extra configuration files `prefixer/composer.json` and `prefixer/scoper.inc.php`. Installation and processing is triggered in post scripts of the main `composer.json` file.
## i18n

View File

@ -1,11 +1,14 @@
<?php
class RoboFile extends \Robo\Tasks {
use \Codeception\Task\SplitTestsByGroups;
function install() {
return $this->taskExecStack()
->stopOnFail()
->exec('./composer.phar install')
->exec('npm install')
->exec('npm ci --prefer-offline')
->run();
}
@ -32,7 +35,7 @@ class RoboFile extends \Robo\Tasks {
);
$list = array();
foreach($files as $file) {
foreach ($files as $file) {
$list[] = $file[0];
}
@ -40,7 +43,8 @@ class RoboFile extends \Robo\Tasks {
}
function watch() {
$css_files = $this->rsearch('assets/css/src/', array('styl'));
$this->say('Warning: this lints and compiles all files, not just the changed one. Use separate tasks watch:js and watch:css for faster and more efficient watching.');
$css_files = $this->rsearch('assets/css/src/', array('scss'));
$js_files = $this->rsearch('assets/js/src/', array('js', 'jsx'));
$this->taskWatch()
@ -54,10 +58,16 @@ class RoboFile extends \Robo\Tasks {
}
function watchCss() {
$css_files = $this->rsearch('assets/css/src/', array('styl'));
$css_files = $this->rsearch('assets/css/src/', array('scss'));
$this->taskWatch()
->monitor($css_files, function() {
$this->compileCss();
->monitor($css_files, function($changedFile) {
$file = $changedFile->getResource()->getResource();
$this->taskExecStack()
->stopOnFail()
->exec('npm run stylelint -- "' . $file . '"')
->exec('npm run scss')
->exec('npm run autoprefixer')
->run();
})
->run();
}
@ -78,6 +88,9 @@ class RoboFile extends \Robo\Tasks {
}
function compileJs($opts = ['env' => null]) {
if (!is_dir('assets/dist/js')) {
mkdir('assets/dist/js', 0777, true);
}
$env = ($opts['env']) ?
sprintf('./node_modules/cross-env/dist/bin/cross-env.js NODE_ENV="%s"', $opts['env']) :
null;
@ -85,32 +98,21 @@ class RoboFile extends \Robo\Tasks {
}
function compileCss($opts = ['env' => null]) {
if (!is_dir('assets/dist/css')) {
mkdir('assets/dist/css', 0777, true);
}
// Clean up folder from previous files
array_map('unlink', glob("assets/css/*.*"));
array_map('unlink', glob("assets/dist/css/*.*"));
$css_files = array(
'assets/css/src/admin.styl',
'assets/css/src/admin-global.styl',
'assets/css/src/newsletter_editor/newsletter_editor.styl',
'assets/css/src/public.styl',
'assets/css/src/rtl.styl',
'assets/css/src/importExport.styl'
);
$compilation_result = $this->_exec(join(' ', array(
'./node_modules/stylus/bin/stylus',
'--include ./node_modules',
'--include-css',
'-u nib',
join(' ', $css_files),
'-o assets/css/'
)));
$this->_exec('npm run stylelint -- "assets/css/src/components/**/*.scss"');
$this->_exec('npm run scss');
$compilation_result = $this->_exec('npm run autoprefixer');
// Create manifest file
$manifest = [];
foreach(glob('assets/css/*.css') as $style) {
foreach (glob('assets/dist/css/*.css') as $style) {
// Hash and rename styles if production environment
if($opts['env'] === 'production') {
if ($opts['env'] === 'production') {
$hashed_style = sprintf(
'%s.%s.css',
pathinfo($style)['filename'],
@ -122,7 +124,7 @@ class RoboFile extends \Robo\Tasks {
$manifest[basename($style)] = basename($style);
}
}
file_put_contents('assets/css/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT));
file_put_contents('assets/dist/css/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT));
return $compilation_result;
}
@ -158,15 +160,15 @@ class RoboFile extends \Robo\Tasks {
$command = 'vendor/bin/codecept run unit';
if($opts['file']) {
if ($opts['file']) {
$command .= ' -f ' . $opts['file'];
}
if($opts['xml']) {
if ($opts['xml']) {
$command .= ' --xml';
}
if($opts['debug']) {
if ($opts['debug']) {
$command .= ' --debug';
}
@ -178,19 +180,19 @@ class RoboFile extends \Robo\Tasks {
$command = 'vendor/bin/codecept run integration';
if($opts['multisite']) {
if ($opts['multisite']) {
$command = 'MULTISITE=true ' . $command;
}
if($opts['file']) {
if ($opts['file']) {
$command .= ' -f ' . $opts['file'];
}
if($opts['xml']) {
if ($opts['xml']) {
$command .= ' --xml';
}
if($opts['debug']) {
if ($opts['debug']) {
$command .= ' --debug';
}
@ -210,7 +212,7 @@ class RoboFile extends \Robo\Tasks {
($opts['xml']) ? '--coverage-xml' : '--coverage-html'
));
if($opts['xml']) {
if ($opts['xml']) {
$command .= ' --xml';
}
return $this->_exec($command);
@ -225,7 +227,7 @@ class RoboFile extends \Robo\Tasks {
'tests/javascript/testBundles/**/*.js'
));
if(!empty($xml_output_file)) {
if (!empty($xml_output_file)) {
$command .= sprintf(
' --reporter xunit --reporter-options output="%s"',
$xml_output_file
@ -247,27 +249,31 @@ class RoboFile extends \Robo\Tasks {
return $this->testIntegration($opts);
}
function testAcceptance($opts=['file' => null, 'skip-deps' => false]) {
return $this->_exec(
function testAcceptance($opts=['file' => null, 'skip-deps' => false, 'timeout' => null]) {
return $this->taskExec(
'COMPOSE_HTTP_TIMEOUT=200 docker-compose run ' .
($opts['skip-deps'] ? '-e SKIP_DEPS=1 ' : '') .
($opts['timeout'] ? '-e WAIT_TIMEOUT=' . (int)$opts['timeout'] . ' ' : '') .
'codeception --steps --debug -vvv ' .
'-f ' . ($opts['file'] ? $opts['file'] : '')
);
)->dir(__DIR__ . '/tests/docker')->run();
}
function testAcceptanceMultisite($opts=['file' => null, 'skip-deps' => false]) {
return $this->_exec(
function testAcceptanceMultisite($opts=['file' => null, 'skip-deps' => false, 'timeout' => null]) {
return $this->taskExec(
'COMPOSE_HTTP_TIMEOUT=200 docker-compose run ' .
($opts['skip-deps'] ? '-e SKIP_DEPS=1 ' : '') .
($opts['timeout'] ? '-e WAIT_TIMEOUT=' . (int)$opts['timeout'] . ' ' : '') .
'-e MULTISITE=1 ' .
'codeception --steps --debug -vvv' .
'-f ' . ($opts['file'] ? $opts['file'] : '')
);
)->dir(__DIR__ . '/tests/docker')->run();
}
function deleteDocker() {
return $this->_exec('docker-compose down -v --remove-orphans --rmi all');
return $this->taskExec(
'docker-compose down -v --remove-orphans --rmi all'
)->dir(__DIR__ . '/tests/docker')->run();
}
function testFailedUnit() {
@ -283,9 +289,6 @@ class RoboFile extends \Robo\Tasks {
}
function containerDump() {
$this->say('Deleting DI Container');
$this->_exec('rm -f ./lib/DI/CachedContainer.php');
$this->say('Generating DI container cache');
$this->loadEnv();
define('ABSPATH', getenv('WP_ROOT') . '/');
if (!file_exists(ABSPATH . 'wp-config.php')) {
@ -293,8 +296,22 @@ class RoboFile extends \Robo\Tasks {
exit(1);
}
require_once __DIR__ . '/vendor/autoload.php';
$container_factory = new \MailPoet\DI\ContainerFactory();
$container_factory->dumpContainer();
$configurator = new \MailPoet\DI\ContainerConfigurator();
$dump_file = __DIR__ . '/generated/' . $configurator->getDumpClassname() . '.php';
$this->say('Deleting DI Container');
$this->_exec("rm -f $dump_file");
$this->say('Generating DI container cache');
$container_factory = new \MailPoet\DI\ContainerFactory($configurator);
$container = $container_factory->getConfiguredContainer();
$container->compile();
$dumper = new \MailPoetVendor\Symfony\Component\DependencyInjection\Dumper\PhpDumper($container);
file_put_contents(
$dump_file,
$dumper->dump([
'class' => $configurator->getDumpClassname(),
'namespace' => $configurator->getDumpNamespace()
])
);
}
function qa() {
@ -304,6 +321,7 @@ class RoboFile extends \Robo\Tasks {
return $this->qaCodeSniffer('all');
});
$collection->addCode(array($this, 'qaLintJavascript'));
$collection->addCode(array($this, 'qaLintCss'));
return $collection->run();
}
@ -315,6 +333,10 @@ class RoboFile extends \Robo\Tasks {
return $this->_exec('npm run lint');
}
function qaLintCss() {
return $this->_exec('npm run stylelint -- "assets/css/src/components/**/*.scss"');
}
function qaCodeSniffer($severity='errors') {
if ($severity === 'all') {
$severityFlag = '-w';
@ -325,8 +347,8 @@ class RoboFile extends \Robo\Tasks {
->taskExec(
'./vendor/bin/phpcs '.
'--standard=./tasks/code_sniffer/MailPoet '.
'--runtime-set testVersion 5.6-7.2 '.
'--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,./lib/Dependencies/*,'.
'--runtime-set testVersion 5.6-7.3 '.
'--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'.
'./lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '.
'lib/ '.
$severityFlag
@ -334,7 +356,7 @@ class RoboFile extends \Robo\Tasks {
->taskExec(
'./vendor/bin/phpcs '.
'--standard=./tasks/code_sniffer/MailPoet '.
'--runtime-set testVersion 5.6-7.2 '.
'--runtime-set testVersion 5.6-7.3 '.
'--ignore=./tests/unit/_bootstrap.php,./tests/unit/_fixtures.php,./tests/integration/_bootstrap.php,./tests/integration/_fixtures.php '.
'tests/unit tests/integration tests/acceptance tests/DataFactories '.
$severityFlag
@ -342,13 +364,35 @@ class RoboFile extends \Robo\Tasks {
->run();
}
function qaPhpstan() {
// PHPStan must be run out of main plugin directory to avoid its autoloading
// from vendor/autoload.php where some dev dependencies cause conflicts.
$dir = __DIR__;
$this->loadEnv();
return $this->collectionBuilder()
->taskExec('rm -rf ' . __DIR__ . '/vendor/goaop')
->taskExec('rm -rf ' . __DIR__ . '/vendor/nikic')
->taskExec('cd ' . __DIR__ . ' && ./composer.phar dump-autoload')
->taskExec(
'WP_ROOT="'.getenv('WP_ROOT').'" '.
'php -d memory_limit=2G '.
"$dir/phpstan.phar analyse ".
"--configuration $dir/tasks/phpstan/phpstan.neon ".
'--level 4 '.
"$dir/lib"
)
->dir(__DIR__ . '/tasks/phpstan')
->taskExec('cd ' . __DIR__ . ' && ./composer.phar install')
->run();
}
function svnCheckout() {
$svn_dir = ".mp_svn";
$collection = $this->collectionBuilder();
// Clean up the SVN dir for faster shallow checkout
if(file_exists($svn_dir)) {
if (file_exists($svn_dir)) {
$collection->taskExecStack()
->exec('rm -rf ' . $svn_dir);
}
@ -365,6 +409,21 @@ class RoboFile extends \Robo\Tasks {
->run();
}
function svnPushTemplates() {
$collection = $this->collectionBuilder();
$this->svnCheckout();
$awkCmd = '{print " --force \""$2"\""}';
$xargsFlag = (stripos(PHP_OS, 'Darwin') !== false) ? '' : '-r';
return $collection->taskExecStack()
->stopOnFail()
->dir('.mp_svn')
->exec('cp -R ../plugin_repository/assets/newsletter-templates/* assets/newsletter-templates')
->exec("svn st | grep ^! | awk '$awkCmd' | xargs $xargsFlag svn rm")
->exec('svn add --force * --auto-props --parents --depth infinity -q')
->exec('svn commit -m "Push Templates for test"')
->run();
}
function svnPublish($opts = ['force' => false]) {
$this->loadEnv();
@ -373,19 +432,19 @@ class RoboFile extends \Robo\Tasks {
$plugin_dist_name = 'mailpoet';
$plugin_dist_file = $plugin_dist_name . '.zip';
if(!$plugin_version) {
if (!$plugin_version) {
throw new \Exception('Could not parse plugin version, check the plugin header');
}
$this->say('Publishing version: ' . $plugin_version);
// Sanity checks
if(!is_readable($plugin_dist_file)) {
if (!is_readable($plugin_dist_file)) {
$this->say("Failed to access " . $plugin_dist_file);
return;
} elseif(!file_exists($svn_dir . "/.svn/")) {
} elseif (!file_exists($svn_dir . "/.svn/")) {
$this->say("$svn_dir/.svn/ dir not found, is it a SVN repository?");
return;
} elseif(file_exists($svn_dir . "/tags/" . $plugin_version)) {
} elseif (file_exists($svn_dir . "/tags/" . $plugin_version)) {
$this->say("A SVN tag already exists: " . $plugin_version);
return;
}
@ -393,7 +452,7 @@ class RoboFile extends \Robo\Tasks {
$collection = $this->collectionBuilder();
// Clean up tmp dirs if the previous run was halted
if(file_exists("$svn_dir/trunk_new") || file_exists("$svn_dir/trunk_old")) {
if (file_exists("$svn_dir/trunk_new") || file_exists("$svn_dir/trunk_old")) {
$collection->taskFileSystemStack()
->stopOnFail()
->remove(array("$svn_dir/trunk_new", "$svn_dir/trunk_old"));
@ -405,7 +464,7 @@ class RoboFile extends \Robo\Tasks {
->preserveTopDirectory(false);
// Rename current trunk
if(file_exists("$svn_dir/trunk")) {
if (file_exists("$svn_dir/trunk")) {
$collection->taskFileSystemStack()
->rename("$svn_dir/trunk", "$svn_dir/trunk_old");
}
@ -421,7 +480,7 @@ class RoboFile extends \Robo\Tasks {
->mirror('./plugin_repository/assets', "$svn_dir/assets_new");
// Rename current assets folder
if(file_exists("$svn_dir/assets")) {
if (file_exists("$svn_dir/assets")) {
$collection->taskFileSystemStack()
->rename("$svn_dir/assets", "$svn_dir/assets_old");
}
@ -448,12 +507,12 @@ class RoboFile extends \Robo\Tasks {
$result = $collection->run();
if($result->wasSuccessful()) {
if ($result->wasSuccessful()) {
// Run or suggest release command depending on a flag
$repo_url = "https://plugins.svn.wordpress.org/$plugin_dist_name";
$release_cmd = "svn ci -m \"Release $plugin_version\"";
$tag_cmd = "svn copy $repo_url/trunk $repo_url/tags/$plugin_version -m \"Tag $plugin_version\"";
if(!empty($opts['force'])) {
if (!empty($opts['force'])) {
$svn_login = getenv('WP_SVN_USERNAME');
$svn_password = getenv('WP_SVN_PASSWORD');
if ($svn_login && $svn_password) {
@ -483,12 +542,26 @@ class RoboFile extends \Robo\Tasks {
public function publish($opts = ['force' => false]) {
return $this->collectionBuilder()
->addCode(array($this, 'pushpot'))
->addCode(array($this, 'svnCheckout'))
->addCode(function () use ($opts) {
return $this->svnPublish($opts);
})
->run();
}
function changelogUpdate($opts = ['version-name' => null]) {
$this->say("Updating changelog");
$outputs = $this->getChangelogController()->update($opts['version-name']);
$this->say("Changelog \n{$outputs[0]} \n{$outputs[1]}\n\n");
$this->say("IMPORTANT NOTES \n" . ($outputs[2] ?: 'none'));
}
function changelogGet($opts = ['version-name' => null]) {
$outputs = $this->getChangelogController()->get($opts['version-name']);
$this->say("Changelog \n{$outputs[0]} \n{$outputs[1]}\n");
$this->say("IMPORTANT NOTES \n" . ($outputs[2] ?: 'none'));
}
protected function loadEnv() {
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
@ -499,4 +572,90 @@ class RoboFile extends \Robo\Tasks {
preg_match('/^[ \t*]*Version:(.*)$/mi', $data, $m);
return !empty($m[1]) ? trim($m[1]) : false;
}
protected function getChangelogController() {
require_once './tasks/release/ChangelogController.php';
$this->loadEnv();
return \MailPoetTasks\Release\ChangelogController::createWithJiraCredentials(
getenv('WP_JIRA_TOKEN'),
getenv('WP_JIRA_USER'),
\MailPoetTasks\Release\Jira::PROJECT_MAILPOET,
__DIR__ . '/readme.txt'
);
}
protected function getReleaseVersionController() {
require_once './tasks/release/ReleaseVersionController.php';
$this->loadEnv();
return \MailPoetTasks\Release\ReleaseVersionController::createWithJiraCredentials(
getenv('WP_JIRA_TOKEN'),
getenv('WP_JIRA_USER'),
\MailPoetTasks\Release\Jira::PROJECT_MAILPOET
);
}
public function testAcceptanceGroupTests() {
return $this->taskSplitTestFilesByGroups(4)
->projectRoot('.')
->testsFrom('tests/acceptance')
->groupsTo('tests/acceptance/_groups/group_')
->run();
}
public function writeReleaseVersion($version) {
$version = trim($version);
$this->validateVersion($version);
$this->taskReplaceInFile(__DIR__ . '/readme.txt')
->regex('/Stable tag:\s*\d+\.\d+\.\d+/i')
->to('Stable tag: ' . $version)
->run();
$this->taskReplaceInFile(__DIR__ . '/mailpoet.php')
->regex('/Version:\s*\d+\.\d+\.\d+/i')
->to('Version: ' . $version)
->run();
$this->taskReplaceInFile(__DIR__ . '/mailpoet.php')
->regex("/['\"]version['\"]\s*=>\s*['\"]\d+\.\d+\.\d+['\"],/i")
->to(sprintf("'version' => '%s',", $version))
->run();
}
public function jiraReleaseVersion($version = null, $opts = []) {
if ($version) {
$this->validateVersion($version);
}
try {
list($version, $output) = $this->getReleaseVersionController()
->assignVersionToCompletedTickets($version);
} catch (\Exception $e) {
$this->yell($e->getMessage(), 40, 'red');
exit(1);
}
$this->say($output);
if (!empty($opts['return'])) {
return $version;
}
}
public function prepareRelease($version = null) {
$version = $this->jiraReleaseVersion($version, ['return' => true]);
return $this->collectionBuilder()
->addCode(function () use ($version) {
return $this->writeReleaseVersion($version);
})
->addCode(function () use ($version) {
return $this->changelogUpdate(['version-name' => $version]);
})
->run();
}
protected function validateVersion($version) {
if (!preg_match('/\d+\.\d+\.\d+/', $version)) {
$this->yell('Incorrect version format', 40, 'red');
exit(1);
}
}
}

39
assets/css/src/admin.scss Normal file
View File

@ -0,0 +1,39 @@
@import 'components/mixins';
@import '../../../node_modules/select2/dist/css/select2';
@import 'components/datepicker/datepicker';
@import 'components/common';
@import 'components/modal';
@import 'components/notice';
@import 'components/formEditor';
@import 'components/listing';
@import 'components/listing/newsletters';
@import 'components/box';
@import 'components/breadcrumb';
@import 'components/form';
@import 'components/parsley';
@import 'components/formValidation';
@import 'components/settings';
@import 'components/progressBar';
@import 'components/subscribers';
@import 'components/pages';
@import 'components/pagesCustom';
@import 'components/mp2migrator';
@import '../../../node_modules/intro.js/introjs';
@import 'components/newsletterTemplates';
@import 'components/welcomeWizard';
@import 'components/intro';
@import 'components/featureAnnouncement';
@import 'components/newsletterCongratulate.scss';
@import 'components/discounts';
@import 'components/reviewRequest';

View File

@ -1,40 +0,0 @@
@import 'nib'
@require 'select2/dist/css/select2.css'
@require 'datepicker/datepicker'
@require 'badge'
@require 'common'
@require 'modal'
@require 'notice'
@require 'form_editor'
@require 'listing'
@require 'listing/newsletters'
@require 'box'
@require 'breadcrumb'
@require 'form'
@require 'parsley'
@require 'form_validation'
@require 'settings'
@require 'progress_bar'
@require 'subscribers'
@require 'pages'
@require 'pages_custom'
@require 'mp2migrator'
@require '../../../node_modules/react-confirm-alert/src/react-confirm-alert.css'
@require '../../../node_modules/intro.js/introjs.css'
@require 'newsletter_templates'
@require 'welcome_wizard'
@require 'intro'
@require 'in_app_announcements'
@require 'newsletter_congratulate.styl'
@require 'discounts'

View File

@ -0,0 +1,2 @@
@import 'components/globals';
@import 'components/plugins/members';

View File

@ -1,9 +0,0 @@
badge()
text-transform uppercase
cursor pointer
color white
font-size 0.5625rem
font-weight 500
border-radius 3px
letter-spacing 1px
vertical-align middle

View File

@ -1,14 +0,0 @@
.mailpoet_breadcrumb
font-size: 0.9em
text-transform: uppercase
color: #444
.mailpoet_breadcrumb .mailpoet_current
font-weight: bold
.mailpoet_breadcrumb a
text-decoration: none
color: #444
.mailpoet_breadcrumb a:hover
color: darken(#444, 50%)

View File

@ -1,80 +0,0 @@
// clearfix
.clearfix
clearfix()
// disable outline on link focus
a:focus
outline: 0 none !important
// success and error messages
.mailpoet_success
color: #090
.mailpoet_error
color: #900
// hide elements
.mailpoet_hidden
display: none
// add margins to a div
.mailpoet_spaced_block
margin: 1em 0
.mailpoet_centered
text-align: center
// select 2
.select2-container
width: 25em !important
placeholder-color = #999 /* default Select2 placeholder color for single dropdown */
input.select2-search__field::-webkit-input-placeholder
color: placeholder-color
input.select2-search__field:-moz-placeholder
color: placeholder-color
input.select2-search__field::-moz-placeholder
color: placeholder-color
input.select2-search__field:-ms-input-placeholder
color: placeholder-color
.select2-container--default.select2-container--focus .select2-selection--multiple
border: 1px solid #aaa; /* default Select2 border for single dropdown */
// textareas
textarea.regular-text
width: 25em !important
@media screen and (max-width: 782px)
.select2-container
width: 100% !important
// progress bars
progress-border-radius = 5px
progress-background = #efefef
progress-foreground = #69b1e9
progress
background-color: progress-background;
height: 2em
border: 0
width: 100%
progress::-webkit-progress-bar
background-color: progress-background;
progress::-webkit-progress-value
background-color: progress-foreground
border-radius: progress-border-radius
progress::-moz-progress-bar
background-color: progress-foreground
border-radius: progress-border-radius
span.feedback-tooltip
badge()
display inline-block
padding 0 4px
background-color #ca4a1f

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
.mailpoet_breadcrumb {
color: #444;
font-size: 0.9em;
text-transform: uppercase;
}
.mailpoet_breadcrumb .mailpoet_current {
font-weight: bold;
}
.mailpoet_breadcrumb a {
color: #444;
text-decoration: none;
}
.mailpoet_breadcrumb a:hover {
color: darken(#444, 50%);
}

View File

@ -0,0 +1,93 @@
.clearfix {
@include clearfix();
}
a:focus {
outline: 0 none !important;
}
.mailpoet_success {
color: #090;
}
.mailpoet_error {
color: #900;
}
.mailpoet_hidden {
display: none;
}
.mailpoet_spaced_block {
margin: 1em 0;
}
.mailpoet_centered {
text-align: center;
}
.select2-container {
width: 25em !important;
}
$placeholder-color: #999; /* default Select2 placeholder color for single dropdown */
input.select2-search__field::-webkit-input-placeholder {
color: $placeholder-color;
}
input.select2-search__field:-moz-placeholder {
color: $placeholder-color;
}
input.select2-search__field::-moz-placeholder {
color: $placeholder-color;
}
input.select2-search__field:-ms-input-placeholder {
color: $placeholder-color;
}
.select2-container--default.select2-container--focus .select2-selection--multiple {
border: 1px solid #aaa; /* default Select2 border for single dropdown */
}
textarea.regular-text {
width: 25em !important;
}
@media screen and (max-width: 782px) {
.select2-container {
width: 100% !important;
}
}
$progress-border-radius: 5px;
$progress-background: #efefef;
$progress-foreground: #69b1e9;
progress {
background-color: $progress-background;
border: 0;
height: 2em;
width: 100%;
}
progress::-webkit-progress-bar {
background-color: $progress-background;
}
progress::-webkit-progress-value {
background-color: $progress-foreground;
border-radius: $progress-border-radius;
}
progress::-moz-progress-bar {
background-color: $progress-foreground;
border-radius: $progress-border-radius;
}
/* double class is intentional here, we need to be very specific here to
something wrapping our warning message could override its style */
p.sender_email_address_warning.sender_email_address_warning,
p.sender_email_address_warning.sender_email_address_warning a {
align-self: flex-start;
color: #990000;
text-align: left;
}
p.sender_email_address_warning:first-child {
margin-top: 1em;
}

View File

@ -0,0 +1,19 @@
.mailpoet-discount-container {
background: white;
border: 1px solid #FF5301;
margin: 15px;
padding: 20px;
text-align: center;
}
.mailpoet-discount-container h1 {
font-size: 2.8em;
font-weight: 400;
line-height: 1.2em;
margin: 0;
}
.mailpoet-discount-container p {
font-size: 1.2em;
line-height: 1.2em;
}

View File

@ -0,0 +1,25 @@
.mailpoet_feature_announcement {
float: right;
}
.button.mailpoet_feature_announcement_button {
height: 28px;
padding: 0 5px 1px;
position: relative;
}
.mailpoet_feature_announcement_icon {
line-height: 28px;
}
.mailpoet_feature_announcement_dot::before {
background: #d54e21;
border-radius: 10px;
content: "";
display: block;
height: 10px;
position: absolute;
right: -4px;
top: -4px;
width: 10px;
}

View File

@ -0,0 +1,7 @@
.mailpoet_form {
margin: 0 0 20px 0;
}
.mailpoet_form td {
vertical-align: top !important;
}

View File

@ -0,0 +1,658 @@
@import '../../../../node_modules/codemirror/lib/codemirror';
@import '../../../../node_modules/codemirror/theme/neo';
$icons: '../../img/form_editor_icons.png';
$handle_icon: '../../img/handle.png';
#mailpoet_form_name {
font-size: 23px;
}
#mailpoet_form_history {
display: none;
}
#mailpoet_form_editor {
background-color: #fff;
border: 1px solid #ccc;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 20px rgba(0, 0, 0, 0.1);
padding: 20px;
position: relative;
width: 300px;
}
#mailpoet_form_editor:before, #mailpoet_form_editor:after {
background: transparent;
bottom: 12px;
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
content: ' ';
height: 10px;
left: 12px;
position: absolute;
transform: skew(-5deg) rotate(-5deg);
width: 40%;
z-index: -1;
}
#mailpoet_form_editor:after {
left: auto;
right: 12px;
transform: skew(5deg) rotate(5deg);
}
/* Warnings in blocks*/
.mailpoet_warning {
color: #900;
font-weight: bold;
}
.block_placeholder {
border: 0 none;
font-weight: bold;
height: 0;
line-height: 30px;
margin: 0 auto;
overflow: hidden;
text-align: center;
text-indent: -9999px;
width: 298px;
z-index: 9500;
}
.block_placeholder.active {
/*border:1px dashed #dfdfdf;*/
/*background-color:#f5f5f5;*/
background-color: #4cb7e1;
display: block;
height: 30px;
overflow: auto;
text-indent: 0;
}
.block_placeholder.hover {
background-color: #0074a2;
border-color: #0074a2;
color: #fff;
}
.mailpoet_form_block {
background-color: #fff;
border: 0 none;
height: 20px;
}
.mailpoet_form_block.highlighted {
border: 1px solid #5897FB;
padding: 9px 17px;
}
.mailpoet_form_block img {
max-width: 100%;
}
/* Widget styles */
.mailpoet_form_block p {
margin: 5px 0;
word-wrap: break-word;
}
/* Widget: checkbox, radio */
.mailpoet_radio,
.mailpoet_checkbox {
margin: -2px 5px 0 0;
}
/* MailPoet Form wrapper */
#mailpoet_form_wrapper {
margin: 20px 0 0 0;
position: relative;
}
/* MailPoet Form container */
#mailpoet_form_container {
margin: 0;
width: 340px;
}
#mailpoet_form_editor.loading, #mailpoet_form_toolbar.loading {
background: url(loading.gif) no-repeat center center #fcfcfc;
}
#mailpoet_form_toolbar.loading {
border: 1px solid #dfdfdf;
}
#mailpoet_form_toolbar.loading #mailpoet_toolbar_fields {
visibility: hidden;
z-index: 1;
}
/* Tabs : content/images/styles/themes */
#wysija-add-field {
float: none;
}
#mailpoet_form_toolbar {
position: absolute;
width: 400px;
z-index: 999;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs {
border-bottom: 1px solid #dfdfdf;
line-height: 0;
}
#mailpoet_form_toolbar .add_custom_field {
padding: 15px 0 5px 0;
text-align: center;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs li, #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a {
display: inline-block;
*display: inline;
*float: left;
height: 30px;
line-height: 30px;
margin: 0;
outline: 0 none;
padding: 0;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a {
color: #a6a6a6;
outline: 0 none;
text-decoration: none;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs li {
margin: 0 0 1px 0;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a {
background: linear-gradient(center top, #F9F9F9, #F5F5F5);
background-color: #F5F5F5;
border: 1px solid #DFDFDF;
border-radius: 3px 3px 0 0;
box-shadow: 0 1px 0 #FFFFFF inset;
font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
padding: 0 7px;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a:hover {
background-color: #eee;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a.selected {
background: #fcfcfc;
border-bottom: 0 none;
color: #000;
filter: none;
padding-bottom: 1px;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs .last a,
.wysija_params {
display: none !important;
}
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs, #mailpoet_form_toolbar #mailpoet_toolbar_fields {
margin: 0;
position: relative;
z-index: 9998;
}
/* edit form name */
#mailpoet_form_name_input {
vertical-align: bottom;
}
/* wysija widgets */
.mailpoet_form_widget {
height: 25px;
line-height: 25px;
width: 298px;
z-index: 9999 !important;
}
.mailpoet_toolbar_section {
background: none repeat scroll 0 0 #fff;
border: 1px solid #e5e5e5;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
cursor: pointer;
margin-bottom: 0;
max-height: 2000px;
min-width: 255px;
overflow: hidden;
position: relative;
transition: max-height 0.5s ease-in-out;
}
.mailpoet_toolbar_section > div {
height: 100%;
min-width: 255px;
overflow: auto;
padding: 10px 20px 20px 20px;
}
.mailpoet_toolbar_section h3 {
margin: 10px;
position: relative;
}
.mailpoet_toolbar_section.closed {
max-height: 38px;
}
.mailpoet_toolbar_section .mailpoet_toggle {
height: 38px;
position: absolute;
right: 0;
top: 0;
width: 27px;
}
.mailpoet_toolbar_section .mailpoet_toggle:focus {
box-shadow: none !important;
outline: 0 none !important;
}
.mailpoet_toolbar_section .mailpoet_toggle:before {
content: '\f142';
display: inline-block;
font: 400 20px / 1 dashicons;
padding: 8px 10px;
position: relative;
right: 12px;
speak: none;
text-decoration: none !important;
top: 0;
}
.mailpoet_toolbar_section.closed .mailpoet_toggle:before {
content: '\f140';
}
#mailpoet_form_styles {
margin: 10px;
max-width: 318px;
min-height: 300px;
resize: vertical;
width: 318px;
}
#mailpoet_form_toolbar a.mailpoet_form_field,
.mailpoet_form_widget {
background: linear-gradient(center 0, #F9F9F9, #ececec);
background-color: #F5F5F5;
border: 1px solid #DFDFDF;
border-radius: 3px;
box-shadow: 0 1px 0 #FFFFFF inset;
color: #222;
cursor: move;
display: block;
font-size: 12px;
font-weight: bold;
height: 25px;
line-height: 25px;
padding: 0 7px;
text-shadow: 0 1px 0 #FFFFFF;
}
#mailpoet_form_toolbar a.mailpoet_form_field.disabled {
color: #cccccc;
cursor: pointer;
pointer-events: none;
}
.mailpoet_form_field_edit {
bottom: 13px;
position: absolute;
right: 27px;
}
.mailpoet_form_field_delete {
bottom: 13px;
position: absolute;
right: 7px;
}
/* toolbar: fields */
#mailpoet_toolbar_fields li {
padding: 0 0 10px 0;
position: relative;
}
#mailpoet_toolbar_fields li.notice {
background: none !important;
border: 0 none !important;
font-size: 11px;
font-style: italic;
margin: 0 !important;
}
/* blocks */
.mailpoet_form_block {
display: inline-table;
display: block;
height: 1%;
margin: 0;
margin: 0;
padding: 10px 18px 10px 18px;
position: relative;
z-index: 98;
}
.mailpoet_form_block.dragging {
pointer-events: none;
z-index: 99000;
}
.mailpoet_form_block:after {
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
}
.mailpoet_form_block.hover {
border: 1px dashed #bbb;
margin: 0 0 0 0;
padding: 9px 17px 9px 17px;
}
.mailpoet_form_block.static {
/*padding:0;
margin:0;*/
background-color: #999;
}
/* controls*/
.mailpoet_form_block .wysija_controls {
background: linear-gradient(center 0, #eee, #bbb);
background-color: #dfdfdf;
border: 1px solid #ccc;
border-radius: 2px;
height: 20px;
left: -1px;
margin: 0;
padding: 0;
position: absolute;
right: 0;
top: -22px;
width: 298px;
}
.mailpoet_form_block .wysija_controls li {
float: left;
height: 20px;
width: 20px;
}
.mailpoet_form_block .wysija_controls a {
color: #000;
cursor: pointer;
float: left;
font-size: 120%;
font-weight: bold;
height: 20px;
line-height: 20px;
text-align: center;
width: 20px;
}
.mailpoet_form_block .wysija_controls a.remove {
margin: 0 0 0 1px;
}
.mailpoet_form_block .handle_container,
.mailpoet_form_block .handle_container a {
float: none;
width: 40px !important;
}
.mailpoet_form_block .handle_container {
left: 140px;
position: absolute;
top: 0;
}
/* controls & icons */
.wysija_controls a span,
.wysija_gallery .wysija_tools a span,
.wysija_image .wysija_tools a span,
.wysija_text .wysija_tools a span, #mailpoet_toolbar_fields a span {
display: block;
height: 20px;
width: 20px;
}
/* toolbar: full width button */
/* color picker in control bars */
.wysija_controls span input {
color: transparent;
margin: 2px 0 0 0;
padding: 0;
}
/* left alignment button */
.alignment-left span {
background: url($icons) no-repeat 0 0;
}
.alignment-left.active span,
.alignment-left:hover span {
background: url($icons) no-repeat 0 -20px;
}
/* center alignment button */
.alignment-center span {
background: url($icons) no-repeat -20px 0;
}
.alignment-center.active span,
.alignment-center:hover span {
background: url($icons) no-repeat -20px -20px;
}
/* right alignment button */
.alignment-right span {
background: url($icons) no-repeat -40px 0;
}
.alignment-right.active span,
.alignment-right:hover span {
background: url($icons) no-repeat -40px -20px;
}
/* linking */
.add-link span {
background: url($icons) no-repeat -60px 0;
}
.add-link.active span,
.add-link:hover span {
background: url($icons) no-repeat -60px -20px;
}
.remove-link span {
background: url($icons) no-repeat -80px 0;
}
.remove-link.active span,
.remove-link:hover span {
background: url($icons) no-repeat -80px -20px;
}
/* block controls */
.remove span,
.delete span {
background: url($icons) no-repeat -100px 0;
}
.remove.active span,
.remove:hover span,
.delete.active span,
.delete:hover span {
background: url($icons) no-repeat -100px -20px;
}
.handle span {
background: url($handle_icon) no-repeat;
cursor: move;
width: 40px !important;
}
.duplicate span {
background: url($icons) no-repeat -140px 0;
}
.duplicate.active span,
.duplicate:hover span {
background: url($icons) no-repeat -140px -20px;
}
.settings span {
background: url($icons) no-repeat -160px 0;
}
.settings.active span,
.settings:hover span {
background: url($icons) no-repeat -160px -20px;
}
.icon-plus span {
background: url($icons) no-repeat -200px 0;
}
.icon-plus.active span,
.icon-plus:hover span {
background: url($icons) no-repeat -200px -20px;
}
.icon-minus span {
background: url($icons) no-repeat -220px 0;
}
.icon-minus.active span,
.icon-minus:hover span {
background: url($icons) no-repeat -220px -20px;
}
/* wysija options */
.wysija_options {
display: none;
}
/* wysija block settings */
.wysija_settings {
position: absolute;
z-index: 1000;
}
.wysija_settings a {
background: linear-gradient(center 0, #F9F9F9, #ececec);
background-color: #F5F5F5;
border: 1px solid #DFDFDF;
border-radius: 3px;
box-shadow: 0 1px 0 #FFFFFF inset;
color: #222;
cursor: pointer;
display: block;
font-size: 12px;
font-weight: normal;
padding: 5px 5px 3px 27px;
text-decoration: none;
text-shadow: 0 1px 0 #FFFFFF;
}
.wysija_settings a span {
height: 20px;
left: 5px;
position: absolute;
top: 3px;
width: 20px;
}
/* labels */
.mailpoet_form_block label {
display: block;
margin: 0 5px 0 0;
}
/* form settings: success message */
#mailpoet_on_success textarea, #mailpoet_on_success select {
width: 100%;
}
#mailpoet_on_success textarea {
height: 50px;
min-height: 50px;
resize: vertical;
}
/* make sure textareas within the form editor are not resizeable */
.mailpoet_form_block textarea {
resize: none;
}
/* remove click events from inputs within form editor */
.mailpoet_form_block input,
.mailpoet_form_block textarea {
pointer-events: none;
}
/* form export */
#mailpoet_form_export textarea {
display: none;
font-size: 85%;
height: 150px;
min-height: 150px;
resize: vertical;
width: 340px;
}
/** Styling for WP 3.8 and higher */
.mailpoet_form_field_edit,
.mailpoet_form_field_delete {
text-decoration: none;
}
.mailpoet_form_field_edit:hover .dashicons-admin-generic:before,
.mailpoet_form_field_delete:hover .dashicons-dismiss:before,
.settings:hover .dashicons-admin-generic:before {
color: #2ea2cc;
}
.mailpoet_form_field_edit span,
.mailpoet_form_field_delete span {
background: none !important;
color: #999;
}
.mailpoet_form_field_delete span:before {
font-size: 21px;
}
/* Code Mirror */
.CodeMirror {
border: 1px solid #eee;
}
/* Settings */
#mailpoet_form_segments.parsley-error + span .select2-selection {
border: 1px solid #b94a48;
}
.mailpoet_form_field_settings_text {
min-height: 100px;
width: 100%;
}

View File

@ -0,0 +1,8 @@
.parsley-errors-list {
margin-top: 8px;
}
.parsley-required,
.parsley-custom-error-message {
color: #b94a48;
}

View File

@ -1,33 +1,22 @@
@import 'nib'
@require 'icons'
/*
Style for Members plugin
*/
.members-tab-title
.mailpoet-icon-logo
vertical-align: middle;
height: 20px;
width: 20px;
font-size: 20px;
margin-right: 3px;
#wpbody
#wpbody {
padding-bottom: 20px;
}
/* menu icon */
#adminmenu #toplevel_page_mailpoet-newsletters .wp-menu-image
background-size: 18px 18px;
background-repeat: no-repeat;
#adminmenu #toplevel_page_mailpoet-newsletters .wp-menu-image {
background-position: center;
background-repeat: no-repeat;
background-size: 18px 18px;
}
#adminmenu #toplevel_page_mailpoet-newsletters.wp-not-current-submenu .wp-menu-image
#adminmenu #toplevel_page_mailpoet-newsletters.wp-not-current-submenu .wp-menu-image {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABcFJREFUeNrsWHtsU1UYP7e37/W9MDYYInSosI6XEBhjgxEEDBI0GNTEGFFgEkR5iEGFsChBghJgSwBh4RElGhN1iQy2MF5jjMfYg40NeQxhjiEra2nXrrfry98pt1hqW1hj+YuTfOm95/R8/Z1zvu/3/U4ZEqV9uX7jZH3akAKXy5UR6NPpEjdtWJe/vurUSVO0uROyssmq1fnTTabOPXhN4bs5oVC476/Wmx98tnJZ2HkCEr2tgRmCO8xm09JPVq2emT0pN+pEj8czjmGYrXhMDuqWwmbBZkea9yhAOhgT3OHz+VisMlcgEPSNNCkrexIBaAN257nQ+WhimDZWQGEbVp7ldDoHRxoH4CSpVJoJ8EwkF/8rIBybfsmyFZkTcyaHHec4BwWbFYvvmAB5vV5WpVKPk0pl/f8TzBNzyOKPlmeYzeYhTwwQ316y220ZoZ1yeUKiVqcb6/V62CcK6J7ZrH1/4SIDDeDgZrPZRuPj1Vj9xgzI7XaT5JR+L2o02pR/uSeHvDc/b7jl3r0+fFcPzBpPQF0UC59pxOf1vtzVZR3/gCMSE5P7pw4YDSINdN2GVccTUCXsz8CL1WpRz33r7VE0kP3vFssoxM5UP1ifj0gkkssqtXo/kiBugDpgJ2Gd/vPo6SGD9PpMpVKZlp4xnMx5480RAJlEx2QyGamtOd+4vXBrk1qtjg8grFSGdC8B6V2lO0B3wuN2jzcajQaFQiF6/oWhIylInhxvddz5+/CF+lqhWCyJDyCVSiXbt6foZE31uYt0B/xZ1dWlmDlr9rPTZswcZ+rszAo6ritqtaZSLBYr6XtcAEkkUvbc2aru1tabx0Ui8V3ahxJChqVnTIMtxXOqv4JKZc7a2vOnyw4dsCtVKnHcghor9QGUBjFRhh24GDg2p5ObBHuFPvurp1jceuP69WOX/7hEpPxOxo2HECuSyooTd+sQsYilQPrI6QbyoOlxNau1Wn+6+3qRYTEBksvlpLmpkVxqvngEP9waOg6Q9gv1dVUnjh6xxIOpQ+sRi0zzz9FoNKeRPfXBAUufcZw3rrdcrairqY4kNZgwfh8bkDso5UlCgqJbKBI56Hv12TOWlmtXypFJrgAoxBdpbKivaaivawxmi4dWxLJSHLs9opaKejwJCfuVShXrcvUkyWRyY8WJo7+2t7X5s6v63BnCObniBXmLdYPT0qY7OQ5lTXfl4IHinRizB4m1FnDXUfgYLWBZH+rcscNlpRHLCRMN0OzXXhf0SUqaAH08EGzcCg6qgkNP8HcoQ+dOmTrMbrdDJcpq62qrrWeqTj0YH/DMQPiZMxDj07E75HZ7+5GS34tbyNP2tMWpMajQ9HMQLPV+WgobQHyWJwVgaLpB6/V40vkEa2eKD5bT28EO2JT7qS5f9/nK5b+ZOu8aeQka6e5luXWrjbPbbOHogqSmDpBD5ioiZDLtk4HD+mzYtGWuw8GtCAhAZu/+n9fiIT+EbTmBgK3kBZkvDJl61FrN2aId205VVVbcMBo7zJAhJEGhIH2TkhPHjs9MW/Thx9m4CNBbiSiEHH18n97r844BjZBAUfYj/f6nXz4Fz3wdg1jz7wR4quCHfbsLSksOtE2dNkM/b37eEmPHnTzwDoPrdu9j6JvNhfq+ySk/AuVQAFP01gHdURTU02KJZBfU4rucw5ETvOLHLqosS9n9mn/mxs2FVMOsBvcvwKrUvJSIVAAZgBA+jgqkwGDuMMceXOc4+OoymTp343ntQ0vZ8O0WOerODBzHFP5vFCaMAwlEl0EkEvWjei0KGKfb7Wp3dDua6I+GCQkKsgPfO9btsB9auXSJ7ZG1LFJ7Z958FXT0FxzHLQQoTRgwVmilbeVlpWuKdm5z98Z3TPdv3CScKKTlGcNHeHEpzAlRDU7c79eXHirJ371ru7e3vtlYCa3hQh2VqjdHjhpjgLh/8E8HVMFxVPOv9hZ9Z43F7z8CDAAMFFaTyVAO5gAAAABJRU5ErkJggg==');
}
#adminmenu #toplevel_page_mailpoet-newsletters.wp-has-current-submenu .wp-menu-image
#adminmenu #toplevel_page_mailpoet-newsletters.wp-has-current-submenu .wp-menu-image {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAa9JREFUeNrsWO2NgkAUnGeuAErgOuAq0A7YDs4OtIPLVWCsQK8CtQJKkA6kA+lg7s+a4Mp+HLtgLnESfoDsY3gz77FPwAKSGckD71GRzBAAkorkxVi/wVCQXLIfu4C1GcmrZX3hWjtz/JZbrquALCkAtnuyoYTgCKg895RDlZkNXFe65AognJyQS7bBZGIIuR5cPotQmVqu6AyRzD1Za8YmVHsImFnbjk3oxzj/dMjV9LxAckJ747zoyKY85NMTEpEWwNEi28pDfjRTm2++0lnqfqNqEWkmISQiRwCt8c37SiFXTNmbcixTyBVDyJWBo/badIREpHaU9OlZnbovS62I7MciZFZJ2+OT1uOdNiDuHd5cXgAw7+wct2ZPIvnRMXRjZkdEapLfOg4AnIa2gxde+L8gmesJtSK5nvjZiuRZHwsAEJIXYyisdbetLX3kVuKNZxQq9GGbTuYAFsa1d3A4ziSVQWTR83/AX7CEDhyDg57lN5FxriRzJAwWg+phgtHm3iTIWCguJHc3M8dURhHgkwd/TVGya5unntnDqh5CWUzMWSQnc5O2j9m+AsDvAIQNSWYrVntNAAAAAElFTkSuQmCC');
}
#adminmenu #toplevel_page_mailpoet-newsletters a:hover .wp-menu-image
#adminmenu #toplevel_page_mailpoet-newsletters a:hover .wp-menu-image {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAa9JREFUeNrsWO2NgkAUnGeuAErgOuAq0A7YDs4OtIPLVWCsQK8CtQJKkA6kA+lg7s+a4Mp+HLtgLnESfoDsY3gz77FPwAKSGckD71GRzBAAkorkxVi/wVCQXLIfu4C1GcmrZX3hWjtz/JZbrquALCkAtnuyoYTgCKg895RDlZkNXFe65AognJyQS7bBZGIIuR5cPotQmVqu6AyRzD1Za8YmVHsImFnbjk3oxzj/dMjV9LxAckJ747zoyKY85NMTEpEWwNEi28pDfjRTm2++0lnqfqNqEWkmISQiRwCt8c37SiFXTNmbcixTyBVDyJWBo/badIREpHaU9OlZnbovS62I7MciZFZJ2+OT1uOdNiDuHd5cXgAw7+wct2ZPIvnRMXRjZkdEapLfOg4AnIa2gxde+L8gmesJtSK5nvjZiuRZHwsAEJIXYyisdbetLX3kVuKNZxQq9GGbTuYAFsa1d3A4ziSVQWTR83/AX7CEDhyDg57lN5FxriRzJAwWg+phgtHm3iTIWCguJHc3M8dURhHgkwd/TVGya5unntnDqh5CWUzMWSQnc5O2j9m+AsDvAIQNSWYrVntNAAAAAElFTkSuQmCC');
}

View File

@ -0,0 +1,139 @@
.mailpoet_hidden, .mailpoet_validation_error {
display: none;
}
.form-table {
th {
width: 300px;
}
}
#paste_input {
width: 100%;
}
input[type="radio"] {
margin-right: 0.5em !important;
& + span {
margin-right: 2.5em;
}
}
span {
&.mailpoet_mailchimp-key-status {
&.mailpoet_mailchimp-ok {
&:before {
color: #0e90d2;
content: "\2713";
margin-left: 15px;
}
}
&.mailpoet_mailchimp-error {
&:before {
color: #900;
content: "\2717";
margin-left: 15px;
}
}
}
}
#subscribers_data {
overflow: auto;
table {
width: auto;
}
td {
padding: 0.5em;
}
& > table {
& > tbody {
& > td {
padding: 0.5em;
}
& > tr {
&:nth-child(odd) {
background: #f9f9f9;
}
}
}
}
.mailpoet_header {
font-weight: 600;
text-decoration: underline;
text-transform: uppercase;
}
}
#subscribers_data th:first-child, #subscribers_data td:first-child {
padding: 0 1em 0 1em !important;
text-align: center !important;
vertical-align: inherit !important;
width: 10em !important;
}
#subscribers_data {
& > table {
& > thead {
& > tr {
& > th {
& > span {
width: 15em !important;
}
}
}
}
}
}
.mailpoet_data_match {
color: #0e90d2;
margin-left: 0.25em;
}
.mailpoet_import_error, .mailpoet_validation_error {
color: #900;
}
tr {
&.mailpoet_segments {
& > td {
& > a {
margin-left: 15px;
}
}
}
}
span {
&.select2-search {
&.select2-search--dropdown {
display: none !important;
}
}
}
.mailpoet_import_validation_step {
display: flex;
flex-direction: column;
max-width: 600px;
.mailpoet_import_step_buttons {
flex-direction: row;
margin-top: 1.5em;
}
p {
margin-left: 2em;
}
label {
margin-bottom: 0.3em;
margin-top: 1.5em;
padding-left: 35px;
text-indent: -35px;
input {
margin-right: 0.5em;
}
}
}

View File

@ -0,0 +1,78 @@
.mailpoet-intro-active #adminmenuback {
z-index: auto;
}
#adminmenuwrap.introjs-fixParent {
position: absolute;
}
#adminmenu li.introjs-showElement {
background: inherit;
}
.introjs-helperLayer {
background-color: rgba(255, 255, 255, 0.7);
border: none;
border-radius: 3px;
}
.introjs-tooltip {
min-width: 240px;
&[style*="top:"] {
margin-top: -8px;
}
}
.introjs-tooltip .introjs-tooltipbuttons {
display: flex;
justify-content: flex-end;
}
.introjs-tooltip .button {
margin-top: 15px;
position: relative;
&:hover, &:focus {
z-index: 1;
}
&:focus {
height: 100%;
margin-bottom: -1px;
&:after {
background: #5b9dd9;
bottom: 0;
content: '';
height: 1px;
left: 0;
position: absolute;
right: 0;
}
}
&.introjs-hidden {
display: none;
}
&.introjs-skipbutton:not(.introjs-donebutton) {
margin-right: auto;
& + .button {
margin-left: 10px;
}
}
&.introjs-donebutton {
order: 1;
}
&.introjs-prevbutton {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
&:not(.introjs-hidden) + .introjs-nextbutton, &.introjs-donebutton {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
margin-left: -1px;
}
}

View File

@ -0,0 +1,44 @@
.mailpoet_listing_loading tbody tr,
.mailpoet_form_loading tbody tr {
opacity: 0.2;
}
.mailpoet_select_all {
background-color: #f1f1f1;
}
.mailpoet_select_all td {
text-align: center;
}
.mailpoet_listing_table {
th span {
white-space: nowrap;
}
thead .mailpoet-check-column,
tfoot .mailpoet-check-column {
padding: 10px 0 0 3px;
vertical-align: top;
width: 2.2em;
}
tbody .mailpoet-check-column {
margin: 0 0 0 8px;
padding: 11px 0 0 3px;
vertical-align: text-top;
}
thead th.column-primary,
tfoot th.column-primary {
width: 25em;
}
@media screen and (max-width: 782px) {
thead th.column-primary,
tfoot th.column-primary {
width: 100%;
}
}
}

View File

@ -0,0 +1,7 @@
@mixin clearfix {
&:after {
clear: both;
content: '';
display: table;
}
}

View File

@ -0,0 +1,263 @@
$modal_title_color: #cfcfcf;
$modal_highlight_background_color: #f1f1f1;
$modal_background_color: #fff;
$modal_popup_margin: 30px;
$modal_popup_margin_mobile: 10px;
$modal_popup_padding: 30px;
$modal_popup_padding_mobile: 12px;
$modal_close_button_size: 23px;
$overlay_background_color: rgba(0, 0, 0, 0.6);
body.mailpoet_modal_opened {
overflow: hidden;
}
.mailpoet_modal_overlay {
align-items: center;
background-color: $overlay_background_color;
box-sizing: border-box;
display: flex;
height: 100%;
justify-content: center;
left: 0;
overflow-x: hidden;
overflow-y: auto;
padding: $modal_popup_margin;
position: fixed;
top: 0;
width: 100%;
z-index: 100000;
}
.mailpoet_modal_highlight {
background-color: $modal_highlight_background_color;
box-shadow: 0px 0px 20px 2px rgba(#fff, 75%);
pointer-events: none;
position: relative;
z-index: 100001 !important;
}
.mailpoet_modal_overlay.mailpoet_overlay_hidden {
background-color: transparent;
}
.mailpoet_modal_overlay.mailpoet_overlay_loading {
background-color: $overlay_background_color !important;
display: flex !important;
}
.mailpoet_popup {
animation: mailpoet_popup_fadein 0.5s;
margin: auto;
max-width: 100%;
z-index: 25;
}
@keyframes mailpoet_popup_fadein {
from { opacity: 0; }
to { opacity: 1; }
}
.mailpoet_popup_wrapper {
background-color: $modal_background_color;
border-radius: 4px;
box-shadow: 1px 2px 4px #343434;
box-sizing: border-box;
display: flex;
flex-flow: column;
height: 100%;
overflow: hidden;
padding: $modal_popup_padding;
position: relative;
width: 100%;
z-index: 0;
}
.mailpoet_overlay_hidden .mailpoet_popup_wrapper {
border: 1px solid #333;
}
.mailpoet_popup_title h2 {
font-size: 23px;
font-weight: 600;
line-height: 29px;
margin: 0 ($modal_close_button_size + 20) 0 0;
}
.mailpoet_popup_body {
flex-grow: 1;
margin-top: 20px;
position: relative;
.button + .button {
margin-left: 10px;
}
}
.mailpoet_popup_has_title .mailpoet_popup_body {
margin-top: 30px;
}
.mailpoet_modal_overlay.mailpoet_panel_overlay {
overflow: hidden;
top: 32px;
}
.mailpoet_panel {
bottom: 0;
display: none;
margin: 0;
padding: 0;
position: fixed;
top: 0;
transition: margin 350ms ease-out;
width: 100%;
z-index: 100002;
}
.mailpoet_panel_wrapper {
background-color: #f1f1f1;
border: 1px solid #e1e1e1;
border-top: 0 none;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
top: 0;
width: 100%;
z-index: 0;
}
.mailpoet_panel_title {
height: 0;
margin: 0;
padding: 0;
position: relative;
}
.mailpoet_panel_title h2 {
border-left: 1px solid #444;
border-right: 1px solid #444;
color: $modal_title_color;
font-family: "Lucida Grande", Verdana, Arial, sans-serif;
font-size: 1em;
font-weight: normal;
line-height: 32px;
margin: 0;
padding: 0 30px 0 10px;
}
.mailpoet_panel_body {
padding: 10px 10px 36px 10px;
}
.mailpoet_modal_close {
cursor: pointer;
outline: 0 none;
overflow: hidden;
padding: 0;
position: absolute;
z-index: 2;
svg {
opacity: 0.5;
stroke: #979797;
&:hover {
stroke: #636363;
}
}
}
.mailpoet_popup .mailpoet_modal_close {
height: $modal_close_button_size;
padding: 3px 0;
right: $modal_popup_padding;
top: $modal_popup_padding;
width: $modal_close_button_size;
}
.mailpoet_panel .mailpoet_modal_close {
height: 16px;
padding: 2px 0;
right: 20px;
top: 20px;
width: 16px;
}
.mailpoet_modal_close:focus {
outline: 0 none;
}
.mailpoet_align_left {
margin: 0;
text-align: left;
}
.mailpoet_align_center {
margin: 0;
text-align: center;
}
.mailpoet_align_right {
margin: 0;
text-align: right;
}
@media screen and (max-width: 782px) {
.mailpoet_modal_overlay {
padding: $modal_popup_margin_mobile;
}
.mailpoet_popup {
min-width: auto !important;
width: 100%;
}
.mailpoet_popup_wrapper {
padding: $modal_popup_padding_mobile;
}
.mailpoet_popup_title h2 {
margin-right: $modal_close_button_size + 10;
}
.mailpoet_popup .mailpoet_modal_close {
right: $modal_popup_padding_mobile;
top: $modal_popup_padding_mobile;
}
.mailpoet_modal_overlay.mailpoet_panel_overlay {
top: 46px;
}
.mailpoet_panel_body {
padding-bottom: 52px;
}
}
.mailpoet_loading {
display: flex;
flex-direction: row;
height: 32px;
width: 150px;
}
.mailpoet_modal_loading {
animation-direction: linear;
animation-duration: 1.9500000000000002s;
animation-iteration-count: infinite;
animation-name: bounce_mailpoet_modal_loading;
background-color: #E01D4E;
border-radius: 21px;
height: 32px;
margin-left: 17px;
width: 32px;
}
.mailpoet_modal_loading_1, .mailpoet_modal_loading_1 {
animation-delay: 0.39s;
}
.mailpoet_modal_loading_2, .mailpoet_modal_loading_2 {
animation-delay: 0.9099999999999999s;
}
.mailpoet_modal_loading_3, .mailpoet_modal_loading_3 {
animation-delay: 1.1700000000000002s;
}
@keyframes bounce_mailpoet_modal_loading {
0%, 50% { background-color: #064E6D; }
}

View File

@ -0,0 +1,38 @@
#logger {
background-color: transparent;
border: 0;
border-top: 1px #aba9a9 solid;
font-size: 0.85em;
height: 300px;
margin-top: 20px;
overflow: scroll;
padding: 2px;
resize: both;
width: 100%;
}
#progressbar {
background-color: #d8d8d8;
border-radius: 5px;
width: 50%;
}
$progressbar_color: #fecf23;
$progressbar_gradient_to_color: #fd9215;
.ui-progressbar .ui-progressbar-value {
background-color: $progressbar_color;
background-image: linear-gradient(to bottom, $progressbar_color, $progressbar_gradient_to_color);
border: 0;
border-radius: 3px;
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset;
height: 100%;
}
.mailpoet_progress_label {
font-size: 15px;
}
.error_msg {
color: #f00;
}

View File

@ -0,0 +1,37 @@
.newsletter_congratulate_page {
margin-top: 30px;
}
.mailpoet_newsletter_loading {
text-align: center;
.mailpoet_loading {
margin: 100px auto 0 auto;
}
.mailpoet_newsletter_loading_header {
margin: 30px;
}
}
.mailpoet_congratulate_success {
width: 100%;
h1 {
margin-bottom: 30px;
text-align: center;
}
img, .button {
display: block;
margin-left: auto;
margin-right: auto;
}
.typeform-widget {
height: 350px;
margin: 0 auto 30px;
max-width: 100%;
width: 500px;
}
}

View File

@ -0,0 +1,10 @@
@import 'newsletterEditor/variables';
.mailpoet_template_iframe {
left: 0;
max-width: $newsletter-width;
position: absolute;
top: 0;
width: $newsletter-width;
z-index: -9999;
}

View File

@ -0,0 +1,6 @@
.mailpoet_notice {
clear: both;
position: relative;
p:empty { display: none; }
}

View File

@ -0,0 +1,302 @@
/*
Based on /wp-admin/css/about.css of WP 4.7.
This is to make MailPoet pages independent of the WordPress
About page styles that may differ across WP versions.
Please add custom styles to pages_custom.styl
*/
.mailpoet-about-wrap {
font-size: 15px;
margin: 25px 40px 0 20px;
max-width: 1050px; /* readability */
position: relative;
div.updated, div.error, .notice {
display: none !important;
}
hr {
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
height: 0;
margin: 0;
}
img {
height: auto;
margin: 0;
max-width: 100%;
vertical-align: middle;
}
.mailpoet-logo {
position: absolute;
right: 0;
top: 0.2em;
}
.nav-tab {
font-size: 18px;
padding-left: 15px;
padding-right: 15px;
}
p {
font-size: 14px;
line-height: 1.5;
}
.feature-section p {
margin-left: auto;
margin-right: auto;
max-width: 55em;
}
h1 {
color: #32373c;
font-size: 2.8em;
font-weight: 400;
line-height: 1.2em;
margin: 1em 0 0.5em 0;
padding: 0;
text-align: center;
}
h1.welcome {
margin-right: 200px;
text-align: left;
}
h2 {
font-size: 2.7em;
font-weight: 300;
line-height: 1.3;
margin: 40px 0 0.6em;
text-align: center;
}
h3 {
font-size: 1.4em;
line-height: 1.5;
margin: 1.25em 0 0.6em;
}
h4 {
color: #23282d;
}
.about-description,
.about-text {
font-size: 19px;
font-weight: 400;
line-height: 1.6em;
margin-top: 1.4em;
}
.about-text {
color: #555d66;
margin: 1em 200px 1em 0;
min-height: 60px;
}
[class$=col] {
.col {
float: left;
position: relative;
}
}
.two-col {
.col {
margin-right: 4.799999999%;
width: 47.6%;
}
}
.two-col {
img {
margin-bottom: 1.5em;
}
}
.feature-section {
&.two-col {
.col {
display: inline-block;
float: none;
margin-right: 4.799999999%;
margin-top: 1em;
vertical-align: top;
width: calc(47.6% - 4px);
}
}
}
.three-col {
.col {
margin-right: 4.999999999%;
width: 29.95%;
}
}
.two-col .col:nth-of-type(2n),
.three-col .col:nth-of-type(3n) {
margin-right: 0;
}
.feature-section {
&.two-col {
h3 {
margin-top: 0;
}
}
}
.feature-section {
h4 {
font-size: 1em;
margin: 1.4em 0 0.6em 0;
}
}
.feature-section {
p {
margin-top: 0.6em;
}
}
.lead-description {
font-size: 1.5em;
text-align: center;
}
.two-col-text {
column-count: 2;
column-gap: 40px;
}
.two-col-text {
p:first-of-type {
margin-top: 0;
}
}
.headline-feature {
&.feature-video {
height: 0;
margin: 40px 0;
max-width: 100%;
padding-bottom: 56.25%;
position: relative;
text-align: center;
width: 100%;
}
}
.feature-video {
embed {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
}
.featured-image {
text-align: center;
}
.feature-section {
overflow: hidden;
padding: 0 0 40px;
}
.feature-section {
&.no-heading {
padding-top: 35px;
}
}
.headline-feature {
margin: 0 auto;
max-width: 80%;
}
.feature-section {
.media-container {
overflow: hidden;
}
}
.feature-section {
img {
margin-bottom: 1em;
}
}
.embed-container {
text-align: center;
}
.embed-container {
iframe {
max-width: 100%;
}
}
.wp-embedded-content {
max-width: 100%;
}
.feature-section {
.col {
margin-top: 40px;
}
}
.changelog {
margin-bottom: 40px;
}
.changelog {
&.feature-section {
.col {
margin-top: 40px;
}
}
}
@media screen and (max-width: 782px) {
.two-col-text {
column-count: 1;
}
.three-col img {
display: block;
margin: 0 auto;
}
}
@media screen and (max-width: 500px) {
margin-left: 10px;
margin-right: 20px;
h1,
.about-text {
margin-right: 0;
}
.about-text {
margin-bottom: 0.25em;
}
.mailpoet-logo {
margin: 1em 0;
position: relative;
text-align: center;
width: 100%;
}
.two-col .col,
.three-col .col {
float: none !important;
width: 100% !important;
}
}
}

View File

@ -0,0 +1,59 @@
/*
Custom styles for MailPoet pages.
*/
.mailpoet-about-wrap {
.videoWrapper {
/*padding-top: 25px*/
height: 0;
padding-bottom: 56.25%; /* 16:9 */
position: relative;
iframe {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
}
.mailpoet_video {
border: 1px solid rgba(0, 0, 0, 0.1);
}
#mailpoet-changelog ul {
list-style: disc;
padding-left: 20px;
}
h2.mailpoet-feature-top {
margin: 50px auto;
}
a.button.go-to-plugin {
margin-top: 2em;
}
p.top-space-triple {
margin-top: 3em;
}
p.mailpoet-top-text {
margin-right: 0;
}
ul.default-list {
list-style-type: disc;
margin-left: 40px;
}
.half-width-centered {
display: block;
margin-left: auto;
margin-right: auto;
max-width: 50%;
}
}

View File

@ -0,0 +1,29 @@
input.parsley-success,
select.parsley-success,
textarea.parsley-success {
background-color: #DFF0D8;
border: 1px solid #D6E9C6;
color: #468847;
}
input.parsley-error,
select.parsley-error,
textarea.parsley-error {
background-color: #F2DEDE;
border: 1px solid #EED3D7;
color: #B94A48;
}
.parsley-errors-list {
color: #B94A48;
font-size: 0.9em;
line-height: 0.9em;
list-style-type: none;
margin: 2px 0 3px;
opacity: 0;
padding: 0;
transition: all 0.3s ease-in;
&.filled {
opacity: 1;
}
}

View File

@ -0,0 +1,79 @@
.mailpoet_progress {
background-color: #efefef;
border-radius: 5px;
height: 25px;
margin: 0;
margin-bottom: 10px;
padding: 0;
position: relative;
width: 100%;
}
.mailpoet_progress_label {
display: inline-block;
margin: 2px 0 0 0;
position: absolute;
text-align: center;
width: 100%;
}
.mailpoet_progress_bar {
background-color: #34c2e3;
background-image: linear-gradient(to bottom, #34c2e3, darken(#34c2e3, 20%));
border-radius: 3px;
box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
display: inline-block;
height: 100%;
position: absolute;
}
.mailpoet_progress_complete {
.mailpoet_progress_bar {
background-color: hsla(191, 78%, 80%, 1);
background-image: linear-gradient(to bottom, hsla(191, 78%, 80%, 1), hsla(191, 76%, 67%, 1));
}
}
.mailpoet_stepped_progress_bar {
margin: auto;
width: 400px;
&:before {
background-color: #d8d8d8;
border-radius: 2px;
content: "";
display: block;
height: 2px;
margin: auto;
position: relative;
top: 9px;
width: 100%;
}
}
.mailpoet_stepped_progress_bar_step {
display: inline-block;
&:before {
background-color: #d8d8d8;
border-radius: 14px;
content: "";
display: block;
height: 14px;
margin: auto;
position: relative;
width: 14px;
}
&.active {
&:before {
background-color: #979797;
}
}
}
@media screen and (max-width: 520px) {
.mailpoet_stepped_progress_bar {
width: 360px;
}
}

View File

@ -0,0 +1,50 @@
/* labels */
.mailpoet_text_label,
.mailpoet_textarea_label,
.mailpoet_select_label,
.mailpoet_radio_label,
.mailpoet_checkbox_label,
.mailpoet_list_label,
.mailpoet_date_label {
display: block;
}
/* form loading */
.mailpoet_form_sending {
.mailpoet_form_loading {
display: block;
}
.mailpoet_submit {
display: none;
}
}
.mailpoet_form_loading {
display: none;
text-align: center;
width: 30px;
}
.mailpoet_form_loading > span {
animation: mailpoet-bouncedelay 1.4s infinite ease-in-out both;
background-color: #5b5b5b;
border-radius: 100%;
display: inline-block;
height: 5px;
width: 5px;
}
.mailpoet_form_loading .mailpoet_bounce1 {
animation-delay: -0.32s;
}
.mailpoet_form_loading .mailpoet_bounce2 {
animation-delay: -0.16s;
margin: 0 7px;
}
@keyframes mailpoet-bouncedelay {
0%, 80%, 100% { transform: scale(0); }
40% { transform: scale(1); }
}

View File

@ -0,0 +1,14 @@
.mailpoet_review_request {
margin: auto;
max-width: 500px;
text-align: center;
img {
margin: 20px;
}
a {
cursor: pointer;
text-decoration: underline;
}
}

View File

@ -0,0 +1,135 @@
#mailpoet_settings {
.mailpoet_tab_panel {
display: none;
}
.form-table th {
width: 20em;
}
.mailpoet_sending_methods {
display: flex;
flex-direction: row;
justify-content: flex-start;
margin: 25px 0 0 0;
> li {
background-color: #fff;
border: 2px solid #dcdcdc;
display: flex;
flex-basis: 0;
flex-direction: column;
flex-grow: 1;
flex-shrink: 1;
margin: 0 25px 25px 0;
max-width: 500px;
.mailpoet_sending_method_description {
flex-grow: 1;
flex-shrink: 0;
padding: 25px;
}
&:hover:not(.mailpoet_active) {
border-color: #c5c5c5;
}
}
> li:last-child {
margin-right: 0;
}
h3 {
font-size: 1.5em;
height: 54px;
text-align: center;
}
.mailpoet_description {
font-size: 14px;
}
.mailpoet_status {
align-items: center;
background-color: #dcdcdc;
color: #fff;
display: flex;
flex-direction: row;
justify-content: flex-end;
min-height: 2em;
padding: 1em;
text-overflow: ellipsis;
span {
font-weight: bold;
visibility: hidden;
}
div {
margin-left: 1em;
}
}
.mailpoet_active {
border: 2px solid #088b00;
&.mailpoet_invalid_key {
border: 2px solid #dc3232;
}
.mailpoet_status {
background-color: #088b00;
&.mailpoet_invalid_key {
background-color: #dc3232;
.mailpoet_actions {
color: white;
a:not(.button-primary) {
color: white;
}
}
}
span {
visibility: visible;
}
}
#mailpoet_mta_activate {
visibility: hidden;
}
}
.mailpoet_actions {
color: initial;
}
}
.tooltip.dashicons.dashicons-editor-help {
line-height: 1.4;
}
ul.sending-method-benefits {
list-style-type: none;
margin-bottom: 2em;
margin-top: 2em;
}
.sending-free-plan-button {
background: #FF5301;
border-color: #e64c03;
box-shadow: 0 1px 0 #e64c03;
margin: 10px 0;
text-shadow: 0 -1px 1px #e64c03;
strong {
text-transform: uppercase;
}
}
.mailpoet_success_item::before {
content: '';
}
.mailpoet_error_item::before {
content: '';
}
@media screen and (max-width: 782px) {
.form-table th {
width: auto;
}
.mailpoet_sending_methods {
flex-flow: row wrap;
justify-content: space-around;
> li {
flex-basis: auto;
margin-right: 0;
}
}
}
}

View File

@ -0,0 +1,5 @@
#subscribers_container {
.mailpoet_segments_unsubscribed {
color: lighten(#555, 33);
}
}

View File

@ -0,0 +1,112 @@
.mailpoet_welcome_wizard_centered_column {
align-items: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.mailpoet_welcome_wizard_header img {
margin-bottom: 20px;
}
.mailpoet_welcome_wizard_steps {
padding-top: 20px;
width: 100%;
div.updated, div.error, .notice {
display: none !important;
}
}
.mailpoet_welcome_wizard_step_content {
margin-top: 40px;
max-width: 620px;
min-height: 30vh;
h1 {
font-weight: 400;
padding-bottom: 10px;
text-align: center;
}
p {
color: #595c65;
font-size: 15px;
font-weight: normal;
line-height: 22px;
margin: 10px 0;
text-align: center;
}
}
#mailpoet_sender_form {
margin-top: 30px;
width: 330px;
label {
display: inline-block;
font-size: 15px;
margin-bottom: 20px;
}
input[type="text"] {
font-size: 15px;
height: 30px;
margin-top: 10px;
width: 328px;
}
input[type="submit"] {
margin: 50px 0 25px 0;
}
a.sender_form_small {
color: #595c65;
font-size: 12px;
}
}
.mailpoet_sender_form_loading {
opacity: 0.5;
}
.mailpoet_welcome_wizard_course_form_box {
margin-bottom: 10px;
padding-top: 30px;
position: relative;
img {
left: 0;
position: absolute;
top: 0;
}
iframe {
margin-left: 155px;
}
@media screen and (max-width: 520px) {
padding: 0 10px;
text-align: center;
iframe {
margin-left: 0;
}
img {
position: static;
}
}
}
.mailpoet_welcome_wizard_step_controls {
margin-top: 50px;
.button {
margin: 0 10px;
}
}
.mailpoet_welcome_wizard_woo_screenshot {
margin-top: 30px;
width: 400px;
}
@media screen and (max-width: 520px) {
.mailpoet_welcome_wizard_woo_screenshot {
width: 340px;
}
}
.welcome_wizard_video {
position: absolute;
top: -1000px;
}

View File

@ -0,0 +1,2 @@
@import 'jquery-ui-1.10.1';
@import 'melon.datepicker';

View File

@ -273,7 +273,7 @@
}
.ui-widget-content {
border: 1px solid #dddddd;
background: #eeeeee url(../img/datepicker/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;
background: #eeeeee url(../../img/datepicker/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;
color: #333333;
}
.ui-widget-content a {
@ -281,7 +281,7 @@
}
.ui-widget-header {
border: 1px solid #e78f08;
background: #f6a828 url(../img/datepicker/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;
background: #f6a828 url(../../img/datepicker/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;
color: #ffffff;
font-weight: bold;
}
@ -295,7 +295,7 @@
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
border: 1px solid #cccccc;
background: #f6f6f6 url(../img/datepicker/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;
background: #f6f6f6 url(../../img/datepicker/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;
font-weight: bold;
color: #1c94c4;
}
@ -312,7 +312,7 @@
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
border: 1px solid #fbcb09;
background: #fdf5ce url(../img/datepicker/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;
background: #fdf5ce url(../../img/datepicker/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;
font-weight: bold;
color: #c77405;
}
@ -327,7 +327,7 @@
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
border: 1px solid #fbd850;
background: #ffffff url(../img/datepicker/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
background: #ffffff url(../../img/datepicker/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
font-weight: bold;
color: #eb8f00;
}
@ -344,7 +344,7 @@
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
border: 1px solid #fed22f;
background: #ffe45c url(../img/datepicker/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;
background: #ffe45c url(../../img/datepicker/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;
color: #363636;
}
.ui-state-highlight a,
@ -356,7 +356,7 @@
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
border: 1px solid #cd0a0a;
background: #b81900 url(../img/datepicker/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;
background: #b81900 url(../../img/datepicker/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;
color: #ffffff;
}
.ui-state-error a,
@ -403,27 +403,27 @@
}
.ui-icon,
.ui-widget-content .ui-icon {
background-image: url(../img/datepicker/ui-icons_222222_256x240.png);
background-image: url(../../img/datepicker/ui-icons_222222_256x240.png);
}
.ui-widget-header .ui-icon {
background-image: url(../img/datepicker/ui-icons_ffffff_256x240.png);
background-image: url(../../img/datepicker/ui-icons_ffffff_256x240.png);
}
.ui-state-default .ui-icon {
background-image: url(../img/datepicker/ui-icons_ef8c08_256x240.png);
background-image: url(../../img/datepicker/ui-icons_ef8c08_256x240.png);
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon {
background-image: url(../img/datepicker/ui-icons_ef8c08_256x240.png);
background-image: url(../../img/datepicker/ui-icons_ef8c08_256x240.png);
}
.ui-state-active .ui-icon {
background-image: url(../img/datepicker/ui-icons_ef8c08_256x240.png);
background-image: url(../../img/datepicker/ui-icons_ef8c08_256x240.png);
}
.ui-state-highlight .ui-icon {
background-image: url(../img/datepicker/ui-icons_228ef1_256x240.png);
background-image: url(../../img/datepicker/ui-icons_228ef1_256x240.png);
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
background-image: url(../img/datepicker/ui-icons_ffd27a_256x240.png);
background-image: url(../../img/datepicker/ui-icons_ffd27a_256x240.png);
}
/* positioning */
@ -635,14 +635,14 @@
/* Overlays */
.ui-widget-overlay {
background: #666666 url(../img/datepicker/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;
background: #666666 url(../../img/datepicker/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;
opacity: .5;
filter: Alpha(Opacity=50);
}
.ui-widget-shadow {
margin: -5px 0 0 -5px;
padding: 5px;
background: #000000 url(../img/datepicker/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;
background: #000000 url(../../img/datepicker/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;
opacity: .2;
filter: Alpha(Opacity=20);
border-radius: 5px;

View File

@ -59,7 +59,7 @@
.wp-admin .ui-datepicker .ui-datepicker-next span,
.wp-admin .ui-datepicker .ui-datepicker-prev span {
background-image: url(../img/datepicker/ui-icons_ffffff_256x240.png);
background-image: url(../../img/datepicker/ui-icons_ffffff_256x240.png);
background-position: -32px 0;
margin-top: 0;
top: 0;

View File

@ -0,0 +1,92 @@
$excellent-badge-color: #2993ab;
$good-badge-color: #f0b849;
$bad-badge-color: #d54e21;
$green-badge-color: #55bd56;
$video-guide-badge-color: #46b450;
#newsletters_container {
h2.nav-tab-wrapper {
margin-bottom: 1rem;
}
}
.mailpoet_stats_text {
font-size: 14px;
font-weight: 600;
}
.mailpoet_stat {
&_excellent {
color: $excellent-badge-color;
}
&_good {
color: $good-badge-color;
}
&_bad {
color: $bad-badge-color;
}
&_hidden {
display: none;
}
&_link_small {
font-size: 0.75rem;
text-decoration: underline !important;
}
}
.mailpoet_badge {
border-radius: 3px;
color: white;
cursor: pointer;
font-size: 0.5625rem;
font-weight: 500;
letter-spacing: 1px;
margin-right: 4px;
padding: 4px 6px 3px 6px;
text-transform: uppercase;
vertical-align: middle;
&_excellent, &_teal {
background: $excellent-badge-color;
}
&_good, &_yellow {
background: $good-badge-color;
}
&_bad, &_red {
background: $bad-badge-color;
}
&_green {
background: $green-badge-color;
}
&_video {
background: $video-guide-badge-color;
display: inline-block;
line-height: 20px;
padding: 3px 6px;
text-decoration: none;
vertical-align: top;
&:hover, &:active, &:focus {
background: $green-badge-color;
color: #FFFFFF;
}
&_grey {
background: #c3c3c3;
}
.dashicons {
font-size: 14px;
line-height: 20px;
}
}
}

View File

@ -0,0 +1,318 @@
$link-color: $primary-active-background-color;
$select-border-color: $content-border-color;
$select-text-color: $primary-text-color;
$button-default-border-color: $structure-border-color;
$button-default-background-color: $primary-background-color;
$button-default-text-color: $primary-inactive-color;
$button-primary-border-color: $primary-active-color;
$button-primary-background-color: $primary-active-background-color;
$button-primary-hover-background-color: $primary-active-color-highlight;
$button-primary-text-color: $white-color;
$range-track-background-color: $white-color;
$range-track-border-color: $structure-border-color;
$range-track-height: 12px;
$range-thumb-background-color: $primary-inactive-color;
$range-thumb-border-color: #333;
$range-thumb-width: 13px;
$range-thumb-height: 26px;
$range-border-radius: 3px;
$range-thumb-hover-background-color: $primary-active-color;
a {
color: $link-color;
text-decoration: none;
}
.mailpoet_hidden {
display: none !important;
}
input.mailpoet_color {
width: 5em;
}
select.mailpoet_font-family {
width: 8em;
}
select.mailpoet_font-size {
width: 5em;
}
.mailpoet_input, .mailpoet_select {
$form-control-padding: 3px;
appearance: none;
border-radius: 1px;
box-shadow: none !important;
line-height: 28px - $form-control-padding * 2;
padding: $form-control-padding;
}
.mailpoet_input {
border: 1px solid $select-border-color;
width: 283px;
}
.mailpoet_input_small {
width: 58px;
}
.mailpoet_input_medium {
width: 150px;
}
.mailpoet_input_full {
box-sizing: border-box;
margin: 0;
width: 100%;
}
.mailpoet_range {
-webkit-appearance: none;
padding: 0;
vertical-align: middle;
width: 283px;
&:focus {
outline: none;
}
&::-webkit-slider-runnable-track {
animate: 0.2s;
background: $range-track-background-color;
border: 1px solid $range-track-border-color;
border-radius: $range-border-radius;
cursor: pointer;
height: $range-track-height;
width: 100%;
}
&::-webkit-slider-thumb {
-webkit-appearance: none;
background: $range-thumb-background-color;
border: 1px solid $range-thumb-border-color;
border-radius: $range-border-radius;
cursor: pointer;
height: $range-thumb-height;
margin-top: -1 * $range-thumb-height / 3;
width: $range-thumb-width;
}
&:hover::-webkit-slider-thumb {
background: $range-thumb-hover-background-color;
}
&::-moz-range-track {
animate: 0.2s;
background: $range-track-background-color;
border: 1px solid $range-track-border-color;
border-radius: $range-border-radius;
cursor: pointer;
height: $range-track-height;
width: 100%;
}
&::-moz-range-thumb {
background: $range-thumb-background-color;
border: 1px solid $range-thumb-border-color;
border-radius: $range-border-radius;
cursor: pointer;
height: $range-thumb-height;
width: $range-thumb-width;
}
&:hover::-moz-range-thumb {
background: $range-thumb-hover-background-color;
}
&::-ms-fill-lower {
background: $range-track-background-color;
border: 1px solid $range-track-border-color;
}
&::-ms-fill-upper {
background: $range-track-background-color;
border: 1px solid $range-track-border-color;
}
&::-ms-track {
animate: 0.2s;
background: transparent;
border-color: transparent;
border-width: $range-track-height * 2 0;
color: transparent;
cursor: pointer;
height: $range-track-height;
width: 100%;
}
&::-ms-thumb {
background: $range-thumb-background-color;
border: 1px solid $range-thumb-border-color;
border-radius: $range-border-radius;
cursor: pointer;
height: $range-thumb-height;
width: $range-thumb-width;
}
&:hover::-ms-thumb {
background: $range-thumb-hover-background-color;
}
&:focus::-ms-fill-lower {
background: $range-track-background-color;
border: 1px solid $range-track-border-color;
}
&:focus::-ms-fill-upper {
background: $range-track-background-color;
border: 1px solid $range-track-border-color;
}
}
.mailpoet_range_small {
width: 100px;
}
.mailpoet_range_medium {
width: 180px;
}
.mailpoet_select {
border-color: $select-border-color;
color: $select-text-color;
margin: 0;
}
.mailpoet_select_large {
width: 139px;
}
.mailpoet_select_medium {
width: 103px;
}
.mailpoet_select_small {
width: 68px;
}
.mailpoet_select_half_width {
width: 50%;
}
#mailpoet_editor_content ol,
#mailpoet_editor_content ul {
list-style-position: inside;
margin-left: 0;
}
#mailpoet_editor_content ul {
list-style-type: disc;
}
.mailpoet_button {
background-color: $button-default-background-color;
border: 1px solid $button-default-border-color;
border-radius: 3px;
color: $button-default-text-color;
line-height: normal;
margin: 0;
padding: 6px 20px;
vertical-align: top;
}
.mailpoet_button_full {
box-sizing: border-box;
width: 100%;
}
.tooltip-help-designer-subject-line div, .tooltip-help-designer-preheader div {
z-index: 100001;
}
.tooltip-help-send-preview {
position: absolute;
right: 15px;
}
.tooltip-help-designer-ideal-width {
color: #656565;
font-weight: normal;
margin-left: 5px;
text-transform: none;
}
.tooltip-help-designer-full-width .dashicons {
line-height: 34px;
}
.tooltip-help-designer-full-width span {
line-height: 1.4em;
}
.mailpoet_button_primary {
background-color: $button-primary-background-color;
border-color: $button-primary-border-color;
color: $button-primary-text-color;
&:hover {
background-color: $button-primary-hover-background-color;
}
}
.mailpoet_button_group {
display: inline;
.mailpoet_button:first-child {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
margin-right: 0;
padding: 6px 12px 6px;
}
.mailpoet_button:last-child {
border-bottom-left-radius: 0;
border-left: 0;
border-top-left-radius: 0;
margin-left: 0;
padding-left: 10px;
padding-right: 10px;
}
}
.mailpoet_text_content p {
margin: 1em 0;
}
.mailpoet_separator {
margin: 17px 20px;
}
.mailpoet_option_offset_left_small {
margin-left: 10px;
}
input.mailpoet_option_offset_left_small {
margin-left: 10px !important;
}
.mailpoet_form_narrow_select2 span.select2-container {
width: 103px !important;
}
span.select2-container--open > span.select2-dropdown {
min-width: 150px;
}
span.select2-container--open > span.select2-dropdown li.select2-results__option {
font-size: 13px;
margin: 0px !important;
& .select2-results__group {
color: #bfbfbf;
font-weight: normal;
}
& .select2-results__option {
font-size: 13px;
padding-left: 15px;
&[aria-selected=true] {
background-color: #eee;
color: #444;
}
}
}
.mailpoet_settings_notice {
color: #999;
}

View File

@ -0,0 +1,40 @@
$sidebar-width: 330px;
$content-border-color: $structure-border-color;
#mailpoet_editor {
clear: both;
width: 100%;
}
#mailpoet_editor_heading {
clear: both;
margin-bottom: 13px;
margin-left: 2px;
padding-left: 15px;
}
#mailpoet_editor_main_wrapper {
border: 1px solid $content-border-color;
border-left: 0;
min-width: 1050px;
position: relative;
}
#mailpoet_editor_content_container {
box-sizing: border-box;
padding-right: $sidebar-width;
width: 100%;
}
#mailpoet_editor_sidebar {
box-sizing: border-box;
float: right;
width: $sidebar-width;
}
.mailpoet_newsletter_wrapper {
margin: auto;
max-width: $newsletter-width;
position: relative;
width: $newsletter-width;
}

View File

@ -0,0 +1,183 @@
/* Fix select2 z-index to work with MailPoet.Modal */
.select2-dropdown {
z-index: 101000 !important;
}
/* Remove input field styles from select2 type input */
.select2-container {
border: none;
padding: 0;
}
/* Fix select2 input glow and margins that wordpress may insert */
.select2 input,
.select2 input:focus {
border-color: none;
box-shadow: none;
margin: 0;
padding: 0;
}
/* Fix width overrides for select2 */
.mailpoet_editor_settings .select2-container {
width: 100% !important;
}
/* Fix inline TinyMCE toolbar to have minimal width instead of being close to 100% of the screen */
div.mce-toolbar-grp.mce-container {
position: absolute;
}
.mce-tinymce.mce-tinymce-inline {
background-color: $primary-background-color;
border: 1px solid $content-border-color;
border-radius: 3px;
box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.05);
}
.mce-window {
/* Fix TinyMCE mailpoet_shortcodes window lack of hiding overflow */
div.mce-container-body.mce-abs-layout {
overflow: hidden;
}
/* Fix TinyMCE popup window's close button to not be covered by draggable section */
.mce-window-head div.mce-dragh {
width: calc(100% - 36px);
}
}
/* TinyMCE mailpoet_shortcodes toolbar icon */
.mce-i-mailpoet_shortcodes:before {
content: "\f307";
font: 400 20px / 1 dashicons !important;
}
/* TinyMCE remove active border from the editor */
.mce-edit-focus {
outline: none;
}
/* Style "No search term specified" in TinyMCE link editor */
#wp-link li, #wp-link div.query-notice {
border-bottom: 1px solid #f1f1f1;
clear: both;
color: #333;
cursor: pointer;
margin-bottom: 0;
padding: 4px 6px;
position: relative;
}
#wpbody-content > * {
margin-left: 20px;
}
#wpbody-content > .wrap {
margin-left: 0;
}
#wpcontent {
margin-left: 160px;
padding-left: 0;
.folded & {
margin-left: 36px;
}
}
.wrap {
margin-left: 0;
margin-right: 0;
}
/* Reduce WP admin bar z-index in order for TinyMCE toolbar to be visible */
#wpadminbar {
z-index: 50000;
}
/* Allow horizontal scrolling on smaller (tablet/phone) sized screens */
body {
overflow-x: auto;
}
/* Hide the "Details" section of WordPress Media manager */
.media-sidebar {
display: none;
}
#mailpoet-media-manager {
.attachments-browser .attachments,
.attachments-browser .uploader-inline {
margin-right: 0;
}
.attachments-browser .attachments,
.attachments-browser .media-toolbar,
.attachments-browser .uploader-inline {
right: 0;
}
}
/* Remove max width from date selector in WordPress Media Manager */
#media-attachment-date-filters {
max-width: calc(100% - 12px);
}
/* Alter Spectrum color picker to leave only the color preview, without arrows */
.sp-replacer {
border: 0;
border-radius: 3px;
box-shadow: 1px 2px darken($primary-background-color, 13%);
padding: 0;
}
.sp-preview {
border-width: 0;
height: 25px;
margin-right: 0;
width: 25px;
}
.sp-dd {
display: none;
}
/* Sidepanel overrides */
.mailpoet_panel_body {
margin: 19px;
padding: 0;
.mailpoet_editor_settings h3 {
margin-top: 0;
}
}
.mailpoet_panel_wrapper {
background-color: $primary-background-color;
border: 1px solid $content-border-color;
}
.wrap > .mailpoet_notice,
.notice,
.update-nag {
margin-left: 2px + 15px !important;
margin-right: 20px !important;
}
/* Make a button group */
.mailpoet_button_group {
.button:first-child {
border-bottom-right-radius: 0;
border-right: 0;
border-top-right-radius: 0;
}
.button:last-child {
border-bottom-left-radius: 0;
border-left: 0;
border-top-left-radius: 0;
}
}

View File

@ -0,0 +1,32 @@
$transparent-color: rgba(255, 255, 255, 0);
$white-color: rgb(255, 255, 255);
$black-color: rgb(0, 0, 0);
$structure-border-color: #dddddd;
$content-border-color: #e5e5e5;
$primary-active-color: #0074a2;
$primary-active-color-highlight: #1e8cbe;
$primary-inactive-color: #a4a4a4;
$primary-active-background-color: #2ea1cd;
$primary-background-color: #f8f8f8;
$primary-text-color: #656565;
$primary-inset-shadow-color: #025C80;
$warning-background-color: #E64047;
$warning-text-color: $white-color;
$warning-alternate-text-color: #f4c6c8;
$error-text-color: #d54e21;
$editor-column-color: #7FBBD0;
$editor-content-color: #0078A2;
$newsletter-width: 660px;
$text-line-height: 1.6em;
$sidebar-text-size: 13px;

View File

@ -0,0 +1,216 @@
$tool-inactive-color: #333333;
$tool-inactive-secondary-color: #ffffff;
$tool-hover-color: #bbbbbb;
$tool-hover-secondary-color: #ffffff;
$tool-active-color: #d2d2d4;
$tool-active-secondary-color: #ffffff;
$content-icon-size: 14px;
$content-icon-size-with-padding: 24px;
$column-icon-size: 15px;
$column-icon-size-with-padding: 27px;
.mailpoet_tools {
bottom: 100%;
left: 50%;
overflow: hidden;
position: absolute;
text-align: right;
text-align: center;
transform: translateX(-50%);
transition: visibility 0s linear 250ms;
visibility: hidden;
z-index: 20;
.mailpoet_tools_slider {
background: $editor-content-color;
border-radius: 10px 10px 0 0;
display: flex;
flex-direction: row;
padding: 3px 7px;
position: relative;
transform: translateY(100%);
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1);
}
.mailpoet_resize_active & .mailpoet_tools_slider,
&.mailpoet_display_tools .mailpoet_tools_slider {
transform: translateY(0);
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1), visibility 0s linear;
visibility: visible;
}
a {
vertical-align: top;
}
.mailpoet_container_horizontal + & {
bottom: auto;
left: 100%;
top: -2px;
transform: none;
.mailpoet_tools_slider {
background: $editor-column-color;
border-radius: 0 10px 10px 0;
flex-direction: column;
padding: 7px 3px;
transform: translateY(0) translateX(-100%);
}
&.mailpoet_display_tools,
.mailpoet_resize_active & {
z-index: 21;
.mailpoet_tools_slider {
transform: translateY(0) translateX(0);
}
}
.mailpoet_tool {
display: block;
height: $column-icon-size-with-padding;
width: $column-icon-size-with-padding;
svg {
height: $column-icon-size;
padding: 6px;
width: $column-icon-size;
}
}
.mailpoet_delete_block {
flex-direction: column;
}
.mailpoet_delete_block_activate {
display: block;
max-height: $column-icon-size-with-padding;
max-width: none;
opacity: 1;
}
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel {
display: block;
margin: 0;
width: 100%;
}
.mailpoet_delete_block_activated {
height: auto;
padding: 0 5px 3px 5px;
width: auto;
.mailpoet_delete_block_activate {
max-height: 0;
opacity: 0;
overflow: hidden;
}
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel {
opacity: 1;
}
}
}
}
.mailpoet_tool {
display: inline-block;
height: $content-icon-size-with-padding;
width: $content-icon-size-with-padding;
svg {
fill: #fff;
height: $content-icon-size;
padding: 5px;
vertical-align: top;
width: $content-icon-size;
}
&:hover svg,
&:focus svg {
opacity: 0.7;
}
.mailpoet_delete_block_confirmation {
position: absolute;
right: 0;
top: 0;
width: 200px;
}
}
.mailpoet_delete_block {
border-radius: 3px;
display: flex;
flex-direction: row-reverse;
line-height: 24px;
vertical-align: top;
white-space: nowrap;
@include animation-background-color();
.mailpoet_tool {
padding: 0;
}
.mailpoet_delete_block_activate {
display: inline-block;
max-width: $content-icon-size-with-padding;
opacity: 1;
@include animation-fade-in-and-scale-horizontally();
}
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel {
display: inline-block;
max-height: 0;
max-width: 0;
opacity: 0;
overflow: hidden;
@include animation-fade-in-and-scale-horizontally();
}
}
.mailpoet_delete_block_activated {
background-color: $warning-background-color;
height: auto;
padding: 0 5px;
width: auto;
.mailpoet_delete_block_activate {
max-width: 0;
opacity: 0;
overflow: hidden;
}
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel {
max-height: 20px;
max-width: 90px;
opacity: 1;
}
.mailpoet_delete_block_cancel {
margin-left: 3px;
}
}
.mailpoet_delete_block_confirm {
color: $warning-text-color;
&:hover {
color: $warning-text-color;
text-decoration: underline;
}
}
.mailpoet_delete_block_cancel {
color: $warning-alternate-text-color;
&:hover {
color: $warning-alternate-text-color;
text-decoration: underline;
}
}

View File

@ -0,0 +1,78 @@
$drop-active-color: $primary-active-color;
$marker-width: 2px;
$marker-z-index: 1;
$draggable-widget-z-index: 2;
.mailpoet_drop_marker {
background-color: $primary-active-color;
box-shadow: 0px 0px 1px 0px $primary-active-color;
min-height: $marker-width;
min-width: $marker-width;
position: absolute;
z-index: $marker-z-index;
&::before, &::after {
color: $primary-active-color;
font: 400 40px / 1 dashicons;
margin-top: -18px;
position: absolute;
}
&::before {
content: "\f139";
left: -25px;
}
&::after {
content: "\f141";
right: -23px;
}
}
.mailpoet_drop_marker.mailpoet_drop_marker_middle,
.mailpoet_drop_marker.mailpoet_drop_marker_first.mailpoet_drop_marker_after,
.mailpoet_drop_marker.mailpoet_drop_marker_last.mailpoet_drop_marker_before {
margin-top: -1 * ($marker-width / 2);
}
.mailpoet_drop_marker.mailpoet_drop_marker_last.mailpoet_drop_marker_after {
margin-top: -1 * $marker-width;
}
#mailpoet_editor .mailpoet_droppable_active {
z-index: 21000;
}
.mailpoet_block.mailpoet_droppable_active {
border: 1px dashed $drop-active-color !important;
width: $newsletter-width;
.mailpoet_tools {
display: none !important;
}
}
.mailpoet_widget.mailpoet_droppable_active {
margin: 0;
padding: 0;
z-index: $draggable-widget-z-index;
@include animation-fade-in();
.mailpoet_widget_icon {
margin: 0;
padding: 0;
}
}
.mailpoet_drop_active > .mailpoet_container > div > .mailpoet_container_empty {
background-color: $primary-active-color;
box-shadow: inset 1px 2px 1px $primary-inset-shadow-color;
color: $white-color;
}
.mailpoet_droppable_block {
cursor: move;
&.mailpoet_ignore_drag {
cursor: auto;
}
}

View File

@ -0,0 +1,52 @@
.mailpoet_form_field {
margin-bottom: 15px;
margin-top: 15px;
}
.mailpoet_form_field_title {
clear: both;
margin-bottom: 5px;
}
.mailpoet_form_field_title_small {
width: 120px;
}
.mailpoet_form_field_title_inline {
display: inline-block;
margin-bottom: 0;
margin-top: 6px;
}
.mailpoet_form_field_optional {
color: $primary-inactive-color;
font-size: 0.8em;
}
.mailpoet_form_field_radio_option,
.mailpoet_form_field_checkbox_option {
display: inline-block;
line-height: 30px;
margin-right: 5px;
vertical-align: top;
&:last-child {
margin-right: 0;
}
}
.mailpoet_form_field_input_option {
display: inline-block;
input[type=checkbox] {
vertical-align: top;
}
input[type=text] {
vertical-align: middle;
}
}
.mailpoet_form_field_block {
display: block;
}

View File

@ -0,0 +1,27 @@
.mailpoet_heading_form_field {
margin-bottom: 5px;
margin-top: 5px;
}
.mailpoet_input_title,
.mailpoet_input_preheader {
line-height: normal;
padding: 3px;
width: 500px;
}
.mailpoet_input_title {
font-size: 23px;
}
.mailpoet_breadcrumbs {
float: left;
font-size: 0.9em;
margin-bottom: 13px;
margin-left: 17px;
text-transform: uppercase;
p {
margin: 0;
}
}

View File

@ -0,0 +1,39 @@
.mailpoet_container_layer_active {
.mailpoet_block {
opacity: 0.4;
pointer-events: none;
}
.mailpoet_container_block {
opacity: 1;
pointer-events: auto;
}
.mailpoet_container_block > .mailpoet_tools {
display: block !important;
}
& > .mailpoet_tools {
z-index: 100001 !important;
}
}
.mailpoet_layer_overlay {
background-color: rgba(0, 0, 0, 0.6);
height: 100%;
left: 0;
margin: 0 !important;
overflow-x: hidden;
overflow-y: auto;
position: fixed;
top: 0;
width: 100%;
z-index: 100000;
}
.mailpoet_layer_highlight {
background-color: #f1f1f1;
pointer-events: none;
position: relative;
z-index: 100001 !important;
}

View File

@ -0,0 +1,107 @@
$resize-active-color: $editor-content-color;
$resize-handle-font-color: $white-color;
$resize-handle-z-index: 2;
.mailpoet_resize_handle_container {
left: 50%;
margin-top: -16px;
position: absolute;
top: 100%;
transform: translateX(-50%);
z-index: $resize-handle-z-index;
}
.mailpoet_resize_handle {
align-items: center;
background: $editor-content-color;
border-radius: 10px;
cursor: ns-resize;
display: flex;
justify-content: space-between;
min-width: 60px;
padding: 7px 10px;
z-index: $resize-handle-z-index;
.mailpoet_resize_handle_text,
.mailpoet_resize_handle_icon {
pointer-events: none;
}
.mailpoet_resize_active & {
display: flex !important;
}
}
.mailpoet_resize_handle_text {
color: $resize-handle-font-color;
font-size: 11px;
font-weight: bold;
line-height: 1.5em;
text-align: center;
}
.mailpoet_resize_handle_icon {
line-height: 15px;
margin-left: 5px;
& > svg {
fill: $resize-handle-font-color;
height: 15px;
vertical-align: top;
width: 15px;
}
}
.mailpoet_block.mailpoet_resize_active > .mailpoet_block_highlight {
border: 2px solid $resize-active-color;
.mailpoet_resize_handle {
display: inline-block;
}
}
.mailpoet_image_resize_handle_container {
bottom: 0;
height: 24px;
position: absolute;
right: 0;
width: 24px;
}
.mailpoet_image_resize_handle {
background: $editor-content-color;
border-radius: 6px 0 0 0;
cursor: nwse-resize;
display: inline-block;
height: 24px;
position: relative;
width: 24px;
z-index: $resize-handle-z-index;
.mailpoet_image_resize_handle_text,
.mailpoet_image_resize_handle_icon {
pointer-events: none;
}
}
.mailpoet_image_resize_handle_icon {
display: block;
line-height: 22px;
padding: 1px;
& > svg {
fill: $resize-handle-font-color;
height: 22px;
vertical-align: top;
width: 22px;
}
}
.mailpoet_block.mailpoet_image_resize_active > .mailpoet_block_highlight {
border: 2px solid $resize-active-color;
.mailpoet_image_resize_handle {
display: inline-block;
}
}

View File

@ -0,0 +1,149 @@
#mailpoet_editor_bottom {
margin: 10px 0 120px;
}
.mailpoet_save_wrapper {
float: right;
margin-bottom: 10px;
margin-right: 20px;
position: relative;
.mailpoet_save_next {
margin-left: 5px;
}
}
.mailpoet_save_options {
background: $white-color;
border: 1px solid $content-border-color;
border-radius: 3px;
clear: both;
margin: 5px 0;
overflow: hidden;
position: absolute;
right: 0;
vertical-align: top;
white-space: nowrap;
z-index: 1000;
}
.mailpoet_save_option {
margin: 0;
& > a {
display: block;
line-height: 2em;
padding-left: 20px;
padding-right: 20px;
}
}
.mailpoet_save_option:hover {
background-color: $primary-active-background-color;
color: $white-color;
& > a {
color: $white-color;
}
}
.mailpoet_save_show_options {
padding: 6px 3px 4px;
}
.mailpoet_save_show_options_icon {
height: 14px;
margin-top: -6px;
vertical-align: middle;
}
.mailpoet_save_as_template_container,
.mailpoet_export_template_container {
background-color: $white-color;
border: 1px solid $structure-border-color;
border-radius: 3px;
clear: both;
display: inline-block;
margin: 5px 0;
padding: 0 10px;
position: absolute;
right: 0;
z-index: 1000;
}
.mailpoet_save_as_template_title,
.mailpoet_export_template_title {
font-size: 1.1em;
}
.mailpoet_save_next, .mailpoet_save_button_group {
float: right;
}
.mailpoet_editor_messages {
position: absolute;
right: 0;
}
.mailpoet_editor_last_saved {
color: $primary-inactive-color;
font-size: 0.9em;
margin-top: 10px;
text-align: right;
}
.mailpoet_save_error {
color: $error-text-color;
margin-top: 10px;
text-align: right;
width: $sidebar-width - 20px;
}
.mailpoet_save_dropdown_down {
.mailpoet_save_options,
.mailpoet_save_as_template_container,
.mailpoet_export_template_container {
bottom: auto;
top: 100%;
}
.mailpoet_save_show_options {
&.mailpoet_save_show_options_active {
.mailpoet_save_show_options_icon::before {
content: '\f142';
}
}
}
.mailpoet_save_show_options_icon {
&::before {
content: '\f140';
}
}
}
.mailpoet_save_dropdown_up {
.mailpoet_save_options,
.mailpoet_save_as_template_container,
.mailpoet_export_template_container {
bottom: 100%;
top: auto;
}
.mailpoet_save_show_options {
&.mailpoet_save_show_options_active {
.mailpoet_save_show_options_icon::before {
content: '\f140';
}
}
}
.mailpoet_save_show_options_icon {
&::before {
content: '\f142';
}
}
}

View File

@ -0,0 +1,204 @@
$select-border-color: $content-border-color;
$select-text-color: $primary-text-color;
$sidebar-background-color: $primary-background-color;
$sidebar-active-heading-color: $primary-active-color;
$sidebar-inactive-heading-color: $primary-inactive-color;
$sidebar-text-color: $primary-text-color;
$widget-width: 70px;
$widget-background-color: $white-color;
$widget-shadow-color: darken($primary-background-color, 13%);
$widget-icon-color: darken($primary-background-color, 31.5%);
$widget-icon-hover-color: $primary-active-color;
$widget-icon-width: 30px;
#mailpoet_editor_sidebar {
border-bottom: $content-border-color;
border-left: $content-border-color;
color: $sidebar-text-color;
font-size: $sidebar-text-size;
.mailpoet_sidebar_region {
border-bottom: 1px solid $content-border-color;
border-left: 1px solid $content-border-color;
border-right: 0;
border-top: 0;
margin-bottom: 0;
&.closed .mailpoet_region_content {
display: none;
}
}
.mailpoet_region_content {
margin-top: 12px;
padding: 0 20px;
}
&, .postbox {
background-color: $sidebar-background-color;
}
.postbox {
padding-bottom: 20px;
&.closed {
padding-bottom: 0;
}
&.closed h3 {
color: $sidebar-inactive-heading-color;
cursor: pointer;
}
h3,
&:hover h3 {
color: $sidebar-active-heading-color;
margin: 0;
padding: 17px 20px;
text-transform: uppercase;
}
h3,
.handlediv {
border: 0;
cursor: auto;
}
.handlediv::before {
color: $sidebar-active-heading-color;
content: '\f142';
display: inline-block;
font: 400 20px / 1 dashicons;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
position: relative;
right: 18px;
speak: none;
text-decoration: none !important;
top: 18px;
}
&.closed .handlediv::before {
color: $sidebar-inactive-heading-color;
content: '\f140';
}
&.closed:hover .handlediv::before {
color: $sidebar-active-heading-color;
}
}
}
.mailpoet_widget {
display: inline-block;
float: left;
padding: 0 13px 15px 13px;
text-align: center;
width: $widget-width;
&:nth-child(3n+1) {
clear: left;
}
.mailpoet_widget_icon {
background-color: $widget-background-color;
border-radius: 3px;
box-shadow: 1px 2px $widget-shadow-color;
box-sizing: border-box;
color: $widget-icon-color;
fill: $widget-icon-color;
height: $widget-width;
line-height: $widget-width;
margin-bottom: 9px;
text-align: center;
width: $widget-width;
/* Vertically align widget icon glyphs */
& > * {
font-size: $widget-icon-width;
height: $widget-icon-width;
vertical-align: middle;
width: $widget-icon-width;
}
&:hover {
border: 1px solid $widget-icon-hover-color;
color: $widget-icon-hover-color;
fill: $widget-icon-hover-color;
}
}
&.mailpoet_droppable_active {
color: $widget-icon-hover-color;
fill: $widget-icon-hover-color;
.mailpoet_widget_icon {
border: 1px solid $widget-icon-hover-color;
box-shadow: none;
color: $widget-icon-hover-color;
fill: $widget-icon-hover-color;
}
.mailpoet_widget_title {
display: none;
}
}
}
/* Browser preview modal */
.mailpoet_browser_preview_wrapper {
display: flex;
flex-direction: column;
height: 100%;
position: absolute;
width: 100%;
}
.mailpoet_browser_preview_toggle {
flex: 0 1 auto;
height: 30px;
padding: 10px 0;
position: absolute;
text-align: center;
top: -30px;
width: 100%;
}
.mailpoet_browser_preview_toggle > label {
display: inline-block;
margin: 0 5px;
}
.mailpoet_browser_preview_container {
border: 1px solid #979797;
border-radius: 20px;
box-sizing: border-box;
display: flex;
flex: 1 1 auto;
flex-direction: column;
height: 100%;
margin: 15px auto 0 auto;
padding: 20px;
transition: width 0.5s;
}
.mailpoet_browser_preview_container_desktop {
width: 100%;
}
.mailpoet_browser_preview_container_mobile {
width: 350px;
}
.mailpoet_browser_preview_border {
border: 1px solid #c3c3c3;
box-sizing: border-box;
height: 100%;
width: 100%;
}
.mailpoet_browser_preview_iframe {
display: block;
margin: auto;
width: calc(100% - 1px);
}

View File

@ -0,0 +1,67 @@
$sidepanel-active-heading-color: $primary-active-color;
/* Sidepanel */
.mailpoet_editor_settings {
color: $sidebar-text-color;
font-size: $sidebar-text-size;
p {
font-size: 1em;
}
h3 {
color: $sidepanel-active-heading-color;
font-size: 1.4em;
text-transform: uppercase;
}
}
.mailpoet_sidepanel_field {
margin-bottom: 15px;
margin-top: 15px;
}
.mailpoet_sidepanel_field_title {
clear: both;
margin-bottom: 5px;
}
.mailpoet_sidepanel_field_title_small {
width: 120px;
}
.mailpoet_sidepanel_field_title_inline {
display: inline-block;
line-height: 30px;
margin-bottom: 0;
vertical-align: middle;
}
.mailpoet_sidepanel_field_optional {
color: $primary-inactive-color;
font-size: 0.8em;
}
.mailpoet_sidepanel_radio_option,
.mailpoet_sidepanel_checkbox_option {
display: inline-block;
line-height: 30px;
margin-right: 15px;
vertical-align: top;
&:last-child {
margin-right: 0;
}
}
.mailpoet_sidepanel_input_option {
display: inline-block;
input[type=checkbox] {
vertical-align: top;
}
input[type=text] {
vertical-align: middle;
}
}

View File

@ -0,0 +1,44 @@
.mailpoet_automated_latest_content_block {
padding: 0;
}
.mailpoet_automated_latest_content_block_overlay {
background: rgba(255, 255, 255, 0);
height: 100%;
position: absolute;
transition: background 0.15s ease-out;
width: 100%;
z-index: 19;
.mailpoet_automated_latest_content_block:hover & {
background: rgba(255, 255, 255, 0.7);
cursor: pointer;
}
}
.mailpoet_automated_latest_content_block_posts {
overflow: hidden;
pointer-events: none;
& > .mailpoet_block {
width: 100%;
}
.mailpoet_container_block {
padding-bottom: 0;
padding-top: 0;
}
}
.mailpoet_automated_latest_content_display_options {
@include animation-slide-open-downwards();
}
.mailpoet_automated_latest_content_show_amount {
width: 25px;
}
.mailpoet_automated_latest_content_content_type {
width: 180px;
}

View File

@ -0,0 +1,85 @@
$block-text-line-height: $text-line-height;
.mailpoet_block {
background-color: inherit;
box-sizing: border-box;
box-sizing: border-box;
float: left;
padding: 10px 20px;
position: relative;
& > .mailpoet_block_highlight {
border: 2px solid $transparent-color;
bottom: 0;
left: 0;
pointer-events: none;
position: absolute;
right: 0;
top: 0;
transition: 0.3s;
z-index: 1;
}
&.mailpoet_highlight > .mailpoet_block_highlight {
border: 2px solid $editor-content-color !important;
}
& > .mailpoet_container_horizontal ~ .mailpoet_block_highlight {
bottom: -2px;
left: -2px;
right: -2px;
top: -2px;
}
&.mailpoet_highlight > .mailpoet_container_horizontal ~ .mailpoet_block_highlight {
border: 2px solid $editor-column-color !important;
}
}
.mailpoet_content {
line-height: $block-text-line-height;
position: relative;
h1, h2, h3, h4, h5, h6 {
font-style: normal;
font-weight: normal;
line-height: $block-text-line-height;
margin: 0;
padding: 0;
}
h1, h2, h3, h4, h5, h6 {
margin-bottom: 0.3em;
}
p:not(.mailpoet_wp_post) {
margin: 0;
margin-bottom: 0;
margin-top: 0;
padding: 0;
}
p {
font-style: normal;
font-weight: normal;
line-height: $block-text-line-height;
}
ul {
margin-bottom: 10px;
margin-top: 10px;
padding: 0;
}
li {
font-weight: normal;
margin-bottom: 10px;
margin-top: 0;
}
blockquote {
border-left: 2px #565656 solid;
margin: 0 0 $block-text-line-height;
padding-left: 10px;
}
}

View File

@ -0,0 +1,15 @@
.mailpoet_button_block {
.mailpoet_editor_button {
box-sizing: border-box;
display: block;
line-height: 2em;
margin: auto;
max-width: 100%;
text-align: center;
text-decoration: none;
&:hover {
cursor: all-scroll;
}
}
}

View File

@ -0,0 +1,92 @@
$column-margin: 20px;
$one-column-width: $newsletter-width - (2 * $column-margin);
$two-column-width: $newsletter-width / 2 - (2 * $column-margin);
$three-column-width: $newsletter-width / 3 - (2 * $column-margin);
$two-column-wider-column-width: (($newsletter-width / 3) - $column-margin) * 2;
.mailpoet_container {
min-height: 15px;
position: relative;
width: 100%;
}
.mailpoet_container_block {
border: 0;
box-sizing: border-box;
margin-left: 0;
margin-right: 0;
padding-left: 0;
padding-right: 0;
position: relative;
}
.mailpoet_container_vertical > * {
box-sizing: border-box;
width: 100%;
}
.mailpoet_container_horizontal > * {
vertical-align: top;
}
#mailpoet_editor_content {
.mailpoet_container {
box-sizing: border-box;
float: left;
}
& > .mailpoet_container_block {
border: 0;
width: $newsletter-width;
}
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block {
padding-bottom: 0;
padding-top: 0;
}
.mailpoet_container_horizontal > .mailpoet_container_block {
padding-bottom: 0;
padding-top: 0;
width: $column-margin + $one-column-width + $column-margin;
}
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal,
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_posts_block > .mailpoet_posts_container > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal,
& > .mailpoet_container_block > .mailpoet_container .mailpoet_automated_latest_content_block_posts .mailpoet_container_horizontal,
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_products_block > .mailpoet_products_container > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal,
& > .mailpoet_container_block > .mailpoet_container .mailpoet_automated_latest_content_block_products .mailpoet_container_horizontal {
& > .mailpoet_block:first-child:nth-last-child(2),
& > .mailpoet_block:first-child:nth-last-child(2) ~ .mailpoet_block {
width: $column-margin + $two-column-width + $column-margin;
}
& > .mailpoet_block:first-child:nth-last-child(3),
& > .mailpoet_block:first-child:nth-last-child(3) ~ .mailpoet_block {
width: $column-margin + $three-column-width + $column-margin;
}
}
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal.mailpoet_irregular_width_contents_container.column_layout_1_2 > .mailpoet_container_block:first-child,
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal.mailpoet_irregular_width_contents_container.column_layout_2_1 > .mailpoet_container_block:nth-child(2) {
width: $column-margin + $three-column-width + $column-margin;
}
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal.mailpoet_irregular_width_contents_container.column_layout_2_1 > .mailpoet_container_block:first-child,
& > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal.mailpoet_irregular_width_contents_container.column_layout_1_2 > .mailpoet_container_block:nth-child(2) {
width: $column-margin + $two-column-wider-column-width + $column-margin;
}
}
.mailpoet_container_empty {
background-color: #f2f2f2;
border-radius: 3px;
box-shadow: inset 1px 2px 1px $primary-inactive-color;
color: #656565;
margin: 20px;
padding: 15px;
text-align: center;
@include animation-background-color();
}

View File

@ -0,0 +1,38 @@
$active-divider-border-color: #adadad;
$active-divider-background-color: #daebf2;
$divider-hover-border-color: $primary-active-color;
.mailpoet_divider_block {
cursor: all-scroll;
padding: 0;
}
.mailpoet_divider {
margin-left: 20px;
margin-right: 20px;
}
.mailpoet_field_divider_style {
border: 1px solid transparent;
display: block;
margin: auto;
max-width: $newsletter-width;
width: 100%;
}
.mailpoet_active_divider_style {
background: $active-divider-background-color;
border: 1px solid $active-divider-border-color;
}
.mailpoet_field_divider_style:hover {
border: 1px solid $divider-hover-border-color;
}
.mailpoet_divider_selector img {
width: 100%;
}
.mailpoet_field_divider_style {
padding: 10px 0;
}

View File

@ -0,0 +1,11 @@
.mailpoet_footer_block {
padding: 0;
.mailpoet_content {
padding: 10px 20px;
& > *:last-child {
margin-bottom: 0;
}
}
}

View File

@ -0,0 +1,11 @@
.mailpoet_header_block {
padding: 0;
.mailpoet_content {
padding: 10px 20px;
& > *:last-child {
margin-bottom: 0;
}
}
}

View File

@ -0,0 +1,23 @@
.mailpoet_image_block {
img {
height: auto;
max-width: 100%;
vertical-align: bottom;
}
&.mailpoet_full_image {
margin: auto;
padding: 0;
}
.mailpoet_content {
margin: auto;
max-width: 100%;
min-width: 36px;
a:hover {
cursor: all-scroll;
}
}
}

View File

@ -0,0 +1,74 @@
.mailpoet_posts_block {
padding-left: 0;
padding-right: 0;
}
.mailpoet_posts_block_posts {
overflow: auto;
& > .mailpoet_block {
width: 100%;
}
}
.mailpoet_post_selection_filter_row {
margin-bottom: 5px;
margin-top: 5px;
}
.mailpoet_posts_categories_and_tags {
width: 100%;
}
.mailpoet_settings_posts_display_options,
.mailpoet_settings_posts_selection {
@include animation-slide-open-downwards();
overflow-x: hidden;
}
.mailpoet_settings_posts_show_display_options,
.mailpoet_settings_posts_show_post_selection {
display: block;
margin-top: 10px;
}
.mailpoet_post_selection_container {
margin-bottom: 0;
margin-top: 20px;
}
.mailpoet_post_scroll_container {
max-height: 400px;
overflow-x: hidden;
overflow-y: scroll;
}
.mailpoet_settings_posts_single_post {
background-color: $white-color;
border: 1px solid $content-border-color;
border-radius: 1px;
box-sizing: border-box;
height: 38px;
line-height: 38px;
margin-bottom: 5px;
margin-top: 5px;
overflow: hidden;
width: 100%;
&:hover {
border-color: $primary-active-color;
}
.mailpoet_select_post_checkbox {
margin-left: 10px;
margin-right: 8px;
}
}
.mailpoet_post_selection_loading {
color: #999;
}
.mailpoet_posts_container > .mailpoet_droppable_block {
width: 100%;
}

View File

@ -0,0 +1,74 @@
.mailpoet_products_block {
padding-left: 0;
padding-right: 0;
}
.mailpoet_products_block_products {
overflow: auto;
& > .mailpoet_block {
width: 100%;
}
}
.mailpoet_product_selection_filter_row {
margin-bottom: 5px;
margin-top: 5px;
}
.mailpoet_products_categories_and_tags {
width: 100%;
}
.mailpoet_settings_products_display_options,
.mailpoet_settings_products_selection {
@include animation-slide-open-downwards();
overflow-x: hidden;
}
.mailpoet_settings_products_show_display_options,
.mailpoet_settings_products_show_product_selection {
display: block;
margin-top: 10px;
}
.mailpoet_product_selection_container {
margin-bottom: 0;
margin-top: 20px;
}
.mailpoet_product_scroll_container {
max-height: 400px;
overflow-x: hidden;
overflow-y: scroll;
}
.mailpoet_settings_products_single_product {
background-color: $white-color;
border: 1px solid $content-border-color;
border-radius: 1px;
box-sizing: border-box;
height: 38px;
line-height: 38px;
margin-bottom: 5px;
margin-top: 5px;
overflow: hidden;
width: 100%;
&:hover {
border-color: $primary-active-color;
}
.mailpoet_select_product_checkbox {
margin-left: 10px;
margin-right: 8px;
}
}
.mailpoet_product_selection_loading {
color: #999;
}
.mailpoet_products_container > .mailpoet_droppable_block {
width: 100%;
}

View File

@ -0,0 +1,128 @@
$social-icon-width: 32px;
$active-social-icon-set-border-color: #adadad;
$active-social-icon-set-background-color: #daebf2;
$social-icon-set-hover-border-color: $primary-active-color;
$tool-inactive-color: #333333;
$tool-hover-color: #bbbbbb;
$tool-active-color: #d2d2d4;
$tool-width: 16px;
.mailpoet_social_block {
.mailpoet_social {
text-align: center;
}
}
.mailpoet_social {
span {
display: inline-block;
padding: 2px 3px;
}
span, a,
img {
vertical-align: top;
}
a {
cursor: all-scroll;
}
}
.mailpoet_social_icon_set {
border: 1px solid transparent;
margin-bottom: 5px;
padding: 5px;
&:hover {
border: 1px solid $social-icon-set-hover-border-color;
}
img {
height: $social-icon-width;
padding: 2px 3px;
vertical-align: middle;
width: $social-icon-width;
}
}
.mailpoet_active_icon_set {
background-color: $active-social-icon-set-background-color;
border: 1px dashed $active-social-icon-set-border-color;
}
.mailpoet_social_icon_settings {
background: $white-color;
border: 1px solid $content-border-color;
margin-bottom: 9px;
padding: 28px 9px (18px - 10px) 9px;
position: relative;
}
.mailpoet_social_icon_settings_row {
clear: both;
line-height: 30px;
margin-bottom: 10px;
overflow: auto;
}
.mailpoet_social_icon_settings_label {
margin-right: 5px;
text-align: left;
.mailpoet_social_icon_image {
height: 30px;
width: 30px;
}
&.mailpoet_social_icon_image_label {
line-height: initial;
}
}
.mailpoet_social_icon_settings_form_element {
float: left;
width: 100%;
input, select {
box-sizing: border-box;
display: inline-block;
height: 30px;
margin: 0;
vertical-align: middle;
width: 100%;
}
}
.mailpoet_social_icon_settings_tool {
position: absolute;
top: 10px;
.mailpoet_tool_icon {
fill: $tool-inactive-color;
height: $tool-width;
width: $tool-width;
&:hover {
fill: $tool-hover-color;
}
&:active {
fill: $primary-active-color;
}
}
}
.mailpoet_social_icon_settings_move_icon {
right: 5px;
}
.mailpoet_social_icon_settings_delete_icon {
right: 5px + 5px + $tool-width;
}

View File

@ -0,0 +1,8 @@
.mailpoet_spacer {
text-align: center;
}
.mailpoet_spacer_block {
cursor: all-scroll;
padding: 0;
}

View File

@ -0,0 +1,13 @@
.mailpoet_text_block {
padding-left: 0;
padding-right: 0;
& > .mailpoet_content {
overflow: hidden;
padding: 0 20px;
& > *:last-child {
margin-bottom: 0;
}
}
}

View File

@ -0,0 +1,31 @@
@mixin animation-slide-open-downwards($max-height: 2000px) {
max-height: $max-height;
opacity: 1;
overflow-y: inherit;
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1); /* ease-in-out */
&.mailpoet_closed {
max-height: 0px;
opacity: 0;
}
}
@mixin animation-background-color() {
transition: background 250ms cubic-bezier(0.42, 0, 0.58, 1); /* ease-in-out */
}
@mixin animation-fade-in() {
animation-duration: 300ms;
animation-fill-mode: forwards;
animation-name: fadeIn;
animation-timing-function: ease-in;
}
@mixin animation-fade-in-and-scale-horizontally() {
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1); /* ease-in-out */
}
@keyframes fadeIn {
0% { opacity: 0.3; }
100% { opacity: 1; }
}

View File

@ -0,0 +1,30 @@
/*
Style for Members plugin
*/
.members-tab-title {
.mailpoet-icon-logo {
background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTIuMDIgMTU2LjQiPjxwYXRoIGQ9Ik0zNy43MSw4OS4xYzMuNSwwLDUuOS0uOCw3LjItMi4zYTgsOCwwLDAsMCwyLTUuNFYzNS43bDE3LDQ1LjFhMTIuNjgsMTIuNjgsMCwwLDAsMy43LDUuNGMxLjYsMS4zLDQsMiw3LjIsMmExMi41NCwxMi41NCwwLDAsMCw1LjktMS40LDguNDEsOC40MSwwLDAsMCwzLjktNWwxOC4xLTUwVjgxYTguNTMsOC41MywwLDAsMCwyLjEsNi4xYzEuNCwxLjQsMy43LDIuMiw2LjksMi4yLDMuNSwwLDUuOS0uOCw3LjItMi4zYTgsOCwwLDAsMCwyLTUuNFY4LjdhNy40OCw3LjQ4LDAsMCwwLTMuMy02LjZjLTIuMS0xLjQtNS0yLjEtOC42LTIuMWExOS4zLDE5LjMsMCwwLDAtOS40LDIsMTEuNjMsMTEuNjMsMCwwLDAtNS4xLDYuOEw3NC45MSw2Ny4xLDU0LjQxLDguNGExMi40LDEyLjQsMCwwLDAtNC41LTYuMmMtMi4xLTEuNS01LTIuMi04LjgtMi4yYTE2LjUxLDE2LjUxLDAsMCwwLTguOSwyLjFjLTIuMywxLjUtMy41LDMuOS0zLjUsNy4yVjgwLjhjMCwyLjguNyw0LjgsMiw2LjJDMzIuMjEsODguNCwzNC40MSw4OS4xLDM3LjcxLDg5LjFaIiAvPjxwYXRoIGQ9Ik0xNDksMTE2LjZsLTIuNC0xLjlhNy40LDcuNCwwLDAsMC05LjQuMywxOS42NSwxOS42NSwwLDAsMS0xMi41LDQuNmgtMjEuNEEzNy4wOCwzNy4wOCwwLDAsMCw3NywxMzAuNWwtMS4xLDEuMi0xLjEtMS4xYTM3LjI1LDM3LjI1LDAsMCwwLTI2LjMtMTAuOUgyN2ExOS41OSwxOS41OSwwLDAsMS0xMi40LTQuNiw3LjI4LDcuMjgsMCwwLDAtOS40LS4zbC0yLjQsMS45QTcuNDMsNy40MywwLDAsMCwwLDEyMi4yYTcuMTQsNy4xNCwwLDAsMCwyLjQsNS43QTM3LjI4LDM3LjI4LDAsMCwwLDI3LDEzNy40aDIxLjZhMTkuNTksMTkuNTksMCwwLDEsMTguOSwxNC40di4yYy4xLjcsMS4yLDQuNCw4LjUsNC40czguNC0zLjcsOC41LTQuNHYtLjJhMTkuNTksMTkuNTksMCwwLDEsMTguOS0xNC40SDEyNWEzNy4yOCwzNy4yOCwwLDAsMCwyNC42LTkuNSw3LjQyLDcuNDIsMCwwLDAsMi40LTUuN0E3Ljg2LDcuODYsMCwwLDAsMTQ5LDExNi42WiIgLz48L3N2Zz4=') no-repeat center;
background-size: contain;
display: inline-block;
height: 20px;
margin-right: 3px;
vertical-align: top;
width: 20px;
}
&:not([aria-selected="true"]) .mailpoet-icon-logo {
filter: invert(24%) sepia(95%) saturate(1872%) hue-rotate(179deg) brightness(93%) contrast(101%);
}
> a:hover .mailpoet-icon-logo,
> a:active .mailpoet-icon-logo {
filter: invert(49%) sepia(50%) saturate(3683%) hue-rotate(163deg) brightness(94%) contrast(101%);
}
&[aria-selected="true"] a .mailpoet-icon-logo {
filter: invert(33%) sepia(0%) saturate(7%) hue-rotate(205deg) brightness(94%) contrast(87%);
}
}

View File

@ -1,2 +0,0 @@
@require 'jquery-ui-1.10.1.css'
@require 'melon.datepicker.css'

View File

@ -1,17 +0,0 @@
.mailpoet-discount-container
margin: 15px
padding: 20px
background: white
border: 1px solid #FF5301
text-align: center
.mailpoet-discount-container h1
margin: 0
line-height: 1.2em
font-size: 2.8em
font-weight: 400
.mailpoet-discount-container p
line-height: 1.2em
font-size: 1.2em

View File

@ -1,5 +0,0 @@
.mailpoet_form
margin: 0 0 20px 0
.mailpoet_form td
vertical-align: top !important

View File

@ -1,568 +0,0 @@
@require 'codemirror/lib/codemirror.css'
@require 'codemirror/theme/neo.css'
icons = '../img/form_editor_icons.png'
handle_icon = '../img/handle.png'
#mailpoet_form_name
font-size: 23px
#mailpoet_form_history
display: none
#mailpoet_form_editor
padding: 20px
width: 300px
border: 1px solid #ccc
position: relative
background-color: #fff
box-shadow(0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 20px rgba(0, 0, 0, 0.1));
#mailpoet_form_editor:before,
#mailpoet_form_editor:after
position: absolute
width: 40%
height: 10px
content: ' '
left: 12px
bottom: 12px
background: transparent
-webkit-transform: skew(-5deg) rotate(-5deg)
-moz-transform: skew(-5deg) rotate(-5deg)
-ms-transform: skew(-5deg) rotate(-5deg)
-o-transform: skew(-5deg) rotate(-5deg)
transform: skew(-5deg) rotate(-5deg)
-webkit-box-shadow(0 6px 12px rgba(0, 0, 0, 0.3))
-moz-box-shadow(0 6px 12px rgba(0, 0, 0, 0.3))
box-shadow(0 6px 12px rgba(0, 0, 0, 0.3))
z-index: -1
#mailpoet_form_editor:after
left: auto
right: 12px
-webkit-transform: skew(5deg) rotate(5deg)
-moz-transform: skew(5deg) rotate(5deg)
-ms-transform: skew(5deg) rotate(5deg)
-o-transform: skew(5deg) rotate(5deg)
transform: skew(5deg) rotate(5deg)
/* Warnings in blocks*/
.mailpoet_warning
font-weight: bold
color: #900
.block_placeholder
font-weight: bold
height: 0
overflow: hidden
line-height: 30px
text-align: center
border: 0 none
width: 298px
z-index: 9500
margin: 0 auto
text-indent: -9999px
.block_placeholder.active
text-indent: 0
/*border:1px dashed #dfdfdf;*/
/*background-color:#f5f5f5;*/
background-color: #4cb7e1
display: block
overflow: auto
height: 30px
.block_placeholder.hover
background-color: #0074a2
border-color: #0074a2
color: #fff
.mailpoet_form_block
background-color: #fff
height: 20px
border: 0 none
.mailpoet_form_block.highlighted
border: 1px solid #5897FB
padding: 9px 17px
.mailpoet_form_block img
max-width: 100%
/* Widget styles */
.mailpoet_form_block p
margin: 5px 0
word-wrap: break-word
/* Widget: checkbox, radio */
.mailpoet_radio,
.mailpoet_checkbox
margin: -2px 5px 0 0
/* MailPoet Form wrapper */
#mailpoet_form_wrapper
position: relative
margin: 20px 0 0 0
/* MailPoet Form container */
#mailpoet_form_container
width: 340px
margin: 0
#mailpoet_form_editor.loading,
#mailpoet_form_toolbar.loading
background: url(loading.gif) no-repeat center center #fcfcfc
#mailpoet_form_toolbar.loading
border: 1px solid #dfdfdf
#mailpoet_form_toolbar.loading #mailpoet_toolbar_fields
visibility: hidden
z-index: 1
/* Tabs : content/images/styles/themes */
#wysija-add-field
float: none
#mailpoet_form_toolbar
z-index: 999
position: absolute
width: 400px
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs
border-bottom: 1px solid #dfdfdf
line-height: 0
#mailpoet_form_toolbar .add_custom_field
text-align: center
padding: 15px 0 5px 0
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs li,
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a
margin: 0
height: 30px
line-height: 30px
padding: 0
display: -moz-inline-box
display: inline-block
*display: inline
*float: left
outline: 0 none
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a
outline: 0 none
text-decoration: none
color: #a6a6a6
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs li
margin: 0 0 1px 0
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a
font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif
background-color: #F5F5F5
background linear-gradient(center top, #F9F9F9, #F5F5F5)
border: 1px solid #DFDFDF
border-radius(3px 3px 0 0)
box-shadow(0 1px 0 #FFFFFF inset)
padding: 0 7px
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a:hover
background-color: #eee
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a.selected
color: #000
border-bottom: 0 none
background: #fcfcfc
filter: none
padding-bottom: 1px
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs .last a
.wysija_params
display: none !important
#mailpoet_form_toolbar .mailpoet_form_toolbar_tabs,
#mailpoet_form_toolbar #mailpoet_toolbar_fields
position: relative
z-index: 9998
margin: 0
/* edit form name */
#mailpoet_form_name_input
vertical-align: bottom
/* wysija widgets */
.mailpoet_form_widget
width: 298px
height: 25px
line-height: 25px
z-index: 9999 !important
.mailpoet_toolbar_section
margin-bottom: 0
background: none repeat scroll 0 0 #fff
border: 1px solid #e5e5e5
box-shadow(0 1px 1px rgba(0, 0, 0, 0.04))
min-width: 255px
position: relative
cursor: pointer
overflow: hidden
max-height: 1000px
transition: max-height 0.5s ease-in-out
.mailpoet_toolbar_section > div
padding: 10px 20px 20px 20px
overflow: auto
height: 100%
min-width: 255px
.mailpoet_toolbar_section h3
margin: 10px
position: relative
.mailpoet_toolbar_section.closed
max-height: 38px
.mailpoet_toolbar_section .mailpoet_toggle
position: absolute
top: 0
right: 0
height: 38px
width: 27px
.mailpoet_toolbar_section .mailpoet_toggle:focus
outline: 0 none !important
box-shadow(none !important)
.mailpoet_toolbar_section .mailpoet_toggle:before
right: 12px
font: 400 20px/1 dashicons
speak: none
display: inline-block
padding: 8px 10px
top: 0
position: relative
-webkit-font-smoothing: antialiased
-moz-osx-font-smoothing: grayscale
text-decoration: none!important
content: '\f142'
.mailpoet_toolbar_section.closed .mailpoet_toggle:before
content: '\f140'
#mailpoet_form_styles
margin: 10px
max-width: 318px
width: 318px
min-height: 300px
resize: vertical
#mailpoet_form_toolbar a.mailpoet_form_field,
.mailpoet_form_widget
height: 25px
line-height: 25px
background-color: #F5F5F5
background linear-gradient(center top, #F9F9F9, #ececec)
border: 1px solid #DFDFDF
border-radius(3px)
box-shadow(0 1px 0 #FFFFFF inset)
display: block
font-size: 12px
font-weight: bold
padding: 0 7px
cursor: move
color: #222
text-shadow: 0 1px 0 #FFFFFF
#mailpoet_form_toolbar a.mailpoet_form_field.disabled
cursor: pointer
color: #cccccc
pointer-events: none
.mailpoet_form_field_edit
position: absolute
right: 27px
bottom: 13px
.mailpoet_form_field_delete
position: absolute
right: 7px
bottom: 13px
/* toolbar: fields */
#mailpoet_toolbar_fields li
padding: 0 0 10px 0
position: relative
#mailpoet_toolbar_fields li.notice
font-style: italic
font-size: 11px
margin: 0 !important
border: 0 none !important
background: none !important
/* blocks */
.mailpoet_form_block
position: relative
margin: 0
padding: 10px 18px 10px 18px
display: inline-table
display: block
height: 1%
margin: 0
z-index: 98
.mailpoet_form_block.dragging
z-index: 99000
pointer-events: none
.mailpoet_form_block:after
content: "."
display: block
height: 0
clear: both
visibility: hidden
.mailpoet_form_block.hover
border: 1px dashed #bbb
margin: 0 0 0 0
padding: 9px 17px 9px 17px
.mailpoet_form_block.static
/*padding:0;
margin:0;*/
background-color: #999
/* controls*/
.mailpoet_form_block .wysija_controls
background-color: #dfdfdf
background linear-gradient(center top, #eee, #bbb)
border-radius(2px)
border: 1px solid #ccc
position: absolute
margin: 0
padding: 0
width: 298px
height: 20px
left: -1px
right: 0
top: -22px
.mailpoet_form_block .wysija_controls li
float: left
width: 20px
height: 20px
.mailpoet_form_block .wysija_controls a
cursor: pointer
float: left
font-size: 120%
font-weight: bold
height: 20px
line-height: 20px
text-align: center
width: 20px
color: #000
.mailpoet_form_block .wysija_controls a.remove
margin: 0 0 0 1px
.mailpoet_form_block .handle_container,
.mailpoet_form_block .handle_container a
float: none
width: 40px !important
.mailpoet_form_block .handle_container
left: 140px
top: 0
position: absolute
/* controls & icons */
.wysija_controls a span,
.wysija_gallery .wysija_tools a span,
.wysija_image .wysija_tools a span,
.wysija_text .wysija_tools a span,
#mailpoet_toolbar_fields a span
display: block
height: 20px
width: 20px
/* toolbar: full width button */
/* color picker in control bars */
.wysija_controls span input
margin: 2px 0 0 0
padding: 0
color: transparent
/* left alignment button */
.alignment-left span
background: url(icons) no-repeat 0 0
.alignment-left.active span,
.alignment-left:hover span
background: url(icons) no-repeat 0 -20px
/* center alignment button */
.alignment-center span
background: url(icons) no-repeat -20px 0
.alignment-center.active span,
.alignment-center:hover span
background: url(icons) no-repeat -20px -20px
/* right alignment button */
.alignment-right span
background: url(icons) no-repeat -40px 0
.alignment-right.active span,
.alignment-right:hover span
background: url(icons) no-repeat -40px -20px
/* linking */
.add-link span
background: url(icons) no-repeat -60px 0
.add-link.active span,
.add-link:hover span
background: url(icons) no-repeat -60px -20px
.remove-link span
background: url(icons) no-repeat -80px 0
.remove-link.active span,
.remove-link:hover span
background: url(icons) no-repeat -80px -20px
/* block controls */
.remove span,
.delete span
background: url(icons) no-repeat -100px 0
.remove.active span,
.remove:hover span,
.delete.active span,
.delete:hover span
background: url(icons) no-repeat -100px -20px
.handle span
background: url(handle_icon) no-repeat
cursor: move
width: 40px !important
.duplicate span
background: url(icons) no-repeat -140px 0
.duplicate.active span,
.duplicate:hover span
background: url(icons) no-repeat -140px -20px
.settings span
background: url(icons) no-repeat -160px 0
.settings.active span,
.settings:hover span
background: url(icons) no-repeat -160px -20px
.icon-plus span
background: url(icons) no-repeat -200px 0
.icon-plus.active span,
.icon-plus:hover span
background: url(icons) no-repeat -200px -20px
.icon-minus span
background: url(icons) no-repeat -220px 0
.icon-minus.active span,
.icon-minus:hover span
background: url(icons) no-repeat -220px -20px
/* wysija options */
.wysija_options
display: none
/* wysija block settings */
.wysija_settings
position: absolute
z-index: 1000
.wysija_settings a
background-color: #F5F5F5
background linear-gradient(center top, #F9F9F9, #ececec)
border: 1px solid #DFDFDF
border-radius(3px)
box-shadow(0 1px 0 #FFFFFF inset)
font-size: 12px
font-weight: normal
cursor: pointer
color: #222
text-shadow: 0 1px 0 #FFFFFF
text-decoration: none
display: block
padding: 5px 5px 3px 27px
.wysija_settings a span
width: 20px
height: 20px
position: absolute
top: 3px
left: 5px
/* labels */
.mailpoet_form_block label
margin: 0 5px 0 0
display: block
/* form settings: success message */
#mailpoet_on_success textarea,
#mailpoet_on_success select
width: 100%
#mailpoet_on_success textarea
height: 50px
min-height: 50px
resize: vertical
/* make sure textareas within the form editor are not resizeable */
.mailpoet_form_block textarea
resize: none
/* remove click events from inputs within form editor */
.mailpoet_form_block input,
.mailpoet_form_block textarea
pointer-events: none
/* form export */
#mailpoet_form_export textarea
width: 340px
height: 150px
min-height: 150px
resize: vertical
font-size: 85%
display: none
/** Styling for WP 3.8 and higher */
.mailpoet_form_field_edit,
.mailpoet_form_field_delete
text-decoration: none
.mailpoet_form_field_edit:hover .dashicons-admin-generic:before,
.mailpoet_form_field_delete:hover .dashicons-dismiss:before,
.settings:hover .dashicons-admin-generic:before
color: #2ea2cc
.mailpoet_form_field_edit span,
.mailpoet_form_field_delete span
background: none !important
color: #999
.mailpoet_form_field_delete span:before
font-size: 21px
/* Code Mirror */
.CodeMirror
border: 1px solid #eee
/* Settings */
#mailpoet_form_segments.parsley-error + span .select2-selection
border: 1px solid #b94a48

View File

@ -1,6 +0,0 @@
.parsley-errors-list
margin-top: 8px
.parsley-required
.parsley-custom-error-message
color: #b94a48

View File

@ -1,24 +0,0 @@
icon-font-path ?= "../fonts"
@font-face
font-family 'mailpoet'
src url(icon-font-path + '/mailpoet.ttf?mx0b6n') format('truetype'), url(icon-font-path + '/mailpoet.woff?mx0b6n') format('woff'), url(icon-font-path + '/mailpoet.svg?mx0b6n#mailpoet') format('svg')
font-weight normal
font-style normal
[class^="mailpoet-icon-"], [class*=" mailpoet-icon-"]
font-family 'mailpoet' !important
speak none
font-style normal
font-weight normal
font-variant normal
text-transform none
line-height 1
/* Better Font Rendering =========== */
-webkit-font-smoothing antialiased
-moz-osx-font-smoothing grayscale
.mailpoet-icon-logo
&:before
content "\e900"

View File

@ -0,0 +1 @@
@import 'components/importExport';

View File

@ -1,78 +0,0 @@
.mailpoet_hidden, .mailpoet_validation_error
display none
.form-table
th
width 300px
#paste_input
width 100%
input[type="radio"]
margin-right 0.5em !important
& + span
margin-right 2.5em
span
&.mailpoet_mailchimp-key-status
&.mailpoet_mailchimp-ok
&:before
content "\2713"
color #0e90d2
margin-left 15px
&.mailpoet_mailchimp-error
&:before
content "\2717"
color #900
margin-left 15px
#subscribers_data
overflow auto
table
width auto
td
padding 0.5em
& > table
& > tbody
& > td
padding 0.5em
& > tr
&:nth-child(odd)
background #f9f9f9
.mailpoet_header
text-transform uppercase
font-weight 600
text-decoration underline
#subscribers_data th:first-child, #subscribers_data td:first-child
width 10em !important
text-align center !important
padding 0 1em 0 1em !important
vertical-align inherit !important
#subscribers_data
& > table
& > thead
& > tr
& > th
& > span
width 15em !important
.mailpoet_data_match
color #0e90d2
margin-left 0.25em
.mailpoet_import_error, .mailpoet_validation_error
color #900
tr
&.mailpoet_segments
& > td
& > a
margin-left 15px
span
&.select2-search
&.select2-search--dropdown
display none !important

View File

@ -1,53 +0,0 @@
.mailpoet_in_app_announcement_pulsing_dot
display: inline-block
width: 10px
height: 10px
border-radius: 50%
background: #ff5301
cursor: pointer
box-shadow: 0 0 0 rgba(255, 83, 1, 0.4)
animation: mailpoet_in_app_dot_pulse 2s infinite
@-webkit-keyframes mailpoet_in_app_dot_pulse
0%
-webkit-box-shadow: 0 0 0 0 rgba(255, 83, 1, 0.4)
70%
-webkit-box-shadow: 0 0 0 10px rgba(255, 83, 1, 0)
100%
-webkit-box-shadow: 0 0 0 0 rgba(255, 83, 1, 0)
@keyframes mailpoet_in_app_dot_pulse
0%
-moz-box-shadow: 0 0 0 0 rgba(255, 83, 1, 0.4)
box-shadow: 0 0 0 0 rgba(255, 83, 1, 0.4)
70%
-moz-box-shadow: 0 0 0 10px rgba(255, 83, 1, 0)
box-shadow: 0 0 0 10px rgba(255, 83, 1, 0)
100%
-moz-box-shadow: 0 0 0 0 rgba(255, 83, 1, 0)
box-shadow: 0 0 0 0 rgba(255, 83, 1, 0)
.mailpoet_in_app_announcement_free_welcome_emails
text-align: center
h2
font-size: 28px
img
width: 640px
margin-top: -20px
.mailpoet_in_app_announcement_free_welcome_emails_dot
position: relative
top: -3px
left: 8px
.mailpoet_in_app_announcement_background_videos, .mailpoet_drag_and_drop_tutorial
text-align: center
h2
font-size: 28px
video
margin-top: 20px
.new_subscriber_notification_announcement
h2
font-size: 28px
text-align: center

View File

@ -1,71 +0,0 @@
.mailpoet-intro-active #adminmenuback
z-index: auto;
// fix for intro.js bug (https://github.com/heelhook/chardin.js/issues/26) causing
// target element appear under helper layer when parent has 'position: fixed' - this
// happens when sticky WP menu is fixed, it could cause it to scroll away, but since
// intro is shown when page is empty (= shorter than menu), it should never happen
#adminmenuwrap.introjs-fixParent
position: absolute
#adminmenu li.introjs-showElement
background: inherit
.introjs-helperLayer
border: none
border-radius: 3px
background-color: rgba(255, 255, 255, .7)
.introjs-tooltip
min-width: 240px
// fix for wrong bottom-up tooltip vertical align, bottom-up tooltips
// have (negative) 'top' set in intro.js, no other way to select them
&[style*="top:"]
margin-top: -8px
.introjs-tooltip .introjs-tooltipbuttons
display: flex
justify-content: flex-end
.introjs-tooltip .button
margin-top: 15px
position: relative
&:hover, &:focus
z-index: 1
// fix for focused button not having 2px bottom border (as non-focused do)
&:focus
height: 100%
margin-bottom: -1px
&:after
content: ''
position: absolute
bottom: 0
left: 0
right: 0
height: 1px
background: #5b9dd9
&.introjs-hidden
display: none
&.introjs-skipbutton:not(.introjs-donebutton)
margin-right: auto
& + .button
margin-left: 10px
&.introjs-donebutton
order: 1
&.introjs-prevbutton
border-top-right-radius: 0
border-bottom-right-radius: 0
&:not(.introjs-hidden) + .introjs-nextbutton, &.introjs-donebutton
border-top-left-radius: 0
border-bottom-left-radius: 0
margin-left: -1px

View File

@ -1,27 +0,0 @@
.mailpoet_listing_loading tbody tr
.mailpoet_form_loading tbody tr
opacity: 0.2
.mailpoet_select_all
background-color: #f1f1f1
.mailpoet_select_all td
text-align: center
.mailpoet_listing_table
th span
white-space: nowrap
thead .check-column
tfoot .check-column
padding: 10px 0 0 3px
thead th.column-primary
tfoot th.column-primary
width: 25em
// responsive
@media screen and (max-width: 782px)
thead th.column-primary
tfoot th.column-primary
width: 100%

View File

@ -1,65 +0,0 @@
$excellent-badge-color = #2993ab
$good-badge-color = #f0b849
$bad-badge-color = #d54e21
$green-badge-color = #55bd56
$video-guide-badge-color = #46b450
#newsletters_container
h2.nav-tab-wrapper
margin-bottom: 1rem
.mailpoet_stats_text
font-size: 14px
font-weight: 600;
.mailpoet_stat
&_excellent
color: $excellent-badge-color
&_good
color: $good-badge-color
&_bad
color: $bad-badge-color
&_hidden
display: none
&_link_small
text-decoration: underline !important
font-size: 0.75rem
.mailpoet_badge
padding: 4px 6px 3px 6px
margin-right: 4px
badge()
&_excellent, &_teal
background: $excellent-badge-color
&_good, &_yellow
background: $good-badge-color
&_bad, &_red
background: $bad-badge-color
&_green
background: $green-badge-color
&_video
background: $video-guide-badge-color
line-height: 5em
padding: 7px 6px 7px 6px
text-decoration: none
&:hover, &:active, &:focus
color: #FFFFFF
background: $green-badge-color
&_grey
background: #c3c3c3
.dashicons
font-size: 14px;
line-height: 3.4em;

View File

@ -1,207 +0,0 @@
modal_title_color = #cfcfcf
modal_title_background_color = #222
modal_highlight_background_color = #f1f1f1
modal_content_background_color = #f0f0f0
overlay_background_color = alpha(#000, 60%)
// hide scrollbars on background when a modal window opened
body.mailpoet_modal_opened
overflow: hidden
// overlay
#mailpoet_modal_overlay
height: 100%
left: 0
overflow-y: auto
overflow-x: hidden
position: fixed
top: 0
width: 100%
z-index: 100000
background-color: overlay_background_color
.mailpoet_modal_highlight
pointer-events: none
background-color: modal_highlight_background_color
position: relative
z-index: 100001 !important
box-shadow(0px 0px 20px 2px alpha(#fff, 75%))
// overlay: state
#mailpoet_modal_overlay.mailpoet_overlay_hidden
background-color: transparent
// overlay: state
#mailpoet_modal_overlay.mailpoet_overlay_loading
background-color: overlay_background_color !important
display: block !important
.mailpoet_modal_opened #mailpoet_modal_overlay
display: block
// modal popup
#mailpoet_popup
display: none
position: absolute
z-index: 25
top: 48px
margin: 0
.mailpoet_popup_wrapper
background-color: modal_content_background_color
overflow: hidden
position: relative
width: 100%
z-index: 0
height: 96%
.mailpoet_overlay_hidden .mailpoet_popup_wrapper
border: 1px solid #333
#mailpoet_popup_title
background-color: modal_title_background_color
border: 1px solid #333
height: 27px
margin: 0
padding: 0 30px 0 0
#mailpoet_popup_title h2
color: modal_title_color
font-size: 12px
font-weight: normal
margin: 6px 0 0 10px
padding: 0
font-family: "Lucida Grande", Verdana, Arial, sans-serif
.mailpoet_popup_body
padding: 10px 10px 10px 10px
height: 92%
// modal panel
#mailpoet_modal_overlay.mailpoet_panel_overlay
top: 32px
overflow: hidden
#mailpoet_panel
display: none
position: fixed
z-index: 100002
top: 0
bottom: 0
padding: 0
margin: 0
width: 100%
transition: margin 350ms ease-out
.mailpoet_panel_wrapper
background-color: #f1f1f1
border: 1px solid #e1e1e1
border-top: 0 none
height: 100%
overflow-y: auto
overflow-x: hidden
width: 100%
top: 0
z-index: 0
#mailpoet_panel_title
margin: 0
padding: 0
position: relative
height: 0
#mailpoet_panel_title h2
color: modal_title_color
background-color: modal_title_background_color
border-left: 1px solid #444
border-right: 1px solid #444
font-size: 1em
font-weight: normal
margin: 0
padding: 0 30px 0 10px
font-family: "Lucida Grande", Verdana, Arial, sans-serif
line-height: 32px
.mailpoet_panel_body
padding: 10px 10px 36px 10px
// modal button
#mailpoet_modal_close
background: url(../img/modal_close_button.png) 7px 7px no-repeat
height: 30px
overflow: hidden
padding: 0
position: absolute
width: 30px
z-index: 2
outline: 0 none
#mailpoet_popup #mailpoet_modal_close
right: 0
top: 0
#mailpoet_panel #mailpoet_modal_close
right: 10px
top: 7px
#mailpoet_modal_close:focus
outline: 0 none
// buttons
.mailpoet_align_left
margin: 0
text-align: left
.mailpoet_align_center
margin: 0
text-align: center
.mailpoet_align_right
margin: 0
text-align: right
@media screen and (max-width: 782px)
#mailpoet_modal_overlay.mailpoet_panel_overlay
top: 46px
.mailpoet_panel_body
padding-bottom: 52px
#mailpoet_loading
position: relative
left: 50%
top: 50%
margin-left: -75px
margin-top: -16px
.mailpoet_loading
height: 32px
width: 150px
display flex
flex-direction: row
.mailpoet_modal_loading
animation-direction(linear)
animation-duration(1.9500000000000002s)
animation-iteration-count(infinite)
animation-name(bounce_mailpoet_modal_loading)
border-radius(21px)
background-color: #E01D4E
height: 32px
margin-left: 17px
width: 32px
#mailpoet_modal_loading_1, .mailpoet_modal_loading_1
animation-delay(0.39s)
#mailpoet_modal_loading_2, .mailpoet_modal_loading_2
animation-delay(0.9099999999999999s)
#mailpoet_modal_loading_3, .mailpoet_modal_loading_3
animation-delay(1.1700000000000002s)
@keyframes bounce_mailpoet_modal_loading
0%
50%
background-color: #064E6D
100%

View File

@ -1,33 +0,0 @@
#logger
width: 100%
height: 300px
background-color: transparent
border: 0
border-top: 1px #aba9a9 solid
padding: 2px
overflow: scroll
resize: both
font-size: 0.85em
margin-top: 20px
#progressbar
width: 50%
background-color: #d8d8d8
border-radius: 5px
progressbar_color = #fecf23
progressbar_gradient_to_color = #fd9215
.ui-progressbar .ui-progressbar-value
height: 100%
background-color: progressbar_color
background-image: linear-gradient(to bottom, progressbar_color, progressbar_gradient_to_color)
border-radius: 3px
box-shadow: 0 1px 0 rgba(255,255,255,0.5) inset
border 0
.mailpoet_progress_label
font-size: 15px
.error_msg
color: #f00

View File

@ -0,0 +1,36 @@
@import '../../../node_modules/select2/dist/css/select2';
@import '../../../node_modules/spectrum-colorpicker/spectrum';
@import 'components/newsletterEditor/mixins/transitions';
@import 'components/newsletterEditor/variables';
@import 'components/newsletterEditor/common';
@import 'components/newsletterEditor/layout';
@import 'components/newsletterEditor/components/forms';
@import 'components/newsletterEditor/components/heading';
@import 'components/newsletterEditor/components/sidebar';
@import 'components/newsletterEditor/components/sidepanel';
@import 'components/newsletterEditor/components/save';
@import 'components/newsletterEditor/components/blockTools';
@import 'components/newsletterEditor/components/layers';
@import 'components/newsletterEditor/components/dragAndDrop';
@import 'components/newsletterEditor/components/resize';
@import 'components/newsletterEditor/contentBlocks/base';
@import 'components/newsletterEditor/contentBlocks/container';
@import 'components/newsletterEditor/contentBlocks/automatedLatestContent';
@import 'components/newsletterEditor/contentBlocks/posts';
@import 'components/newsletterEditor/contentBlocks/products';
@import 'components/newsletterEditor/contentBlocks/button';
@import 'components/newsletterEditor/contentBlocks/divider';
@import 'components/newsletterEditor/contentBlocks/image';
@import 'components/newsletterEditor/contentBlocks/social';
@import 'components/newsletterEditor/contentBlocks/spacer';
@import 'components/newsletterEditor/contentBlocks/text';
@import 'components/newsletterEditor/contentBlocks/header';
@import 'components/newsletterEditor/contentBlocks/footer';
@import 'components/newsletterEditor/libraryOverrides';

View File

@ -1,23 +0,0 @@
.newsletter_congratulate_page
margin-top: 30px;
.mailpoet_newsletter_loading
text-align: center;
.mailpoet_loading
margin: 100px auto 0 auto;
.mailpoet_newsletter_loading_header
margin: 30px;
.mailpoet_congratulate_success
width: 100%;
h1
text-align center;
margin-bottom: 30px;
img, .button
margin-left: auto;
margin-right: auto;
display: block;

View File

@ -1,263 +0,0 @@
$link-color = $primary-active-background-color
$select-border-color = $content-border-color
$select-text-color = $primary-text-color
$button-default-border-color = $structure-border-color
$button-default-background-color = $primary-background-color
$button-default-text-color = $primary-inactive-color
$button-primary-border-color = $primary-active-color
$button-primary-background-color = $primary-active-background-color
$button-primary-hover-background-color = $primary-active-color-highlight
$button-primary-text-color = $white-color
$range-track-background-color = $white-color
$range-track-border-color = $structure-border-color
$range-track-height = 12px
$range-thumb-background-color = $primary-inactive-color
$range-thumb-border-color = #333
$range-thumb-width = 13px
$range-thumb-height = 26px
$range-border-radius = 3px
$range-thumb-hover-background-color = $primary-active-color
a
color: $link-color
text-decoration: none
.mailpoet_hidden
display: none !important
input.mailpoet_color
width: 5em
select.mailpoet_font-family
width: 8em
select.mailpoet_font-size
width: 5em
.mailpoet_input, .mailpoet_select
border-radius(1px)
box-shadow(none !important)
appearance: none
padding: $form-control-padding = 3px
line-height: 28px - $form-control-padding*2
.mailpoet_input
width: 283px
border: 1px solid $select-border-color
.mailpoet_input_small
width: 48px
.mailpoet_input_medium
width: 150px
.mailpoet_input_full
width: 100%
box-sizing: border-box
.mailpoet_range
width: 283px
-webkit-appearance: none
padding: 0
vertical-align: middle
&:focus
outline: none
&::-webkit-slider-runnable-track
width: 100%
height: $range-track-height
cursor: pointer
animate: 0.2s
background: $range-track-background-color
border-radius($range-border-radius)
border: 1px solid $range-track-border-color
&::-webkit-slider-thumb
border: 1px solid $range-thumb-border-color
height: $range-thumb-height
width: $range-thumb-width
border-radius($range-border-radius)
background: $range-thumb-background-color
cursor: pointer
-webkit-appearance: none
margin-top: (-1 * $range-thumb-height / 3)
&:hover::-webkit-slider-thumb
background: $range-thumb-hover-background-color
&::-moz-range-track
width: 100%
height: $range-track-height
cursor: pointer
animate: 0.2s
background: $range-track-background-color
border-radius($range-border-radius)
border: 1px solid $range-track-border-color
&::-moz-range-thumb
border: 1px solid $range-thumb-border-color
height: $range-thumb-height
width: $range-thumb-width
border-radius($range-border-radius)
background: $range-thumb-background-color
cursor: pointer
&:hover::-moz-range-thumb
background: $range-thumb-hover-background-color
&::-ms-fill-lower
border: 1px solid $range-track-border-color
background: $range-track-background-color
&::-ms-fill-upper
border: 1px solid $range-track-border-color
background: $range-track-background-color
&::-ms-track
width: 100%
height: $range-track-height
cursor: pointer
animate: 0.2s
background: transparent
border-color: transparent
border-width: ($range-track-height * 2) 0
color: transparent
&::-ms-thumb
border: 1px solid $range-thumb-border-color
height: $range-thumb-height
width: $range-thumb-width
border-radius($range-border-radius)
background: $range-thumb-background-color
cursor: pointer
&:hover::-ms-thumb
background: $range-thumb-hover-background-color
&:focus::-ms-fill-lower
border: 1px solid $range-track-border-color
background: $range-track-background-color
&:focus::-ms-fill-upper
border: 1px solid $range-track-border-color
background: $range-track-background-color
.mailpoet_range_small
width: 100px
.mailpoet_range_medium
width: 180px
.mailpoet_select
border-color: $select-border-color
color: $select-text-color
margin: 0
.mailpoet_select_large
width: 139px
.mailpoet_select_medium
width: 103px
.mailpoet_select_small
width: 68px
.mailpoet_select_half_width
width: 50%
#mailpoet_editor_content ol
#mailpoet_editor_content ul
list-style-position: inside
margin-left: 0
#mailpoet_editor_content ul
list-style-type: disc
.mailpoet_button
margin: 0
border: 1px solid $button-default-border-color
background-color: $button-default-background-color
padding: 6px 20px
color: $button-default-text-color
border-radius(3px)
line-height: normal
vertical-align: top
.mailpoet_button_full
width: 100%
box-sizing: border-box
.tooltip-help-designer-subject-line div, .tooltip-help-designer-preheader div
z-index: 100001
.tooltip-help-send-preview
position: absolute
right: 15px
.tooltip-help-designer-ideal-width
color: #656565
text-transform: none
margin-left: 5px
font-weight: normal
.tooltip-help-designer-styles
position: absolute
top: 40px
.tooltip-help-designer-full-width .dashicons
line-height 34px
.tooltip-help-designer-full-width span
line-height 1.4em
.mailpoet_button_primary
border-color: $button-primary-border-color
background-color: $button-primary-background-color
color: $button-primary-text-color
&:hover
background-color: $button-primary-hover-background-color
.mailpoet_button_group
display: inline
.mailpoet_button:first-child
margin-right: 0
padding: 6px 12px 6px
border-top-right-radius: 0
border-bottom-right-radius: 0
.mailpoet_button:last-child
margin-left: 0
padding-left: 10px
padding-right: 10px
border-left: 0
border-top-left-radius: 0
border-bottom-left-radius: 0
.mailpoet_text_content p
margin: 1em 0
.mailpoet_separator
margin: 17px 20px
.mailpoet_option_offset_left_small
margin-left: 10px
input.mailpoet_option_offset_left_small
margin-left: 10px !important
.mailpoet_form_field span.select2-container
width: 103px !important
span.select2-container--open > span.select2-dropdown
width: 150px !important
span.select2-container--open > span.select2-dropdown li.select2-results__option
font-size: 13px
margin: 0px !important
& .select2-results__group
font-weight: normal
color: #bfbfbf
& .select2-results__option
padding-left: 15px
font-size: 13px
&[aria-selected=true]
background-color: #eee
color: #444
.mailpoet-fonts-notice
color: #999

View File

@ -1,189 +0,0 @@
$tool-inactive-color = #333333
$tool-inactive-secondary-color = #ffffff
$tool-hover-color = #bbbbbb
$tool-hover-secondary-color = #ffffff
$tool-active-color = #d2d2d4
$tool-active-secondary-color = #ffffff
$tool-width = 20px
$master-column-tool-width = 24px
.mailpoet_tools
position: absolute
top: 0
right: 0
z-index: 20
padding: 2px
text-align: right
overflow: hidden
.mailpoet_tool_slider
position: relative
right: -100%
transition: all 250ms cubic-bezier(0.420, 0.000, 0.580, 1.000)
opacity: 0
&.mailpoet_display_tools
.mailpoet_tool_slider
right: 0
opacity: 1
a
vertical-align: top
.mailpoet_container_horizontal + &
left: 100%
right: initial
padding-left: 5px
.mailpoet_tool_slider
left: -100%
right: initial
&.mailpoet_display_tools
z-index: 21
.mailpoet_tool_slider
left: 0
.mailpoet_tool
width: $master-column-tool-width
height: $master-column-tool-width
display: block
.mailpoet_tool_icon
width: $master-column-tool-width
height: $master-column-tool-width
.mailpoet_delete_block_activate
max-width: 100%
max-height: $master-column-tool-width
opacity: 1
display: block
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel
max-width: 100%
max-height: 0
opacity: 0
overflow: hidden
display: block
margin: 0
.mailpoet_delete_block_activated
width: auto
height: auto
.mailpoet_delete_block_activate
overflow: hidden
max-height: 0
opacity: 0
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel
max-height: $master-column-tool-width*2
opacity: 1
.mailpoet_tool
display: inline-block
width: $tool-width
height: $tool-width
padding: 2px
&:hover
filter-shadow(1px, 2px, 0px, $tool-active-color)
.mailpoet_tool_icon
fill: $tool-inactive-color
width: $tool-width
height: $tool-width
.mailpoet_tool_icon_foreground
fill: $tool-inactive-secondary-color
&:hover
fill: $tool-hover-color
.mailpoet_tool_icon_foreground
fill: $tool-hover-secondary-color
&:active
fill: $primary-active-color
.mailpoet_tool_icon_foreground
fill: $tool-active-secondary-color
.mailpoet_delete_block_confirmation
position: absolute
top: 0
right: 0
width: 200px
.mailpoet_delete_block
display: inline-block
padding: 2px
vertical-align: top
animation-background-color()
.mailpoet_tool
padding: 0
.mailpoet_delete_block_activate
max-width: $tool-width
display: inline-block
opacity: 1
animation-fade-in-and-scale-horizontally()
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel
max-width: 0
opacity: 0
overflow: hidden
display: inline-block
animation-fade-in-and-scale-horizontally()
.mailpoet_delete_block_activated
height: auto
width: auto
border-radius(3px)
background-color: $warning-background-color
padding: 3px 5px
.mailpoet_delete_block_activate
overflow: hidden
max-width: 0
opacity: 0
.mailpoet_delete_block_confirm,
.mailpoet_delete_block_cancel
max-width: 100%
opacity: 1
.mailpoet_delete_block_cancel
margin-left: 3px
.mailpoet_delete_block_confirm
color: $warning-text-color
float: right
&:hover
color: $warning-text-color
text-decoration: underline
.mailpoet_delete_block_cancel
color: $warning-alternate-text-color
float: right
&:hover
color: $warning-alternate-text-color
text-decoration: underline
.mailpoet_newsletter_layer_selector
&.mailpoet_container_layer_active
.mailpoet_tool_icon
fill: $primary-active-color
z-index: 100001 !important
.mailpoet_tool_icon_foreground
fill: $white-color

View File

@ -1,70 +0,0 @@
$drop-active-color = $primary-active-color
$marker-width = 2px
$marker-z-index = 1
$draggable-widget-z-index = 2
.mailpoet_drop_marker
background-color: $primary-active-color
position: absolute
min-width: $marker-width
min-height: $marker-width
z-index: $marker-z-index
box-shadow(0px 0px 1px 0px $primary-active-color)
&::before, &::after
position: absolute
margin-top: -18px
font: 400 40px/1 dashicons
color: $primary-active-color
&::before
left: -25px
content: "\f139"
&::after
right: -23px
content: "\f141";
// Offset middle markers slightly above, so that the middle of the marker is
// right on the boundary between two adjacent content blocks
.mailpoet_drop_marker.mailpoet_drop_marker_middle
.mailpoet_drop_marker.mailpoet_drop_marker_first.mailpoet_drop_marker_after
.mailpoet_drop_marker.mailpoet_drop_marker_last.mailpoet_drop_marker_before
margin-top: -1 * ($marker-width / 2)
// Offset the last marker up, so that the bottom of it matches the bottom of the
// container
.mailpoet_drop_marker.mailpoet_drop_marker_last.mailpoet_drop_marker_after
margin-top: -1 * $marker-width
#mailpoet_editor .mailpoet_droppable_active
z-index: 21000
.mailpoet_block.mailpoet_droppable_active
border: 1px dashed $drop-active-color !important
width: $newsletter-width
.mailpoet_tools
display: none !important
.mailpoet_widget.mailpoet_droppable_active
padding: 0
margin: 0
z-index: $draggable-widget-z-index
animation-fade-in()
.mailpoet_widget_icon
padding: 0
margin: 0
.mailpoet_drop_active > .mailpoet_container > div > .mailpoet_container_empty
background-color: $primary-active-color
box-shadow(inset 1px 2px 1px $primary-inset-shadow-color)
color: $white-color
.mailpoet_droppable_block
cursor: move
&.mailpoet_ignore_drag
cursor: auto

View File

@ -1,41 +0,0 @@
.mailpoet_form_field
margin-top: 15px
margin-bottom: 15px
.mailpoet_form_field_title
clear: both
margin-bottom: 5px
.mailpoet_form_field_title_small
width: 120px
.mailpoet_form_field_title_inline
display: inline-block
margin-bottom: 0
margin-top: 6px
.mailpoet_form_field_optional
font-size: 0.8em
color: $primary-inactive-color
.mailpoet_form_field_radio_option,
.mailpoet_form_field_checkbox_option
display: inline-block
vertical-align: top
margin-right: 5px
line-height: 30px
&:last-child
margin-right: 0
.mailpoet_form_field_input_option
display: inline-block
input[type=checkbox]
vertical-align:top
input[type=text]
vertical-align: middle
.mailpoet_form_field_block
display: block

View File

@ -1,27 +0,0 @@
.mailpoet_heading_form_field
margin-top: 5px
margin-bottom: 5px
.mailpoet_input_title,
.mailpoet_input_preheader
width: 500px
padding: 3px
line-height: normal
.mailpoet_input_title
font-size: 23px
.mailpoet_breadcrumbs
float: left
margin-bottom: 13px
margin-left: 17px
font-size: 0.9em
text-transform: uppercase
p
margin: 0
.mailpoet_editor_announcement
position: absolute
right: 20px
top: 90px

Some files were not shown because too many files have changed in this diff Show More