2010-09-17 4 views
3

J'ai deux arbres utilisant jsTree et dnd plugin.
Je veux que chaque opération glisser soit une copie au lieu d'un mouvement.
Il existe un "copy_modifier" qui fonctionne correctement lorsque vous appuyez sur une touche de modification, mais je veux que copy soit le comportement par défaut sans le modificateur. Des idées?JsTree avec le plugin dnd, toujours copier

Merci,
Adrian

Répondre

3

trouvé une solution sur http://groups.google.com/group/jstree
J'ai ajouté la section suivante lors de la configuration jsTree:
"CRRM": { "move": { "always_copy": "multitree"} }

Hope this helps,
Adrian

2

de solut Adrian l'ion ne fonctionnera pas avec les nouvelles versions. Il y a que les plugins mdn toujours copier drapeau dnd.always_copy

définition de cet indicateur fera toute commande glisser-déposer les opérations de copie au lieu de se déplacer. Mais si vous êtes à la recherche d'une solution où vous avez besoin d'éléments d'arbres internes à déplacer sur mdn mais DNDS entre arbres être des copies que voici un hack:

  • Gardez un drapeau variable globale sur votre page

  • Gérer les événements de copy_node.jstree et mettre à jour votre indicateur global de data.is_multi (données est la deuxième arg de la fonction d'événement)

  • Mettre en œuvre check_callback fonction et si l'opération est delete_node et votre drapeau est mis votre drapeau et retour unset false, empêchant la suppression de le dnd.

2

une autre solution pour la nouvelle version. cela fonctionne, mais pas entièrement testé.

"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; 
    } 
} 
+0

Merci à mon pote: D – Dipesh