PDA

View Full Version : Printable version shows inline image attachments


benFF
12-26-2006, 07:21 AM
Couldn't find this already done, but would be incredibly useful.

I have a lot of guides on my site which people print off to follow - problem being of course that image attachments aren't shown on the "printable version" - so they all have to be done seperately.

A mod would be cool to allow them to be shown :)

benFF
10-21-2011, 05:47 PM
I'm going to bump this 5 years later ... :D Still need it!

timcullis
01-30-2012, 10:10 AM
Looking for the same thing.

Wedframe
08-10-2015, 05:41 PM
Bump!...
May be someone can help with this?

Elite_360_
08-10-2015, 08:41 PM
This is a old thread but you could always use right click on mouse and then print, Ctrl+P in Windows or use IE Edge if you have windows 10. IE Edge preview in attachment i don't have a touch screen had to write with my mouse.

MarkFL
08-10-2015, 09:35 PM
See if this works for you (vB 4.x)...create a new plugin as follows:

Product: vBulletin

Hook Location: printthread_post

Title: Display Inline Attached Images In Printable Thread

Execution Order: 5

Plugin PHP Code:
$post['attach'] = 0;
$post['message'] = preg_replace('/>Attachment(.*?)<\/a>/', ' />', $post['message']);
$post['message'] = str_replace('<a class="image"', '<img', $post['message']);
$post['message'] = preg_replace('/(<img.*?)href/', '$1src', $post['message']);


Plugin is Active: Yes

Wedframe
08-11-2015, 09:58 AM
Elite_360_ I have a several reasons for functionality like this. One of them its create page with ALL posts from thread, and on which I can use CTRL+F from browser. It`s very easy way to search old posts with needful information. Anyway... its even nt my own desire, but users from my favorite forum.
So... I did not create a new topic, but simply asked in the existing. And this worked! )))

MarkFL thank you very much!!!! You save me a lot of time and nerves!!))
Although your code does not work on my forum, I was able to create the right module for me with to understanding its logic and right hook.
For me the result had like this:
$post['message'] = preg_replace("/<a href=\"(\w{4,5}:\/\/.*attachmentid\=\d*)\"\s(.|\n)*<\/a>/U", "<img style=\"max-width: 400px; max-height: 400px;\" src=\"\\1\">", $post['message']);
It`s all right? The code dont have potentially errores?
Thanks again!!!!

Elite_360_
08-12-2015, 08:35 PM
@Wedframe you would have to do a query for attachment ids and the best function i could find to get image path would be fetch_attachment_path. I would use it in a php loop.

@MarkFL I don't think attachments are stored in the $post['message'] un-less they embed the image in the post.

If i get time i could write the code maybe MarkFL can or another coder.

this is what the function look like.


I could be going at this all wrong i don't know much about the attachments.

--Edited--

Wedframe
08-13-2015, 06:53 PM
Elite_360_, actually code from my previous post(based on MarkFL idea), work good!
Why I need to do one more query?

Elite_360_
08-13-2015, 07:56 PM
Ok yeah the code works but just for embedded (inline) attachments but looking at first post that what they wanted so if the attachment not inline you will not see it. I thought you wanted it to work for any attachment thats why i made post #8.

--------------- Added 1439515346 at 1439515346 ---------------

Ok use same hook (printthread_post) as MarkFL pointed out in post #6 (https://vborg.vbsupport.ru/showpost.php?p=2552588&postcount=6).
This will show all attachments if they're inline or not, Print Thread only shows inline attachments.

If MarkFL or another coder what to make this a Mod go ahead but let MarkFL answer first if he want to or not since he help out first.



if ($post['attach'] > 0)
{
$e360_attachments = $vbulletin->db->query_read("
SELECT attachmentid
FROM " . TABLE_PREFIX . "attachment
WHERE `contenttypeid` = 1 AND `userid` = " . $post['userid'] . "
AND `state` = 'visible' AND `contentid` = " . $post['postid'] . "
");

while ($e360_row = $vbulletin->db->fetch_array($e360_attachments))
{
$e360_post['attachment'] .= '<img style="max-width: 400px; max-height: 400px;padding: 10px;" src="' . $vbulletin->options['bburl'] . '/attachment.php?attachmentid=' . $e360_row['attachmentid'] . '">';
}
$vbulletin->db->free_result($e360_attachments);

$post['message'] = preg_replace("/<a href=\"(\w{4,5}:\/\/.*attachmentid\=\d*)\"\s(.|\n)*<\/a>/U", "", $post['message']);

$e360_post['message'] = $post['message'];
$post['attach'] = 0;
$post['message'] = $e360_post['message'] . '<br />' . $e360_post['attachment'];
unset($e360_row, $e360_post);
}



--------------- Added 1439587329 at 1439587329 ---------------

Add this right before if ($post['attach'] > 0) this will do embed images that use the img bbcode



if (preg_match('~<a[^>]*?href="(.*?(gif|jpeg|jpg|png))".*?</a>~', $post['message']))
{
$post['message'] = preg_replace('~<a[^>]*?href="(.*?(gif|jpeg|jpg|png))".*?</a>~', '<img src="$1" style="max-width: 400px; max-height: 400px;padding: 10px;" />', $post['message']);
}

Elite_360_
08-14-2015, 08:11 PM
I'm going to make this a mod and just make you guys co-authors @MarkFL, @Wedframe

--------------- Added 1439593327 at 1439593327 ---------------

Here is the mod.
Display Images in Printable Thread (https://vborg.vbsupport.ru/showthread.php?p=2552911#post2552911)