JAVASCRIPT   188

location.js

Guest on 26th July 2021 04:44:19 PM

  1. var id_increment = 0;
  2. var modules = [];
  3. var active_module = null;
  4. var sliderHandle = null;
  5.  
  6. $(document).ready(function()
  7. {      
  8.         toggleScrollListeners(true);
  9.         toggleEditItemListeners(true);
  10.         toggleButtonListeners(true);
  11.         igniteDragging();
  12.         igniteCKEditor();
  13.         igniteSlider();
  14.        
  15.        
  16.         initModules();
  17.         fitPreviewImages();
  18. });
  19.  
  20.  
  21. function initModules()
  22. {
  23.         $('.module').each(function()
  24.         {
  25.                 if($(this).hasClass('module_text'))
  26.                 {
  27.                         modules[$(this).attr('module_id')] = new_module_text($(this).attr('module_id'), $(this).parent());
  28.                         modules[$(this).attr('module_id')].text = $(this).html();
  29.                 }
  30.                
  31.                 if($(this).hasClass('module_image'))
  32.                 {
  33.                         modules[$(this).attr('module_id')] = new_module_image($(this).attr('module_id'), $(this).parent());
  34.                         modules[$(this).attr('module_id')].filename = $(this).find('img').attr('fname');
  35.                 }
  36.  
  37.                 if($(this).hasClass('module_html'))
  38.                 {
  39.                         modules[$(this).attr('module_id')] = new_module_html($(this).attr('module_id'), $(this).parent());
  40.                         modules[$(this).attr('module_id')].html_code = $('#module_html_container_' + $(this).attr('module_html_id')).val();
  41.                 }
  42.                
  43.                 if($(this).hasClass('module_download'))
  44.                 {
  45.                         modules[$(this).attr('module_id')] = new_module_download($(this).attr('module_id'), $(this).parent());
  46.                 }
  47.                
  48.                 if($(this).hasClass('module_headline'))
  49.                 {
  50.                         modules[$(this).attr('module_id')] = new_module_headline($(this).attr('module_id'), $(this).parent());
  51.                 }
  52.                
  53.                 if($(this).hasClass('module_bulletpoint'))
  54.                 {
  55.                         modules[$(this).attr('module_id')] = new_module_bulletpoint($(this).attr('module_id'), $(this).parent());
  56.                 }
  57.                
  58.                 if(id_increment <= parseInt($(this).attr('module_id')) +1)
  59.                         id_increment = parseInt($(this).attr('module_id')) +1;
  60.                
  61.                 modules[$(this).attr('module_id')].init();
  62.         });
  63.  
  64.         resize_col($('#col_left'));
  65.         resize_col($('#col_right'));
  66. }
  67.  
  68. function toggleButtonListeners(toggle)
  69. {
  70.         if(toggle)
  71.         {
  72.                 $('.footnote_delete').click(function(){
  73.                         var number = $(this).parent().attr('number');
  74.                         $(this).parent().remove();
  75.                 });
  76.                
  77.                 $('.item_save').click(function()
  78.                 {
  79.                         saveItem();
  80.                 });
  81.                
  82.                 $('.item_cancel').click(function()
  83.                 {
  84.                         window.location.href = rootUrl + 'entities/Content/locations';
  85.                 });
  86.                
  87.                 $('.item_detail_type_switch').on('click', function()
  88.                 {
  89.                         $('.item_detail_type_switch').removeClass('item_detail_type_active');
  90.                         $(this).addClass('item_detail_type_active');
  91.                         toggleDetailType(parseInt($('.item_detail_type_switch.item_detail_type_active').attr('detail_type')));
  92.                 });
  93.         }
  94.         else
  95.         {
  96.                 $('.item_save').unbind('click');
  97.                 $('.item_cancel').unbind('click');
  98.         }
  99. }
  100.  
  101.  
  102.  
  103. function toggleDetailType(detail_type)
  104. {
  105.         switch(detail_type)
  106.         {
  107.                 case 0: // IMAGE
  108.                         $('#item_detail_slider').hide();
  109.                         $('#item_detail_html').hide();
  110.                         $('#item_detailimg').show();
  111.                         $('#item_detailimg_credits').show();
  112.                         break;
  113.                        
  114.                 case 1: // HTML
  115.                         $('#item_detail_slider').hide();
  116.                         $('#item_detailimg').hide();
  117.                         $('#item_detailimg_credits').hide();
  118.                         $('#item_detail_html').show();
  119.                         break;
  120.                        
  121.                 case 2: // SLIDER
  122.                         $('#item_detailimg').hide();
  123.                         $('#item_detailimg_credits').hide();
  124.                         $('#item_detail_html').hide();
  125.                         $('#item_detail_slider').show();
  126.                         break;
  127.         }
  128. }
  129.  
  130.  
  131. function saveItem()
  132. {
  133.         var footnote_items = [];
  134.         $('#footnote_container').find('.footnote_item').each(function()
  135.         {
  136.                 footnote_items.push({'number': $(this).attr('number'), 'content': $(this).find('.footnote_text').val()});
  137.         });
  138.        
  139.         var mods = [];
  140.         for(var i = 0 ; i < id_increment ; i++)
  141.         {
  142.                 if(modules[i] !== undefined)
  143.                 {
  144.                         mods.push(modules[i].getSaveData());
  145.                 }
  146.         }
  147.        
  148.         var gallery_items = [];
  149.         $('#gallery').find('.gallery_item').each(function()
  150.         {
  151.                 gallery_items.push({'filename': $(this).attr('filename'), 'credits': br2nl($(this).find('div').html())});
  152.         });
  153.        
  154.        
  155.        
  156.         $.ajax(
  157.         {
  158.                 url: rootUrl + 'entities/Content/save_item_location',
  159.                 data: {
  160.                         id: $('#item_container').attr('item_id'),
  161.                         name: $('#item_headline').html(),
  162.                         modules: mods,
  163.                         gallery_items: gallery_items,
  164.                         footnote_items: footnote_items
  165.                 },
  166.                 method: 'POST',
  167.                 success: function(data)
  168.                 {
  169.                         var ret = $.parseJSON(data);
  170.                        
  171.                         if(ret.success)
  172.                         {
  173.                                 alert('Save successful!');
  174.                                 //window.location.href = rootUrl + 'entities/item/items';
  175.                         }
  176.                         else
  177.                         {
  178.                                 alert('Error while saving');
  179.                         }
  180.                 }
  181.         });    
  182. }
  183.  
  184.  
  185. function igniteCKEditor()
  186. {
  187.         $('#module_text_editor').ckeditor();   
  188.         $('#module_bulletpoint_editor').ckeditor();
  189. }
  190.  
  191.  
  192. function igniteDragging()
  193. {
  194.         $('#module_container li').draggable(
  195.         {
  196.                 helper: 'clone'
  197.         });
  198.        
  199.        
  200.         $( ".col" ).droppable(
  201.         {
  202.                 accept: '#module_container li',
  203.                 drop: function( event, ui )
  204.                 {
  205.                         new_module(ui.draggable.attr('type'), $(this));
  206.             }
  207.     });
  208.        
  209.        
  210.         $('#col_left').sortable();
  211. /*      $('.module').draggable(
  212.         {
  213.                 cursor: 'mode',
  214.                 grid: [10,10],
  215.                 drag: function(event, ui)
  216.                 {
  217.                         ui.position.left = 0;
  218.                         ui.position.top = Math.max(0, ui.position.top);
  219.                         if(ui.position.top + ui.helper.height() > ui.helper.parent().height())
  220.                                 ui.helper.parent().height(ui.position.top + ui.helper.height());
  221.                 },
  222.         });*/
  223. }
  224.  
  225.  
  226. function new_module(module_type, parent)
  227. {
  228.         var new_module = null;
  229.        
  230.         switch(module_type)
  231.         {
  232.                 case 'text':
  233.                         modules[id_increment] = new_module_text(id_increment, parent);
  234.                         break;
  235.                 case 'image':
  236.                         modules[id_increment] = new_module_image(id_increment, parent);
  237.                         setTimeout(function()
  238.                         {
  239.                                 resize_col(parent);
  240.                         }, 200);
  241.                         break;
  242.                 case '2col_image':
  243.                         modules[id_increment] = new_module_2col_image(id_increment, parent);
  244.                         setTimeout(function()
  245.                         {
  246.                                 resize_col(parent);
  247.                         }, 200);
  248.                         break;                 
  249.                        
  250.                 case 'bulletpoint':
  251.                         modules[id_increment] = new_module_bulletpoint(id_increment, parent);
  252.                         break;
  253.                 case 'video':
  254.                         modules[id_increment] = new_module_video(id_increment, parent);
  255.                         setTimeout(function()
  256.                         {
  257.                                 resize_col(parent);
  258.                         }, 200);
  259.                         break;
  260.                 case 'html':
  261.                         modules[id_increment] = new_module_html(id_increment, parent);
  262.                         modules[id_increment].html_code = '';
  263.                         break; 
  264.                 case 'headline':
  265.                         modules[id_increment] = new_module_headline(id_increment, parent);
  266.                         break;
  267.                 case 'download':
  268.                         modules[id_increment] = new_module_download(id_increment, parent);
  269.                         break;
  270.                        
  271.                 case 'store':
  272.                         modules[id_increment] = new_module_store(id_increment, parent);
  273.                         break;                 
  274.         }
  275.        
  276.         parent.append(modules[id_increment].getPrototypeHTML());
  277.         modules[id_increment].init();
  278.         resize_col(parent);
  279.        
  280.         id_increment++;
  281. }
  282.  
  283.  
  284. function toggleScrollListeners(toggle)
  285. {
  286.         if(toggle)
  287.         {
  288.                 $('#content').scroll(function()
  289.                 {
  290.                         $('#control_container').css({'top': $('#content').scrollTop() + 100});
  291.                 });
  292.         }
  293.         else
  294.         {
  295.                 $('#content').unbind('scroll');
  296.         }
  297. }
  298.  
  299. function nl2br(str, is_xhtml)
  300. {  
  301.     var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';    
  302.     return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
  303. }
  304.  
  305. function br2nl(str)
  306. {
  307.     return str.replace(/<br>/g, "\r");
  308. };
  309.  
  310.  
  311. function resize_col($col)
  312. {
  313.         var min_height = 0;
  314.         $col.find('.module').each(function()
  315.         {
  316.                 if(min_height < parseInt($(this).height()) + $(this).position().top + 2)
  317.                         min_height = parseInt($(this).height()) + $(this).position().top + 2
  318.         });
  319.        
  320.         if(min_height == 0)
  321.                 min_height = 40;
  322.        
  323.         $col.css({'min-height': min_height});
  324.         return min_height;
  325. }
  326.  
  327.  
  328. function toggleEditItemListeners(toggle)
  329. {
  330.         if(toggle)
  331.         {
  332.                
  333.                 /********************************************************************************************
  334.                  * HEADLINE
  335.                  *********************************************************************************************/
  336.                 $('#item_headline').dblclick(function()
  337.                 {
  338.                 //      popup_edit_text($(this));
  339.                 });
  340.                
  341.                 /********************************************************************************************
  342.                  * DETAIL HTML
  343.                  *********************************************************************************************/
  344.                 $('#item_detail_html').dblclick(function()
  345.                 {
  346.                         popup_edit_html($('#item_detail_html_content'));
  347.                 });
  348.                
  349.                 /********************************************************************************************
  350.                  * DETAIL PHOTOCREDITS
  351.                  *********************************************************************************************/
  352.                 $('#item_detailimg_credits').dblclick(function()
  353.                 {
  354.                         popup_edit_text($(this));
  355.                 });
  356.                
  357.                 /********************************************************************************************
  358.                  * HEADER
  359.                  *********************************************************************************************/
  360.                 $('#item_header').dblclick(function()
  361.                 {
  362.                         popup_edit_header($(this));
  363.                 });
  364.                
  365.                
  366.                 /********************************************************************************************
  367.                  * DETAILIMAGE
  368.                  *********************************************************************************************/
  369.                 $('#item_detailimg img').dblclick(function()
  370.                 {
  371.                         if($(this).attr('filename') == '' || $(this).attr('filename') == 'image_upload_placeholder.png' )
  372.                                 $(this).parent().find('input').click();
  373.                         else
  374.                         {
  375.                                 $('#detail_img_dialog').dialog(
  376.                                 {
  377.                                         modal: true,
  378.                                         buttons: [
  379.                                         {
  380.                                                 text: 'Delete',
  381.                                                 click: function()
  382.                                                 {
  383.                                                         $('#item_detailimg img').attr('src', rootUrl + 'items/uploads/detailimg/image_upload_placeholder.png');
  384.                                                         $('#item_detailimg img').attr('filename', 'image_upload_placeholder.png');
  385.                                                         $( this ).dialog( "close" );
  386.                                                 }
  387.                                         },
  388.                                         {
  389.                                                 text: 'Upload new',
  390.                                                 click: function()
  391.                                                 {
  392.                                                         $( this ).dialog( "close" );
  393.                                                         $('#item_detailimg img').parent().find('input').click();
  394.                                                 }
  395.                                         }
  396.                                         ],
  397.                                 });
  398.                         }
  399.                 });
  400.                
  401.                 $('#item_detailimg input').change(function()
  402.                 {
  403.                         var uploadpath = $(this).attr('uploadpath');
  404.                         var xhr = new XMLHttpRequest();        
  405.                         var fd = new FormData;
  406.                         var files = this.files;
  407.                        
  408.                         fd.append('data', files[0]);
  409.                         fd.append('filename', files[0].name);
  410.                         fd.append('uploadpath', uploadpath);
  411.                        
  412.                         xhr.addEventListener('load', function(e)
  413.                         {
  414.                                 var ret = $.parseJSON(this.responseText);
  415.                                
  416.                                 if(ret.success)
  417.                                 {
  418.                                         $('#item_detailimg img').attr('src', rootUrl + $('#item_detailimg input').attr('uploadpath') + '/' + ret.filename);
  419.                                         $('#item_detailimg img').attr('filename', ret.filename);
  420.                                 }
  421.                                 else
  422.                                 {
  423.                                         alert('Error while uploading');
  424.                                 }
  425.                     });
  426.                        
  427.                         xhr.open('post', rootUrl + 'entities/Item/upload_image');
  428.                         xhr.send(fd);
  429.                 });
  430.  
  431.                 /********************************************************************************************
  432.                  * RELATED TAGS
  433.                  *********************************************************************************************/
  434.                 $('#item_rel_tags').dblclick(function()
  435.                 {
  436.                         popup_edit_rel_tags();
  437.                 });    
  438.  
  439.                
  440.                 /********************************************************************************************
  441.                  * RELATED ITEMS
  442.                  *********************************************************************************************/
  443.                 $('#item_rel_items').dblclick(function()
  444.                 {
  445.                         popup_edit_rel_items();
  446.                 });
  447.                
  448.                
  449.                 /********************************************************************************************
  450.                  * GALLERY
  451.                  *********************************************************************************************/
  452.                 $('#gallery').dblclick(function()
  453.                 {
  454.                         popup_gallery();
  455.                 });
  456.                
  457.                 /********************************************************************************************
  458.                  * GALLERY
  459.                  *********************************************************************************************/
  460.                 $('#item_detail_slider_overlay').dblclick(function()
  461.                 {
  462.                         popup_slider();
  463.                 });
  464.                
  465.         }
  466.         else
  467.         {
  468.                 $('#item_header').unbind('dblclick');
  469.                 $('#item_detailimg img').unbind('dblclick');
  470.                 $('#item_headline').unbind('dblclick');
  471.                 $('#item_rel_tags').unbind('dblclick');
  472.         }
  473. }
  474.  
  475.  
  476. function popup_edit_html(text_element)
  477. {
  478.         $('#popup_edit_html').find('.popup_cancel_button').unbind('click');
  479.         $('#popup_edit_html').find('.popup_save_button').unbind('click');
  480.  
  481.         $('#popup_edit_html').find('.popup_edit_container.desktop textarea').val($('#item_detail_html_content').html());
  482.         $('#popup_edit_html').find('.popup_edit_container.mobile textarea').val($('#item_detail_html_content_mobile').html());
  483.         $('#popup_edit_html').show();
  484.        
  485.         $('#popup_edit_html').find('.popup_save_button').click(function()
  486.         {
  487.                 $('#item_detail_html_content').html($('#popup_edit_html').find('.popup_edit_container.desktop textarea').val());
  488.                 $('#item_detail_html_content_mobile').html($('#popup_edit_html').find('.popup_edit_container.mobile textarea').val());
  489.                 $('#popup_edit_html').hide();
  490.         });
  491.        
  492.         $('#popup_edit_html').find('.popup_cancel_button').click(function()
  493.         {
  494.                 $('#popup_edit_html').hide();
  495.         });
  496. }
  497.  
  498.  
  499. function popup_edit_text(text_element)
  500. {
  501.         $('#popup_edit_text').find('.popup_cancel_button').unbind('click');
  502.         $('#popup_edit_text').find('.popup_save_button').unbind('click');
  503.  
  504.         $('#popup_edit_text').find('textarea').val(text_element.text());
  505.         $('#popup_edit_text').show();
  506.        
  507.         $('#popup_edit_text').find('.popup_save_button').click(function()
  508.         {
  509.                 text_element.html(nl2br($('#popup_edit_text').find('textarea').val(), false));
  510.                 $('#popup_edit_text').hide();
  511.         });
  512.        
  513.         $('#popup_edit_text').find('.popup_cancel_button').click(function()
  514.         {
  515.                 $('#popup_edit_text').hide();
  516.         });
  517. }
  518.  
  519. function popup_edit_header(element)
  520. {
  521.         var html = "";
  522.         $('#item_header span').each(function()
  523.         {
  524.                 if(html != '')
  525.                         html += '\n';
  526.                 html += $(this).html();
  527.         });
  528.  
  529.         $('#popup_edit_text').find('textarea').val(html);
  530.        
  531.         $('#popup_edit_text').find('.popup_cancel_button').unbind('click');
  532.         $('#popup_edit_text').find('.popup_save_button').unbind('click');
  533.        
  534.         $('#popup_edit_text').show();
  535.        
  536.         $('#popup_edit_text').find('.popup_save_button').click(function()
  537.         {
  538.                 if($('#popup_edit_text').find('textarea').val() != '')
  539.                 var lines = $('#popup_edit_text').find('textarea').val().split('\n');
  540.                 var html = '';
  541.                 if(lines !== undefined)
  542.                 {
  543.                         for(var i = 0; i < lines.length ; i++)
  544.                         {
  545.                                 html += '<span style="padding-right: ' + lines[i].length + 'px;">' + lines[i] + '</span>';
  546.                                 if(i != lines.length - 1)
  547.                                 {
  548.                                         html += '<br/>';
  549.                                 }
  550.                         }
  551.                 }
  552.                
  553.                 $('#popup_edit_text').hide();
  554.                 element.html(html);
  555.         });
  556.        
  557.         $('#popup_edit_text').find('.popup_cancel_button').click(function()
  558.         {
  559.                 $('#popup_edit_text').hide();
  560.         });    
  561. }
  562.  
  563. /*********************************************************************************************************************************************************************
  564.  * RELATED TAGS
  565.  **********************************************************************************************************************************************************************/
  566. function popup_edit_rel_tags()
  567. {
  568.         toggleRelatedMetatagsListeners(false);
  569.         toggleRelatedMetatagSubListeners(false);
  570.        
  571.         $('#related_tags_selected').empty();
  572.         $('#related_tags_metatags span').show();
  573.         $('#item_rel_tags span').each(function()
  574.         {
  575.                 $('#related_tags_selected').append('<span metatag_id="' + $(this).attr('metatag_id') + '" url="' + $(this).attr('url') + '">' + $(this).text() + '</span>');
  576.                 $('.related_tags_metatags span[metatag_id="' + $(this).attr('metatag_id') + '"]').hide();
  577.         });
  578.        
  579.         toggleRelatedMetatagsListeners(true);
  580.         toggleRelatedMetatagSubListeners(true);
  581.        
  582.         $('#popup_related_tags').show();
  583.        
  584.        
  585. }
  586.  
  587. function toggleRelatedMetatagsListeners(toggle)
  588. {
  589.         if(toggle)
  590.         {
  591.                 $('#external_tag_add').on('click', function()
  592.                 {
  593.                         $('#related_tags_selected').append('<span metatag_id="null" url="' + $('#external_tag_url').val() + '">' + $('#external_tag_text').val() + '</span>');
  594.                         toggleRelatedMetatagSubListeners(false);
  595.                         toggleRelatedMetatagSubListeners(true);
  596.                 });
  597.                
  598.                 $('#related_tags_category').change(function()
  599.                 {
  600.                         $(this).parent().find('.related_tags_metatags').hide();
  601.                         $(this).parent().find('.related_tags_metatags[category_id="' + $(this).val() + '"]').show();
  602.                 });
  603.                
  604.                 $('.related_tags_metatags span').on('click', function()
  605.                 {
  606.                         //$(this).clone(false).appendTo($('#related_tags_selected'));
  607.                         $('#related_tags_selected').append('<span metatag_id="' + $(this).attr('metatag_id') + '" url="null">' + $(this).text() + '</span>');
  608.                         $(this).hide();
  609.                         toggleRelatedMetatagSubListeners(false);
  610.                         toggleRelatedMetatagSubListeners(true);
  611.                 });
  612.  
  613.                 $('#popup_related_tags').find('.popup_save_button').click(function()
  614.                 {
  615.                         $('#item_rel_tags').empty();
  616.                         $('#related_tags_selected span').each(function()
  617.                         {
  618.                                 $('#item_rel_tags').append('<span metatag_id="' + $(this).attr('metatag_id') + '" url="' + $(this).attr('url') + '">' + $(this).text() + '</span>');
  619.                         });
  620.                         $('#popup_related_tags').hide();
  621.                 });
  622.                
  623.                 $('#popup_related_tags').find('.popup_cancel_button').click(function()
  624.                 {
  625.                         $('#popup_related_tags').hide();
  626.                 });    
  627.         }
  628.         else
  629.         {
  630.                 $('#external_tag_add').off('click');
  631.                 $('#related_tags_category').unbind('change');
  632.                 $('.related_tags_metatags span').off('click');
  633.                 $('#popup_related_tags').find('.popup_cancel_button').unbind('click');
  634.                 $('#popup_related_tags').find('.popup_save_button').unbind('click');
  635.         }
  636. }
  637.  
  638. function toggleRelatedMetatagSubListeners(toggle)
  639. {
  640.         if(toggle)
  641.         {
  642.                 $('#related_tags_selected span').on('click', function()
  643.                 {
  644.                         $('.related_tags_metatags span[metatag_id="' + $(this).attr('metatag_id') + '"]').show();
  645.                         $(this).remove();
  646.                 });            
  647.         }
  648.         else
  649.         {
  650.                 $('#related_tags_selected span').off('click');
  651.         }
  652. }
  653.  
  654.  
  655. /*********************************************************************************************************************************************************************
  656.  * RELATED ITEMS
  657.  **********************************************************************************************************************************************************************/
  658. function popup_edit_rel_items()
  659. {
  660.         toggleRelatedItemsListener(false);
  661.        
  662.         $('#related_items_selected').empty();
  663.         $('.item_rel_item').each(function()
  664.         {
  665.                 $('#related_items_selected').append('<span item_id="' + $(this).attr('item_id') + '" filename="' + $(this).find('img').attr('filename') + '">' + $(this).find('.item_rel_item_name').text() + '</span>')
  666.         });
  667.        
  668.         toggleRelatedItemsListener(true);
  669.         $('#popup_related_items').show();
  670. }
  671.  
  672. function toggleRelatedItemsListener(toggle)
  673. {
  674.         if(toggle)
  675.         {
  676.                 $('#popup_related_items').find('.popup_save_button').click(function()
  677.                 {
  678.                         $('#item_rel_items').empty();
  679.                         $('#related_items_selected span').each(function()
  680.                         {
  681.                                 $('#item_rel_items').append('<div class="item_rel_item" item_id="' + $(this).attr('item_id') + '"><img src="' + rootUrl + 'items/uploads/detailimg/' + $(this).attr('filename') + '" /><div class="item_rel_item_name unselectable">' + $(this).text() + '</div></div>');
  682.                         });
  683.                         fitPreviewImages();
  684.                         $('#popup_related_items').hide();
  685.                 });
  686.                
  687.                 $('#popup_related_items').find('.popup_cancel_button').click(function()
  688.                 {
  689.                         $('#popup_related_items').hide();
  690.                 });
  691.                
  692.                 $('#related_items_category').change(function()
  693.                 {
  694.                         $('#popup_related_items').find('.related_items_metatags').hide();
  695.                         $('#popup_related_items').find('.related_items_metatags[category_id="' + $(this).val() + '"]').show();
  696.                 });
  697.                
  698.                 $('#popup_related_items span').click(function()
  699.                 {
  700.                         if($(this).parent().hasClass('related_items_metatags'))
  701.                         {
  702.                                 $(this).clone(true).appendTo($('#related_items_tags_selected'));
  703.                                 $(this).hide();
  704.                         }
  705.                         else
  706.                         {
  707.                                 $('.related_items_metatags span[metatag_id="' + $(this).attr('metatag_id') + '"]').show();
  708.                                 $(this).remove();
  709.                         }
  710.                        
  711.                         var metatags = [];
  712.                         $('#related_items_tags_selected span').each(function()
  713.                         {
  714.                                 metatags.push($(this).attr('metatag_id'));
  715.                         });
  716.                        
  717.                         $.ajax(
  718.                         {
  719.                                 url: rootUrl + 'entities/Item/getItemsPerMetatags',
  720.                                 data: {'metatags': metatags},
  721.                                 method: 'POST',
  722.                                 success: function(data)
  723.                                 {
  724.                                         var ret = $.parseJSON(data);
  725.                                         if(ret.success)
  726.                                         {
  727.                                                 $('#related_items_itemlist').empty();
  728.                                                 for(var i = 0 ; i < ret.items.length ; i++)
  729.                                                 {
  730.                                                         var style = "";
  731.                                                         if($('#related_items_selected span[item_id="' + ret.items[i].id + '"]').length != 0)
  732.                                                                 style = 'style="display: none;"';
  733.                                                                
  734.                                                         $('#related_items_itemlist').append('<span ' + style + '  item_id="' + ret.items[i].id + '" filename="' + ret.items[i].detailimg + '">' + ret.items[i].name + '</span>');
  735.                                                 }
  736.                                                
  737.                                                 $('#related_items_itemlist span, #related_items_selected span').unbind('click');
  738.                                                 $('#related_items_itemlist span, #related_items_selected span').click(function()
  739.                                                 {
  740.                                                         if($(this).parent().attr('id') == 'related_items_itemlist')
  741.                                                         {
  742.                                                                 console.log('select');
  743.                                                                 $(this).clone(true).appendTo('#related_items_selected');
  744.                                                                 $(this).hide();
  745.                                                         }
  746.                                                         else
  747.                                                         {
  748.                                                                 $('#related_items_itemlist span[item_id="' + $(this).attr('item_id') + '"]').show();
  749.                                                                 $('#related_items_selected span[item_id="' + $(this).attr('item_id') + '"]').remove();
  750.                                                         }
  751.                                                 });
  752.                                         }
  753.                                         else
  754.                                         {
  755.                                                 alert('Error while retrieving items');
  756.                                         }
  757.                                 }
  758.                         });    
  759.                 });            
  760.         }
  761.         else
  762.         {
  763.                 $('#popup_related_items span').unbind('click')
  764.                 $('#related_items_category').unbind('change');
  765.                 $('#popup_related_items').find('.popup_cancel_button').unbind('click');
  766.                 $('#popup_related_items').find('.popup_save_button').unbind('click');
  767.         }
  768. }
  769.  
  770.  
  771. /*********************************************************************************************************************************************************************
  772.  * GALLERY
  773.  **********************************************************************************************************************************************************************/
  774. function popup_gallery()
  775. {
  776.         toggleGalleryListener(false);
  777.        
  778.         $('#gallery_items').empty();
  779.         $('#gallery').find('.gallery_item').each(function()
  780.         {
  781.                 $('#gallery_items').append('<div class="gallery_item" filename="' + $(this).attr('filename') + '"><img src="' + rootUrl + 'items/uploads/gallery/' + $(this).attr('filename') + '" /><textarea>' + br2nl($(this).find('div').html()) + '</textarea></div>');
  782.         });
  783.        
  784.         $('#gallery_items').find('.gallery_item img').dblclick(function()
  785.         {
  786.                 $(this).parent().remove();
  787.         });
  788.        
  789.         $('#gallery_items').sortable();
  790.        
  791.         toggleGalleryListener(true);
  792.         $('#popup_gallery').show();
  793. }
  794.  
  795. function toggleGalleryListener(toggle)
  796. {
  797.         if(toggle)
  798.         {
  799.                 $('#gallery_upload_button').click(function()
  800.                 {
  801.                         $('#gallery_upload_input').click();
  802.                 });
  803.                
  804.                 $('#gallery_upload_input').change(function()
  805.                 {
  806.                         var uploadpath = 'items/uploads/gallery';
  807.                         var xhr = new XMLHttpRequest();        
  808.                         var fd = new FormData;
  809.                         var files = this.files;
  810.                        
  811.                         fd.append('data', files[0]);
  812.                         fd.append('filename', files[0].name);
  813.                         fd.append('uploadpath', uploadpath);
  814.                        
  815.                         xhr.addEventListener('load', function(e)
  816.                         {
  817.                                 var ret = $.parseJSON(this.responseText);
  818.                                
  819.                                 if(ret.success)
  820.                                 {
  821.                                         html = '<div class="gallery_item" filename="' + ret.filename + '"><img src="' + rootUrl + 'items/uploads/gallery/' + ret.filename + '" /><textarea></textarea></div>';
  822.                                         $('#gallery_items').append(html);
  823.                                        
  824.                                         $('#gallery_items').find('.gallery_item').unbind('dblclick');
  825.                                         $('#gallery_items').find('.gallery_item').dblclick(function()
  826.                                         {
  827.                                                 $(this).remove();
  828.                                         });
  829.                                        
  830.                                         $('#gallery_items').sortable();
  831.                                 }
  832.                                 else
  833.                                 {
  834.                                         alert('Error while uploading');
  835.                                 }
  836.                     });
  837.                        
  838.                         xhr.open('post', rootUrl + 'entities/Item/upload_image');
  839.                         xhr.send(fd);
  840.                        
  841.                 });
  842.                
  843.                 $('#popup_gallery').find('.popup_cancel_button').click(function()
  844.                 {
  845.                         $('#popup_gallery').hide();
  846.                 });
  847.                
  848.                 $('#popup_gallery').find('.popup_save_button').click(function()
  849.                 {
  850.                         $('#gallery').empty();
  851.                         $('#gallery_items').find('.gallery_item').each(function()
  852.                         {
  853.                                 $('#gallery').append('<div class="gallery_item" filename="' + $(this).attr('filename') + '"><img src="' + rootUrl + 'items/uploads/gallery/' + $(this).attr('filename') + '" /><div>' + nl2br($(this).find('textarea').val()) + '</div></div>');
  854.                         });
  855.                         fitPreviewImages();
  856.                         $('#popup_gallery').hide();
  857.                 });
  858.         }
  859.         else
  860.         {
  861.                 $('#gallery_upload_input').unbind('change');
  862.                 $('#gallery_upload_button').unbind('click');
  863.                 $('#popup_gallery').find('.popup_cancel_button').unbind('click');
  864.                 $('#popup_gallery').find('.popup_save_button').unbind('click');
  865.         }
  866. }
  867.  
  868.  
  869.  
  870. /*********************************************************************************************************************************************************************
  871.  * SLIDER
  872.  **********************************************************************************************************************************************************************/
  873. function popup_slider()
  874. {
  875.         toggleSliderListener(false);
  876.        
  877.         $('#slider_items').empty();
  878.         $('#item_detail_slider_content').find('.slider_item_real').each(function()
  879.         {
  880.                 var clone = $('.slideritem_dummy').clone();
  881.                 clone.addClass('slider_item');
  882.                 clone.removeClass('slideritem_dummy');
  883.                 clone.attr('filename', $(this).attr('filename'));
  884.                 clone.children('img').attr('src', rootUrl + 'items/uploads/slider/' + $(this).attr('filename'));
  885.                 clone.find('select').val($(this).attr('link_to_item'));
  886.                 clone.find('.slider_item_credits').val(br2nl($(this).find('.slider_credits').html()));
  887.                
  888.                 var html = "";
  889.                 $(this).find('.slider_text span').each(function()
  890.                 {
  891.                         if(html != '')
  892.                                 html += '\n';
  893.                         html += $(this).html();
  894.                 });
  895.                
  896.                 clone.find('.slider_item_text').val(html);
  897.                
  898.                 $('#slider_items').append(clone);
  899.         });
  900.        
  901.         igniteCombobox();
  902.        
  903.         $('#slider_items').find('.delete').click(function()
  904.         {
  905.                 $(this).parent().parent().remove();
  906.         });
  907.        
  908.         $('#slider_interval').val(parseInt($('#item_detail_slider_content').attr('slider_interval')));
  909.        
  910.         $('#slider_items').sortable(
  911.         {
  912.                 'handle': ".move",             
  913.         });
  914.        
  915.         toggleSliderListener(true);
  916.         $('#popup_slider').show();
  917. }
  918.  
  919. function toggleSliderListener(toggle)
  920. {
  921.         if(toggle)
  922.         {
  923.                 $('#slider_upload_button').click(function()
  924.                 {
  925.                         $('#slider_upload_input').click();
  926.                 });
  927.                
  928.                 $('#slider_upload_input').change(function()
  929.                 {
  930.                         var uploadpath = 'items/uploads/slider';
  931.                         var xhr = new XMLHttpRequest();        
  932.                         var fd = new FormData;
  933.                         var files = this.files;
  934.                        
  935.                         fd.append('data', files[0]);
  936.                         fd.append('filename', files[0].name);
  937.                         fd.append('uploadpath', uploadpath);
  938.                        
  939.                         xhr.addEventListener('load', function(e)
  940.                         {
  941.                                 var ret = $.parseJSON(this.responseText);
  942.                                
  943.                                 if(ret.success)
  944.                                 {
  945.                                         var clone = $('.slideritem_dummy').clone();
  946.                                         clone.addClass('slider_item');
  947.                                         clone.removeClass('slideritem_dummy');
  948.                                         clone.attr('filename', ret.filename);
  949.                                         clone.children('img').attr('src', rootUrl + 'items/uploads/slider/' + ret.filename);
  950.                                        
  951.                                         $('#slider_items').append(clone);
  952.                                        
  953.                                         $('#slider_items').find('.delete').unbind('click');
  954.                                         $('#slider_items').find('.delete').click(function()
  955.                                         {
  956.                                                 $(this).parent().parent().remove();
  957.                                         });
  958.                                        
  959.                                         $('#slider_items').sortable();
  960.                                 }
  961.                                 else
  962.                                 {
  963.                                         alert('Error while uploading');
  964.                                 }
  965.                     });
  966.                        
  967.                         xhr.open('post', rootUrl + 'entities/Item/upload_image');
  968.                         xhr.send(fd);
  969.                 });
  970.                
  971.                 $('#popup_slider').find('.popup_cancel_button').click(function()
  972.                 {
  973.                         $('#popup_slider').hide();
  974.                 });
  975.                
  976.                 $('#popup_slider').find('.popup_save_button').click(function()
  977.                 {
  978.                         $('#item_detail_slider_content').empty();
  979.                         var i = 0;
  980.                         $('#slider_items').find('.slider_item').each(function()
  981.                         {
  982.                                 var sliderhtml = '<div class="slider_item_real" filename="' + $(this).attr('filename') + '" link_to_item="' + $(this).find('select').val() + '" style="left: ' + (i * 900) +'px;" >';
  983.                                 sliderhtml += '<img src="' + rootUrl + 'items/uploads/slider/' + $(this).attr('filename') + '" />';
  984.                                 sliderhtml += '<div class="slider_credits">' + nl2br($(this).find('.slider_item_credits').val()) + '</div>';
  985.                                
  986.                                 var lines = $(this).find('.slider_item_text').val().split('\n');
  987.                                 var html = '';
  988.                                 if(lines !== undefined)
  989.                                 {
  990.                                         for(var j = 0; j < lines.length ; j++)
  991.                                         {
  992.                                                 html += '<span style="padding-right: ' + lines[j].length + 'px;">' + lines[j] + '</span>';
  993.                                                 if(j != lines.length - 1)
  994.                                                 {
  995.                                                         html += '<br/>';
  996.                                                 }
  997.                                         }
  998.                                 }
  999.                                 sliderhtml += '<div class="slider_text">' + html + '</div>';
  1000.                                 sliderhtml += '</div>';
  1001.                                
  1002.                                 $('#item_detail_slider_content').append(sliderhtml);
  1003.                                 i++;
  1004.                         });
  1005.                        
  1006.                        
  1007.                        
  1008.                        
  1009.                         $('#item_detail_slider_content').attr('slider_interval', $('#slider_interval').val());
  1010.                        
  1011.                         igniteSlider();
  1012.                        
  1013.                         $('#popup_slider').hide();
  1014.                 });
  1015.         }
  1016.         else
  1017.         {
  1018.                 $('#slider_upload_input').unbind('change');
  1019.                 $('#slider_upload_button').unbind('click');
  1020.                 $('#popup_slider').find('.popup_cancel_button').unbind('click');
  1021.                 $('#popup_slider').find('.popup_save_button').unbind('click');
  1022.         }
  1023. }
  1024.  
  1025.  
  1026. function igniteSlider()
  1027. {
  1028.         imagesLoaded($('#item_detail_slider_content'), function()
  1029.         {
  1030.                 clearInterval(sliderHandle);
  1031.                 var maxheight = 0;
  1032.                 $('#item_detail_slider_content').find('.slider_item_real').each(function()
  1033.                 {
  1034.                         if(parseInt($(this).height()) > maxheight)
  1035.                                 maxheight = parseInt($(this).height());
  1036.                 });
  1037.                 $('#item_detail_slider_content').height(maxheight == 0 ? 16 : maxheight);
  1038.                
  1039.                 if($('#item_detail_slider_content').attr('slider_interval') > 0)
  1040.                 {
  1041.                         sliderHandle = setInterval(function()
  1042.                         {
  1043.                                 $('.slider_item_real').animate({'left': '-=900'}, function()
  1044.                                 {
  1045.                                         $('.slider_item_real').each(function()
  1046.                                         {
  1047.                                                 if(parseInt($(this).css('left')) < 0)
  1048.                                                 {
  1049.                                                         $(this).css({'left': 900 * ($('.slider_item_real').length - 1)});
  1050.                                                 }
  1051.                                         })
  1052.                                 });
  1053.                                
  1054.                         }, $('#item_detail_slider_content').attr('slider_interval') * 1000);
  1055.                 }
  1056.         });
  1057. }
  1058.  
  1059.  
  1060.  
  1061.  
  1062. function igniteCombobox()
  1063. {
  1064.  
  1065.        
  1066.         $('.combobox_dummy').scombobox({
  1067.             fullMatch: true
  1068.             // when fullMatch is true
  1069.             // then highligh is also true by default
  1070.         });
  1071. }
  1072.  
  1073.  
  1074. function fitPreviewImages()
  1075. {
  1076.         /*$('#gallery .gallery_item img, #item_rel_items .item_rel_item img').each(function()
  1077.         {
  1078.                 fitImage($(this), $(this).get(0).naturalWidth, $(this).get(0).naturalHeight, $(this).parent().width(), $(this).parent().height());
  1079.         });*/
  1080.        
  1081. }
  1082.  
  1083.  
  1084. function fitImage(image, iWidth, iHeight, wWidth, wHeight)
  1085. {
  1086.         var new_height = 0;
  1087.         var new_width = 0;
  1088.        
  1089.         var ratio = iWidth / iHeight;
  1090.  
  1091.         if(wWidth > wHeight)
  1092.         {
  1093.                 new_height = wHeight;
  1094.                 new_width = parseInt(wHeight * ratio);
  1095.                 if(new_width < wWidth)
  1096.                 {
  1097.                         new_width = wWidth;
  1098.                         new_height = parseInt(wWidth / ratio);
  1099.                         left = 0;
  1100.                         top = (parseInt((new_height-wHeight) /-2));
  1101.                 }
  1102.                 else
  1103.                 {
  1104.                         top = 0;
  1105.                         left = parseInt((new_width - wWidth) / -2);            
  1106.                 }
  1107.         }
  1108.         else
  1109.         {
  1110.                 new_width = wWidth;
  1111.                 new_height = parseInt(wWidth / ratio);
  1112.                 if(new_height < wHeight)
  1113.                 {
  1114.                         new_height = wHeight;
  1115.                         new_width = parseInt(wHeight * ratio);
  1116.                         top = 0;
  1117.                         left = parseInt((new_width - wWidth) / -2);
  1118.                 }
  1119.                 else
  1120.                 {
  1121.                         left = 0;
  1122.                         top = parseInt((new_height - wHeight) / -2);   
  1123.                 }
  1124.         }
  1125.  
  1126.         image.css({'width' : new_width, 'height': new_height, 'left': left, 'top': top});      
  1127. }
  1128.  
  1129.  
  1130. $.widget( "custom.combobox", {
  1131.     _create: function() {
  1132.       this.wrapper = $( "<span>" )
  1133.         .addClass( "custom-combobox" )
  1134.         .insertAfter( this.element );
  1135.  
  1136.       this.element.hide();
  1137.       this._createAutocomplete();
  1138.       this._createShowAllButton();
  1139.     },
  1140.  
  1141.     _createAutocomplete: function() {
  1142.       var selected = this.element.children( ":selected" ),
  1143.         value = selected.val() ? selected.text() : "";
  1144.  
  1145.       this.input = $( "<input>" )
  1146.         .appendTo( this.wrapper )
  1147.         .val( value )
  1148.         .attr( "title", "" )
  1149.         .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" )
  1150.         .autocomplete({
  1151.           delay: 0,
  1152.           minLength: 0,
  1153.           source: $.proxy( this, "_source" ),
  1154.           appendTo: '#popup_slider',
  1155.         })
  1156.         .tooltip({
  1157.           classes: {
  1158.             "ui-tooltip": "ui-state-highlight"
  1159.           }
  1160.         });
  1161.  
  1162.       this._on( this.input, {
  1163.         autocompleteselect: function( event, ui ) {
  1164.           ui.item.option.selected = true;
  1165.           this._trigger( "select", event, {
  1166.             item: ui.item.option
  1167.           });
  1168.         },
  1169.  
  1170.         autocompletechange: "_removeIfInvalid"
  1171.       });
  1172.     },
  1173.  
  1174.     _createShowAllButton: function() {
  1175.       var input = this.input,
  1176.         wasOpen = false;
  1177.  
  1178.       $( "<a>" )
  1179.         .attr( "tabIndex", -1 )
  1180.         .attr( "title", "Show All Items" )
  1181.         .tooltip()
  1182.         .appendTo( this.wrapper )
  1183.         .button({
  1184.           icons: {
  1185.             primary: "ui-icon-triangle-1-s"
  1186.           },
  1187.           text: false
  1188.         })
  1189.         .removeClass( "ui-corner-all" )
  1190.         .addClass( "custom-combobox-toggle ui-corner-right" )
  1191.         .on( "mousedown", function() {
  1192.           wasOpen = input.autocomplete( "widget" ).is( ":visible" );
  1193.         })
  1194.         .on( "click", function() {
  1195.           input.trigger( "focus" );
  1196.  
  1197.           // Close if already visible
  1198.           if ( wasOpen ) {
  1199.             return;
  1200.           }
  1201.  
  1202.           // Pass empty string as value to search for, displaying all results
  1203.           input.autocomplete( "search", "" );
  1204.         });
  1205.     },
  1206.  
  1207.     _source: function( request, response ) {
  1208.       var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
  1209.       response( this.element.children( "option" ).map(function() {
  1210.         var text = $( this ).text();
  1211.         if ( this.value && ( !request.term || matcher.test(text) ) )
  1212.           return {
  1213.             label: text,
  1214.             value: text,
  1215.             option: this
  1216.           };
  1217.       }) );
  1218.     },
  1219.  
  1220.     _removeIfInvalid: function( event, ui ) {
  1221.  
  1222.       // Selected an item, nothing to do
  1223.       if ( ui.item ) {
  1224.         return;
  1225.       }
  1226.  
  1227.       // Search for a match (case-insensitive)
  1228.       var value = this.input.val(),
  1229.         valueLowerCase = value.toLowerCase(),
  1230.         valid = false;
  1231.       this.element.children( "option" ).each(function() {
  1232.         if ( $( this ).text().toLowerCase() === valueLowerCase ) {
  1233.           this.selected = valid = true;
  1234.           return false;
  1235.         }
  1236.       });
  1237.  
  1238.       // Found a match, nothing to do
  1239.       if ( valid ) {
  1240.         return;
  1241.       }
  1242.  
  1243.       // Remove invalid value
  1244.       this.input
  1245.         .val( "" )
  1246.         .attr( "title", value + " didn't match any item" )
  1247.         .tooltip( "open" );
  1248.       this.element.val( "" );
  1249.       this._delay(function() {
  1250.         this.input.tooltip( "close" ).attr( "title", "" );
  1251.       }, 2500 );
  1252.       this.input.autocomplete( "instance" ).term = "";
  1253.     },
  1254.  
  1255.     _destroy: function() {
  1256.       this.wrapper.remove();
  1257.       this.element.show();
  1258.     }
  1259.   });

Raw Paste

'); }); $('#gallery_items').find('.gallery_item img').dblclick(function() { $(this).parent().remove(); }); $('#gallery_items').sortable(); toggleGalleryListener(true); $('#popup_gallery').show(); } function toggleGalleryListener(toggle) { if(toggle) { $('#gallery_upload_button').click(function() { $('#gallery_upload_input').click(); }); $('#gallery_upload_input').change(function() { var uploadpath = 'items/uploads/gallery'; var xhr = new XMLHttpRequest(); var fd = new FormData; var files = this.files; fd.append('data', files[0]); fd.append('filename', files[0].name); fd.append('uploadpath', uploadpath); xhr.addEventListener('load', function(e) { var ret = $.parseJSON(this.responseText); if(ret.success) { html = ''; $('#gallery_items').append(html); $('#gallery_items').find('.gallery_item').unbind('dblclick'); $('#gallery_items').find('.gallery_item').dblclick(function() { $(this).remove(); }); $('#gallery_items').sortable(); } else { alert('Error while uploading'); } }); xhr.open('post', rootUrl + 'entities/Item/upload_image'); xhr.send(fd); }); $('#popup_gallery').find('.popup_cancel_button').click(function() { $('#popup_gallery').hide(); }); $('#popup_gallery').find('.popup_save_button').click(function() { $('#gallery').empty(); $('#gallery_items').find('.gallery_item').each(function() { $('#gallery').append(''); }); fitPreviewImages(); $('#popup_gallery').hide(); }); } else { $('#gallery_upload_input').unbind('change'); $('#gallery_upload_button').unbind('click'); $('#popup_gallery').find('.popup_cancel_button').unbind('click'); $('#popup_gallery').find('.popup_save_button').unbind('click'); } } /********************************************************************************************************************************************************************* * SLIDER **********************************************************************************************************************************************************************/ function popup_slider() { toggleSliderListener(false); $('#slider_items').empty(); $('#item_detail_slider_content').find('.slider_item_real').each(function() { var clone = $('.slideritem_dummy').clone(); clone.addClass('slider_item'); clone.removeClass('slideritem_dummy'); clone.attr('filename', $(this).attr('filename')); clone.children('img').attr('src', rootUrl + 'items/uploads/slider/' + $(this).attr('filename')); clone.find('select').val($(this).attr('link_to_item')); clone.find('.slider_item_credits').val(br2nl($(this).find('.slider_credits').html())); var html = ""; $(this).find('.slider_text span').each(function() { if(html != '') html += '\n'; html += $(this).html(); }); clone.find('.slider_item_text').val(html); $('#slider_items').append(clone); }); igniteCombobox(); $('#slider_items').find('.delete').click(function() { $(this).parent().parent().remove(); }); $('#slider_interval').val(parseInt($('#item_detail_slider_content').attr('slider_interval'))); $('#slider_items').sortable( { 'handle': ".move", }); toggleSliderListener(true); $('#popup_slider').show(); } function toggleSliderListener(toggle) { if(toggle) { $('#slider_upload_button').click(function() { $('#slider_upload_input').click(); }); $('#slider_upload_input').change(function() { var uploadpath = 'items/uploads/slider'; var xhr = new XMLHttpRequest(); var fd = new FormData; var files = this.files; fd.append('data', files[0]); fd.append('filename', files[0].name); fd.append('uploadpath', uploadpath); xhr.addEventListener('load', function(e) { var ret = $.parseJSON(this.responseText); if(ret.success) { var clone = $('.slideritem_dummy').clone(); clone.addClass('slider_item'); clone.removeClass('slideritem_dummy'); clone.attr('filename', ret.filename); clone.children('img').attr('src', rootUrl + 'items/uploads/slider/' + ret.filename); $('#slider_items').append(clone); $('#slider_items').find('.delete').unbind('click'); $('#slider_items').find('.delete').click(function() { $(this).parent().parent().remove(); }); $('#slider_items').sortable(); } else { alert('Error while uploading'); } }); xhr.open('post', rootUrl + 'entities/Item/upload_image'); xhr.send(fd); }); $('#popup_slider').find('.popup_cancel_button').click(function() { $('#popup_slider').hide(); }); $('#popup_slider').find('.popup_save_button').click(function() { $('#item_detail_slider_content').empty(); var i = 0; $('#slider_items').find('.slider_item').each(function() { var sliderhtml = '
'; sliderhtml += ''; sliderhtml += '
' + nl2br($(this).find('.slider_item_credits').val()) + '
'; var lines = $(this).find('.slider_item_text').val().split('\n'); var html = ''; if(lines !== undefined) { for(var j = 0; j < lines.length ; j++) { html += '' + lines[j] + ''; if(j != lines.length - 1) { html += '
'; } } } sliderhtml += '
' + html + '
'; sliderhtml += '
'; $('#item_detail_slider_content').append(sliderhtml); i++; }); $('#item_detail_slider_content').attr('slider_interval', $('#slider_interval').val()); igniteSlider(); $('#popup_slider').hide(); }); } else { $('#slider_upload_input').unbind('change'); $('#slider_upload_button').unbind('click'); $('#popup_slider').find('.popup_cancel_button').unbind('click'); $('#popup_slider').find('.popup_save_button').unbind('click'); } } function igniteSlider() { imagesLoaded($('#item_detail_slider_content'), function() { clearInterval(sliderHandle); var maxheight = 0; $('#item_detail_slider_content').find('.slider_item_real').each(function() { if(parseInt($(this).height()) > maxheight) maxheight = parseInt($(this).height()); }); $('#item_detail_slider_content').height(maxheight == 0 ? 16 : maxheight); if($('#item_detail_slider_content').attr('slider_interval') > 0) { sliderHandle = setInterval(function() { $('.slider_item_real').animate({'left': '-=900'}, function() { $('.slider_item_real').each(function() { if(parseInt($(this).css('left')) < 0) { $(this).css({'left': 900 * ($('.slider_item_real').length - 1)}); } }) }); }, $('#item_detail_slider_content').attr('slider_interval') * 1000); } }); } function igniteCombobox() { $('.combobox_dummy').scombobox({ fullMatch: true // when fullMatch is true // then highligh is also true by default }); } function fitPreviewImages() { /*$('#gallery .gallery_item img, #item_rel_items .item_rel_item img').each(function() { fitImage($(this), $(this).get(0).naturalWidth, $(this).get(0).naturalHeight, $(this).parent().width(), $(this).parent().height()); });*/ } function fitImage(image, iWidth, iHeight, wWidth, wHeight) { var new_height = 0; var new_width = 0; var ratio = iWidth / iHeight; if(wWidth > wHeight) { new_height = wHeight; new_width = parseInt(wHeight * ratio); if(new_width < wWidth) { new_width = wWidth; new_height = parseInt(wWidth / ratio); left = 0; top = (parseInt((new_height-wHeight) /-2)); } else { top = 0; left = parseInt((new_width - wWidth) / -2); } } else { new_width = wWidth; new_height = parseInt(wWidth / ratio); if(new_height < wHeight) { new_height = wHeight; new_width = parseInt(wHeight * ratio); top = 0; left = parseInt((new_width - wWidth) / -2); } else { left = 0; top = parseInt((new_height - wHeight) / -2); } } image.css({'width' : new_width, 'height': new_height, 'left': left, 'top': top}); } $.widget( "custom.combobox", { _create: function() { this.wrapper = $( "" ) .addClass( "custom-combobox" ) .insertAfter( this.element ); this.element.hide(); this._createAutocomplete(); this._createShowAllButton(); }, _createAutocomplete: function() { var selected = this.element.children( ":selected" ), value = selected.val() ? selected.text() : ""; this.input = $( "" ) .appendTo( this.wrapper ) .val( value ) .attr( "title", "" ) .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" ) .autocomplete({ delay: 0, minLength: 0, source: $.proxy( this, "_source" ), appendTo: '#popup_slider', }) .tooltip({ classes: { "ui-tooltip": "ui-state-highlight" } }); this._on( this.input, { autocompleteselect: function( event, ui ) { ui.item.option.selected = true; this._trigger( "select", event, { item: ui.item.option }); }, autocompletechange: "_removeIfInvalid" }); }, _createShowAllButton: function() { var input = this.input, wasOpen = false; $( "" ) .attr( "tabIndex", -1 ) .attr( "title", "Show All Items" ) .tooltip() .appendTo( this.wrapper ) .button({ icons: { primary: "ui-icon-triangle-1-s" }, text: false }) .removeClass( "ui-corner-all" ) .addClass( "custom-combobox-toggle ui-corner-right" ) .on( "mousedown", function() { wasOpen = input.autocomplete( "widget" ).is( ":visible" ); }) .on( "click", function() { input.trigger( "focus" ); // Close if already visible if ( wasOpen ) { return; } // Pass empty string as value to search for, displaying all results input.autocomplete( "search", "" ); }); }, _source: function( request, response ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" ); response( this.element.children( "option" ).map(function() { var text = $( this ).text(); if ( this.value && ( !request.term || matcher.test(text) ) ) return { label: text, value: text, option: this }; }) ); }, _removeIfInvalid: function( event, ui ) { // Selected an item, nothing to do if ( ui.item ) { return; } // Search for a match (case-insensitive) var value = this.input.val(), valueLowerCase = value.toLowerCase(), valid = false; this.element.children( "option" ).each(function() { if ( $( this ).text().toLowerCase() === valueLowerCase ) { this.selected = valid = true; return false; } }); // Found a match, nothing to do if ( valid ) { return; } // Remove invalid value this.input .val( "" ) .attr( "title", value + " didn't match any item" ) .tooltip( "open" ); this.element.val( "" ); this._delay(function() { this.input.tooltip( "close" ).attr( "title", "" ); }, 2500 ); this.input.autocomplete( "instance" ).term = ""; }, _destroy: function() { this.wrapper.remove(); this.element.show(); } });

Login or Register to edit or fork this paste. It's free.