Thank you, that's extremely helpful, exactly what I was looking for. I'll try it out... may be back with questions!
Regards, Sharon On Jan 21, 9:01 pm, cricket <zijn.digi...@gmail.com> wrote: > On Fri, Jan 21, 2011 at 9:05 AM, WhyNotSmile <sharongilmor...@gmail.com> > wrote: > > In my admin area, I would like to give the user the option to > > 'Preview' the page they are creating or editing. I just can't quite > > get my head around how to do it, so wondered if anyone can advise me. > > > Ideally, here's what I'd like: the user is editing a page in the admin > > area, and at any time can click a button which says 'Preview'. This > > opens a new window which shows what the page would look like if the > > current information was saved. The user can close the window, edit > > the page some more, and preview it as much as they want. > > > The issue is this: > >> If I use a 'Preview' button, I can send the current data to the controller > >> and show a page with that data. However, this doesn't let me open the > >> page in a new window. I don't really want the user to have to use the > >> back button, as that interrupts the flow of the process. > >> If I use a Preview link, I can open a new window, but cannot send the data > >> to the page for display. > > > Has anyone done this before, and can you suggest how I might go about > > it? Would I need to use javascript or ajax? I haven't used Ajax > > before, although I'm happy enough with javascript. > > I've done this. It was for an HTML newsletter (yuk!) and I included a > preview button which did exactly this. I used JQuery and the form > plugin to submit the form with AJAX. > > $('#newsletter_preview_btn').click(function(e) > { > showIndicator('body'); > > /* allow editor to update itself > */ > $.wymeditors(0).update(); > > $(this).parents('form').ajaxSubmit({ > url: '/admin/newsletter/preview', > error: function(XMLHttpRequest, textStatus, errorThrown) > { > alert(textStatus); > }, > success: function(responseText) > { > hideIndicator(); > > $('#newsletter_modal').jqmShow().find('#newsletter_modal_content').html(responseText); > } > }); > > e.preventDefault(); > > }); > > So, here, I was using WYMEditor for the markup and JQModal for the > pop-up. Not what I'd use today but this was quite a while ago. > > public function admin_preview($id = null) > { > Configure::write('debug', 0); > $this->layout = 'email/html/newsletter'; > $this->viewPath = 'elements/email/html'; > > if (!empty($this->data)) > { > $this->Newsletter->save($this->data); > $newsletter = $this->Newsletter->read(null, $id); > } > else if (isset($id)) > { > $newsletter = $this->Newsletter->read(null, $id); > } > else > { > return null; > } > > $this->set( > 'newsletter', > $this->Newsletter->prepareForDelivery($newsletter) > ); > $this->render('newsletter'); > > } > > The prepareForDelivery() method just did a bunch of str_replace() to > add inline CSS, etc. I really loathe HTML email. -- Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions. To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php