plugins/ckeditor/templates/admin/ck_file_browser/js.stpl

Summary

Maintainability
Test Coverage
{js()}
var bconf = {
    func_num        : '{ck_funcnum}',
    url_core        : '{url(/@object/get_node)}',
    url_delete        : '{url(/@object/delete_node)}',
    url_create        : '{url(/@object/create_node)}',
    url_rename        : '{url(/@object/rename_node)}',
    url_move        : '{url(/@object/move_node)}',
    url_copy        : '{url(/@object/copy_node)}',
    url_contents    : '{url(/@object/get_content/%id)}',
    url_edit        : '{url(/@object/edit)}',
    url_del_img        : '{url(/@object/delete_img)}',
    t_are_you_sure    : '{t(Are you sure?)}',
    t_select_file    : '{t('Select a file from the tree')}',
    __last            : null
}
function refreshjstree() {
    $('#tree').jstree(true).refresh();
}
{/js}

{jquery()}
    if (window.opener) {
        $('#data').on("click", '.ck_select_image a.img-select', function() {
            try {
                window.opener.CKEDITOR.tools.callFunction(bconf.func_num, $('img', this).attr('src'));
                window.close();
                return false;
            } catch (e) {
                console.log('CKeditor opener not found', e)
            }
        });

        $('#data').on("click", '#add_image_url', function() {
            try {
                window.opener.CKEDITOR.tools.callFunction(bconf.func_num, $('#image_src').attr('src'));
                window.close();
                return false;
            } catch (e) {
                console.log('CKeditor opener not found', e)
            }
        });
    } else {
        $('#data').on("click", '.ck_select_image a.img-select', function() {
            window.open($('img', this).attr('src'), '_blank');
            return false;
        });
    }

    $('#data').on("click", '.ck_select_image .img-actions a.btn', function() {
        var _this = $(this)
        var img = _this.closest('.ck_select_image').find('.img-select img')
        var img_src = img.attr('src')
        if (img_src.substr(0,2) == '//') {
            img_src = 'http:' + img_src
        }
        var img_uploads_path = img.data('uploads-path');
        if (_this.hasClass('btn-delete')) {
            if (confirm(bconf.t_are_you_sure)) {
                $.post(bconf.url_del_img, {'path' : img_src})
                    .always(function(data) {
                        console.log(data)
                        _this.closest('.ck_select_image').remove()
                     })
                    .fail(function() {
                        alert("error");
                    })
            }
        } else if (_this.hasClass('btn-edit')) {
            var url_edit = bconf.url_edit
            if (url_edit.substr(0,2) == '//') {
                url_edit = 'http:' + url_edit
            }
            var pixlr_url = 'http://www.pixlr.com/editor/'
                + '?target=' + encodeURIComponent(url_edit)
                + '&method=GET'
                + '&referer=' + encodeURIComponent(url_edit)
                + '&image=' + encodeURIComponent(img_src)
                + '&title=' + encodeURIComponent(img_uploads_path.split('.')[0])
                + '&locktarget=true'
                + '&locktitle=true'
            console.log(pixlr_url)
            window.location.href = pixlr_url;
        }
        return false;
    });

    $(window).resize(function () {
        var h = Math.max($(window).height() - 0, 420);
        $('#container, #data, #tree, #data').height(h).filter('.default').css('lineHeight', h + 'px');
    }).resize();

    $(window).resize(function () {
        var h = Math.max($(window).height() - 0, 420);
        $('#container, #data, #tree, #data').height(h).filter('.default').css('lineHeight', h + 'px');
    }).resize();

    $('#tree').jstree({
        'core' : {
            'data' : {
                'url' : bconf.url_core,
                'data' : function (node) {
                    return { 'id' : node.id };
                }
            },
            'check_callback' : function(o, n, p, i, m) {
                if (m && m.dnd && m.pos !== 'i') { return false; }
                if (o === "move_node" || o === "copy_node") {
                    if(this.get_node(n).parent === this.get_node(p).id) { return false; }
                }
                return true;
            },
            'themes' : {
                'responsive' : false,
                'variant' : 'small',
                'stripes' : true
            }
        },
        'sort' : function(a, b) {
            return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : (this.get_type(a) >= this.get_type(b) ? 1 : -1);
        },
        'contextmenu' : {
            'items' : function(node) {
                var tmp = $.jstree.defaults.contextmenu.items();
                delete tmp.create.action;
                tmp.create.label = "New";
                tmp.create.submenu = {
                    "create_folder" : {
                        "separator_after"    : true,
                        "label"                : "Folder",
                        "action"            : function (data) {
                            var inst = $.jstree.reference(data.reference),
                                obj = inst.get_node(data.reference);
                            inst.create_node(obj, { type : "default" }, "last", function (new_node) {
                                setTimeout(function () { inst.edit(new_node); },0);
                            });
                        }
                    }
                };
                if(this.get_type(node) === "file") {
                    delete tmp.create;
                }
                return tmp;
            }
        },
        'types' : {
            'default' : { 'icon' : 'fa fa-folder fa-lg' },
            'file' : { 'valid_children' : [], 'icon' : 'fa fa-file-image-o fa-lg' }
        },
        'unique' : {
            'duplicate' : function (name, counter) {
                return name + ' ' + counter;
            }
        },
        'plugins' : ['state','dnd','sort','types','contextmenu','unique']
    })
    .on('delete_node.jstree', function (e, data) {
        if (confirm(bconf.t_are_you_sure)) {
            $.get(bconf.url_delete, { 'id' : data.node.id })
                .fail(function () { data.instance.refresh(); });
        }
    })
    .on('create_node.jstree', function (e, data) {
        $.get(bconf.url_create, { 'type' : data.node.type, 'id' : data.node.parent, 'text' : data.node.text })
            .done(function (d) { data.instance.set_id(data.node, d.id); })
            .fail(function () { data.instance.refresh(); });
    })
    .on('rename_node.jstree', function (e, data) {
        $.get(bconf.url_rename, { 'id' : data.node.id, 'text' : data.text })
            .done(function (d) { data.instance.set_id(data.node, d.id); })
            .fail(function () { data.instance.refresh(); });
    })
    .on('move_node.jstree', function (e, data) {
        if (confirm(bconf.t_are_you_sure)) {
            $.get(bconf.url_move, { 'id' : data.node.id, 'parent' : data.parent })
                .done(function (d) { data.instance.refresh(); })
                .fail(function () { data.instance.refresh(); });
        }
    })
    .on('copy_node.jstree', function (e, data) {
        if (confirm(bconf.t_are_you_sure)) {
            $.get(bconf.url_copy, { 'id' : data.original.id, 'parent' : data.parent })
                .done(function (d) { data.instance.refresh(); })
                .fail(function () { data.instance.refresh(); });
        }
    })
    .on('changed.jstree', function (e, data) {
        if (data && data.selected && data.selected.length) {
            $.get(bconf.url_contents.replace('%id', data.selected.join(':')), function (d) {
                if(d && typeof d.type !== 'undefined') {
                    $('#data .content').hide();
                    switch(d.type) {
                        case 'text':
                        case 'txt':
                        case 'md':
                        case 'htaccess':
                        case 'log':
                        case 'sql':
                        case 'php':
                        case 'js':
                        case 'json':
                        case 'css':
                        case 'html':
                            $('#data .code').show();
                            $('#code').val(d.content);
                            break;
                        case 'png':
                        case 'jpg':
                        case 'jpeg':
                        case 'bmp':
                        case 'gif':
                            $('#data .image img').attr('src',d.content);
                            $('#image_src_href').attr('href',d.content);
                            $('#image_info').html(d.info);
                            $('#data .image').show();
                            break;
                        default:
                            $('#data .default').html(d.content).show();
                            break;
                    }
                }
            });
        } else {
            $('#data .content').hide();
            $('#data .default').html(bconf.t_select_file).show();
        }
    });
{/jquery}