<?
class FormModule implements charcoal_IModule
{
	/*
	 *    コンストラクタ
	 */
	public function __construct()
	{
	}

	/*
	 * モジュール名
	 */
	public function getModuleName()
	{
		return "Form module";
	}

	/*
	 * モジュールを初期化する
	 */
	public function init( charcoal_Config $config )
	{
	}

	/*
	 * モジュールの処理を実行する
	 */
	public function execute( $action, charcoal_Request $request, charcoal_ProcedureContext $context, charcoal_Response $response )
	{

		$form = $context->getForm( 'entry_form' );

		switch ( $action ){
		case 'input':
			{
				// サンプルデータ
				$dto = new charcoal_DTO();

				$dto->first_name = 'ちゃこ';
				$dto->account = 'charcoal';
				$dto->password = 'charcoal';
				$dto->opinion = 'ご意見をどうぞ！';

				// フォームにDTOを入力
				$form->inputDTO( $dto, new EntryFormModel() );

				// HTMLオブジェクトに変換
				$form_object = $form->toHTMLObject();
			}
			break;
		case 'confirm':
			{
				// POSTデータをフォームに入力
				$form->inputRequest( $request );

				// HTMLオブジェクトに変換
				$form_object = $form->toHTMLObject( TRUE );
			}
			break;
		default:
			throw new NullPointerException();
		}

		// レスポンスオブジェクトにセット
		$response->set( 'form', $form_object );

		// テンプレートIDのセット: top_pageテンプレートを使用
		$context->set( "smarty_template", "top_page" );
	}
}
