I'm using Fancybox and Zend. Hope the following is clear.
On www.example.com/template/edit/id/3 I have jQuery UI Tabs. They are reachable directly via anchors. E.g. www.example.com/template/edit/id/3#tabs-2
On #tabs-2 I have some elements, doesn't matter what it is exactly. You can create or edit them. This elements got a own controller, so for editing them you call /elements/edit/id/44. Currently, I'm doing that in a Layer with Fancybox. I'm using the Iframe functionality of Fancybox for that.
So, if you are on /template/edit and you click on the edit button of an element, a layer opens which includes an iframe which loads /elements/edit.
So, if you change the element now and click on save, i want the layer to automatically close and reload.
Fancybox provides an option to specify what it should do when it gets closed. At the moment i got it like that:
'onClosed' : function() {window.location.reload();}
This actually reloads the top window and not the iframe. Also, there's a possibility to close Fancybox via JS. I'm doing that by setting a View Variable which triggers this, e.g:
<?php if($this->close): ?>
<script type="text/javascript">
parent.$.fancybox.close();
</script>
<?php endif ?>
So, if the saving was successfully I set $this->view->close = true and the layer gets clsoed which triggers my JS.
This works fine. My Problem now is to do the reloading with having #tabs-2 in my url.
Of course i could get the urls, clean it up from other anchors the user my typed in etc. and build my url which i set to the window's location, but somehow i think, there must be an easier solution.
E.g. setting the url of the browser to #tabs-2 without reloading, but this also sounds not very nice. The reloading is easy but having the anchor there is quite tricky.
window.location.href = "#tabs-2"
ReplyDeleteMaybe:
<script type="text/javascript">
parent.$.fancybox.close();
window.location.href = "#tabs-2" //Add the anchor, won't stack. Will replace existing anchor
window.location.reload() //Refresh the screen, maintain anchor
</script>