TinyMCE 4 - menedżer plików

0

Cześć, mam następujący problem z TinyMCE wersja 4. Korzystam z funkcji file_browser_callback do podpinania menedżera, ale funkcja ta nie przekazuje parametrów do nowego okna, tzn. w oknie dziecku nie ma informacji o rodzicu, z którego go wywołano.

W oknie dziecku odbieram informacje takim kodem:

							$(document).on("click","button", function(){
								var dialogArguments = top.tinymce.activeEditor.windowManager.getParams();
								win         = (dialogArguments.window);
								input       = (dialogArguments.input);
								win.document.getElementById(input).value = '/assets/clientAssets/' + $(this).attr('data-val');	
								top.tinymce.activeEditor.windowManager.close();						

							});

Jednak getParams() nie zwraca żadnych danych, a co za tym idzie zmienna dialogArguments jest pusta. Czy ktoś miał podobny problem?

0

Ja to robię tak:

            file_browser_callback   : function(field_name, url, type, win) {
                var cmsURL       = 'index.php?module=filemanager&field=' + field_name;
                tinymce.activeEditor.windowManager.open({
                    file            : cmsURL,
                    title           : ML.$('filemanager-select_file'),
                    width           : 600,  // Your dimensions may differ - toy around with them!
                    height          : 600,
                    resizable       : "yes",
                    inline          : "yes",  // This parameter only has an effect if you use the inlinepopups plugin!
                    close_previous  : "yes"
                }, {
                    window  : win,
                    input   : field_name
                });
            }

Generując stronę filemanagera wpisuję sobie z GET['field'] wartość do atrybutu data-field w <body>.

A tu kod z js filemanagera po kliknięciu elementu:

    $('body.filemanager').on('click', 'a[data-href=insert]', function() {
        var field = $('body').attr('data-field');
        var input = window.parent.document.getElementById(field);
        if (input) {
            input.value=$(this).closest('li[data-path]').attr('data-path');
            window.parent.tinymce.activeEditor.windowManager.close();
        }
    });

Także trochę inne podejście, ale takie rozwiązanie znalazłem swego czasu w necie. Sprawdza się.

0

Kurczę, faktycznie bardzo proste obejście tej sytuacji, działa doskonale! Dzięki serdeczne!

1 użytkowników online, w tym zalogowanych: 0, gości: 1