| 'cols' => 40),␊ |
| 'widget' => 'Pluf_Form_Widget_TextareaInput',␊ |
| ));␊ |
| ␊ |
| $projects = array('--' => '--');␊ |
| foreach (Pluf::factory('IDF_Project')->getList(array('order' => 'name ASC')) as $proj) {␊ |
| $projects[$proj->name] = $proj->shortname;␊ |
| }␊ |
| $this->fields['template'] = new Pluf_Form_Field_Varchar(␊ |
| array('required' => false,␊ |
| 'label' => __('Project template'),␊ |
| 'initial' => '--',␊ |
| 'help_text' => __('Use the given project to initialize the new project. Access rights and general configuration will be taken from the template project.'),␊ |
| 'widget' => 'Pluf_Form_Widget_SelectInput',␊ |
| 'widget_attrs' => array('choices' => $projects),␊ |
| ));␊ |
| ␊ |
| /**␊ |
| * [signal]␊ |
| *␊ |
|
| $this->cleaned_data[$key] : '';␊ |
| $conf->setVal($key, $this->cleaned_data[$key]);␊ |
| }␊ |
| if ($this->cleaned_data['template'] != '--') {␊ |
| // Find the template project␊ |
| $sql = new Pluf_SQL('shortname=%s', ␊ |
| array($this->cleaned_data['template'])); ␊ |
| $tmpl = Pluf::factory('IDF_Project')->getOne(array('filter' => $sql->gen()));␊ |
| $tmplconf = new IDF_Conf();␊ |
| $tmplconf->setProject($tmpl);␊ |
| // We need to get all the configuration variables we want from␊ |
| // the old project and put them into the new project.␊ |
| $props = array(␊ |
| 'labels_download_predefined',␊ |
| 'labels_download_one_max',␊ |
| 'labels_wiki_predefined',␊ |
| 'labels_wiki_one_max',␊ |
| 'labels_issue_open',␊ |
| 'labels_issue_closed',␊ |
| 'labels_issue_predefined',␊ |
| 'labels_issue_one_max',␊ |
| 'webhook_url',␊ |
| 'downloads_access_rights',␊ |
| 'review_access_rights',␊ |
| 'wiki_access_rights',␊ |
| 'source_access_rights',␊ |
| 'issues_access_rights',␊ |
| 'downloads_notification_email',␊ |
| 'review_notification_email',␊ |
| 'wiki_notification_email',␊ |
| 'source_notification_email',␊ |
| 'issues_notification_email',␊ |
| );␊ |
| foreach ($props as $prop) {␊ |
| $conf->setVal($prop, $tmplconf->getVal($prop));␊ |
| }␊ |
| }␊ |
| $project->created();␊ |
| IDF_Form_MembersConf::updateMemberships($project, ␊ |
| $this->cleaned_data);␊ |
| if ($this->cleaned_data['template'] == '--') {␊ |
| IDF_Form_MembersConf::updateMemberships($project, ␊ |
| $this->cleaned_data);␊ |
| } else {␊ |
| // Get the membership of the template $tmpl␊ |
| IDF_Form_MembersConf::updateMemberships($project, ␊ |
| $tmpl->getMembershipData('string'));␊ |
| }␊ |
| $project->membershipsUpdated();␊ |
| return $project;␊ |
| }␊ |
| ␊ |
| /**␊ |
| * Check that the template project exists.␊ |
| */␊ |
| public function clean_template()␊ |
| {␊ |
| if ($this->cleaned_data['template'] == '--') {␊ |
| return $this->cleaned_data['template'];␊ |
| }␊ |
| $sql = new Pluf_SQL('shortname=%s', array($this->cleaned_data['template'])); ␊ |
| if (Pluf::factory('IDF_Project')->getOne(array('filter' => $sql->gen())) == null) {␊ |
| throw new Pluf_Form_Invalid(__('This project is not available.'));␊ |
| }␊ |
| return $this->cleaned_data['template'];␊ |
| }␊ |
| }␊ |
| ␊ |
| ␊ |