// Image Node Auto-Format with Auto Image Grouping. // Original version by Steve McKenzie. // Altered by Stella Power for jQuery version. (function ($) { function parse_url(url, param) { param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); url = url.replace(/&/, "&"); var regexS = "[\\?&]"+param+"=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(url); if (results === null) { return ""; } else { return results[1]; } } function lightbox2_init_triggers(classes, rel_type, custom_class) { if (classes == '' || rel_type == 0) { return; } var settings = Drupal.settings.lightbox2; var link_target = ""; if (settings.node_link_target !== 0) { link_target = 'target="'+ settings.node_link_target +'"'; } $("a:has("+classes+")").each(function(i) { if ((!settings.disable_for_gallery_lists && !settings.disable_for_acidfree_gallery_lists) || (!$(this).parents("td.giAlbumCell").attr("class") && !$(this).parents(".galleries").length && !$(this).parents(".acidfree-folder").length && !$(this).parents(".acidfree-list").length) || ($(this).parents(".galleries").length && !settings.disable_for_gallery_lists) || (($(this).parents(".acidfree-folder").length || $(this).parents(".acidfree-list").length) && !settings.disable_for_acidfree_gallery_lists)) { var child = $(this).find(classes); // Ensure the child has a class attribute we can work with. if ($(child).attr("class")) { // Set the alt text. var alt = $(child).attr("alt"); if (!alt) { alt = ""; } // Set the image node link text. var link_text = settings.node_link_text; var download_link_text = settings.download_link_text; var rewrite = 1; // Set the rel attribute. var rel = "lightbox"; var lightframe = false; if (rel_type == "lightframe_ungrouped") { rel = "lightframe[]"; lightframe = true; } else if (rel_type == "lightframe") { lightframe = true; } else if (rel_type == "lightbox_ungrouped") { rel = "lightbox[]"; } if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") { rel = rel_type + "[" + $(child).attr("class") + "]"; } // Set the basic href attribute - need to ensure there's no language // string (e.g. /en) prepended to the URL. var id = null; var href = $(child).attr("src"); var download = null; var orig_href = $(this).attr("href"); var pattern = new RegExp(settings.file_path); if (orig_href.match(pattern)) { var lang_pattern = new RegExp(Drupal.settings.basePath + "\\w\\w\\/"); orig_href = orig_href.replace(lang_pattern, Drupal.settings.basePath); } var frame_href = orig_href; // Handle flickr images. if ($(child).attr("class").match("flickr-photo-img") || $(child).attr("class").match("flickr-photoset-img")) { href = $(child).attr("src").replace("_s.", ".").replace("_t.", ".").replace("_m.", ".").replace("_b.", "."); if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") { rel = rel_type + "[flickr]"; if ($(child).parents("div.block-flickr").attr("class")) { id = $(child).parents("div.block-flickr").attr("id"); rel = rel_type + "["+ id +"]"; } } download = href; } // Handle "image-img_assist_custom" images. else if ($(child).filter("img[class*=img_assist_custom]").size()) { // Image assist uses "+" signs for spaces which doesn't work for // normal links. if (settings.display_image_size != "original") { orig_href = orig_href.replace(/\+/, " "); href = $(child).attr("src").replace(new RegExp("\\.img_assist_custom-[0-9]+x[0-9]+"), ((settings.display_image_size === "")?settings.display_image_size:"."+ settings.display_image_size)); if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") { rel = rel_type + "[node_images]"; } if (lightframe) { frame_href = orig_href + "/lightbox2"; } } else { rewrite = 0; } } // Handle "inline" images. else if ($(child).attr("class").match("inline")) { href = orig_href; } // Handle gallery2 block images. else if ($(child).attr("class").match("ImageFrame_image") || $(child).attr("class").match("ImageFrame_none")) { var thumb_id = parse_url(href, "g2_itemId"); var new_id = parse_url(orig_href, "g2_itemId"); if (new_id && thumb_id) { var g2pattern = new RegExp("g2_itemId="+thumb_id); var replacement = "g2_itemId="+ new_id; href = href.replace(g2pattern, replacement); } rel = rel_type + "[gallery2]"; if ($(child).parents("div.block-gallery").attr("class")) { id = $(child).parents("div.block-gallery").attr("id"); rel = rel_type + "["+ id +"]"; } download = href; } // Set the href attribute. else if (settings.image_node_sizes != '()' && !custom_class) { if (settings.display_image_size != "original") { href = $(child).attr("src").replace(new RegExp(settings.image_node_sizes), ((settings.display_image_size === "")?settings.display_image_size:"."+ settings.display_image_size)).replace(/(image\/view\/\d+)(\/[\w\-]*)/, ((settings.display_image_size === "")?"$1/_original":"$1/"+ settings.display_image_size)); if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") { rel = rel_type + "[node_images]"; if ($(child).parents("div.block-multiblock,div.block-image").attr("class")) { id = $(child).parents("div.block-multiblock,div.block-image").attr("id"); rel = rel_type + "["+ id +"]"; } } download = $(child).attr("src").replace(new RegExp(settings.image_node_sizes), "").replace(/(image\/view\/\d+)(\/[\w\-]*)/, "$1/_original"); if (lightframe) { frame_href = orig_href + "/lightbox2"; } } else { rewrite = 0; } } // Modify the image url. var img_title = $(child).attr("title"); if (!img_title) { img_title = $(this).attr("title"); if (!img_title) { img_title = $(child).attr("alt"); } $(child).attr({title: img_title}); } if (lightframe) { href = frame_href; } if (rewrite) { if (!custom_class) { var title_link = ""; if (link_text.length) { title_link = "

"+ link_text + ""; } if (download_link_text.length && download) { title_link = title_link + " - " + download_link_text + ""; } rel = rel + "[" + img_title + title_link + "]"; $(this).attr({ rel: rel, href: href }); } else { if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") { rel = rel_type + "[" + $(child).attr("class") + "]"; if ($(child).parents("div.block-image").attr("class")) { id = $(child).parents("div.block-image").attr("id"); rel = rel_type + "["+ id +"]"; } } rel = rel + "[" + img_title + "]"; $(this).attr({ rel: rel, href: orig_href }); } } } } }); } function lightbox2_image_nodes() { var settings = Drupal.settings.lightbox2; // Don't do it on the image assist popup selection screen. var img_assist = document.getElementById("img_assist_thumbs"); if (!img_assist) { // Select the enabled image types. lightbox2_init_triggers(settings.trigger_lightbox_classes, "lightbox_ungrouped"); lightbox2_init_triggers(settings.custom_trigger_classes, settings.custom_class_handler, true); lightbox2_init_triggers(settings.trigger_lightbox_group_classes, "lightbox"); lightbox2_init_triggers(settings.trigger_slideshow_classes, "lightshow"); lightbox2_init_triggers(settings.trigger_lightframe_classes, "lightframe_ungrouped"); lightbox2_init_triggers(settings.trigger_lightframe_group_classes, "lightframe"); } } Drupal.behaviors.initAutoLightbox = { attach: function(context, settings) { lightbox2_image_nodes(); } }; //End jQuery block }(jQuery));