Why don't you use activators? I'm not very experienced in scripting nor in the capabilities of the vanilla scripting language; you might need OBSE for what I am about to propose but again, I'm not sure. With some imagination, you can do some pretty neat stuff with vanilla Oblivion, unlike many people think.
You could use an activator that, once activated (), would check your inventory for the necessary items for, say, repair the hole on the ground (let's use this example from now on). If you had all the items needed, it would be repaired and a message would pop-up to attest to that; or it could happen in phases but that would require more than two meshes (one mesh for the hole, one mesh for the repaired floor, more meshes if you want the intermediate steps).
If the player didn't have the necessary items (none or just missing a few), a message could show up (not a message box; on one of those that shows on the top left corner) saying the player needs the materials and/or the tools for the job (depending on what the player has).
This would serve the same purpose as the container but without the dialogue box that comes with it. Think of it like the ritual to rebuild the Gatekeeper in Shivering Isles: once you have all the items, you step into the pool and the game removes the items you collected and that will serve to rebuild the Gatekeeper.
As for the last point, I think the player should need to activate the hole again once he acquires the rest of the tools/materials. That's what makes the most sense in my head.
I hope I helped.