project = $extra['project']; $members = $this->project->getMembershipData('string'); $conf = $this->project->getConf(); $this->fields['name'] = new Pluf_Form_Field_Varchar( array('required' => true, 'label' => __('Name'), 'initial' => $this->project->name, )); $this->fields['shortdesc'] = new Pluf_Form_Field_Varchar( array('required' => true, 'label' => __('Short description'), 'help_text' => __('A one line description of the project.'), 'initial' => $this->project->shortdesc, 'widget_attrs' => array('size' => '35'), )); if ($this->project->getConf()->getVal('scm') == 'mtn') { $this->fields['mtn_master_branch'] = new Pluf_Form_Field_Varchar( array('required' => false, 'label' => __('Master branch'), 'initial' => $conf->getVal('mtn_master_branch'), 'widget_attrs' => array('size' => '35'), 'help_text' => __('This should be a world-wide unique identifier for your project. A reverse DNS notation like "com.my-domain.my-project" is a good idea.'), )); } $this->fields['owners'] = new Pluf_Form_Field_Varchar( array('required' => false, 'label' => __('Project owners'), 'initial' => $members['owners'], 'widget' => 'Pluf_Form_Widget_TextareaInput', 'widget_attrs' => array('rows' => 5, 'cols' => 40), )); $this->fields['members'] = new Pluf_Form_Field_Varchar( array('required' => false, 'label' => __('Project members'), 'initial' => $members['members'], 'widget_attrs' => array('rows' => 7, 'cols' => 40), 'widget' => 'Pluf_Form_Widget_TextareaInput', )); } public function clean_mtn_master_branch() { $mtn_master_branch = mb_strtolower($this->cleaned_data['mtn_master_branch']); if (!preg_match('/^([\w\d]+([-][\w\d]+)*)(\.[\w\d]+([-][\w\d]+)*)*$/', $mtn_master_branch)) { throw new Pluf_Form_Invalid(__( 'The master branch is empty or contains illegal characters, '. 'please use only letters, digits, dashes and dots as separators.' )); } $sql = new Pluf_SQL('vkey=%s AND vdesc=%s AND project!=%s', array('mtn_master_branch', $mtn_master_branch, (string)$this->project->id)); $l = Pluf::factory('IDF_Conf')->getList(array('filter'=>$sql->gen())); if ($l->count() > 0) { throw new Pluf_Form_Invalid(__( 'This master branch is already used. Please select another one.' )); } return $mtn_master_branch; } public function clean_owners() { return IDF_Form_MembersConf::checkBadLogins($this->cleaned_data['owners']); } public function clean_members() { return IDF_Form_MembersConf::checkBadLogins($this->cleaned_data['members']); } public function save($commit=true) { if (!$this->isValid()) { throw new Exception(__('Cannot save the model from an invalid form.')); } IDF_Form_MembersConf::updateMemberships($this->project, $this->cleaned_data); $this->project->membershipsUpdated(); $this->project->name = $this->cleaned_data['name']; $this->project->shortdesc = $this->cleaned_data['shortdesc']; $this->project->update(); $keys = array('mtn_master_branch'); foreach ($keys as $key) { if (!empty($this->cleaned_data[$key])) { $this->project->getConf()->setVal($key, $this->cleaned_data[$key]); } } } }