Sorry, that didn't come through quite right. See
http://www.paste2.org/p/81737 instead.

Matthew Lurz wrote:
> 
> I wouldn't include the image in the form at all actually. Instead I would
> just wrap a conditional around a div in the view script. Something like:
> 
> <? if (this->image): ?>
> 
> <div> "<?= $this- image->src ?>"></div>
> 
> <? endif ?>
> 
> <?= $this->form ?>
> 
> 
> Edward Haber wrote:
>> 
>> That does sound like a better solution to me. Also, the link in the  
>> form could frustrate some users if they've partially completed the  
>> form then delete the image. Thanks for your comments.
>> 
>> So then the best solution appears to be a decorator.
>> 
>> 
>> On Oct 3, 2008, at 1:28 PM, Matthew Lurz wrote:
>> 
>>>
>>> In that case why not forego the remove action and the additional  
>>> form logic
>>> and just display the form regardless of whether the image exists.  
>>> When the
>>> user uploads a new image it would replace the existing one. Just  
>>> wondering
>>> since it seems like the user would have to jump through an extra  
>>> hoop to
>>> remove the image in order to upload a new one. The less a user does  
>>> or has
>>> to do the better.
>>>
>>>
>>> Edward Haber wrote:
>>>>
>>>> Here's the solution I came up with. Thanks for all the input and help
>>>> on this problem. This solution involves using a conditional statement
>>>> in Zend_Form to create one of two element types. When the image is
>>>> present the view helper decorator replaces the form element with the
>>>> image and a link to a remove action. The view helper is below and  
>>>> will
>>>> still be tweaked a bit but it should give the overall idea. This form
>>>> class snippet has all the other elements removed from it for clarity
>>>>
>>>>
>>>> class MyForm extends Zend_Dojo_Form
>>>> {
>>>>    public function __construct($options = null)
>>>>    {
>>>>            parent::__construct($options);
>>>>
>>>>            $db = Zend_Registry::get('db');
>>>>            
>>>>            $this->setName('article_form')
>>>>                    ->setAction(URL.'/admin/article/save')
>>>>                    ->setMethod('post')
>>>>                    ->addPrefixPath('MF_Form_Element', 'MF/Form/Element/', 
>>>> 'element')
>>>>                    ->setAttrib('enctype', 'multipart/form-data')
>>>>                    ->setAttrib('id', 'article-form');
>>>>            
>>>>
>>>>            /**
>>>>             * image_name
>>>>             */
>>>>            if ($options['image_id']) {
>>>>
>>>>                    $this->addElement('file', 'image_name', array(
>>>>                            'label' => 'Image',
>>>>                            'description' => 'To upload another photo 
>>>> delete this one  
>>>> first.',
>>>>                            'attribs' => array(
>>>>                                            'imgSrc' => URL . 
>>>> '/media/articles/' . $options['image_id'] .
>>>> '.jpg',
>>>>                                            'action' => URL . 
>>>> '/admin/article/drop-image/' .
>>>> $options['image_id']
>>>>                                    ),
>>>>                            'decorators' => array(
>>>>                                            array('ViewHelper', 
>>>> array('helper' => 'mediaImage')),
>>>>                                            'Errors',
>>>>                                            'Description',
>>>>                                            array('HtmlTag', array('tag' => 
>>>> 'dd')),
>>>>                                            array('Label', array('tag' => 
>>>> 'dt'))
>>>>                                    )
>>>>                    ));
>>>>            
>>>>            } else {
>>>>                    
>>>>                    $this->addElement('file', 'image_name', array(
>>>>                            'label' => 'Upload an image',
>>>>                            'destination' => AP . 
>>>> '/application/tmp/upload-staging',
>>>>                            'required' => true,
>>>>                            'validators' => array(
>>>>                                            array('Size', '500Kb'),
>>>>                                            array('ImageSize', array(10, 
>>>> 10, 1024, 768)),
>>>>                                            array('Extension', array('jpg', 
>>>> 'jpeg'))
>>>>                                    )
>>>>                    ));
>>>>                    
>>>>            }
>>>>
>>>> (other form elements removed)
>>>>
>>>> Then I use this helper:
>>>>
>>>> class MF_View_Helper_MediaImage
>>>> {
>>>>    public function mediaImage($fieldname, $value = "", $attribs = null)
>>>>    {
>>>>            $imgSrc = $attribs['imgSrc'];
>>>>            $action = $attribs['action'];
>>>>            $class = isset($attribs['class']) ? $attribs['class'] : 'image-
>>>> remove-button';
>>>>            
>>>>            return <<<OUTPUT
>>>>                     $imgSrc  |  $action Delete
>>>> OUTPUT;
>>>>    }
>>>> }
>>>>
>>>> This will pretty much be a reusable solution for the four CMS media
>>>> subdirectories of image content and seems to work just fine. Happy  
>>>> for
>>>> any comments.
>>>>
>>>> EH
>>>>
>>>>
>>>> On Oct 3, 2008, at 8:12 AM, Matthew Lurz wrote:
>>>>
>>>>>
>>>>> I would keep the image separate from the form unless you have a good
>>>>> reason
>>>>> not to. Then the logic is simple. Display the image if it exists, if
>>>>> not
>>>>> then display the form. Of course you would need an action to delete
>>>>> the
>>>>> image so that the form could be redisplayed.
>>>>>
>>>>>
>>>>> Edward Haber wrote:
>>>>>>
>>>>>> Definitely view logic. Good call. Still I'm uncertain though  
>>>>>> because
>>>>>> I'm working with an extended Zend_Form class. Perhaps I should  
>>>>>> make a
>>>>>> custom Form Element? Or a custom Form Decorator? Or use the view
>> 
>>>>>> helper decorator for just that element? I'd love to hear the Zend
>>>>>> best
>>>>>> practice take on this solution.
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Oct 2, 2008, at 10:50 PM, Matthew Lurz wrote:
>>>>>>
>>>>>>>
>>>>>>> Sounds like view logic to me and so I would add a conditional in  
>>>>>>> the
>>>>>>> view
>>>>>>> script.
>>>>>>>
>>>>>>>
>>>>>>> Edward Haber wrote:
>>>>>>>>
>>>>>>>> I have a form that I want offer an image upload form element on.
>>>>>>>> This
>>>>>>>> has worked great using Zend_Form_Element_File. The upload works
>>>>>>>> fine.
>>>>>>>> What is the recommended way to have the uploaded image replace  
>>>>>>>> the
>>>>>>>> upload form if an image exists? I don't need the solution coded,
>>>>>>>> just
>>>>>>>> the direction I should go.
>>>>>>>>
>>>>>>>> For example, I have the form as a class. SHould I pass the image
>>>>>>>> name
>>>>>>>> (if one exists) in the config array to the form? In the form i
>>>>>>>> would
>>>>>>>> then check for $config['imageName'] and if it exists display the
>>>>>>>> image
>>>>>>>> in place of the form element. This is another trick - how do
>>>>>>>> display
>>>>>>>> an image in a form?
>>>>>>>>
>>>>>>>> Is the answer toggling in the form class between the form element
>>>>>>>> and
>>>>>>>> an image? Or using CSS to display the image if it's there and
>>>>>>>> "hide"
>>>>>>>> the form (display:none for example).
>>>>>>>>
>>>>>>>> I'm just looking for best practice. I'm sure lots of people have
>>>>>>>> already confronted this situation. Any input much appreciated!
>>>>>>>> Thanks!
>>>>>>>>
>>>>>>>> Eddie
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> -- 
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19791263.html
>>>>>>> Sent from the Zend Framework mailing list archive at Nabble.com.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> -- 
>>>>> View this message in context:
>>>>> http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19796584.html
>>>>> Sent from the Zend Framework mailing list archive at Nabble.com.
>>>>>
>>>>
>>>>
>>>>
>>>
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19802308.html
>>> Sent from the Zend Framework mailing list archive at Nabble.com.
>>>
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Toggle-file-upload-element-with-uploaded-image-tp19780259p19803976.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to