/
autosave.tpl
106 lines (87 loc) · 3.79 KB
/
autosave.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
{ezscript_require( array( 'ezjsc::yui3', 'ezautosubmit.js' ) )}
{ezcss_require( 'autosave.css' )}
<script type="text/javascript">
YUI(YUI3_config).use('ezautosubmit', 'node-base', 'node-style', function (Y) {ldelim}
var as = new Y.eZ.AutoSubmit({ldelim}
form: '#editform',
action: {concat( 'ezjscore/call/ezautosave::savedraft::', $object.id, '::', $edit_version, '::', $edit_language, '?ContentType=javascript' )|ezurl},
interval: {ezini( 'AutosaveSettings', 'Interval', 'autosave.ini' )|int()},
trackUserInput: {cond( ezini( 'AutosaveSettings', 'TrackUserInput', 'autosave.ini')|eq( 'enabled' ), "true", "false" )},
enabled: function () {ldelim}
var ieDisableWithPassword = [{ezini( 'BrowserWorkarounds', 'IEDisableWithPassword', 'autosave.ini' )|implode( ', ')}];
if ( ieDisableWithPassword.indexOf(Y.UA.ie) !== -1 ) {ldelim}
return (Y.one(this.conf.form).all("input[type=password]").size() == 0);
{rdelim}
return true;
{rdelim}
{rdelim}),
messages = {ldelim}
error: "{'An error occurred while autosaving the draft'|i18n( 'design/ezwebin/autosave' )|wash( 'javascript' )}",
saving: "{'The draft is being saved'|i18n( 'design/ezwebin/autosave' )|wash( 'javascript' )}"
{rdelim},
timer = false, place;
{literal}
as.on('abort', function() {
place.removeClass('as-saving')
.removeClass('as-error')
.removeClass('as-success')
.setContent('');
});
as.on('error', function (e) {
if ( timer ) {
timer.cancel();
}
place.removeClass('as-saving')
.removeClass('as-success')
.addClass('as-error')
.setContent('<span>' + messages.error + '</span>');
if ( e.json && e.json.error_text ) {
place.setAttribute('title', e.json.error_text);
}
});
as.on('init', function () {
var that = this;
Y.one('#ezwt').append('<div id="ez-as-place" class="as-init"></div>');
place = Y.one('#ez-as-place');
place.setStyle('top', parseInt(Y.one('#ezwt').get('offsetHeight')) - 1 + 'px');
{/literal}
{if ezini( 'AutosaveSettings', 'HideStoreDraftButton', 'autosave.ini' )|eq( 'enabled' )}Y.all(this.conf.form + ' input[name=StoreButton]').hide();{/if}
{if ezini( 'AutosaveSettings', 'HidePreviewLink', 'autosave.ini' )|eq( 'enabled' )}Y.all(this.conf.form + ' #preview-link').each(function () {ldelim} this.hide() {rdelim});{/if}
{literal}
Y.on('beforeunload', function (e) {
setTimeout(function () {
that.submit("StoreExitButton=1");
}, 0);
});
});
as.on('beforesave', function () {
place.addClass('as-saving')
.removeClass('as-error')
.removeClass('as-success')
.removeClass('as-init')
.setContent(messages.saving)
.setAttribute('title', '');
});
as.on('success', function (e) {
var counter = 0,
msgAgo = e.json.content.message_ago,
updateMsg = function () {
var n = msgAgo.replace(counter, counter + 1);
place.setContent(place.getContent().replace(msgAgo, n));
msgAgo = n;
counter++;
};
place.removeClass('as-error')
.removeClass('as-saving')
.addClass('as-success')
.setContent(e.json.content.message_success + ' ' + msgAgo)
.setAttribute('title', '');
if ( timer ) {
timer.cancel();
}
timer = Y.later(60000, this, updateMsg, [], true);
});
as.start();
{/literal}
{rdelim});
</script>