ФорумПрограммированиеJavaScript → TinyMCE как приручить чтобы можно было нормально редактировать джанго шаблоны?

TinyMCE как приручить чтобы можно было нормально редактировать джанго шаблоны?

  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 22 октября 2015 г. 20:16

    Может кто сталкивался с подобной задачкой?

    Подключение плагина fullpage решает кучу проблем, но при этом если я в ворде напишу что-то вроде
    hello {{ world }}

    и потом скопипастю в tinymce

    то внезапно это может превратиться в нечто такое:
    hello <b>{{ world</b><b>}}</b>

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 22 октября 2015 г. 20:21, спустя 4 минуты 8 секунд

    tinyMCE дерьмож

    Сапожник без сапог
  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 22 октября 2015 г. 22:04, спустя 1 час 43 минуты 39 секунд

    Вообщем ничего подходящего не нашел, написал свой костыль

    /**
     * Fix django template content function
     * @version 1
     * @param content string
     * @returns string
     */
    function fixDjangoTemplate(content) {
      var vs, es, foo, i;
    
      /**
       * Django variables list
       * @type {Array|{index: number, input: string}|*|{ID, CLASS, NAME, ATTR, TAG, CHILD, POS, PSEUDO}}
       */
      vs = content.match(/\{\{(&nbsp;|\040)*?([^\{])+?(&nbsp;|\040)*?}}/gm);
      /**
       * Django expressions list
       * @type {Array|{index: number, input: string}|*|{ID, CLASS, NAME, ATTR, TAG, CHILD, POS, PSEUDO}}
       */
      es = content.match(/\{%(&nbsp;|\040)*?([^\{])+?(&nbsp;|\040)*?%}/gm);
    
      for (i = 0; i < vs.length; i++) {
        foo = vs[i];
        content = content.replace(foo, foo.replace('&nbsp;', ' ').replace(/<\/?[^<]+\/?>/g, '')
          + (foo.match(/<\/?[^<]+\/?>/g)||[]).join(' '));
      }
    
      for (i = 0; i < es.length; i++) {
        foo = es[i];
        content = content.replace(foo, foo.replace('&nbsp;', ' ').replace(/<\/?[^<]+\/?>/g, '')
          + (foo.match(/<\/?[^<]+\/?>/g)||[]).join(' '));
      }
    
      return content;
    }

    Спустя 32 сек.

    Куда часть функции делать? Сука

    /**
     * Fix django template content function
     * @version 1
     * @param content string
     * @returns string
     */
    function fixDjangoTemplate(content) {
      var vs, es, foo, i;
    
      /**
       * Django variables list
       * @type {Array|{index: number, input: string}|*|{ID, CLASS, NAME, ATTR, TAG, CHILD, POS, PSEUDO}}
       */
      vs = content.match(/\{\{(&amp;nbsp;|\040)*?([^\{])+?(&amp;nbsp;|\040)*?}}/gm);
      /**
       * Django expressions list
       * @type {Array|{index: number, input: string}|*|{ID, CLASS, NAME, ATTR, TAG, CHILD, POS, PSEUDO}}
       */
      es = content.match(/\{%(&amp;nbsp;|\040)*?([^\{])+?(&amp;nbsp;|\040)*?%}/gm);
    
      for (i = 0; i &lt; vs.length; i++) {
        foo = vs[i];
        content =
    

    content.replace(foo, foo.replace('&nbsp;', ' ').replace(/<\/?[^<]+\/?>/g, '')
    + (foo.match(/<\/?[^<]+\/?>/g)||[]).join(' '));
    }

    for (i = 0; i < es.length; i++) {
    foo = es[i];
    content = content.replace(foo, foo.replace('&nbsp;', ' ').replace(/<\/?[^<]+\/?>/g, '')
    + (foo.match(/<\/?[^<]+\/?>/g)||[]).join(' '));
    }

    return content;
    }

    Спустя 26 сек.

    Чините пыху блин

    Спустя 121 сек.

    Код тут, с пыхи не копируйте hastebin [hastebin.com]

    Спустя 199 сек.

    и сразу же пофиксил hastebin [hastebin.com]

  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 22 октября 2015 г. 23:18, спустя 1 час 13 минут 19 секунд

    Это действительно костыль: чинить испорченное с помощью реплейсов. Тру способ: локализовать проблему и перекрыть метод так, чтобы лишнее не возникало.

    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 22 октября 2015 г. 23:24, спустя 6 минут 38 секунд

    И вообще, кто сказал что такое поведение НЕправильное? Оно предсказуемое! А ты вносишь элемент хаоса, ящитаю.

    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 октября 2015 г. 5:09, спустя 5 часов 44 минуты 52 секунды

    @Ivan., так ты вместо

    hello &lt;b>{{ world&lt;/b>&lt;b>}}&lt;/b>
    

    ожидаешь что при копировании из ворда будет

    hello {{ world }}
    

    ?

    Спустя 37 сек.

    При этом в ворде у тебя выделено болдом "{{ world }}", я правильно понял?

    adw/0
  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 23 октября 2015 г. 14:53, спустя 9 часов 44 минуты 23 секунды

    ну почти

  • Crank

    Сообщения: 541 Репутация: N Группа: Джедаи

    Spritz 26 октября 2015 г. 5:24, спустя 2 дня 14 часов 30 минут

    Я тут давеча прикрутил к джанге froala editor из академического интереса. Но оно заебало своим автоформатированием и в итоге вернулся к обычному textarea.

  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 26 октября 2015 г. 8:10, спустя 2 часа 46 минут 12 секунд

    Я уже думаю свой написать tinymce с блекджеком и шлюхами, специально для django-templates

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 октября 2015 г. 8:34, спустя 23 минуты 49 секунд

    @Ivan., эпично

    adw/0
  • Crank

    Сообщения: 541 Репутация: N Группа: Джедаи

    Spritz 26 октября 2015 г. 8:46, спустя 11 минут 36 секунд

    @Ivan., заебешсо я тебе гарантирую

Пожалуйста, авторизуйтесь, чтобы написать комментарий!