X-Git-Url: https://dev.renevier.net/gitweb.cgi?a=blobdiff_plain;f=application%2Fforms%2FGeom.php;h=64a08bf5126b866f19289e06dd2a6a28dd327b3c;hb=6633e95b89c1d1eba9b7b0e612becaf11b085d69;hp=751d7982b08e164fad2d99476446dea58797ad9a;hpb=190fd621df4920c56a422c03663874cddaa67d64;p=syj.git
diff --git a/application/forms/Geom.php b/application/forms/Geom.php
index 751d798..64a08bf 100644
--- a/application/forms/Geom.php
+++ b/application/forms/Geom.php
@@ -1,35 +1,90 @@
array('decorator' => 'FormElements', 'options' => null),
'Form' => array('decorator' => 'Form', 'options' => null)
);
- public function init() {
- $id = array('Hidden', 'geom_id');
- $data = array('Hidden', 'geom_data', array('required' => true));
+ public function __construct($options = null) {
+ $translator = $this->getTranslator();
+
+ $data = array('Hidden', 'geom_data', array('required' => true, 'decorators' => array('ViewHelper', 'Errors')));
+
+ $upload = array('File', 'geom_upload', array("label" => $translator->translate("choose route from a file"),
+ 'validators' => array(),
+ 'ignoreNoFile' => true,
+ 'decorators' => array(
+ 'File',
+ 'Errors',
+ array('Label', array('separator' => '
')),
+ array('HtmlTag', array('tag' => 'div', 'id' => 'geom_upload_container')),
+ )));
$title = array('Text', 'geom_title', array(
'label' => __("optional title for this journey"),
'attribs' => array('maxlength' => '40', 'size' => '20'),
- 'validators' => array(new Zend_Validate_StringLength(0, 40))
- ));
- $submit = array('Submit', 'geom_submit', array('label' => __("save")));
+ 'validators' => array(new Zend_Validate_StringLength(0, 40)),
+ 'decorators' => array(
+ 'ViewHelper',
+ 'Errors',
+ array('Label', array('separator' => '
')),
+ array('HtmlTag', array('tag' => 'div', 'id' => 'geom_title_container')),
+ )));
- $this->addElements(array($id, $data, $title, $submit));
+ $anchor = $this->getView()->Anchor("termsofuse?format=raw",
+ $translator->translate("terms of use"),
+ array('id' => 'geom_termsofuse_anchor'));
+ $text = $translator->translate("I've read and accepted %s");
+ $text = vsprintf($text, $anchor);
+ $touaccept = array('Checkbox', 'geom_accept', array("label" => $text,
+ 'helper' => 'SyjFormCheckbox', // similar to FormCheckbox without a hidden input
+ 'decorators' => array(
+ 'ViewHelper',
+ 'label',
+ array('HtmlTag', array('tag' => 'div', 'id' => 'geom_accept_container', 'class' => 'logged-hide')))));
- // fieldset around title
- //$this->addDisplayGroup(array('geom_title'), 'metadata', array('decorators' => array('FormElements', 'Fieldset')));
+ $submit = array('Submit', 'geom_submit', array('label' => __("save"), 'decorators' => array(
+ 'ViewHelper',
+ 'Errors',
+ array('HtmlTag', array('tag' => 'br', 'openOnly' => true)))));
+ $this->addElements(array($data, $upload, $title, $touaccept, $submit));
- $this->geom_title->addDecorator('HtmlTag', array('tag' => 'br', 'openOnly' => true))->
- addDecorator('label');
- $this->geom_submit->addDecorator('HtmlTag', array('tag' => 'br', 'openOnly' => true));
+ $decorator = $this->geom_accept->getDecorator('Zend_Form_Decorator_Label');
+ $decorator->setOption('escape', false);
+ parent::__construct($options);
}
+
+ public function process(&$data) {
+ $upload = null;
+ if ($this->getValue("geom_upload")) {
+ $file = $this->geom_upload;
+ $upload = $file->getDestination() . DIRECTORY_SEPARATOR . $file->getValue();
+
+ if (!isset($data["geom_data"]) || !$data["geom_data"]) {
+ if (!file_exists($upload)) {
+ throw new Zend_Exception();
+ }
+ if (!@filesize($upload)) {
+ throw new Syj_Exception_InvalidGeomUpload();
+ }
+ $content = @file_get_contents ($upload);
+ if ($content == false) {
+ throw new Zend_Exception();
+ }
+ $data['geom_data'] = $content;
+ }
+ @unlink ($upload);
+ } else if (isset($_FILES['geom_upload']) and ($_FILES['geom_upload']['error']) == UPLOAD_ERR_INI_SIZE) {
+ throw new Syj_Exception_ToolargeGeomUpload();
+ } else {
+ $this->removeElement("geom_upload");
+ }
+ return $this;
+ }
+
}