| 1 |
!(function () { |
| 2 |
'use strict'; |
| 3 |
var r = function (e) { |
| 4 |
var t = e, |
| 5 |
n = function () { |
| 6 |
return t; |
| 7 |
}; |
| 8 |
return { |
| 9 |
get: n, |
| 10 |
set: function (e) { |
| 11 |
t = e; |
| 12 |
}, |
| 13 |
clone: function () { |
| 14 |
return r(n()); |
| 15 |
}, |
| 16 |
}; |
| 17 |
}, |
| 18 |
e = tinymce.util.Tools.resolve('tinymce.PluginManager'), |
| 19 |
n = function (e) { |
| 20 |
return e.getParam('insertdatetime_timeformat', e.translate('%H:%M:%S')); |
| 21 |
}, |
| 22 |
a = function (e) { |
| 23 |
return e.getParam('insertdatetime_formats', ['%H:%M:%S', '%Y-%m-%d', '%I:%M:%S %p', '%D']); |
| 24 |
}, |
| 25 |
t = function (e) { |
| 26 |
return e.getParam('insertdatetime_dateformat', e.translate('%Y-%m-%d')); |
| 27 |
}, |
| 28 |
i = n, |
| 29 |
o = a, |
| 30 |
u = function (e) { |
| 31 |
var t = a(e); |
| 32 |
return 0 < t.length ? t[0] : n(e); |
| 33 |
}, |
| 34 |
m = function (e) { |
| 35 |
return e.getParam('insertdatetime_element', !1); |
| 36 |
}, |
| 37 |
c = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' '), |
| 38 |
l = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '), |
| 39 |
s = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '), |
| 40 |
d = |
| 41 |
'January February March April May June July August September October November December'.split( |
| 42 |
' ', |
| 43 |
), |
| 44 |
p = function (e, t) { |
| 45 |
if ((e = '' + e).length < t) for (var n = 0; n < t - e.length; n++) e = '0' + e; |
| 46 |
return e; |
| 47 |
}, |
| 48 |
f = function (e, t, n) { |
| 49 |
return ( |
| 50 |
(n = n || new Date()), |
| 51 |
(t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = (t = t.replace( |
| 52 |
'%D', |
| 53 |
'%m/%d/%Y', |
| 54 |
)).replace('%r', '%I:%M:%S %p')).replace('%Y', '' + n.getFullYear())).replace( |
| 55 |
'%y', |
| 56 |
'' + n.getYear(), |
| 57 |
)).replace('%m', p(n.getMonth() + 1, 2))).replace('%d', p(n.getDate(), 2))).replace( |
| 58 |
'%H', |
| 59 |
'' + p(n.getHours(), 2), |
| 60 |
)).replace('%M', '' + p(n.getMinutes(), 2))).replace( |
| 61 |
'%S', |
| 62 |
'' + p(n.getSeconds(), 2), |
| 63 |
)).replace('%I', '' + (((n.getHours() + 11) % 12) + 1))).replace( |
| 64 |
'%p', |
| 65 |
n.getHours() < 12 ? 'AM' : 'PM', |
| 66 |
)).replace('%B', '' + e.translate(d[n.getMonth()]))).replace( |
| 67 |
'%b', |
| 68 |
'' + e.translate(s[n.getMonth()]), |
| 69 |
)).replace('%A', '' + e.translate(l[n.getDay()]))).replace( |
| 70 |
'%a', |
| 71 |
'' + e.translate(c[n.getDay()]), |
| 72 |
)).replace('%%', '%')) |
| 73 |
); |
| 74 |
}, |
| 75 |
g = function (e, t) { |
| 76 |
if (m(e)) { |
| 77 |
var n = f(e, t), |
| 78 |
r = void 0; |
| 79 |
r = /%[HMSIp]/.test(t) ? f(e, '%Y-%m-%dT%H:%M') : f(e, '%Y-%m-%d'); |
| 80 |
var a = e.dom.getParent(e.selection.getStart(), 'time'); |
| 81 |
a |
| 82 |
? ((o = a), |
| 83 |
(u = r), |
| 84 |
(c = n), |
| 85 |
(l = (i = e).dom.create('time', { datetime: u }, c)), |
| 86 |
o.parentNode.insertBefore(l, o), |
| 87 |
i.dom.remove(o), |
| 88 |
i.selection.select(l, !0), |
| 89 |
i.selection.collapse(!1)) |
| 90 |
: e.insertContent('<time datetime="' + r + '">' + n + '</time>'); |
| 91 |
} else e.insertContent(f(e, t)); |
| 92 |
var i, o, u, c, l; |
| 93 |
}, |
| 94 |
y = f, |
| 95 |
M = function (e) { |
| 96 |
e.addCommand('mceInsertDate', function () { |
| 97 |
g(e, t(e)); |
| 98 |
}), |
| 99 |
e.addCommand('mceInsertTime', function () { |
| 100 |
g(e, i(e)); |
| 101 |
}); |
| 102 |
}, |
| 103 |
v = tinymce.util.Tools.resolve('tinymce.util.Tools'), |
| 104 |
S = function (t, n) { |
| 105 |
var r, |
| 106 |
a, |
| 107 |
e, |
| 108 |
i = |
| 109 |
((a = n), |
| 110 |
(e = o((r = t))), |
| 111 |
v.map(e, function (e) { |
| 112 |
return { |
| 113 |
text: y(r, e), |
| 114 |
onclick: function () { |
| 115 |
a.set(e), g(r, e); |
| 116 |
}, |
| 117 |
}; |
| 118 |
})); |
| 119 |
t.addButton('insertdatetime', { |
| 120 |
type: 'splitbutton', |
| 121 |
title: 'Insert date/time', |
| 122 |
menu: i, |
| 123 |
onclick: function () { |
| 124 |
var e = n.get(); |
| 125 |
g(t, e || u(t)); |
| 126 |
}, |
| 127 |
}), |
| 128 |
t.addMenuItem('insertdatetime', { |
| 129 |
icon: 'date', |
| 130 |
text: 'Date/time', |
| 131 |
menu: i, |
| 132 |
context: 'insert', |
| 133 |
}); |
| 134 |
}; |
| 135 |
e.add('insertdatetime', function (e) { |
| 136 |
var t = r(null); |
| 137 |
M(e), S(e, t); |
| 138 |
}); |
| 139 |
})(); |
| 140 |
|