₊⁺✿˚
This commit is contained in:
parent
0435ab7dd4
commit
f7da580fda
|
@ -0,0 +1,342 @@
|
|||
/*---------------------------------------------------------
|
||||
|
||||
NPF images fix v3.0 by @glenthemes [2021]
|
||||
💌 git.io/JRBt7
|
||||
|
||||
Credits:
|
||||
> wrap divs that are next to each other by Nick Craver
|
||||
stackoverflow.com/a/3329249/8144506
|
||||
> get 'deepest' element script by Balint Bako
|
||||
stackoverflow.com/a/18652986/8144506
|
||||
|
||||
---------------------------------------------------------*/
|
||||
|
||||
$(document).ready(function(){
|
||||
// check jquery version
|
||||
var jqver = jQuery.fn.jquery;
|
||||
var ver = jqver.replaceAll(".","");
|
||||
|
||||
$(".npf_row .tmblr-full:not(:only-child)").each(function(){
|
||||
$(this).wrap("<div class='npf_col'>")
|
||||
})
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
$(".npf_col .tmblr-full [data-big-photo-height]").each(function(){
|
||||
$(this).parents(".npf_col").attr("h",$(this).attr("data-big-photo-height"))
|
||||
})
|
||||
|
||||
$(".npf_col .tmblr-full [data-big-photo-width]").each(function(){
|
||||
$(this).parents(".npf_col").attr("w",$(this).attr("data-big-photo-width"))
|
||||
})
|
||||
|
||||
$(".npf_col .tmblr-full img[data-orig-height]").each(function(){
|
||||
$(this).parents(".npf_col").attr("h",$(this).attr("data-orig-height"))
|
||||
})
|
||||
|
||||
$(".npf_col .tmblr-full img[data-orig-width]").each(function(){
|
||||
$(this).parents(".npf_col").attr("w",$(this).attr("data-orig-width"))
|
||||
})
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
var spac = parseInt(getComputedStyle(document.documentElement).getPropertyValue("--NPF-Image-Spacing"));
|
||||
|
||||
$(".npf_row").each(function(){
|
||||
if($(this).find(".npf_col").length){
|
||||
// how many columns?
|
||||
var cols = $(this).children(".npf_col").length;
|
||||
$(this).attr("columns",cols);
|
||||
|
||||
cols = Number(cols);
|
||||
|
||||
// clarify the width of each column
|
||||
var pognt = Math.floor(($(this).width() - (spac * (cols-1))) / cols);
|
||||
$(this).children(".npf_col").attr("col-width",pognt)
|
||||
}
|
||||
})
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
// get the minified width & height values
|
||||
$(".npf_col").each(function(){
|
||||
var getratio = $(this).attr("w") / $(this).attr("h");
|
||||
$(this).attr("ratio",getratio);
|
||||
|
||||
var potato = $(this).attr("col-width") / Number(getratio);
|
||||
potato = potato.toString();
|
||||
potato = potato.substring(0,potato.lastIndexOf("."));
|
||||
$(this).attr("col-height",potato);
|
||||
})
|
||||
|
||||
// get shortest column of that row
|
||||
$(".npf_row").each(function(){
|
||||
if($(this).find(".npf_col").length){
|
||||
var quoi = $(this).children(".npf_col:not([col-height=''])").map(function(){
|
||||
return $(this).attr("col-height");
|
||||
}).get();
|
||||
|
||||
var ngai = Math.min.apply(Math,quoi);
|
||||
$(this).find(".tmblr-full").height(ngai);
|
||||
}
|
||||
});
|
||||
|
||||
// remove the attributes bc they ugly
|
||||
$(".npf_col").removeAttr("h w ratio")
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
// wrap .npf_rows that are next to each other
|
||||
var npf_row = $(".npf_row");
|
||||
|
||||
for(var soda=0; soda<npf_row.length;){
|
||||
if(ver < "180"){
|
||||
soda += npf_row.eq(soda).nextUntil(':not(.npf_row)').andSelf().wrapAll('<div class="npf_inst">').length;
|
||||
} else {
|
||||
soda += npf_row.eq(soda).nextUntil(':not(.npf_row)').addBack().wrapAll('<div class="npf_inst">').length;
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
// multiple .tmblr-fulls that are next to each other,
|
||||
// but are not in a row or container
|
||||
// e.g. headers
|
||||
$("*:not(.npf_row) > .tmblr-full").each(function(){
|
||||
if($(this).siblings(".tmblr-full").length){
|
||||
$(this).not(".tmblr-full + .tmblr-full").each(function(){
|
||||
if(ver < "180"){
|
||||
$(this).nextUntil(":not(.tmblr-full").andSelf().wrapAll('<div class="npf_inst">');
|
||||
} else {
|
||||
$(this).nextUntil(":not(.tmblr-full").addBack().wrapAll('<div class="npf_inst">');
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
// redo the .npf_inst wrapping
|
||||
$(".npf_inst").each(function(){
|
||||
$(this).not(".npf_inst + .npf_inst").each(function(){
|
||||
if(ver < "180"){
|
||||
$(this).nextUntil(":not(.npf_inst").andSelf().wrapAll('<div class="npf_inst">');
|
||||
$(this).nextUntil(":not(.npf_inst").andSelf().children().unwrap();
|
||||
} else {
|
||||
$(this).nextUntil(":not(.npf_inst").addBack().wrapAll('<div class="npf_inst">');
|
||||
$(this).nextUntil(":not(.npf_inst").addBack().children().unwrap();
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
// wrap single containerless .tmblr-fulls
|
||||
$(".tmblr-full").each(function(){
|
||||
if(!$(this).parents(".npf_inst").length){
|
||||
if(!$(this).parents(".npf_row").length || !$(this).parents(".npf_col").length){
|
||||
$(this).wrap("<div class='npf_inst'>")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
// if: .tumblr_parent exists
|
||||
$("[post-type='text']").each(function(){
|
||||
$(this).find(".tumblr_parent").eq(0).each(function(){
|
||||
$(this).find(".npf_inst").eq(0).each(function(){
|
||||
if($.trim($(this).prev("p").text()) == ""){
|
||||
$(this).addClass("photo-origin");
|
||||
|
||||
// relocate if there's a caption
|
||||
if($(this).next().length){
|
||||
$(this).insertBefore($(this).parents("[post-type='text']").find(".tumblr_parent").eq(0));
|
||||
$(this).css("margin-bottom","var(--NPF-Caption-Spacing)")
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
})
|
||||
|
||||
// .source-head do the thing - attempt #2
|
||||
// yes there was an attempt #1 but it was too embarrassing
|
||||
$("[post-type='text']").each(function(){
|
||||
// target first commenter
|
||||
var behead = $(this).find(".source-head").parent();
|
||||
behead = behead.eq(0);
|
||||
|
||||
if(behead.find(".npf_inst").length){
|
||||
var nuf = $(this).find(".npf_inst").eq(0);
|
||||
if(nuf.prev().length){
|
||||
if($.trim(nuf.prev().text()) == ""){
|
||||
if(nuf.next().length){
|
||||
nuf.addClass("photo-origin");
|
||||
nuf.insertBefore(behead.children(".source-head"));
|
||||
nuf.css("margin-bottom","var(--NPF-Caption-Spacing)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// catch any stray npfs that were meant to be included in set
|
||||
$("[post-type='text']:has(.photo-origin)").each(function(){
|
||||
var that = this;
|
||||
$(this).find("p + .npf_inst").each(function(){
|
||||
if($.trim($(this).prev("p").text()) == ""){
|
||||
if($(this).next().length){
|
||||
$(this).addClass('recall')
|
||||
$(this).appendTo($(that).find(".photo-origin"))
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// if: OLD BLOCKQUOTE CAPTIONS
|
||||
$("[post-type='text']").each(function(){
|
||||
$(this).find("p").eq(0).each(function(){
|
||||
if($(this).find("a.tumblr_blog").length){
|
||||
$(this).attr("last-comment","");
|
||||
}
|
||||
})
|
||||
|
||||
var maxDepth = 0;
|
||||
$(this).find("blockquote").each(function(){
|
||||
$(this).attr('depth', $(this).parents().length);
|
||||
if($(this).parents().length > maxDepth){
|
||||
maxDepth = $(this).parents().length;
|
||||
}
|
||||
});
|
||||
|
||||
$('[depth="' + maxDepth + '"]').addClass("op-blockquote");
|
||||
$("blockquote[depth]").removeAttr("depth")
|
||||
});
|
||||
|
||||
$(".op-blockquote").each(function(){
|
||||
if($(this).prev().is("p")){
|
||||
if($(this).prev().find("a.tumblr_blog").length){
|
||||
|
||||
var finst = $(this).children().first();
|
||||
var poo = $(this).parents("[post-type='text']").find("[last-comment]").eq(0);
|
||||
|
||||
if(finst.is(".npf_inst")){
|
||||
if(finst.next().length){
|
||||
finst.addClass("photo-origin");
|
||||
finst.insertBefore(poo);
|
||||
if(finst.next().is("p")){
|
||||
finst.css("margin-bottom","var(--NPF-Caption-Spacing)");
|
||||
}
|
||||
|
||||
// attempt to fix fked up reblog order
|
||||
if(!$(this).prev().prev().is(".photo-origin")){
|
||||
if(poo.next().is("blockquote")){
|
||||
$(this).add($(this).prev()).prependTo(poo.next("blockquote"))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// if npf does not have caption text
|
||||
var gp = $(this).prev("p").find("a.tumblr_blog");
|
||||
var gp_name = gp.text();
|
||||
var gp_url = gp.attr("href");
|
||||
finst.addClass("photo-origin");
|
||||
finst.insertBefore(poo);
|
||||
poo.next(".op-blockquote").remove();
|
||||
poo.remove();
|
||||
finst.after("<p class='npf-post-source'>(Source: <a href='" + gp_url + "'>" + gp_name + "</a>)</p>")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
// initiate lightbox on images that didn't originally
|
||||
// come with photo anchor
|
||||
$(".tmblr-full img").click(function(){
|
||||
if(!$(this).hasClass("post_media_photo")){
|
||||
var imgsrc = $(this).attr("src");
|
||||
|
||||
Tumblr.Lightbox.init([{
|
||||
low_res:imgsrc,
|
||||
high_res:imgsrc
|
||||
}]);
|
||||
}
|
||||
});
|
||||
|
||||
// assign unique ID to each NPF photoset
|
||||
$(".npf_inst").each(function(){
|
||||
$(this).attr("npf-id","npf_" + Math.random().toString(36).substr(2, 5))
|
||||
});
|
||||
|
||||
// initialize number of images in each NPF photoset,
|
||||
// and create an numerically labelled list
|
||||
function npflineup(){
|
||||
$(".npf_inst").each(function(){
|
||||
$(this).find(".tmblr-full").each(function(i){
|
||||
i = i + 1;
|
||||
$(this).attr("list-order",i);
|
||||
});
|
||||
|
||||
$(this).find(".tmblr-full img").each(function(w){
|
||||
w = w + 1;
|
||||
$(this).parents(".npf_inst").attr("image" + w,$(this).attr("src"))
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
npflineup();
|
||||
|
||||
// initialize lightbox + clickthrough
|
||||
$(".tmblr-full img").click(function(){
|
||||
var npfID = $(this).parents("[npf-id]").attr("npf-id");
|
||||
var npford = $(this).parents(".tmblr-full").attr("list-order");
|
||||
var npfmax = $(this).parents(".npf_inst")
|
||||
.find(".tmblr-full").length;
|
||||
|
||||
$(document).on("click", ".lightbox-image", function(){
|
||||
$(this).attr("npf-id",npfID).attr("order",npford);
|
||||
|
||||
$(".npf_inst").each(function(){
|
||||
if($(this).attr("npf-id") == $(".lightbox-image").attr("npf-id")){
|
||||
|
||||
npford = Number(npford)+1;
|
||||
|
||||
if($(this).is("[image" + npford + "]")){
|
||||
var getnext = $(this).attr("image" + npford);
|
||||
$(".lightbox-image").attr("src",getnext);
|
||||
|
||||
$(".lightbox-image").addClass("lb-img");
|
||||
$(".lightbox-image-container").addClass("lb-cont");
|
||||
} else {
|
||||
if($(".lightbox-image").attr("order") > npfmax){
|
||||
$(".lightbox-image").removeAttr("order");
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
// do that thing again if npfs are inside npfs fsfr
|
||||
$(".npf_inst .npf_inst").each(function(){
|
||||
$(this).children().unwrap();
|
||||
})
|
||||
|
||||
$(".npf_inst + .npf_inst").each(function(){
|
||||
$(this).appendTo($(this).prev());
|
||||
$(this).children().unwrap();
|
||||
});
|
||||
|
||||
$(".npf_inst [list-order]").each(function(){
|
||||
$(this).removeAttr("list-order");
|
||||
})
|
||||
|
||||
npflineup();
|
||||
|
||||
/*-------------------------------------------------*/
|
||||
|
||||
$("[data-big-photo]").each(function(){
|
||||
var gwgw = $(this).attr("data-big-photo");
|
||||
var guppy = new Image();
|
||||
guppy.src = gwgw;
|
||||
})
|
||||
});// end ready
|
Loading…
Reference in New Issue