templates/uredi_menu/index.html.twig line 306

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Uredi vsebino parent = {{menu_parent_g}}{% endblock %}
  3. {% block javascriptcode %}
  4.     <script type="text/javascript">
  5.         
  6.         var datotekaInputUploader;
  7.         var datotekaMultipleInputUploader;
  8.         var datotekaAdditionalInputUploader;
  9.         var api;
  10.         var apiMultiple;
  11.         var apiAdditional;
  12.         var gUploadedImage;
  13.         function createUploaderImageMenu()
  14.         {
  15.             $.ajax({
  16.                 url:'{{ path('editmenu_getpreloadedimage') }}',
  17.                 type: "POST",
  18.                 dataType: "json",
  19.                 async: true,
  20.                 data:{ id: {{ menu_parent_g }}},
  21.                 success: function (return_data)
  22.                 {  
  23.                     fileImage = $('#datotekaInput').fileuploader(
  24.                     {
  25.                         limit: 1,
  26.                         enableApi:true,
  27.                         files: return_data,
  28.                         onSelect: function(item) 
  29.                         {
  30.                             if (!item.html.find('.fileuploader-action-start').length)
  31.                                 item.html.find('.fileuploader-action-remove').before('<a class="fileuploader-action fileuploader-action-start" title="Upload"><i></i></a>');
  32.                         },
  33.                         upload:
  34.                         {
  35.                             url: '{{ path('dodajmenuuploadimagecall') }}',
  36.                             data: {
  37.                                'menu_id': {{ menu_parent_g }}
  38.                             },
  39.                             type: 'POST',
  40.                             enctype: 'multipart/form-data',
  41.                             start: true,
  42.                             synchron: true,
  43.                             beforeSend: function(item) 
  44.                             {
  45.                                 item.upload.data.custom_name = item.name;
  46.                             },
  47.                             onSuccess: function(result, item) 
  48.                             {
  49.                                 var data = {};
  50.                                 gUploadedImage = result[0].files[0].name;
  51.                                 try {
  52.                                     data = JSON.parse(result);
  53.                                 } catch (e) {
  54.                                     data.hasWarnings = true;
  55.                                 }
  56.                                 // get the new file name
  57.                                 if(data.isSuccess && data.files[0]) 
  58.                                 {
  59.                                     item.name = data.files[0].name;
  60.                                     item.html.find('.column-title div').animate({opacity: 0}, 400);
  61.                                 }
  62.                         
  63.                                 item.html.find('.fileuploader-action-remove').addClass('fileuploader-action-success');
  64.                                 setTimeout(function() 
  65.                                 {
  66.                                     item.html.find('.column-title div').attr('title', result[0].files[0].name).text(result[0].files[0].name).animate({opacity: 1}, 400);
  67.                                     item.html.find('.progress-bar2').fadeOut(400);
  68.                                 }, 
  69.                                 400);
  70.                                 
  71.                             },
  72.                             onError: function(item) 
  73.                             {
  74.                                 var progressBar = item.html.find('.progress-bar2');
  75.                                 // make HTML changes
  76.                                 if(progressBar.length > 0) 
  77.                                 {
  78.                                     progressBar.find('span').html(0 + "%");
  79.                                     progressBar.find('.fileuploader-progressbar .bar').width(0 + "%");
  80.                                     item.html.find('.progress-bar2').fadeOut(400);
  81.                                 }
  82.                                 
  83.                                 item.upload.status != 'cancelled' && item.html.find('.fileuploader-action-retry').length == 0 ? item.html.find('.column-actions').prepend(
  84.                                     '<a class="fileuploader-action fileuploader-action-retry" title="Retry"><i></i></a>'
  85.                                 ) : null;
  86.                             },
  87.                             onProgress: function(data, item) 
  88.                             {
  89.                                 var progressBar = item.html.find('.progress-bar2');
  90.                                 // make HTML changes
  91.                                 if(progressBar.length > 0) 
  92.                                 {
  93.                                     progressBar.show();
  94.                                     progressBar.find('span').html(data.percentage + "%");
  95.                                     progressBar.find('.fileuploader-progressbar .bar').width(data.percentage + "%");
  96.                                 }
  97.                             },
  98.                             onComplete: null,
  99.                         },
  100.                         onRemove: function(item) 
  101.                         {       
  102.                             // send POST request
  103.                             $.post('/api/ajax_remove_file.php', {
  104.                                 file: item.name
  105.                             });
  106.                         },
  107.                         captions: 
  108.                         {
  109.                             button: function(options) { return 'Izberi ' + (options.limit == 1 ? 'datoteko' : 'datoteke'); },
  110.                             feedback: function(options) { return 'Izberi datoteko'; },
  111.                             feedback2: function(options) { return 'Število izbranih datotek: ' + options.length; },
  112.                             confirm: 'Potrdi',
  113.                             cancel: 'Prekliči',
  114.                             name: 'Ime',
  115.                             type: 'Tip',
  116.                             size: 'Velikost',
  117.                             dimensions: 'Dimenzije',
  118.                             duration: 'Čas trajanja',
  119.                             crop: 'Razreži',
  120.                             rotate: 'Rotiraj',
  121.                             sort: 'Sortiraj',
  122.                             download: 'Prenesi',
  123.                             upload: 'Naloži',
  124.                             remove: 'Odstrani',
  125.                             drop: 'Povlecite sem datotetke, ki jih želite naložiti na strežnik.',
  126.                             paste: '<div class="fileuploader-pending-loader"></div> Datoteka se bo prilepila. Kliknite sem, če želite preklicati akcijo.',
  127.                             removeConfirmation: 'Ste prepričani, da želite izbrisati datoteko?',
  128.                             errors: {
  129.                                 filesLimit: 'Število dovoljenih datotek: ${limit}.',
  130.                                 filesType: 'Dovoljeni tipi datotek: ${extensions}.',
  131.                                 fileSize: '${name} je predolga! Največja dovoljena velikost datoteke je ${fileMaxSize} MB.',
  132.                                 filesSizeAll: 'Datoteke so predolge! Največja dovoljena velikost datotek je ${maxSize} MB.',
  133.                                 fileName: 'Datoteka z imenom ${name} je že izbrana.',
  134.                                 folderUpload: 'Prenos map ni dovoljen.'
  135.                             }
  136.                         }   
  137.                     });
  138.                     apiContentImage = $.fileuploader.getInstance(fileImage);
  139.                 }});
  140.         }
  141.         function fillData()
  142.         {
  143.             
  144.             
  145.             gUploadedImage = '{{ menu_image }}';
  146.             createUploaderImageMenu(); 
  147.             //createUploaderMultipleImage();
  148.             //clearFields();            
  149.         }
  150.         $( document ).ready(function() 
  151.         {
  152.             if ('{{menu_lang_g}}' == 'si')
  153.             {
  154.                 $("#defaultFlag").attr("src","{{ asset('img/flags/Slovenia.png')}}");
  155.             }
  156.             else if ('{{menu_lang_g}}' =='en')
  157.             {
  158.                 $("#defaultFlag").attr("src","{{ asset('img/flags/United-Kingdom.png')}}");
  159.             } 
  160.             else if ('{{menu_lang_g}}' =='it')
  161.             {
  162.                 $("#defaultFlag").attr("src","{{ asset('img/flags/Italy.png')}}");
  163.             } 
  164.             
  165.             tinymce.init({
  166.                 selector: 'textarea',
  167.                 height:600,
  168.                         width:1000,
  169.                         plugins: 'fullpage advlist autolink lists link image charmap print preview hr anchor pagebreak moxiemanager code table',
  170.                         toolbar: 'fullpage code table tabledelete | tableprops tablerowprops tablecellprops | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol undo redo | insert | styles | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
  171.                         toolbar_mode: 'floating',
  172.                         extended_valid_elements : "script[src|async|defer|type|charset]",
  173.                         convert_urls: false,
  174.                         entity_encoding:'raw',
  175.                 
  176.                 setup: function (editor) {
  177.                     
  178.                     
  179.                     
  180.                     editor.on('init', function () {
  181.                         
  182.                         var content ='{{menu_content}}';
  183.                         //editor.setContent(content);
  184.                         //editor.setContent('<p><b>To je bla</b></p>');
  185.                         
  186.                         var Title = $('<textarea />').html(content).text();
  187.                         var TitleTrimmed =Title.substring(1, Title.length-1);
  188.                         editor.setContent(TitleTrimmed.trim());
  189.                     });
  190.                 }  
  191.             });
  192.             fillData();
  193.             //tinymce.get('textarea').focus();
  194.             tinymce.activeEditor.setContent("Dodajte novo vsebino");
  195.             
  196.             
  197.             
  198.             
  199.             //napolnim vnosna polja za urejanje menija
  200.             $('#menu_title').val('{{menu_title}}');
  201.             
  202.             if('{{menu_visible}}' == 0)
  203.             {
  204.                 $('#menu_visible').prop('checked', false);
  205.             }
  206.             else
  207.             {
  208.                 $('#menu_visible').prop('checked', true);
  209.             }
  210.             
  211.             
  212.             //gumb zapriOkno CLICK!
  213.             $("#zapriOkno").click(function(){
  214.             
  215.                 location.href = '/menus';
  216.             });
  217.             //gumb shrani CLICK!
  218.             $("#shranimenu").click(function(){
  219.                 console.log("TEST");
  220.                 //var myContent = tinymce.get("textarea").getContent();
  221.                 var myContent = tinymce.activeEditor.getContent();
  222.                 console.log(myContent);
  223.                 //preverjamo ali je spremenljivka definirana
  224.                 if (typeof gUploadedImage !== 'undefined') {
  225.                     // the variable is defined
  226.                 }
  227.                 else
  228.                 {
  229.                     gUploadedImage = "";
  230.                 }
  231.                 //ajax call za uredi vsebino!
  232.                 $.ajax({
  233.                     url:'{{ path('uredimenucall') }}',
  234.                     type: "POST",
  235.                     dataType: "json",
  236.                     async: true,
  237.                     data: {
  238.                         'menu_title' : $('#menu_title').val(),
  239.                         'menu_content': myContent,
  240.                         'menu_parent': {{menu_parent_g}},
  241.                         'menu_lang': '{{menu_lang_g}}',
  242.                         'menu_top': $('#menu_top').is(':checked'),
  243.                         'menu_footer': $('#menu_footer').is(':checked'),
  244.                         'menu_visible': $('#menu_visible').is(':checked'),
  245.                         'menu_image': gUploadedImage
  246.                         },
  247.                     success: function (return_data)
  248.                     {          
  249.                         if (return_data.data == "ok")              
  250.                         {
  251.                             
  252.                         }
  253.                         else
  254.                         {
  255.                             $('#opozoriloSplosno').attr('class','alert alert-danger');
  256.                             $('#opozoriloSplosno').text('Brisanje LVK ni mogoče, ker imate nezaključene postavke.');
  257.                                                         
  258.                         }
  259.                         $('#opozoriloSplosno').show(); 
  260.                         $("html, body").animate({ scrollTop: 0 }, "slow");
  261.                     },
  262.                     error: function (xhr, ajaxOptions, thrownError)
  263.                     {
  264.                         console.log(thrownError);
  265.                     }
  266.                 });
  267.                 location.href = '/menus';
  268.                 //END ajax call za shrani vsebino
  269.             });
  270.             //END gumb shrani vsebino CLICK 
  271.         });
  272.     </script>
  273. {% endblock %}
  274. {% block breadcrumbs %}
  275.     <li class="breadcrumb-item">Domov</li>
  276.     <!--<li class="breadcrumb-item"><a href="#">Šifranti</a></li>-->
  277.     <li class="breadcrumb-item active">Vsebina</li>
  278.     <li style="float: right;">prijavljen: {{ app.user.name }}</li>
  279.     
  280.     <!-- Breadcrumb Menu-->
  281.     <li class="breadcrumb-menu d-md-down-none">
  282.         <div class="btn-group" role="group" aria-label="Button group with nested dropdown"></div>
  283.     </li>
  284. {% endblock %}
  285. {% block content %}
  286. <div class="card">
  287.         <div class="card-header">
  288.             <i class="fa fa-edit"></i>               
  289.             <strong>Urejanje menuja</strong>
  290.             <span id="shranjujem" style="padding-left: 20px;color: #20a8d8;display:none;">... shranjujem ... </span>
  291.             <div class="card-actions">                
  292.                 
  293.             </div>
  294.         </div>
  295.         <div class="card-body">
  296.             <div id="opozoriloSplosno" class="alert alert-danger" role="alert" style="display:none;">
  297.                 -
  298.             </div>
  299.             
  300.             <ul class="nav nav-tabs" role="tablist">
  301.                 <li class="nav-item">
  302.                      <a class="nav-link active" data-toggle="tab" href="#vsebina" role="tab" aria-controls="home"><i class="icon-book-open"></i> Vsebina</a>
  303.                 </li>
  304.                 <li class="nav-item">
  305.                     <a class="nav-link" data-toggle="tab" href="#dodatnefotografije" role="tab" aria-controls="profile"><i class="icon-picture"></i> Dodatne fotografije</a>
  306.                 </li>
  307.                 <li class="nav-item">
  308.                     <a class="nav-link" data-toggle="tab" href="#dodatnedatoteke" role="tab" aria-controls="messages"><i class="icon-paper-clip"></i> Dodatne datoteke</a>
  309.                 </li>
  310.             </ul>
  311.             <div class="tab-content">
  312.                                 <div class="tab-pane active" id="vsebina" role="tabpanel">
  313.                                     <form id="vsebinaForma" enctype="multipart/form-data">
  314.                                         <div class="form-group">
  315.                                             <label for="naslov">Naziv menija</label>
  316.                                             <input type="text" class="form-control" id="menu_title" placeholder="Vnesite naziv menija" name="menu_title">
  317.                                         </div>
  318.                                         
  319.                                         <div class="form-group">
  320.                                             <label for="besedilo">Besedilo menija</label>
  321.                                             
  322.                                             <textarea id="menu_content" name="menu_content">
  323.                                                 
  324.                                             </textarea>
  325.                                         </div>                                
  326.                                         <div class="form-group">
  327.                                             <div class="file-loading">
  328.                                                 <label for="datotekaInput">Slika menija</label>
  329.                                                 <input id="datotekaInput" type="file" class="file" data-overwrite-initial="false" name="datotekaInput" multiple="true"  data-fileuploader-files=''>
  330.                                             </div>
  331.                                         </div>
  332.                                         <hr>
  333.                                         <div class="form-group">
  334.                                             <label for="vidna">Ali naj bo meni viden?</label><br>
  335.                                             <label class="switch switch-text switch-pill switch-primary">
  336.                                                 <input type="checkbox" class="switch-input" checked="" name="menu_visible" id="menu_visible">
  337.                                                 <span class="switch-label" data-on="DA" data-off="NE"></span>
  338.                                                 <span class="switch-handle"></span>
  339.                                             </label>
  340.                                         </div>
  341.                                         <div class="form-group">
  342.                                             <label for="vidna_menu">Ali naj bo gradnik viden v menuju?</label><br>
  343.                                             <label class="switch switch-text switch-pill switch-primary">
  344.                                                 <input type="checkbox" class="switch-input" checked="" name="menu_top" id="menu_top">
  345.                                                 <span class="switch-label" data-on="DA" data-off="NE"></span>
  346.                                                 <span class="switch-handle"></span>
  347.                                             </label>
  348.                                         </div>
  349.                                         <div class="form-group">
  350.                                             <label for="vidna_footer">Ali naj bo gradnik vidna v nogi?</label><br>
  351.                                             <label class="switch switch-text switch-pill switch-primary">
  352.                                                 <input type="checkbox" class="switch-input" checked="" name="menu_footer" id="menu_footer">
  353.                                                 <span class="switch-label" data-on="DA" data-off="NE"></span>
  354.                                                 <span class="switch-handle"></span>
  355.                                             </label>
  356.                                         </div>
  357.                                     </form>
  358.                                 </div>
  359.                                 <div class="tab-pane" id="dodatnefotografije" role="tabpanel">
  360.                                     <form id="fotografijeForma" enctype="multipart/form-data">
  361.                                         <div class="form-group">
  362.                                             <div class="file-loading">
  363.                                                 <label for="datotekaMultipleInput">Dodatne fotografije</label>
  364.                                                 <input class="gallery_media" id="datotekaMultipleInput" type="file" class="file" name="datotekaMultipleInput[]" multiple="true" >
  365.                                             </div>
  366.                                         </div>
  367.                                     </form>
  368.                                 </div>
  369.                                 <div class="tab-pane" id="dodatnedatoteke" role="tabpanel">
  370.                                     <form id="datotekeForma" enctype="multipart/form-data">
  371.                                         <div class="form-group">
  372.                                             <div class="file-loading">
  373.                                                 <label for="datotekaAdditionalInput">Dodatne datoteke</label>
  374.                                                 <input id="datotekaAdditionalInput" type="file" class="file" data-overwrite-initial="false" name="datotekaAdditionalInput[]" multiple="true">
  375.                                             </div>
  376.                                         </div>                                
  377.                                     </form>
  378.                                 </div>  
  379.                             </div>
  380.         </div>
  381.         <div class="card-footer">
  382.             <button type="button" class="btn btn-primary" id="shranimenu">Shrani menu</button>
  383.             <button type="button" class="btn btn-secondary" id="zapriOkno">Prekliči</button>
  384.         </div>
  385.     </div><!--card-->
  386.     {% endblock %}