Поддержать Проект

USDT TRC20

TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
      • Вывод изображений
      • Вывод списка галерей
      • Генерация превью при загрузке
      • Расширение функционала, часть 1
      • Расширение функционала, часть 2
      • Расширение функционала, часть 3
      • Переход с MaxiGallery
      • Переход с EvoGallery
      • Переход с PssGallery
      • Переход с MultiPhotos
      • Подключение редактора
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • SimpleGallery

Подключение редактора к SimpleGallery

  • Дополнения
  • SimpleGallery
  • Подключение редактора
Поддержать: USDT TRC20: TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh
1106

Подключение редактора к SimpleGallery

Когда-то я написал статью о том, как можно менять и дорабатывать интерфейс SimpleGallery (SimpleGallery: расширение функционала, часть 2). С тех пор прошло немало времени, многое было переделано и та статья на сегодня представляет больше теоретический интерес: представленный код требует доработок, хотя общий принцип остался тот же.

Подключать будем TinyMCE4, так как он устанавливается вместе с самой системой. В прошлый раз было ограничение: нужно было, чтобы редактор был загружен на страницу. Чтобы избавиться от этого ограничения я немного доработал плагин: SimpleGallery Теперь редактор будет работать в галерее, даже если он не подключен для страницы документа.

В общих чертах, чтобы подключить редактор для редактирования описания картинки, потребуется:

  • переопределить метод sgHelper.edit;
  • сделать правку в шаблоне формы редактирования картинки для вызова редактора;
  • создать форму для редактора.

Начнем с конца.

Форма для редактора будет показываться во всплывающем окне и ничего особенного из себя не представляет — настолько, что можно было бы даже не выносить ее в шаблон:

<div style="width:650px;">
	<textarea id="rteField" style="width:99%;height:400px;"></textarea>
</div>

О том, как этот шаблон компилировать, написано в прошлой статье. Или в файле readme.txt в папке с шаблонами.

В шаблон формы редактирования следует добавить ссылку, при нажатии на которую, откроется окно с редактором. В общем-то смысла тратить время на правку шаблона и компиляцию ради этой ссылки нет. Так что ссылку добавим на лету.

Теперь создадим файл, в который скопируем метод sgHelper.edit из simplegallery.js, а также добавим методы sgHelper.initRTE и sgHelper.rteForm — первый будет запускать редактор, а второй нужен, чтобы показывать окошко с редактором. Полностью файл — editrte.js

(function($){
sgHelper.initRTE = function() {
tinymce.init({
    //тут всякие настройки редактора
});
};
sgHelper.rteForm = function(textarea) {
var context = {
    textarea: textarea.val(),
};
var rteForm = $(Handlebars.templates.rteForm(context));
rteForm.dialog({
    modal:true,
    title:"Редактирование",
    collapsible:false,
    minimizable:false,
    maximizable:false,
    resizable:false,
    buttons:[
    {
        text:'Сохранить',
        iconCls: 'btn-green fa fa-check fa-lg',
        handler:function(){
            //когда нажимаем кнопку "сохранить", то сохраняем изменения в поле sg_description
            var content = tinymce.activeEditor.getContent();
            textarea.val(content);
            rteForm.window('close',true);
        }
    },{
        text:'Закрыть',
        iconCls: 'btn-red fa fa-ban fa-lg',
        handler:function(){
            rteForm.window('close', true);
        }
    }
    ],
    onOpen: function() {
        //как только окошко открылось, запустим редактор
        sgHelper.initRTE();
    },
    onClose: function() {
        var mask = $('.window-mask');
        //обязательно нужно выполнить эту команду при завершении, иначе редактор второй раз не запустится
        tinymce.execCommand('mceRemoveEditor',true,"rteField");
        sgHelper.destroyWindow(rteForm);
        $('body').append(mask);
    }
})
};
sgHelper.edit = function(image) {
// ...
editForm.dialog({
    // ...
    onOpen: function() {
        //добавим ссылку для открытия окошка с редактором         
        var descriptionField = $('textarea[name="sg_description"]','#sgEdit');
        descriptionField.after('<a href="javascript:" class="btn-rte">Редактировать</a>');
        $('.btn-rte').click(function(e){
            sgHelper.rteForm(descriptionField);
        });
        $('.image img',editForm).on('load',function() {
            // ...
        });
    },
    // ...
});
}
})(jQuery)

Теперь создаем файл custom.json, чтобы эти все скрипты загрузить:

{
"scripts": {
    "TinyMCE4": {
        "version":"4.3.6",
        "src":"assets/plugins/tinymce4/tinymce/tinymce.min.js"
    },
    "rteForm" : {
        "version":"1.4.1",
        "src":"assets/plugins/simplegallery/js/tpl/rteForm.js"
    },
    "editrte":{
        "version":"1.4.1",
        "src":"assets/plugins/simplegallery/js/plugin/editrte.js"
    }        
}
}

Если сравнить с прошлой статьей, то здесь добавилась запись для загрузки скрипта редактора, если он не загружен для документа.

Вот так вот сложно и непонятно делается подключение TinyMCE для редактирования описания картинок (: