4 * Copyright, Moxiecode Systems AB
5 * Released under LGPL License.
7 * License: http://www.tinymce.com/license
8 * Contributing: http://www.tinymce.com/contributing
11 /*global tinymce:true */
13 tinymce.PluginManager.add('insertdatetime', function(editor) {
14 var daysShort = "Sun Mon Tue Wed Thu Fri Sat Sun".split(' ');
15 var daysLong = "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(' ');
16 var monthsShort = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(' ');
17 var monthsLong = "January February March April May June July August September October November December".split(' ');
18 var menuItems = [], lastFormat;
20 function getDateTime(fmt, date) {
21 function addZeros(value, len) {
24 if (value.length < len) {
25 for (var i = 0; i < (len - value.length); i++) {
33 date = date || new Date();
35 fmt = fmt.replace("%D", "%m/%d/%Y");
36 fmt = fmt.replace("%r", "%I:%M:%S %p");
37 fmt = fmt.replace("%Y", "" + date.getFullYear());
38 fmt = fmt.replace("%y", "" + date.getYear());
39 fmt = fmt.replace("%m", addZeros(date.getMonth() + 1, 2));
40 fmt = fmt.replace("%d", addZeros(date.getDate(), 2));
41 fmt = fmt.replace("%H", "" + addZeros(date.getHours(), 2));
42 fmt = fmt.replace("%M", "" + addZeros(date.getMinutes(), 2));
43 fmt = fmt.replace("%S", "" + addZeros(date.getSeconds(), 2));
44 fmt = fmt.replace("%I", "" + ((date.getHours() + 11) % 12 + 1));
45 fmt = fmt.replace("%p", "" + (date.getHours() < 12 ? "AM" : "PM"));
46 fmt = fmt.replace("%B", "" + editor.translate(monthsLong[date.getMonth()]));
47 fmt = fmt.replace("%b", "" + editor.translate(monthsShort[date.getMonth()]));
48 fmt = fmt.replace("%A", "" + editor.translate(daysLong[date.getDay()]));
49 fmt = fmt.replace("%a", "" + editor.translate(daysShort[date.getDay()]));
50 fmt = fmt.replace("%%", "%");
55 function insertDateTime(format) {
56 var html = getDateTime(format);
58 if (editor.settings.insertdatetime_element) {
61 if (/%[HMSIp]/.test(format)) {
62 computerTime = getDateTime("%Y-%m-%dT%H:%M");
64 computerTime = getDateTime("%Y-%m-%d");
67 html = '<time datetime="' + computerTime + '">' + html + '</time>';
69 var timeElm = editor.dom.getParent(editor.selection.getStart(), 'time');
71 editor.dom.setOuterHTML(timeElm, html);
76 editor.insertContent(html);
79 editor.addCommand('mceInsertDate', function() {
80 insertDateTime(editor.getParam("insertdatetime_dateformat", editor.translate("%Y-%m-%d")));
83 editor.addCommand('mceInsertTime', function() {
84 insertDateTime(editor.getParam("insertdatetime_timeformat", editor.translate('%H:%M:%S')));
87 editor.addButton('inserttime', {
91 insertDateTime(lastFormat || "%H:%M:%S");
96 tinymce.each(editor.settings.insertdatetime_formats || [
103 text: getDateTime(fmt),
104 onclick: function() {
111 editor.addMenuItem('insertdatetime', {
113 text: 'Insert date/time',