layout.blade.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. @extends('layouts.admin')
  2. @section('title')
  3. {{$event->title}} - Layout
  4. @stop
  5. @section('content')
  6. <form action="/admin/events/layout/{{$event->id}}" method="POST" name="frmLayout" id="frmLayout">
  7. {{csrf_field()}}
  8. <input type="hidden" name="big">
  9. <input type="hidden" name="small1">
  10. <input type="hidden" name="small2">
  11. <input type="hidden" name="small3">
  12. <input type="hidden" name="small4">
  13. <div class="row" style="padding:40px">
  14. <div class="row">
  15. <br>
  16. <div class="col-md-8">
  17. <div class="row">
  18. <div class="col-md-12 dropBox" ondragover="allowDrop(event)" ondrop="drop(event, 'big')" style="height:300px" data-zone="big">
  19. @if($event->big != '')
  20. <h4 id="news{{$event->big->id}}" draggable="true" ondragstart="dragStart(event)" style="border:1px solid black;padding:10px;">{{$event->big->title}} <a class="remove" data-x="news{{$event->big->id}}">(X)</a></h4>
  21. @endif
  22. </div>
  23. </div>
  24. <div class="row">
  25. <div class="col-md-6 dropBox" ondragover="allowDrop(event)" ondrop="drop(event, 'small1')" style="min-height:80px" data-zone="small1">
  26. @if($event->small1 != '')
  27. <h4 id="news{{$event->small1->id}}" draggable="true" ondragstart="dragStart(event)" style="border:1px solid black;padding:10px;">{{$event->small1->title}} <a class="remove" data-x="news{{$event->small1->id}}">(X)</a></h4></br>
  28. @endif
  29. </div>
  30. <div class="col-md-6 dropBox" ondragover="allowDrop(event)" ondrop="drop(event, 'small2')" style="min-height:80px" data-zone="small2">
  31. @if($event->small2 != '')
  32. <h4 id="news{{$event->small2->id}}" draggable="true" ondragstart="dragStart(event)" style="border:1px solid black;padding:10px;">{{$event->small2->title}} <a class="remove" data-x="news{{$event->small2->id}}">(X)</a></h4></br>
  33. @endif
  34. </div>
  35. </div>
  36. <div class="row">
  37. <div class="col-md-6 dropBox" ondragover="allowDrop(event)" ondrop="drop(event, 'small3')" style="min-height:80px" data-zone="small3">
  38. @if($event->small3 != '')
  39. <h4 id="news{{$event->small3->id}}" draggable="true" ondragstart="dragStart(event)" style="border:1px solid black;padding:10px;">{{$event->small3->title}} <a class="remove" data-x="news{{$event->small3->id}}">(X)</a></h4></br>
  40. @endif
  41. </div>
  42. <div class="col-md-6 dropBox" ondragover="allowDrop(event)" ondrop="drop(event, 'small4')" style="min-height:80px" data-zone="small4">
  43. @if($event->small4 != '')
  44. <h4 id="news{{$event->small4->id}}" draggable="true" ondragstart="dragStart(event)" style="border:1px solid black;padding:10px;">{{$event->small4->title}} <a class="remove" data-x="news{{$event->small4->id}}">(X)</a></h4></br>
  45. @endif
  46. </div>
  47. </div>
  48. </div>
  49. <div class="col-md-4" id="newsList" style="max-height:500px;overflow-y:scroll;">
  50. <input type="text" placeholder="Cerca..." id="txtSearch" onkeyup="filter(this,'newsList')">
  51. @foreach($news as $n)
  52. <h4 class="elements" id="news{{$n->id}}" draggable="true" ondragover="return false;" ondragstart="dragStart(event)" style="border:1px solid black;padding:10px;">{{$n->title}}</h4>
  53. @endforeach
  54. </table>
  55. </div>
  56. </div>
  57. </div>
  58. <input type="button" value="SALVA" id="btSave" class="btn btn-success">
  59. {!! link_to_route('events.index', 'Annulla', null, array('class' => 'btn btn-info')) !!}
  60. </form>
  61. @stop
  62. @section('extra_css')
  63. <style>
  64. .dropBox
  65. {
  66. border:1px solid black;
  67. padding:20px;
  68. background-color:white;
  69. }
  70. </style>
  71. @stop
  72. @section('extra_js')
  73. <script type="text/javascript">
  74. $(function(){
  75. $("#btSave").click(function(){
  76. $(".dropBox").each(function(){
  77. var zone = $(this).attr("data-zone");
  78. if ($(this).children('h4').length > 0)
  79. {
  80. var id = $(this).children('h4').attr("id");
  81. id = id.replace("news", "");
  82. $("input[name='" + zone + "']").val(id);
  83. }
  84. });
  85. $("#frmLayout").submit();
  86. });
  87. $(document).on('click', '.remove', function () {
  88. var el = $(this).parent();
  89. el.children("a").eq(0).remove();
  90. el.appendTo("#newsList");
  91. });
  92. });
  93. function dragStart (event) {
  94. event.dataTransfer.setData("text/plain", event.target.id);
  95. }
  96. function allowDrop (event) {
  97. event.preventDefault();
  98. // event.currentTarget.style.background = '#7f8082';
  99. }
  100. function drop (event, zone) {
  101. if($( event.target ).is('div'))
  102. {
  103. var el = $("[data-zone='" + zone + "'] > h4");
  104. if (el != undefined)
  105. {
  106. el.children("a").eq(0).remove();
  107. el.appendTo("#newsList");
  108. }
  109. event.preventDefault();
  110. event.target.innerHTML = '';
  111. const data = event.dataTransfer.getData("text/plain");
  112. const element = document.querySelector(`#${data}`);
  113. element.innerHTML += ' <a class="remove" data-x="' + element.id + '">(X)</a>';
  114. event.currentTarget.style.background = 'white'
  115. try {
  116. event.target.appendChild(element);
  117. } catch (error) {
  118. console.warn("you can't move the item to the same place")
  119. }
  120. }
  121. }
  122. $("#txtSearch").keydown(function(event) {
  123. if (event.keyCode == 13) {
  124. event.preventDefault();
  125. }
  126. });
  127. function filter (element,what) {
  128. var value = $(element).val();
  129. $('.elements').hide();
  130. $('.elements:contains(' + value + ')').show();
  131. };
  132. </script>
  133. @stop