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

Reply via email to