0

ノードが移動またはコピーされたかどうか、およびユーザーがそれを行う権限を持っているかどうかを確認できる機能を備えたcrrm.move.check_moveを実装したかったのです。私のコードは次のようになります:

var _isUserHasRightToMoveNodes = false; // set depending on user rights
var _isUserHasRightToCopyNodes = true; // set depending on user rights

var _jsTreePlugins = ["themes", "html_data", "ui"];
if ((_isUserHasRightToMoveNodes) || (_isUserHasRightToCopyNodes)) {
    _jsTreePlugins.push("dnd");
    _jsTreePlugins.push("crrm");
}

$( this ).jstree({
     plugins: _jsTreePlugins,
     ...,
     crrm : {
        "move" : {
            "check_move" : function( m ) {
                // wenn der Knoten verschoben wird
                if ((!_isUserHasRightToMoveNodes) && ((m.cy == null) || (!m.cy)))
                return false;
                // wenn der Knoten kopiert wird
                if ((!_isUserHasRightToCopyNodes) && (m.cy != null) && (m.cy))
                    return false;
                return true;
             }
        }
     }
});

ノードをコピーすると、それは不可能に見えますが(赤い十字アイコン)、まだコピーされています(必要に応じて)。

私はfirebugでデバッグしましたが、m.cyはノードがドロップされるとすぐに定義され、他のノードの上にマウスオーバーすると定義されないことがわかりました。したがって、赤い十字アイコンです。ただし、もちろん、ドロップされるとすぐにm.cyが定義され、ノードがコピーされます。

私は何か間違ったことをしていますか、それともこれはバグですか?そのための回避策はありますか?

助けてくれてありがとう!タンジャ

4

1 に答える 1

0
Your return is not as expected - Sample code below should help you:

"crrm": {
    "move" : {
         "check_move" : 
             function(tree)
             {
               //check the condition to enable the drag
                   if(tree.r.attr("id") !=  ...){   
                        return {
                               after : true,
                               before : false,
                               inside : false
                               }
                   }else{
                    return false;
                   }       
              }            
          }
}
于 2014-02-14T17:28:44.937 に答える