Advertisement
thiago_db

Drag and Drop

Mar 16th, 2024
540
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.11 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Arrastar e Soltar com Bootstrap e TinyMCE</title>
  7. <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  8. <script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
  9. <style>
  10.   .sidebar {
  11.     width: 200px;
  12.     height: 100%;
  13.     background-color: #f0f0f0;
  14.    float: right;
  15.     padding: 20px;
  16.   }
  17.   .draggable {
  18.     cursor: move;
  19.     margin-bottom: 10px;
  20.     display: block;
  21.   }
  22.   .content {
  23.     padding: 20px;
  24.     min-height: 300px;
  25.     position: relative;
  26.   }
  27.   .dropzone {
  28.     min-height: 50px;
  29.     border: 2px dashed #aaa;
  30.    margin-bottom: 20px;
  31.     position: relative;
  32.   }
  33.   .highlight {
  34.     position: absolute;
  35.     width: 100%;
  36.     height: 100%;
  37.     top: 0;
  38.     left: 0;
  39.     background-color: rgba(0, 0, 0, 0.1);
  40.     border: 2px dashed #007bff;
  41.    z-index: 1;
  42.     display: none;
  43.   }
  44.   .dropzone:hover .highlight {
  45.     display: block;
  46.   }
  47.   .delete-button {
  48.     position: absolute;
  49.     top: 5px;
  50.     right: 5px;
  51.     cursor: pointer;
  52.     display: none;
  53.   }
  54.   .alert:hover .delete-button {
  55.     display: block;
  56.   }
  57.   .red-button {
  58.     position: absolute;
  59.     top: 5px;
  60.     right: 35px;
  61.     cursor: pointer;
  62.     background-color: red;
  63.     color: white;
  64.     border: none;
  65.     padding: 5px 10px;
  66.     border-radius: 5px;
  67.     display: none;
  68.   }
  69.   .alert:hover .red-button {
  70.     display: block;
  71.   }
  72.   .duplicate-button {
  73.     position: absolute;
  74.     top: -30px;
  75.     right: 5px;
  76.     cursor: pointer;
  77.     background-color: green;
  78.     color: white;
  79.     border: none;
  80.     padding: 5px 10px;
  81.     border-radius: 5px;
  82.     display: none;
  83.     z-index: 1;
  84.   }
  85.   .alert:hover .duplicate-button {
  86.     display: block;
  87.   }
  88. </style>
  89. </head>
  90. <body>
  91.  
  92. <div class="container-fluid">
  93.   <div class="row">
  94.     <div class="col-md-3 sidebar">
  95.       <button class="btn btn-secondary draggable mt-2" draggable="true" ondragstart="drag(event, 'menu')">
  96.         <img src="https://via.placeholder.com/20" alt="Menu Icon"> Menu
  97.       </button>
  98.       <button class="btn btn-secondary draggable mt-2" draggable="true" ondragstart="drag(event, 'header')">
  99.         <img src="https://via.placeholder.com/20" alt="Header Icon"> Header
  100.       </button>
  101.       <button class="btn btn-secondary draggable mt-2" draggable="true" ondragstart="drag(event, 'content')">
  102.         <img src="https://via.placeholder.com/20" alt="Content Icon"> Content
  103.       </button>
  104.       <button class="btn btn-secondary draggable mt-2" draggable="true" ondragstart="drag(event, 'footer')">
  105.         <img src="https://via.placeholder.com/20" alt="Footer Icon"> Footer
  106.       </button>
  107.     </div>
  108.     <div class="col-md-9">
  109.       <div class="content" ondrop="drop(event)" ondragover="allowDrop(event)">
  110.         <div class="dropzone">
  111.           <div class="highlight"></div>
  112.         </div>
  113.       </div>
  114.     </div>
  115.   </div>
  116. </div>
  117.  
  118. <script>
  119. async function drop(event) {
  120.     event.preventDefault();
  121.     var type = event.dataTransfer.getData("text");
  122.     var content = "";
  123.  
  124.       template = {
  125.         "menu": './assets/img/block/content/content-1.html',
  126.         "header": './assets/img/block/content/content-2.html',
  127.         "content": './assets/img/block/content/content-3.html',
  128.         "footer": './assets/img/block/content/content-4.html'
  129.     }
  130.  
  131.     content = await loadHtmlFile(template[type]);
  132.  
  133.  
  134.  
  135.    
  136.  
  137. }
  138.  
  139. function duplicateBlock(originalBlock) {
  140.   var newBlock = originalBlock.cloneNode(true);
  141.   var deleteButton = newBlock.querySelector('.delete-button');
  142.   deleteButton.onclick = function() {
  143.     if (confirm("Tem certeza que deseja deletar este bloco?")) {
  144.       newBlock.remove();
  145.     }
  146.   };
  147.   var redButton = newBlock.querySelector('.red-button');
  148.   redButton.onclick = function() {
  149.     if (confirm("Tem certeza que deseja deletar este bloco?")) {
  150.       newBlock.remove();
  151.     }
  152.   };
  153.   document.querySelector('.content').appendChild(newBlock);
  154. }
  155. </script>
  156.  
  157. </body>
  158. </html>
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement