Merge pull request #1677 from mailpoet/mobile-preview

Add mobile preview mode [MAILPOET-1583]
This commit is contained in:
M. Shull
2018-12-17 17:19:25 -05:00
committed by GitHub
4 changed files with 64 additions and 2 deletions

View File

@@ -126,3 +126,32 @@ $widget-icon-width = 30px
.mailpoet_widget_title .mailpoet_widget_title
display: none display: none
/* Browser preview modal */
.mailpoet_browser_preview_toggle
height: 30px
padding: 10px 0
text-align: center
.mailpoet_browser_preview_toggle > label
display: inline-block
margin: 0 5px
.mailpoet_browser_preview_container
margin: auto
height: calc(100% - 60px)
transition: width 0.5s
border: 20px solid white
border-radius: 20px
box-sizing: border-box
background: white
padding: 15px 0
.mailpoet_browser_preview_container_desktop
width: 100%
.mailpoet_browser_preview_container_mobile
width: 350px
.mailpoet_browser_preview_iframe
border: 1px solid #c3c3c3

View File

@@ -265,6 +265,7 @@ define([
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}).done(function (response) { }).done(function (response) {
this.previewView = new Module.NewsletterPreviewView({ this.previewView = new Module.NewsletterPreviewView({
previewType: window.localStorage.getItem(App.getConfig().get('newsletterPreview.previewTypeLocalStorageKey')),
previewUrl: response.meta.preview_url previewUrl: response.meta.preview_url
}); });
@@ -345,7 +346,13 @@ define([
Module.NewsletterPreviewView = Marionette.View.extend({ Module.NewsletterPreviewView = Marionette.View.extend({
getTemplate: function () { return window.templates.newsletterPreview; }, getTemplate: function () { return window.templates.newsletterPreview; },
events: function () {
return {
'change .mailpoet_browser_preview_type': 'changeBrowserPreviewType'
};
},
initialize: function (options) { initialize: function (options) {
this.previewType = options.previewType;
this.previewUrl = options.previewUrl; this.previewUrl = options.previewUrl;
this.width = '100%'; this.width = '100%';
this.height = '100%'; this.height = '100%';
@@ -354,10 +361,25 @@ define([
}, },
templateContext: function () { templateContext: function () {
return { return {
previewType: this.previewType,
previewUrl: this.previewUrl, previewUrl: this.previewUrl,
width: this.width, width: this.width,
height: this.height height: this.height
}; };
},
changeBrowserPreviewType: function (event) {
var value = jQuery(event.target).val();
if (value === 'mobile') {
this.$('.mailpoet_browser_preview_container').removeClass('mailpoet_browser_preview_container_desktop');
this.$('.mailpoet_browser_preview_container').addClass('mailpoet_browser_preview_container_mobile');
} else {
this.$('.mailpoet_browser_preview_container').addClass('mailpoet_browser_preview_container_desktop');
this.$('.mailpoet_browser_preview_container').removeClass('mailpoet_browser_preview_container_mobile');
}
window.localStorage.setItem(App.getConfig().get('newsletterPreview.previewTypeLocalStorageKey'), value);
this.previewType = value;
} }
}); });

View File

@@ -1329,7 +1329,8 @@
sidepanelWidth: '331px', sidepanelWidth: '331px',
newsletterPreview: { newsletterPreview: {
width: '1024px', width: '1024px',
height: '768px' height: '768px',
previewTypeLocalStorageKey: 'newsletter_editor.preview_type'
}, },
validation: { validation: {
validateUnsubscribeLinkPresent: <%= mss_active ? 'true' : 'false' %>, validateUnsubscribeLinkPresent: <%= mss_active ? 'true' : 'false' %>,

View File

@@ -1 +1,11 @@
<iframe src="{{ previewUrl }}" width="{{ width }}" height="{{ height }}"></iframe> <div class="mailpoet_browser_preview_toggle">
<label>
<input type="radio" name="mailpoet_browser_preview_type" class="mailpoet_browser_preview_type" value="desktop" {{#ifCond previewType '!=' 'mobile'}}CHECKED{{/ifCond}} /><%= _x('Desktop', 'Desktop browser preview mode') %>
</label>
<label>
<input type="radio" name="mailpoet_browser_preview_type" class="mailpoet_browser_preview_type" value="mobile" {{#ifCond previewType '==' 'mobile'}}CHECKED{{/ifCond}} /><%= _x('Mobile', 'Mobile browser preview mode') %>
</label>
</div>
<div class="mailpoet_browser_preview_container {{#ifCond previewType '==' 'mobile'}}mailpoet_browser_preview_container_mobile{{else}}mailpoet_browser_preview_container_desktop{{/ifCond}}">
<iframe class="mailpoet_browser_preview_iframe" src="{{ previewUrl }}" width="{{ width }}" height="{{ height }}"></iframe>
</div>