Commit Graph

69 Commits

Author SHA1 Message Date
James Bolitho
0cb98bcce2 Fix localStorage for Windows 8.1 IE11 desktop mode
In IE11 windows 8 call to window.localStorage was throwing out an access denied error.  Using try and catch manages the issue and allows the script to execute in IE 11 in desktop mode.

I think it is a problem with IE11 rather than the way Silverstripe is implementing the preview via an iframe from what I have been reading. http://blogs.msdn.com/b/ieinternals/archive/2009/09/16/bugs-in-ie8-support-for-html5-postmessage-sessionstorage-and-localstorage.aspx.  It seems that the way IE11 deals with localStorage is broken in certain cases but I am not 100% certain of the cause yet as I have not been able to find a definitive answer.  I only noticed it was a problem when a new client said they couldn't view the admin screen properly in IE11.  I took a look in IE11 and I was experiencing the same problem which makes the admin interface layout screw up and the preview doesn't work due the error mentioned in the first post.

Instead of the original code I submitted I have amended it and added an additional function to test more robustly to see if localStorage is available and can be accessed properly.  It is a copy of the code on a blog post Mathias Bynens has written about detecting if localStorage is available and can be used: https://mathiasbynens.be/notes/localstorage-pattern

I have added a console.warn as you suggested if localStorage is not available so that at least you get a warning if localStorage tests fail.

I have tested this on Windows 8.1: Firefox, Chrome & Mac: Firefox, Safari, Chrome and it seems to work as expected.  On IE11 it displays the admin area correctly now but obviously doesn't save the preview settings between page loads if localStorage is not available.
2015-08-29 15:54:14 +01:00
Mateusz Uzdowski
b34aaca2e8 BUG Fix several issues around onmatch/onunmatch entwines.
1. Add missing _super calls.

2. Make UI widget destroys more consistent to avoid exceptions.
Selectable would throw an exception in the GridField.js if destroy
called from onunmatch - at that stage jQuery UI would have had called
the destroy already. Add a guard, and change to onremove, which triggers
before the element is removed from DOM.

3. DOM traversal fails after the element is removed from DOM.
Onunmatch triggers after the removal of the element from the DOM, which
makes DOM traversal fail. Use onremove instead, which triggers while the
element is still in DOM.
2014-07-17 14:14:52 +12:00
Hamish Friedlander
45c1d2b0ce FIX webfonts in preview iframe breaking admin fonts
In IE8, when a page in the preview iframe uses a web font (not just
references it in CSS, but actually has glyphs present in the page),
the fonts in the containing admin interface will become corrupted
(display as all squares) until the mouse moves.

This commit uses the technique described at
http://stackoverflow.com/questions/9809351/ie8-css-font-face-fonts-only-working-for-before-content-on-over-and-sometimes#10557782
to cause the admin panel to re-calculated all it's fonts
after the preview iframe has loaded, fixing the glitch
2013-08-27 10:49:24 +12:00
Hamish Friedlander
0ca4969cda FIX Dont update preview iframe if hidden
Updating the iframe src when the iframe isnt visible in IE8 causes a
view disconcerting font glitch (and it slows down navigation anyway),
so if the iframe isnt visible, delay setting the src until it is
2013-08-21 09:29:28 +12:00
Robert Curry
a365759a0d Always load preview when in preview mode, not in edit mode 2013-06-13 11:31:57 +12:00
Mateusz Uzdowski
37d6871c15 Add explicit extension trigger to preview iframe updates. 2013-05-26 12:51:25 +12:00
Robert Curry
7ff8d35be0 Force preview window to refresh on every save 2013-02-08 12:04:18 +13:00
Ingo Schommer
1acb416a7f NEW Don't load CMS preview iframe if not visible (fixes #8247) 2013-02-05 10:23:48 +01:00
Ingo Schommer
0e6912c8cd Re-added 'auto' sizing for CMS preview
Regression from making sizes configurable via JS
2013-02-04 13:43:04 +01:00
Kirk Mayo
0cb6b4630f NEW Storing page preview states (fixes #8092) 2013-02-04 13:43:01 +01:00
Ingo Schommer
38e930dfe6 FIX Blocking of preview screen (regression)
Blocked when it should be editable, due to entwine's
onunmatch not firing when it was expected to.
2013-01-30 11:32:55 +01:00
Ingo Schommer
56336c3758 Merge pull request #1101 from chillu/pulls/preview-configuration
NEW Preview size and default mode configurability
2013-01-29 08:16:33 -08:00
Ingo Schommer
3457f43839 BUG Respect CMS preview active state (related to #8089) 2013-01-25 11:33:48 +01:00
Ingo Schommer
ca84ddca16 NEW Preview size and default mode configurability 2013-01-15 16:50:57 +01:00
Ingo Schommer
b918487375 Fixed preview overlay showing by default
This was a regression made visible by the recent change to
enforce dimensions on this overlay, which in turn visualizes
the blocked/unblocked states of the preview (see fc6d6ffad)
2013-01-11 00:23:47 +01:00
Mateusz Uzdowski
bf5590d873 BUG Fix side-by-side initial icon display issue in IE8.
The new 'liszt:ready' handler is called late enough to trigger the
update, whereas the redraw is called to early for IE8 to pick up the
class change. The class property is changed correcly though, it looks
like an IE8 rendering issue.

http://open.silverstripe.org/ticket/8095
2012-12-16 16:15:07 +13:00
Ingo Schommer
0fd6d14f94 Fixed Behat steps for preview feature 2012-12-10 18:06:49 +01:00
Naomi Guyer
dbee4a1bf9 Clean up the side-by-side code. 2012-12-10 17:52:02 +01:00
Paul Clarke
747346bb16 Ability to rotate the mobile preview in side-by-side preview. 2012-12-10 17:52:02 +01:00
Naomi Guyer
00f1ba4ab0 Side-by-side preview browser compatibility fixes. 2012-12-10 17:52:02 +01:00
Mateusz Uzdowski
fa3ef8c126 Side-by-side preview initialisation and navigation fixes.
Disables changetracking on preview options.
2012-12-10 17:52:01 +01:00
Mateusz Uzdowski
4fa2b0f3ff API Support disabling/enabling of previews.
This fixes the problem of panels flipping back to the Pages section if
loading a non-previewable section, and also initialisation problems.
2012-12-10 17:52:01 +01:00
Naomi Guyer
8ce272861c Replace the state selector switch to support more than 2 states. 2012-12-10 17:52:01 +01:00
Mateusz Uzdowski
8f5acd70b3 API Move state to enwtine properties, provide API for preview.
Also the preview state is now kept between panel loads. We also use a
redraw function to update appearance based on the state.
2012-12-10 17:52:01 +01:00
Naomi Guyer
9312c70696 Side-by-side preview options fixes.
Add extra preview-mode selector to the CMS actions so we can show
something when the preview is closed (and with it all options are not
visible).

Thanks @mateusz, @clarkepaul and @robert-h-curry for contributing.
2012-12-10 17:52:01 +01:00
Mateusz Uzdowski
d4f13fe532 API Refactor the CMS layouting to provide access to options.
It is now possible to change the threeColumnLayout width options for the
columns via entwine property LayoutOptions and accessor methods.

Thanks @robert-h-curry, @clarkepaul for contributing!
2012-12-10 17:52:01 +01:00
Paul Clarke
544d2eb6e1 Side-by-side preview options styling.
Thanks @adrexia for contributing.
2012-12-10 17:52:01 +01:00
Mateusz Uzdowski
f4b080ee06 NEW Side by side editing functionality - first cut (os#7412)
Introduces a preview window that appears when the screen is wide enough,
removes old preview button, adds a draft-public switch, adds variety of
preview options which are not hooked up yet.

Goes along with cms commit fa3738a9f4c5181eabf18a77ca89792d31592250
2012-12-10 17:51:35 +01:00
Ingo Schommer
700c95a523 Merge pull request #989 from silverstripe-rebelalliance/8063
BUG Unable to return to site tree admin from Preview mode trac 8063
2012-12-03 01:33:04 -08:00
Kirk Mayo
da1a6e7bf7 BUG Unable to return to site tree admin from Preview mode trac 8063 2012-12-03 10:38:47 +13:00
Jeremy Bridson
ad7383a58d ENHANCEMENT: open/7886 added preview button to the settings page so that when a user changes the theme they can preview the change. 2012-10-05 16:30:47 +13:00
Ingo Schommer
6162ae5e3f Fixed preview link ordering in CMS
jQuery seems to order by DOM rather than occurrence of
selectors, which means it always takes the last populated
field (in our case the "live" link over the "draft" link).
2012-08-28 18:31:15 +02:00
Ingo Schommer
dc08e87bd5 BUG Take first non-empty link field for preview
Goes by priority, but allows for fields to be empty.
This is important e.g. for models which are removed just
from live, or just from draft.
Also reacts to a field rename done in CMS module (62783c75).
2012-08-27 18:22:33 +02:00
Ingo Schommer
f63893544e BUG Fix CMS layout after preview navigation (fixes #7463) 2012-08-27 16:50:37 +02:00
Ingo Schommer
1d2288b091 NEW Open external links in preview mode in new window (fixes #7652)
Rather than disabling the links altogether, which is
counter-intuitive to most users.
See https://github.com/silverstripe/sapphire/pull/638.

Also hide a duplicate $SilverStripeNavigator on the previewed
website (in case it has been manually applied to the template).
2012-08-27 14:42:10 +02:00
Ingo Schommer
bbfa54c816 Allow custom preview URLs through hidden fields
Useful e.g. to force non-SSL previews via absolute links,
even if the CMS is loaded on an SSL host.
2012-07-16 12:05:48 +02:00
Ingo Schommer
deff232567 MINOR Using onadd in preview JS 2012-06-15 01:19:31 +02:00
Hamish Friedlander
b86a787521 BUGFIX: Use new jQuery.Entwine event capturing, onadd and onremove features to plug some memory leaks 2012-06-15 01:19:15 +02:00
Ingo Schommer
2637969bcd API CHANGE Renamed JS event from 'reloadeditform' on 'aftersubmitform', 'beforesave' to 'beforesubmitform'. Listening to bubbled event on container to avoid binding to forms which are removed before the event is triggered. 2012-06-12 17:13:36 +02:00
Ingo Schommer
d4baf2d19d BUGFIX Stability improvements on CMS layout logic
- Changed application order
- Fixed layout trigger after preview toggle
- Replaced button row dimension approximation with double application of jQuery.layout() - once before sizing the action panel height to set correct width on container, then again for the height
2012-06-06 21:05:36 +02:00
Ingo Schommer
460148c12a MINOR Debug messages for tracking down JS layout sequence issues (disabled by default) 2012-06-02 12:31:55 +02:00
Mateusz Uzdowski
8d469b66c8 BUGFIX: add missing onunmatches 2012-05-23 16:24:15 +12:00
Ingo Schommer
7c589f07dc MINOR Don't invoke layout() in onmatch() for cms-preview, as it causes a gap above the menu/logo div for some reason. It's also unnecessary processing, since the preview is always hidden by default, and layout() will be triggered through redraw() when required (e.g. preview panel expansion) 2012-05-18 20:07:06 +02:00
Ingo Schommer
d23e8ec14c BUGFIX Fixed cms menu expansion logic when shown alongside preview panel, retain cookie preference 2012-05-18 20:07:06 +02:00
Mateusz Uzdowski
37399f88db BUGFIX: add missing _super calls to all matchers and unmatchers
Otherwise some matchers might not be triggered as expected.
2012-05-18 12:27:30 +12:00
Ryan O'Hara
abb5719d33 ENHANCEMENT: Style change to buttons for preview states. Removed open in new window (TRAC-7214) 2012-05-04 13:53:33 +12:00
Ryan O'Hara
92484581e3 ENHANCEMENT: Add disabled state to preview buttons and add watermark for the current state being viewed (TRAC:7214) 2012-05-04 13:53:33 +12:00
Ingo Schommer
a64715beeb BUGFIX Calling tinyMCE.init() in sync with entwine rules to avoid uncached loading interfereing with call order (fixes #6877) 2012-04-10 21:41:00 +02:00
Ingo Schommer
c0c073e03f MINOR Disable 'preview' button if not applicable 2012-01-03 18:11:18 +01:00
Ingo Schommer
11b3b43c84 MINOR Only load preview panel if its visible, to avoid unnecessary asset loads and processing. Only refresh edit form view from preview events when its visible. 2011-12-19 15:06:04 +01:00