Textpattern Forum

You are not logged in. Register | Login | Help

#1 2008-06-22 18:39:12

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 5,799
Website

Adding more consistent image functionality

Images — in contrast with files, links and articles — feel like 2nd class citizens. We routinely rely on plugins like the excellent upm_image to do our image handling. And from a programming viewpoint the fact there isn’t (yet) a $thisimage is a bit of a stumbling block in consistency.

————————————————————————————————————————————————————————————
IMPORTANT: This post is out of date. Please see the latest patch for download and detailed usage instructions
————————————————————————————————————————————————————————————

Since it’s a windy Sunday afternoon and I was at a loose end I’ve made the following changes to one of my stock 4.0.6 installs:

1) Added a global $thisimage which works the same way as $thisfile / $thislink.

2) Added functions:

  • assert_image()
  • imageFetchInfo() — works like filedownloadFetchInfo()
  • image_format_info() — works like file_download_format_info() and adds the following to $thisimage:
    • date (a unixified date offset)
      thumbfilename
      thumbwidth
      thumbheight
      thumbdims
      filename
      width
      height
      dims

The ‘dims’ entries are the HTML width="x" height="y" string. These image_format_info() names are not fixed, some may not be needed and most should probably be renamed to fit the TXP naming convention better. Ideas?

3) Added public tags:

  • <txp:image_list>...</txp:image_list> — with form capability
  • <txp:image_name />
  • <txp:image_category />
  • <txp:image_url /> — has an optional attribute to get the url of the thumb
  • <txp:image_size /> — defaults to type="width, height". Has thumb attr to get the dimensions of the thumbnail and as_html to format the output as an HTML image string. join allows you to change what characters get put between the width and height (unless as_html is used, because that always sets join=" ")
  • <txp:image_alt />
  • <txp:image_caption />
  • <txp:image_author />
  • <txp:image_date /> — uses filedownloadFormatTime() because it can
  • <txp:image_link>...</txp:image_link>
  • <txp:if_thumbnail>...</txp:if_thumbnail> — standard conditional that supports <txp:else />
    <txp:image_id />
    <txp:image_ext />
    <txp:image_width />
    <txp:image_height />
    <txp:image_has_thumbnail />

4) Retrofitted <txp:image /> and <txp:thumbnail /> to work within a <txp:image_list /> form/container (i.e made them aware of $thisimage).

5) TODO, if this is an acceptable change to the core:

  • add error_image_context to txp_lang
  • Possibly add an undeletable form in an image category instead of relying on the horrible defaults stolen from <txp:image_index />. Set the form attr of image_list to this.
  • Perhaps as an alternative to a new image_list(), roll the functionality into image_index. Or perhaps deprecate <txp:image_index /> and/or <txp:image_display /> as they are largely pants (!)
  • Look at article_image?

Here are the two unified diffs if anybody fancies giving this a whirl and supplying feedback on whether:

  1. This is useful (or not)
  2. I’ve missed anything
  3. It might stand a chance of sneaking into the core one day

txplib_misc v1
taghandlers v1
taghandlers v2

Any thoughts or otherwise on this…? Any more consolidation of tags anyone can see as useful?

[Edited to add: I’ve just spotted r2892 that removes the unused $atts from functions. All the new single tags above should also have this treatment ] Fixed in v2

Last edited by Bloke (2008-10-22 00:43:50)


The smd plugin menagerie — for when you need one more gribble of power from Textpattern.

Txp Builders – finely-crafted code, design and Txp

Offline

#2 2008-06-22 18:51:14

ruud
Developer emeritus
From: a galaxy far far away
Registered: 2006-06-04
Posts: 4,490
Website

Re: Adding more consistent image functionality

image_format_info shouldn’t be needed. Al this info should be availably in the txp_image table.
I don’t think we should add that many tags. Most of them can probably be combined into one tag, using an attribute to select which type of information should be output.
<txp:image_has_thumbnail /> … shouldn’t that be an “if” tag (<txp:if_thumbnail />)?

  1. yes
  2. yes
  3. not in 4.0.7, but perhaps 4.0.8 (note: haven’t looked at the actual patch, just at what you posted here).

Offline

#3 2008-06-22 18:57:46

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 5,799
Website

Re: Adding more consistent image functionality

ruud wrote:

image_format_info shouldn’t be needed. Al this info should be availably in the txp_image table.

Fine by me. Was just copying what was there already.

I don’t think we should add that many tags.

Again, fine by me. Ditto above. It’s a fine line between one tag and a selector attribute vs lots of dedicated tags. That balance is up to the development team to decide. I’ll take suggestions as to which ones should be combined. Perhaps wet has some ideas…?

<txp:image_has_thumbnail /> … shouldn’t that be an “if” tag (<txp:if_thumbnail />)?

Probably :-) Well spotted, thanks.

Last edited by Bloke (2008-06-22 19:00:19)


The smd plugin menagerie — for when you need one more gribble of power from Textpattern.

Txp Builders – finely-crafted code, design and Txp

Offline

#4 2008-06-22 19:02:24

ruud
Developer emeritus
From: a galaxy far far away
Registered: 2006-06-04
Posts: 4,490
Website

Re: Adding more consistent image functionality

Perhaps combine <txp:image_ext /> and <txp:image_id /> into <txp:image_url />?

Offline

#5 2008-06-22 19:22:15

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 5,799
Website

Re: Adding more consistent image functionality

ruud wrote:

Perhaps combine <txp:image_ext /> and <txp:image_id /> into <txp:image_url />?

Done (in my dev, not in the link in the first post… more to do yet). if_thumbnail() is also done instead of image_has_thumbnail.

I might also combine width and height into a <txp:image_size /> with an attribute, say type, that allows you to select one or more of width / height to output. Also maybe an as_html attribute to output it as "width="x" / height="y".

One thing I would like to see is the ability to get the thumbnail dimensions too, which is primarily my reasoning behind using image_format_info to add that info which isn’t in the DB. But if it can be rolled into a tag such as image_size (thumb=1 or 0?) then all the better. Will see what’s possible.

Last edited by Bloke (2008-06-22 19:23:29)


The smd plugin menagerie — for when you need one more gribble of power from Textpattern.

Txp Builders – finely-crafted code, design and Txp

Offline

#6 2008-06-22 21:56:01

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 5,799
Website

Re: Adding more consistent image functionality

Updated the first post and uploaded v2 of the taghandlers diff which consolidates a few functions as ruud suggested. Any further thoughts from anyone, throw them this way.

The only thing I have found is that if a thumbnail doesn’t exist its width/height are set to "" (empty). Not sure of the correct way to handle this edge case; should the width/height be set to “0” instead? Anyone know? I can’t find any official word on whether it makes a difference.

It’s not a great hardship because <txp:if_thumbnail> can be used to circumvent displaying the info, but it’d be nice to do it “properly”.

Last edited by Bloke (2008-06-22 21:56:47)


The smd plugin menagerie — for when you need one more gribble of power from Textpattern.

Txp Builders – finely-crafted code, design and Txp

Offline

#7 2008-06-22 21:57:07

keith
Member
From: Blyth, Northumberland, England
Registered: 2004-12-08
Posts: 199
Website

Re: Adding more consistent image functionality

Yesyesyesyes!!!


Keith
Blyth, Northumberland, England
Capture The Moment

Offline

#8 2008-06-22 22:16:48

ruud
Developer emeritus
From: a galaxy far far away
Registered: 2006-06-04
Posts: 4,490
Website

Re: Adding more consistent image functionality

If a thumbnail doesn’t exist, it’s height and width have no meaning and shouldn’t be used, so it doesn’t matter what values height/width have in that situation.

Offline

#9 2008-06-22 22:29:23

thebombsite
Plugin Author
From: Exmouth, England
Registered: 2004-08-24
Posts: 3,251
Website

Re: Adding more consistent image functionality

Nice work Stef. It would be great if this could make 4.0.8. :)

It’s been windy here too.

Last edited by thebombsite (2008-06-22 22:30:01)


Stuart – The BombsiteProText ThemesTextgarden

In a Time of Universal Deceit
Telling the Truth is Revolutionary.

Offline

#10 2008-06-22 22:54:06

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 5,799
Website

Re: Adding more consistent image functionality

thebombsite wrote:

Nice work Stef. It would be great if this could make 4.0.8. :)

Thanks. Looks like I missed the boat for 4.0.7 :-( Shame because it would be mighty handy for my next major plugin, but these changes may need some heavy proving so it’s probably for the best.

For the most part I’ve copied existing functions from file_downloads / links and changed the references, so it should be a fairly solid base to work from. And I’ve only changed <txp:image /> and <txp:thumbnail /> the tiniest bit (4 lines each) to add a check to see if they’re being called from within the new <txp:image_list /> tag. Everything else is a new public-side tag so shouldn’t impact any of the existing core, nor anything on the admin side.

Anyone willing to give it a go and report any problems will be a massive help towards making this stable enough to consider for inclusion in the core. BTW, if anyone wants the complete taghandlers/txplib_misc.php (instead of the diff), e-mail me. Just remember it’s been written against a stock 4.0.6 so is probably not wise to replace any SVN version you may have.

And of course if you have any ideas for functionality/mods, let’s make a list and see if there’s anything missing or anything that should be taken out/consolidated. I would guess a good reference point is upm_image since that’s pretty much what everyone (aside from me, it seems) uses and is, from what I can gather, how images should be. Must get myself a copy and have a look one day.

It’s been windy here too.

Yeah, our poor vegetables have taken a real hammering today but I think they’ve mostly survived… I hope.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern.

Txp Builders – finely-crafted code, design and Txp

Offline

Board footer

Powered by FluxBB