Вход Регистрация
Файл: templates/modern/js/photos.js
Строк: 277
<?php
var icms = icms || {};

icms.photos = (function ($) {

    
this.page = 1;
    
this.initial_page = 1;
    
this.has_next = false;
    
this.init = false;
    
this.is_init_album = {};
    
this.mode = '';
    
this.big_img = '';
    
this.page_img = '';
    
this.page_url = '';
    
this.row_height = 255;

    
this.onDocumentReady = function(){

        if (
this.init === false) { return; }

        if (
this.mode === 'album'){
            
this.initAlbum();
        }

        if (
this.mode === 'photo'){
            
this.initPhoto();
        }

        if (
this.mode === 'edit'){
            
icms.modal.bindGallery('.icms-images-preview');
        }

    };

    
this.initPhoto = function(){

        $(
'#bubble .custom-radio').click(function(e) {
            
e.stopPropagation();
        });

        $(
'#bubble input').on('click', function (){
            $(
'a.process_download').attr('href', $(this).val());
        });
        $(
'#bubble input:checked').triggerHandler('click');

        
this.big_img = $('#photo_container').data('full-size-img');
        
this.page_url = $('#photo_container img').data('page-url');

        if (
screenfull.isEnabled) {
            $(
'#fullscreen_photo').removeClass('d-none');
            
this.bindFullScreen();
            $(
document).on(screenfull.raw.fullscreenchange, function (){
                if(!
screenfull.isFullscreen){
                    $(
'#photo_container > img').attr('src', icms.photos.page_img);
                    $(
'#fullscreen_photo').removeClass('icms-fullscreen__state_expanded');
                    $(
'#fullscreen_cont').removeClass('fullscreen_now');
                    $(
'.photo_navigation').off('click', icms.photos.bindFullScreenNav);
                    var 
current_page_url = $('#photo_container img').data('page-url');
                    if(
current_page_url != icms.photos.page_url){
                        
window.location.href = current_page_url;
                    }
                } else {
                    
icms.photos.page_img = $('#photo_container img').attr('src');
                    $(
'#photo_container > img').attr('src', icms.photos.big_img);
                    $(
'#fullscreen_photo').addClass('icms-fullscreen__state_expanded');
                    $(
'#fullscreen_cont').addClass('fullscreen_now');
                    $(
'#photo_container').on('click', '.photo_navigation', icms.photos.bindFullScreenNav);
                }
            });
        } else {
            if(
icms.photos.big_img){
                var 
click_link = $('#photo_container').addClass('full_in_modal').find('.fullscreen_click').show().attr('href', icms.photos.big_img);
                
icms.modal.bindGallery(click_link);
            }
        }

    };

    
this.bindFullScreen = function (){
        $(
document).on('click', '#fullscreen_photo', function (){
            
screenfull.toggle($('#fullscreen_cont')[0]);
            return 
false;
        });
        $(
document).keyup(function(event){
            if(
event.keyCode === 39){
                try{ $(
'#photo_container .photo_navigation.next_item').trigger('click');}catch(e){}
            }
            if(
event.keyCode === 37){
                try{ $(
'#photo_container .photo_navigation.prev_item').trigger('click'); }catch(e){}
            }
        });
    };

    
this.bindFullScreenNav = function () {

        $(
this).addClass('is-busy');

        $.
get($(this).attr('href'), function(data){
           $(
'#photo_container').html(data);
        }, 
'html');

        return 
false;
    };

    
this.initAlbum = function(selector){

        
selector = selector || '#album-photos-list';

        if (
this.is_init_album[selector] === true) { return; }

        $(
selector).on('click', 'a.icms-photo-album__photo_delete', function(){
            return 
icms.photos.deletePhoto($(this).data('id'), this);
        });

        
this.is_init_album[selector] = true;
    };

    
this.initCarousel = function (selector, init_callback){
        
init_callback = init_callback || function(){};
        $(
selector).slick({
            
infinite: false,
            
arrows: false,
            
dots: true,
            
variableWidth: true,
            
slidesToShow: 3,
            
slidesToScroll: 2,
            
responsive: [
                {
breakpoint: 650, settings: {slidesToShow: 3, slidesToScroll: 1, dots: false}},
                {
breakpoint: 320, settings: {slidesToShow: 2, slidesToScroll: 1, dots: false}}
            ]
        });
    };

    
this.createUploader = function(upload_url, onSubmit){

        
onSubmit = onSubmit || function(){ return true; };

        var 
uploader = new qq.FileUploader({
            
element: document.getElementById('album-photos-uploader'),
            
action: upload_url,
            
debug: false,
            
onSubmit: onSubmit,
            
onComplete: function(id, file_name, result){

                if(!
result.success) { return; }

                var 
widget = $('#album-photos-widget');
                var 
preview_block = $('.preview_template', widget).clone().
                        
removeClass('preview_template').addClass('preview').attr('rel', result.id).show();

                $(
'img', preview_block).attr('src', result.url);
                
icms.modal.bind($('.hover_image', preview_block).attr('href', result.big_url));

                $(
'.photo_privacy select', preview_block).attr('name', 'is_private['+result.id+']');
                $(
'.photo_type select', preview_block).attr('name', 'type['+result.id+']');

                $(
'.title input', preview_block).attr('name', 'photos['+result.id+']');
                if(
result.name){
                    var 
pos, p = result.name.indexOf('.');
                    while (
pos != -1) { pos = result.name.indexOf('.',pos+1); if(pos != -1){ p = pos; } }
                    $(
'.title input', preview_block).val(result.name.substring(0, p));
                }

                $(
'.photo_content textarea', preview_block).
                        
attr('name', 'content['+result.id+']').
                        
attr('id', 'mcontent_'+result.id);

                $(
'.actions a.delete', preview_block).click(function() { return icms.photos.remove(result.id); });

                $(
'.previews_list', widget).append(preview_block);

                var 
wysiwyg_name = $(widget).data('wysiwyg_name');

                if(
wysiwyg_name){
                    
window['init_'+wysiwyg_name]('mcontent_'+result.id);
                }

            }

        });

    };

    
this.remove = function(id){

        var 
widget = $('#album-photos-widget');

        var 
url = widget.data('delete-url') + '/' + id;

        $.
post(url, {}, function(result){

            if (!
result.success) { return; }

            $(
'.preview[rel='+id+']', widget).fadeOut('fast', function() { $(this).remove(); });

        }, 
'json');

        return 
false;

    };

    
this.deletePhoto = function(id, link){

        if(!
confirm(LANG_PHOTOS_DELETE_PHOTO_CONFIRM)){
            return 
false;
        }

        var 
block = $(link).closest('.icms-photo-album__photo');
        var 
photo_wrap = $(link).closest('.album-photos-wrap');

        $.
post($(photo_wrap).data('delete-url') + '/' + id, {}, function(result){
            
block.fadeOut('fast', function (){
                $(
this).remove();
                
icms.photos.flexImagesInit('#'+$(photo_wrap).attr('id'));
            });
        }, 
'json');

        return 
false;

    };

    
this.delete = function(){

        $.
post($('#album-photo-item').data('item-delete-url'), {id: $('#album-photo-item').data('id')}, function(result){
            if (
result.success){
                
window.location.href=result.album_url;
            }
        }, 
'json');

    };

    
this.flexImagesInit = function(selector){
        
selector = selector || '#album-photos-list';
        $(
selector).flexImages({rowHeight: this.row_height, container: '.icms-photo-album__photo', truncate: this.has_next});
    };

    
this.showMore = function(link){

        var 
photo_wrap = $(link).prev('.album-photos-wrap');

        if(!
icms.photos.has_next){
            if(
icms.photos.initial_page > 1){
                return 
true;
            }
            $(
'body,html').animate({
                
scrollTop: $(photo_wrap).offset().top
                
}, 500
            
);
            return 
false;
        }

        $(
link).addClass('is-busy');

        
icms.photos.page += 1;

        var 
post_params = $(link).data('url-params');
        
post_params.photo_page = icms.photos.page;

        $.
post($(link).data('url'), post_params, function(html){

            var 
first_page_url = $(link).data('first-page-url');

            $(
link).removeClass('is-busy');

            if (!
html) { return; }

            $(
photo_wrap).append(html);

            if(!
icms.photos.has_next){
                $(
'span', link).html($('span', link).data('to-first'));
                $(
link).attr('href', first_page_url);
            }

            var 
_sep = first_page_url.indexOf('?') !== -1 ? '&' : '?';

            
window.history.pushState({link: first_page_url+_sep+'photo_page='+icms.photos.page}, '', first_page_url+_sep+'photo_page='+icms.photos.page);

        }, 
'html');

        return 
false;

    };

    return 
this;

}).
call(icms.photos || {},jQuery);
?>
Онлайн: 2
Реклама