'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'];␊ |
}␊ |
}␊ |
␊ |
␊ |