Adrian Magdas
Adrian Magdas

Reputation: 613

JsTree with dnd plugin, always copy

I have 2 trees using jsTree and dnd plugin.
I want that each drag operation to be a copy instead of a move.
There is a "copy_modifier" which works Ok when pressing a modifier key, but I want copy to be the default behavior without the modifier. Any ideas?

Thanks,
Adrian

Upvotes: 3

Views: 4002

Answers (3)

Diode
Diode

Reputation: 25165

another solution for the new version. it works, but not fully tested.

"core": {
    "check_callback": function (operation, node, node_parent, node_position, more) {
        if (more) {
            if (more.is_multi) {
                more.origin.settings.dnd.always_copy = true;
            } else {
                more.origin.settings.dnd.always_copy = false;
            }
        }
        return true;
    }
}

Upvotes: 3

Gorky
Gorky

Reputation: 1423

Adrian's solution won't work with the new versions. There's that dnd plugins always copy flag dnd.always_copy

Setting this flag will make all drag and drops copy operations instead of move. But if you are looking for a solution where you need internal tree elements to be moved on dnd but inter tree dnds to be copies than here's a hack:

  • Keep a global variable flag on your page

  • Handle copy_node.jstree events and update your global flag from data.is_multi (data is the second arg of the event function)

  • Implement check_callback function and if operation is delete_node and your flag is set unset your flag and return false, preventing deletion from the dnd.

Upvotes: 2

Adrian Magdas
Adrian Magdas

Reputation: 613

Found a solution on http://groups.google.com/group/jstree
I added the following section when configuring jsTree:
"crrm": { "move": { "always_copy": "multitree" } }

Hope this helps,
Adrian

Upvotes: 3

Related Questions