Наткнулся на эту публикацию, так как я хотел сделать то же самое в Summernote 0.8.8.
Мне удалось заставить его работать, используя карты.
В разделе опций summernote я добавил следующее, чтобы определить мои пары ключ / значение:
// Control keywords to display on email editor
emailControls: [
['Firstname', '##FIRSTNAME##'],
['Lastname', '##LASTNAME##'],
['Filename', '##FILENAME##'],
['Keys', '##KEYS##'],
['Hubcode', '##HUBCODE##'],
['Hubname', '##HUBNAME##'],
['User ID', '##USERID##'],
['Full site signature', '##FS_SIGNATURE##'],
['Mobile site signature', '##MS_SIGNATURE##'],
['Full site link (displayed as \'click here\')', '##PORTAL_LINK_FS##'],
['Mobile site link (displayed as \'click here\')', '##PORTAL_LINK_MS##']
],
Затем я определил выпадающий список:
context.memo('button.emailControls', function () {
var keywordMap = new Map(options.emailControls);
var list = Array.from(keywordMap.keys());
return ui.buttonGroup([
ui.button({
className: 'dropdown-toggle',
contents: ui.dropdownButtonContents(ui.icon(options.icons.emailControls), options),
tooltip: lang.emailControls.emailControls,
data: {
toggle: 'dropdown'
}
}),
ui.dropdown({
items: list,
className: 'dropdown-email-control',
click: function (event) {
var $button = $(event.target);
var value = $button.data('value');
context.invoke('editor.insertText', keywordMap.get(value));
}
})
]).render();
});
- Я преобразовал определенные пары ключ / значение в карту.
- Затем заполнил массив, названный списком, ключами карты
- Это использовалось для определения выпадающих пунктов
- Наконец, я использовал значение, возвращаемое нажатием кнопки, чтобы найти действительное значение на карте и вставить его в редактор.
Надеюсь, это поможет кому-то, кому нужно сделать что-то подобное.