brown adlı üyeden alıntı: mesajı görüntüle
örnek json adresi ve kodlarınızı eklerseniz başlık altından yardımcı olabilirim.
tinymce.PluginManager.add('media-gallery', function(editor, url) {
         var  galleryInıt= function (_) {
                $('#image').val('');
                $.when().done(function(ajaxSend){
                var veriler=JSON.parse(ajaxSend);
                var string=`<input type="hidden" id="image"/>`;
                $.each(veriler.veri, function(ksira, resimler) {
                        console.log(xx);
                        string+=`<div class='col-xs-4'><img class="col-xs-4 img-responsive item" src='${resimler.resim_link}'/></div>`;
                });
                
                $(".gallery-div").html(string);
                });
                tinyMCE.activeEditor.windowManager.open({
                    title: 'My Gallery', // The dialog's title - displayed in the dialog header
                    size: 'large',
                    body: {
                        type: 'panel', // The root body type - a Panel or TabPanel
                        items: [ // A list of panel components
                            {
                                type: 'htmlpanel', // A HTML panel component
                                html: '<div class="gallery-div"></div>'
                            }
                        ]
                    },
                    buttons: [
                        {
                            type: 'cancel',
                            name: 'closeButton',
                            text: 'Cancel'
                        },
                        {
                            type: 'submit',
                            name: 'submitButton',
                            text: 'Insert To Editor',
                            primary: true
                        }
                    ],
                    onSubmit: function (api) {
                        var data = api.getData();
                        let source = $('#image').val();

                        if(source != ''){
                            editor.focus();
                            editor.selection.setContent('<img src="'+source+'" />');
                            api.close();
                        }else{
                            alert("Please select an image.");
                        }
                    }
                });
            }
    var ajaxFireInıt=function(){
        return $.post("http://davulgablog/webdavulganet/galeri",{}, function(sonuc, durum) {
                    return sonuc;
            });
    }
$(document).on('click', '.gallery-div > .item', function () {
    $('.gallery-div > .item').removeClass('active');
    $(this).addClass('active');
    $('#image').val($(this).attr('src'));
    console.log($(this).attr('src'));
});
$(document).on('click', '.gallery-div > .item', function () {
    $('.gallery-div > .item').removeClass('active');
    $(this).addClass('active');
    $('#image').val($(this).attr('src'));
    console.log($(this).attr('src'));
});
    var openDialog = function () {
      return editor.windowManager.open({
        title: 'Akordiyon Menü oluştur',
        body: {
          type: 'panel',
          items: [
            {
              type: 'input', name: 'my_count', layout: 'flow',
              label: 'Kaç Adet akordiyon Menü eklemek istersiniz?'
            }
          ]
        },
        buttons: [
          {
            type: 'cancel',text: 'Close'
          },
          {
            type: 'submit',text: 'Save',primary: true
          }
        ],
        onSubmit: function onsubmit(e) {
          var curAccordion = Date.now();
          var curAcc       = [];
          var accordionCount = parseInt(e.getData().my_count);
          if(typeof accordionCount==="number" && accordionCount>0){
            createAccordion(accordionCount-1,[]);
            e.close();
          }else{
            e.close();
            createalert({alert_title:'Hata',alert_text:"Lütfen oluşturacağınız akordiyon menü adetini giriniz",alert_level:'success',timeout:3500});
           
            setTimeout(() => {
            openDialog();
           }, 3000);
            
          }
        
          
        }
      });
    };
    var dataInsertbs5=function(veri){
      var data=[];
      var accordionCount=veri.length;
      var accordionCurr=Date.now();
      for(i=0; i<veri.length; i++){
        var temp=veri[i];
        var panel = `<div class="accordion-item">
        <h2 class="accordion-header" id="afyheadAccordion${i}">
          <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
          ${temp.baslik} 
          </button>
        </h2>
        <div id="afycollapseAccordion${i}" class="accordion-collapse collapse show" aria-labelledby="afyheadAccordion${i}" data-bs-parent="#accordionContainer${accordionCurr}">
          <div class="accordion-body">
          ${temp.makale}
          </div>
        </div>
      </div>`;
          data.push(panel);
      }
      var dJoin=data.join();
      var accordion = `<div class="accordion" id="accordionContainer${accordionCurr}">${dJoin} </div>`;
      editor.insertContent(accordion);
     return veri;
    }
    var dataInsert=function(veri){
      var data=[];
      var accordionCurr=Date.now();
      for(i=0; i<veri.length; i++){
        var curId="afyAccordion"+accordionCurr;
        var temp=veri[i];
        var ifopen=(temp.aktif==true ? " show":"");
        var panel = ` <div class="card card-border">
      <div class="card-header" id="${curId}heading${i}">
        <h2 class="mb-0">
          <button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" 
          data-target="#${curId}collapse${i}" aria-expanded="true" aria-controls="${curId}collapse${i}">
          ${temp.baslik} 
          </button>
        </h2>
      </div>
  
      <div id="${curId}collapse${i}" class="collapse${ifopen}" aria-labelledby="${curId}heading${i}" data-parent="#accordionContainer${accordionCurr}">
        <div class="card-body">
        ${temp.makale}
        </div>
      </div>
    </div `;
          data.push(panel);
      }
  
      var dJoin=data.join();
      var accordion = `<div class="accordion" id="accordionContainer${accordionCurr}">${dJoin} </div>`;
      editor.insertContent(accordion);
     return veri;
    }
    var createAccordion = function (id,veri) {
      return editor.windowManager.open({
        title: 'Akordiyon Menü İçeriği',
        body: {
          type: 'panel',
          items: [
            {
              type: 'input', name: 'acc_baslik', layout: 'flow',
              label: 'Başlık'
            },
            
            {
              type: 'textarea', name: 'acc_bilgi', layout: 'flow',
              label: 'Makale'
            },
            {
              type: 'checkbox', name: 'acc_ifopen', layout: 'flow',
              label: 'Bu menü açık olsun'
            }         
          ]
        },
        buttons: [
          {type: 'cancel',text: 'Close'},
          {type: 'submit',name:'save_brn',text: 'Save',primary: true}
        ],
        onSubmit: function onsubmit(e) {
          var gData=e.getData();
          var bilgi= gData.acc_bilgi;
          var baslik= gData.acc_baslik;
          var control= gData.acc_ifopen;
          if(typeof bilgi !=="string" || typeof baslik !=="string"){
            createalert({alert_level:'error',alert_icon:'warning',alert_text:"Veritipi hatası gelişti",timeout:3500});
            return createAccordion(id,veri);
        }
          else if(baslik.trim().length===0 || baslik.trim().length===0){
            createalert({alert_text:"Formda Boş yer bırakmayın",alert_icon:'warning',timeout:3500});
          return createAccordion(id,veri);
          }
          else {
            e.close();
            createalert({alert_title:'Başarılı',alert_text:"İşlem başarılı",alert_level:'success',timeout:3500});
            if(typeof id==="number"){
              if(id>0){
                  id=id-1;
                  veri.push({"makale":bilgi,"baslik":baslik,"aktif":control});
                  return createAccordion(id,veri);;
              }
              else{
                veri.push({"makale":bilgi,"baslik":baslik,"aktif":control});
                dataInsert(veri);
              }
            }
           return {};
          }
        }
      });
    };
    var timeoutClose= function(e,time=3000){
        setTimeout(() => {
          e.close();
        }, time);
    };
    var createalert=function(ayar){
      var ayarlar = $.extend({
        alert_title:"Hata",
        alert_level:'error',
        alert_text:'Bir uyarı tanımlayın',
        btn_text:'Kapat',
        alert_url:'',
        alert_icon:'question',
        timeout:3000}, ayar);
      var edit= editor.windowManager.open({
          title:ayarlar.alert_title,
          body:{
            type:'panel',
            items:[{
              type: 'alertbanner', // component type
              level:ayarlar.alert_level,
              text: ayarlar.alert_text,
              url:  ayarlar.alert_url,
              icon: ayarlar.alert_icon
            }] 
          },
        buttons: [
          {type: 'cancel',text: ayarlar.btn_text,primary:true}
        ]
      });
      timeoutClose(edit,ayarlar.timeout);
      return edit;
    }
    editor.ui.registry.addButton('accordion', {
      text: 'Akordiyon Menü',
      icon: 'border-width',
      onAction: function () {
        openDialog();
      }
    });
    editor.ui.registry.addMenuItem('accordion', {
      text: 'Example plugin',
      onAction: function() {
        // Open window
        openDialog();
      }
    });
  
    return {
      getMetadata: function () {
        return  {
          name: "accordion plugin",
          url: "http://exampleplugindocsurl.com"
        };
      }
    };
  });
bu resim adresini dinamik almak istiyorum sabit olmaması lazım