[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/tinymce/plugins/insertdatetime/ -> plugin.js (source)

   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  }());


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer