[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 /** 2 * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 * Licensed under the LGPL or a commercial license. 4 * For LGPL see License.txt in the project root for license information. 5 * For commercial licenses see https://www.tiny.cloud/ 6 * 7 * Version: 5.10.5 (2022-05-25) 8 */ 9 (function () { 10 'use strict'; 11 12 var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 14 var getDateFormat = function (editor) { 15 return editor.getParam('insertdatetime_dateformat', editor.translate('%Y-%m-%d')); 16 }; 17 var getTimeFormat = function (editor) { 18 return editor.getParam('insertdatetime_timeformat', editor.translate('%H:%M:%S')); 19 }; 20 var getFormats = function (editor) { 21 return editor.getParam('insertdatetime_formats', [ 22 '%H:%M:%S', 23 '%Y-%m-%d', 24 '%I:%M:%S %p', 25 '%D' 26 ]); 27 }; 28 var getDefaultDateTime = function (editor) { 29 var formats = getFormats(editor); 30 return formats.length > 0 ? formats[0] : getTimeFormat(editor); 31 }; 32 var shouldInsertTimeElement = function (editor) { 33 return editor.getParam('insertdatetime_element', false); 34 }; 35 36 var daysShort = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' '); 37 var daysLong = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '); 38 var monthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); 39 var monthsLong = 'January February March April May June July August September October November December'.split(' '); 40 var addZeros = function (value, len) { 41 value = '' + value; 42 if (value.length < len) { 43 for (var i = 0; i < len - value.length; i++) { 44 value = '0' + value; 45 } 46 } 47 return value; 48 }; 49 var getDateTime = function (editor, fmt, date) { 50 if (date === void 0) { 51 date = new Date(); 52 } 53 fmt = fmt.replace('%D', '%m/%d/%Y'); 54 fmt = fmt.replace('%r', '%I:%M:%S %p'); 55 fmt = fmt.replace('%Y', '' + date.getFullYear()); 56 fmt = fmt.replace('%y', '' + date.getYear()); 57 fmt = fmt.replace('%m', addZeros(date.getMonth() + 1, 2)); 58 fmt = fmt.replace('%d', addZeros(date.getDate(), 2)); 59 fmt = fmt.replace('%H', '' + addZeros(date.getHours(), 2)); 60 fmt = fmt.replace('%M', '' + addZeros(date.getMinutes(), 2)); 61 fmt = fmt.replace('%S', '' + addZeros(date.getSeconds(), 2)); 62 fmt = fmt.replace('%I', '' + ((date.getHours() + 11) % 12 + 1)); 63 fmt = fmt.replace('%p', '' + (date.getHours() < 12 ? 'AM' : 'PM')); 64 fmt = fmt.replace('%B', '' + editor.translate(monthsLong[date.getMonth()])); 65 fmt = fmt.replace('%b', '' + editor.translate(monthsShort[date.getMonth()])); 66 fmt = fmt.replace('%A', '' + editor.translate(daysLong[date.getDay()])); 67 fmt = fmt.replace('%a', '' + editor.translate(daysShort[date.getDay()])); 68 fmt = fmt.replace('%%', '%'); 69 return fmt; 70 }; 71 var updateElement = function (editor, timeElm, computerTime, userTime) { 72 var newTimeElm = editor.dom.create('time', { datetime: computerTime }, userTime); 73 timeElm.parentNode.insertBefore(newTimeElm, timeElm); 74 editor.dom.remove(timeElm); 75 editor.selection.select(newTimeElm, true); 76 editor.selection.collapse(false); 77 }; 78 var insertDateTime = function (editor, format) { 79 if (shouldInsertTimeElement(editor)) { 80 var userTime = getDateTime(editor, format); 81 var computerTime = void 0; 82 if (/%[HMSIp]/.test(format)) { 83 computerTime = getDateTime(editor, '%Y-%m-%dT%H:%M'); 84 } else { 85 computerTime = getDateTime(editor, '%Y-%m-%d'); 86 } 87 var timeElm = editor.dom.getParent(editor.selection.getStart(), 'time'); 88 if (timeElm) { 89 updateElement(editor, timeElm, computerTime, userTime); 90 } else { 91 editor.insertContent('<time datetime="' + computerTime + '">' + userTime + '</time>'); 92 } 93 } else { 94 editor.insertContent(getDateTime(editor, format)); 95 } 96 }; 97 98 var register$1 = function (editor) { 99 editor.addCommand('mceInsertDate', function (_ui, value) { 100 insertDateTime(editor, value !== null && value !== void 0 ? value : getDateFormat(editor)); 101 }); 102 editor.addCommand('mceInsertTime', function (_ui, value) { 103 insertDateTime(editor, value !== null && value !== void 0 ? value : getTimeFormat(editor)); 104 }); 105 }; 106 107 var Cell = function (initial) { 108 var value = initial; 109 var get = function () { 110 return value; 111 }; 112 var set = function (v) { 113 value = v; 114 }; 115 return { 116 get: get, 117 set: set 118 }; 119 }; 120 121 var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); 122 123 var register = function (editor) { 124 var formats = getFormats(editor); 125 var defaultFormat = Cell(getDefaultDateTime(editor)); 126 var insertDateTime = function (format) { 127 return editor.execCommand('mceInsertDate', false, format); 128 }; 129 editor.ui.registry.addSplitButton('insertdatetime', { 130 icon: 'insert-time', 131 tooltip: 'Insert date/time', 132 select: function (value) { 133 return value === defaultFormat.get(); 134 }, 135 fetch: function (done) { 136 done(global.map(formats, function (format) { 137 return { 138 type: 'choiceitem', 139 text: getDateTime(editor, format), 140 value: format 141 }; 142 })); 143 }, 144 onAction: function (_api) { 145 insertDateTime(defaultFormat.get()); 146 }, 147 onItemAction: function (_api, value) { 148 defaultFormat.set(value); 149 insertDateTime(value); 150 } 151 }); 152 var makeMenuItemHandler = function (format) { 153 return function () { 154 defaultFormat.set(format); 155 insertDateTime(format); 156 }; 157 }; 158 editor.ui.registry.addNestedMenuItem('insertdatetime', { 159 icon: 'insert-time', 160 text: 'Date/time', 161 getSubmenuItems: function () { 162 return global.map(formats, function (format) { 163 return { 164 type: 'menuitem', 165 text: getDateTime(editor, format), 166 onAction: makeMenuItemHandler(format) 167 }; 168 }); 169 } 170 }); 171 }; 172 173 function Plugin () { 174 global$1.add('insertdatetime', function (editor) { 175 register$1(editor); 176 register(editor); 177 }); 178 } 179 180 Plugin(); 181 182 }());
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |