refinery/refinerycms-page-images

Last image is still shown in FrontEnd after deletion

Closed this issue · 7 comments

Inza commented

I encountered an issue in the page-images engine.

When I add some images to a page (even only one) and then I deleted it from the administration, it is still shown in the front end.

Maybe I use bad method for showing images in the front end, or there is a bug? Not sure.

I use the following code for showing images in the front end:

<% if @page.images.length>0 %>
    <% @page.images.each do | el | %>
        <img src="<%=  el.thumbnail("772x550").url %>" alt="" />
    <% end %>
<% end %>

Do you have any idea what am I doing wrong? Or can you confirm that there really is some issue? Thx!

I use:

  • ruby 1.9.2p290 (2011-07-09 revision 32553
  • rails (3.0.11)
  • refinerycms (1.0.9)
  • refinerycms-images (1.0.9)
  • refinerycms-page-images (1.0.4 b304279)

I'm not sure.. are you sure you saved the page? Year old issue so maybe you fixed it already..

This does still happen.

If you have only one image on the page, trying to delete it doesn't work. The javascript removes it from the view, but saving the page does not delete the image from the page. If you edit the page again, the image is back.

Yeah just stumbled on this issue. It's not a super easy one because of the way the plugin is architectured. Since there are no inputs left, the form does not submit anything for images, therefore no images are getting deleted. We want to submit an empty array through POST, but I'm not sure you can do this with Rails / Rack. Another option would be to change the plugin and use _destroy attribute rather than fancy deleting logic, but that's basically changing the HTTP API and could be backward incompatible.

I'll look into it tomorrow, but it's most likely not going to be pretty. If anyone sees an easy fix, I'd be glad to hear.

I think that using _destroy would be the best, personally.. if that's possible.

@parndt It of course would be better. Honestly, this plugin is really hard to maintain and breaks a lot of conventions all over the place.

I tried to quickly implement a fix using _destroy, but that basically means changing pretty much all the logic in the backend, the frontend, and how the images are associated. I decided to add a little patch on the pile rather than rewriting the plugin from the ground up. Sorry about that.

@jbourassa seems like it works though, care to open a pull request?

The first one is a mistake =( I tried something but it didn't quite turn out as I expected.