2017-05-18 7 views
0

私はこれをやろうとしています。外部要素をサマータイムエディタにカスタムスタイリングでドラッグ&ドロップする

私が持っているどのような

  • 私は
  • 編集可能summernoteインスタンスを持つ別のdiv(特定#IDで)リソースのリストとページ上のdivを持って

何I作成したい

  1. リソースをリストからSummernoteエディタにドラッグできます(jquery UIを使用してそれはきわめてかわいいですか?)
  2. リソースをエディタに入れたら、自動的に特定の/カスタムのスタイルでスタイルされます(例:
  3. 要素がエディタに入ると、その要素からテキストを編集することはできません(リソースのタイトルを変更することはできません)。代わりに、その要素のテキストを編集することはできません。エディタ内の他の場所に要素全体をドラッグします(イメージの場合と同じように)。

ここではすべての基本的なコードを必要と基本的なフィドルだ:私はどのpossibleIが本当に

ベスト、これで任意の助けをいただければ幸いGoogleで検索しようとした

// when edit 
 
$('.edit').on('click', function() { 
 
    var target = $(this).attr('target'); 
 

 

 

 

 
    $(this).parent().find('.save').show(); 
 
    $(this).parent().find('.edit').hide(); 
 
    $('#module_descr').summernote({ 
 
    height: 300, 
 
    toolbar: [ 
 
     ['img', ['picture']], 
 
     ['style', ['style', 'addclass', 'clear']], 
 
     ['fontstyle', ['bold', 'italic', 'ul', 'ol', 'link', 'paragraph']], 
 
     ['fontstyleextra', ['strikethrough', 'underline', 'hr', 'color', 'superscript', 'subscript']] 
 

 

 
    ] 
 
    }); 
 
}); 
 

 
// when saving title or description 
 
$('.save').on('click', function() { 
 

 

 
    $('#module_descr').summernote('destroy'); 
 
    $(this).parent().find('.save').hide(); 
 
    $(this).parent().find('.edit').show(); 
 

 

 

 
});
.save { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.0/summernote.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.0/summernote.css" rel="stylesheet" /> 
 
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" /> 
 

 
<div class="col-md-6"> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading">Ressources</div> 
 
    <div class="panel-body" style="max-height:200px;overflow:auto;"> 
 
     <div class="list-group modules" id="ressourcesList"> 
 

 
     <a href="#" class="list-group-item" id="1"> Resource 1 
 
\t \t \t \t \t </a> 
 

 
     <a href="#" class="list-group-item" id="2"> Resource 2 
 
\t \t \t \t \t </a> 
 

 
     <a href="#" class="list-group-item" id="3"> Another Resource 
 
\t \t \t \t \t </a> 
 

 

 
     </div> 
 

 
    </div> 
 
    </div> 
 

 
    <div class="row" id="module_info"> 
 
    <div class="panel panel-info"> 
 
     <div class="panel-heading"> 
 
     <div class="row"> 
 
      <div class="col-md-9 title_descr"></div> 
 
      <div class="col-md-3 text-right"> 
 
      <button type="button" class="btn btn-info btn-sm edit" target="module_descr">Edit</button> 
 
      <button type="button" class="btn btn-success btn-sm save" target="module_descr" style="display:none">Save</button> 
 
      </div> 
 
     </div> 
 
     </div> 
 
     <div class="panel-body" id="module_descr" module_id=""> 
 

 
     </div> 
 
    </div> 
 
    </div>

は、よろしくおねがいします。

Xogno

答えて

1

誰かを助けるかもしれない場合の回答を投稿する。

私の兄弟の助けを借りて、私は欲しいものを正確にやる方法を見つけました。 summernote用のカスタムボタンを作成するオプションを使用すると、ボタンがエディタ内に特別に存在する必要はありません。 "ノード"を使ってエディットに任意のコンテンツを追加することができます。

フィドルのコードは、それを動作させるための基本的なコードですが、ここの特徴です:#を抽出し、エディタにリソースを追加します「を追加リソース」とのボタンが(あります

  • リソースのID) - それが追加されます、ユーザーが混乱するすべてのものまで)、「偽のcontentEditable =」のおかげであなたはドテキストを保存すると
  • 、あなたがないように、あなたは(折りたたみ式を編集することはできません

  • 折りたたみ可能移動アイコンのおかげで折りたたみ式の移動が可能 - で可能Jquery Sortable

    // when edit 
    
        $('.edit').on('click', function() { var target = $(this).attr('target'); $(this).parent().find('.save').show(); 
        $(this).parent().find('.edit').hide(); 
        $('#module_descr').summernote({ 
        disableDragAndDrop: true, 
        height: 300, 
        toolbar: [ 
         ['img', ['picture']], 
         ['style', ['style', 'addclass', 'clear']], 
         ['fontstyle', ['bold', 'italic', 'ul', 'ol', 'link', 'paragraph']], 
         ['fontstyleextra', ['strikethrough', 'underline', 'hr', 'color', 'superscript', 'subscript']] 
         ] 
         }); 
        }); 
    
    
    $('.addResource').on('click', function() { 
        var resourceId = $(this).parent().attr('id'); 
        console.log($('#3')); 
        console.log($('#item2')); 
    
        mydiv = $('<div><p>test paragraph</p></div>'); 
        console.log("I created a div : ", mydiv); 
        var node = document.createElement('div'); 
        //node.textContent = "This is a DIV node\nAgain some text</br>"; 
    
        node.innerHTML = '<div class="col-md-12 resourceadded"><span class="handle button glyphicon glyphicon-move"></span><button class="btn btn-info " contenteditable="false" data-toggle="collapse" data-target="#demo_'+ resourceId + '">Collapsible '+ resourceId + '</button><div contenteditable="false" id="demo_'+ resourceId + '" class="collapse">Lorem ipsum dolor text....</div><br/><br/></div>'; 
    
        node.setAttribute("class", "test"); 
    
    
        // @param {Node} node 
        $('#module_descr').summernote('insertNode', node); 
        $('#module_info').find('.save').show(); 
        $('#module_info').find('.edit').hide(); 
    }); 
    
    // when saving title or description 
    $('.save').on('click', function() { 
    
    
        $('#module_descr').summernote('destroy'); 
        $(this).parent().find('.save').hide(); 
        $(this).parent().find('.edit').show(); 
    
    
    
    
    }); 
    
    
    
    
    $("#module_descr").sortable({ 
        placeholder: 'slide-placeholder', 
        axis: "y", 
        revert: 150, 
        start: function(e, ui){ 
    
         placeholderHeight = ui.item.outerHeight(); 
         ui.placeholder.height(placeholderHeight + 15); 
         $('<div class="slide-placeholder-animator" data-height="' + placeholderHeight + '"></div>').insertAfter(ui.placeholder); 
    
        }, 
        change: function(event, ui) { 
    
         ui.placeholder.stop().height(0).animate({ 
          height: ui.item.outerHeight() + 15 
         }, 300); 
    
         placeholderAnimatorHeight = parseInt($(".slide-placeholder-animator").attr("data-height")); 
    
         $(".slide-placeholder-animator").stop().height(placeholderAnimatorHeight + 15).animate({ 
          height: 0 
         }, 300, function() { 
          $(this).remove(); 
          placeholderHeight = ui.item.outerHeight(); 
          $('<div class="slide-placeholder-animator" data-height="' + placeholderHeight + '"></div>').insertAfter(ui.placeholder); 
         }); 
    
        }, 
        stop: function(e, ui) { 
         $(this).append('<br/><br/>'); 
         $(".slide-placeholder-animator").remove(); 
    
        }, 
    }); 
    

ここでアクションのコードを参照するにはフィドルです:それを改善するために https://jsfiddle.net/Ltw7dsqr/5/

一つの方法は、エディタで折りたたみ可能な可動を作ることであろうが、私はどのように知りませんそれを可能にする。

関連する問題