<?php

Goweb::loadClass('Cms_BaseComponent', ADMIN_PATH);
Goweb::loadClass('Goweb_Form');

/**
 * Goweb Sitemanager 5 Framework
 * @version    5.0.0
 * @category   Frontoffice
 * @package    Form
 * @subpackage Component
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
 * @copyright  2009 (c) Goweb (http://www.goweb.pt)
 *
 * As classes _Component sao responsaveis pela interface backoffice x frontoffice
 * atraves da insercao de componentes via RTE.
 *
*/
class Form_Component extends Cms_BaseComponent {
    
    /**
     * Este metodo informa ao sistema quais as accoes permitidas para este
     * modulo. Todas as acoes aqui definidas devem ser implementadas no
     * _Controller do modulo.
    */
    public function init() {
    	parent::init();
        $this->_actions = array('view'      => array('title'  => translateAdmin('Inser&ccedil;&atilde;o de formul&aacute;rio'),
                                                     'helper' => translateAdmin('Inserir formul&aacute;rio criado.')),
                                'formPopup' => array('title'  => translateAdmin('Inserir link para formul&aacute;rio'),
                                                     'helper' => translateAdmin('Componente para a inser&ccedil;&atilde;o de links para a exibi&ccedil;&atilde;o de formul&aacute;rios em formato Pop-up.')));
    }

    /**
     * Componente para visualizar um formaulario registado no sistema
    */
    public function viewAction() {
        // "id" - ID do formul&aacute;rio
        $form = new Goweb_Form('formularios');
        
        $form->id = $form->Select();
        $form->id->label = translateAdmin('Formul&aacute;rio a ser mostrado');
        
        $formModel = Goweb::getModelInstance('Form_Model_Form', 'db');
        $formularios = $formModel->fetchAll(array('id', 'titulo'));
        $options = array();
        
        if ($formularios) {
            foreach ($formularios as $formulario) {
                $options[$formulario->id] = htmlentities($formulario->titulo);
            }
        }
        
        $form->id->options = $options;
        $form->id->validators->Required(translateAdmin('O campo <b>{{campo}}</b> &eacute; de preenchimento obrigat&oacute;rio.', $form->id->label));
        return $form;
    }
    
    /**
     * Componente para visualizar um link que ira permitir ao utilizador
     * abrir o formulario em uma nova janela.
    */
    public function formPopupAction() {
        $form = new Goweb_Form('formularios');
        
        $form->id = $form->Select();
        $form->id->label = translateAdmin('Formul&aacute;rio a ser mostrado');
        
        $formModel = Goweb::getModelInstance('Form_Model_Form', 'db');
        $formularios = $formModel->fetchAll(array('id', 'titulo'));
        $options = array();
        if ($formularios) {
            foreach ($formularios as $formulario) {
                $options[$formulario->id] = htmlentities($formulario->titulo);
            }
        }
        $form->id->options = $options;
        $form->id->validators->Required(translateAdmin('O campo <b>{{campo}}</b> &eacute; de preenchimento obrigat&oacute;rio.', $form->id->label));
        
        $form->height = $form->Text(array('label' => translateAdmin('Altura da Janela')));
        
        $form->width  = $form->Text(array('label' => translateAdmin('Largura da Janela')));
                
        return $form;
    }
}