Показать сообщение отдельно
PASTOR
16.01.2016
 
 
Аватар для PASTOR
Мимо проходил, заглянул)
О пользователе
 
Сообщений: 1
ВкоптоКарма: 0

Google Chrome 27.0.1453.93 (MacOSX)
ВК

[#3795]
По умолчанию

Помогите допилить. Очень не хватает. Да и думаю всем понравится.

Код:
console.log("EFFECTS SCRIPT STARTING");
var effects = [
    {
        "title": chrome.i18n.getMessage("fix_media_content")
    }
];

if (status == 'disabled' || !settings.effects){
    throw "stop";
}

/*====================================================================================== FIX_MEDIA_CONTENT_SIZE */
if (settings.effects[0]){
    var thumbs = document.getElementsByClassName('page_post_sized_thumbs');
    for (var l=0;l<thumbs.length;l++){
        fixMediaSize(thumbs[l]);
    }
    document.body.addEventListener("DOMNodeInserted", function (ev) {
        if (ev.target.className){
            if (ev.target.className.indexOf('feed_row')!=-1 || ev.target.className.indexOf('post')!=-1){
                var media = ev.target.getElementsByClassName('page_post_sized_thumbs');
                if (media.length>0){
                    for (var m=0;m<media.length;m++){
                        fixMediaSize(media[m]);
                    }
                }
            }
        }
    });
}
function fixMediaSize(thumbs){
    var matrix = [[[]]];
    var items = thumbs.getElementsByClassName('page_post_thumb_wrap');
    var x=0,y=0,z=0;
    for (var i=0; i<items.length;i++){
        matrix[x][y][z]=items[i];
        if (items[i].className.indexOf('last_column')!=-1 && i!=items.length-1){
            if (items[i+1].className.indexOf('last_column')!=-1){
                z++;
            } else {
                x++;
                y=0;
                matrix[x]=[[]];
            }
        } else {
            y++;
            z=0;
            if (i!=items.length-1){
                matrix[x][y]=[];
            }
        }
    }
    for (x=0; x<matrix.length;x++){
        for (y=0; y<matrix[x].length;y++){
            if (matrix[x][y].length>1){
                var colHeight = 0;
                for (z=0;z<matrix[x][y].length;z++){
                    colHeight+=parseInt(matrix[x][y][z].style.height);
                }
                var scale_percent = (5*(matrix[x][y].length-1)/colHeight*100+100)/100;
                for (z=0;z<matrix[x][y].length;z++){
                    matrix[x][y][z].style.height=Math.ceil(parseInt(matrix[x][y][z].style.height)*scale_percent)+'px';
                    matrix[x][y][z].getElementsByTagName('img')[0].height=Math.ceil(matrix[x][y][z].getElementsByTagName('img')[0].height*scale_percent);
                    matrix[x][y][z].style.width=Math.ceil(parseInt(matrix[x][y][z].style.width)*scale_percent)+'px';
                    matrix[x][y][z].getElementsByTagName('img')[0].width=Math.ceil(matrix[x][y][z].getElementsByTagName('img')[0].width*scale_percent);
                }
            }
        }
    }
    if (thumbs.parentElement.parentElement.className.indexOf('wall_text')!=-1 || thumbs.parentElement.className.indexOf('wall_text')!=-1 || thumbs.parentElement.className.indexOf('feed_since_photos')!=-1 || thumbs.parentElement.className.indexOf('page_post_queue_wide')!=-1 && thumbs.parentElement.parentElement.parentElement.className.indexOf('reply_text')==-1 || thumbs.parentElement.className.indexOf('wall_album_under_row')!=-1){
        zoomMediaContent(thumbs,matrix,630);
    }
    if (thumbs.parentElement.className.indexOf('page_post_queue_narrow')!=-1 && thumbs.parentElement.parentElement.parentElement.className.indexOf('reply_text')==-1 || thumbs.parentElement.parentElement.parentElement.className.indexOf('page_post_queue_narrow')!=-1){
        zoomMediaContent(thumbs,matrix,396);
    }
    if (thumbs.parentElement.className.indexOf('wall_album_photos')!=-1){
        var album_cover=thumbs.parentElement.parentElement.getElementsByClassName('wall_album')[0];
        //zoomMediaContent(thumbs,matrix,100);
    }
}
function zoomMediaContent(tmbs, mtrx, zWidth){
    var curr_width = [];
    var zoom_percent = [];
    for (var j=0;j<mtrx.length;j++){
        curr_width[j]=0;
        for (var k=0;k<mtrx[j].length;k++){
            curr_width[j]+=parseInt(mtrx[j][k][0].style.width);
        }
        zoom_percent[j] = (zWidth-k)/curr_width[j];
    }
    for (var x=0;x<mtrx.length;x++){
        for (var y=0;y<mtrx[x].length;y++){
            for (var z=0;z<mtrx[x][y].length;z++){
                mtrx[x][y][z].style.height=Math.floor(parseInt(mtrx[x][y][z].style.height)*zoom_percent[x])+'px';
                mtrx[x][y][z].getElementsByTagName('img')[0].height=Math.floor(mtrx[x][y][z].getElementsByTagName('img')[0].height*zoom_percent[x]);
                mtrx[x][y][z].style.width=Math.floor(parseInt(mtrx[x][y][z].style.width)*zoom_percent[x])+'px';
                mtrx[x][y][z].getElementsByTagName('img')[0].width=Math.floor(mtrx[x][y][z].getElementsByTagName('img')[0].width*zoom_percent[x]);
                if (mtrx[x][y][z].className.indexOf('video')==-1){
                    mtrx[x][y][z].getElementsByTagName('img')[0].src=getBiggestPrev(mtrx[x][y][z]);
                }
            }
        }
    }
    var zoomed_height = 0;
    for (var i=0;i<mtrx.length;i++){
        zoomed_height+=parseInt(mtrx[i][0][0].style.height);
    }
    tmbs.style.width=zWidth+'px';
    tmbs.style.height=zoomed_height+'px';
}
function getBiggestPrev(elm){
    var s = new XMLSerializer();
    var str = s.serializeToString(elm);
    var start = str.indexOf('base&quot;:&quot;');
    var end = 0;
    if (start!=-1){
        end = str.indexOf('&quot;', start+17);
    }
    var dataStr = str.substr(start+17,end-start-17);
    var urlZ = dataStr;
    start = str.indexOf('z_&quot;:[&quot;');
    end = 0;
    if (start!=-1){
        end = str.indexOf('&quot;', start+16);
    }
    else {
        start = str.indexOf('y_&quot;:[&quot;');
        if (start!=-1){
            end = str.indexOf('&quot;', start+16);
        }
        else {
            start = str.indexOf('x_&quot;:[&quot;');
            if (start!=-1){
                end = str.indexOf('&quot;', start+16);
            }
        }
    }
    dataStr = str.substr(start+16,end-start-16);
    urlZ+=dataStr+'.jpg';
    return urlZ;
}
Оффлайн
 
Ответить с цитированием