4 * Project Registration: Project Information.
6 * This page is used to request data required for project registration:
7 * o Project Public Name
8 * o Project Registartion Purpose
10 * o Project Public Description
12 * All these data are more or less strictly validated.
14 * This is last page in registartion sequence. Its successful subsmission
15 * leads to creation of new group with Pending status, suitable for approval.
17 * Portions Copyright 1999-2001 (c) VA Linux Systems
18 * Portions Copyright 2002-2004 (c) GForge Team
19 * Portions Copyright 2002-2009 (c) Roland Mas
22 * This file is part of GForge.
24 * GForge is free software; you can redistribute it and/or modify
25 * it under the terms of the GNU General Public License as published by
26 * the Free Software Foundation; either version 2 of the License, or
27 * (at your option) any later version.
29 * GForge is distributed in the hope that it will be useful,
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32 * GNU General Public License for more details.
34 * You should have received a copy of the GNU General Public License
35 * along with GForge; if not, write to the Free Software
36 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
40 require_once('../env.inc.php');
41 require_once $gfwww.'include/pre.php';
42 require_once $gfcommon.'scm/SCMFactory.class.php';
44 // Test if restricted project registration
46 if ($sys_project_reg_restricted) {
47 session_require(array('group'=>'1','admin_flags'=>'A'),
48 sprintf (_('Project registration is restricted on %s, and only administrators can create new projects.'),
49 forge_get_config ('forge_name')));
50 } elseif (!session_loggedin()) {
54 if (getStringFromRequest('submit')) {
55 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
56 exit_form_double_submit();
59 $full_name = trim(getStringFromRequest('full_name'));
60 $purpose = trim(getStringFromRequest('purpose'));
61 $description = trim(getStringFromRequest('description'));
62 $unix_name = trim(strtolower(getStringFromRequest('unix_name')));
63 $scm = getStringFromRequest('scm');
64 $is_public = getIntFromRequest('is_public');
67 if ($sys_use_scm && !$scm) {
68 form_release_key(getStringFromRequest("form_key"));
69 // $feedback .= _('Site has SCM enabled, but no SCM was chosen.');
73 if ($sys_use_scm && $scm && $scm != 'noscm') {
74 $plugin = plugin_get_object($scm);
76 $scm_host = $plugin->getDefaultServer();
80 if ( !$purpose && ($sys_project_reg_autoapprove == true) ) {
81 $purpose = 'No purpose given, autoapprove was on';
85 $u =& session_get_user();
86 $res = $group->create(
96 if ($res && $sys_use_scm && $plugin) {
97 $group->setUsesSCM (true) ;
98 $res = $group->setPluginUse ($scm, true);
100 $group->setUsesSCM (false) ;
104 form_release_key(getStringFromRequest("form_key"));
105 $feedback .= $group->getErrorMessage();
107 $HTML->header(array('title'=>_('Registration complete')));
109 if ( $sys_project_reg_autoapprove != true ) {
110 printf(_('<p>Your project has been submitted to the %1$s administrators. Within 72 hours, you will receive notification of their decision and further instructions.<p/>Thank you for choosing %1$s</p>'), forge_get_config ('forge_name'));
111 } else if ($group->isError()) {
112 printf(_('<p>ERROR: %1$s</p>'), $group->getErrorMessage() );
114 printf(_('Approving Project: %1$s'), $group->getUnixName()).'<br />';
116 if (!$group->approve( user_get_object_by_name ( $sys_project_reg_autoapprove_user ) ) ) {
117 printf(_('<p>Approval ERROR: %1$s</p>'), $group->getErrorMessage() );
119 $hook_params = array () ;
120 $hook_params['group_id'] = $group_id ;
121 plugin_hook ("group_approved", $hook_params) ;
123 plugin_hook('add_cal_group',$group_id);
125 printf(_('<p>Your project has been automatically approved. You should receive an email containing further information shortly.<p/>Thank you for choosing %1$s</p>'), forge_get_config ('forge_name'));
129 $HTML->footer(array());
133 } else if (getStringFromRequest('i_disagree')) {
134 session_redirect("/");
144 site_header(array('title'=>_('Register Project')));
145 echo '<h1>' . _('Register Project') . '</h1>';
148 <p><?php echo _('To apply for project registration, you should fill in basic information about it. Please read descriptions below carefully and provide complete and comprehensive data. All fields below are mandatory.') ?>
151 <form action="<?php echo getStringFromServer('PHP_SELF'); ?>" method="post">
152 <input type="hidden" name="form_key" value="<?php echo form_generate_key(); ?>"/>
155 echo '<h3>'.$index.'. '._('Project full name').'</h3>';
156 echo _('You should start with specifying the name of your project. The "Full Name" is descriptive, and has no arbitrary restrictions (except a 40 character limit).<p/>Full Name:<br/>'); ?>
158 <input size="40" maxlength="40" type="text" name="full_name" value="<?php echo htmlspecialchars($full_name); ?>"/>
161 // Don't display Project purpose if auto approval is on, because it won't be used.
162 if ( $sys_project_reg_autoapprove != true ) {
164 echo '<h3>'.$index.'. '._('Project Purpose And Summarization').'</h3>';
166 printf(_('Please provide detailed, accurate description of your project and what %1$s resources and in which way you plan to use. This description will be the basis for the approval or rejection of your project\'s hosting on %1$s, and later, to ensure that you are using the services in the intended way. This description will not be used as a public description of your project. It must be written in English.'), forge_get_config ('forge_name'));
168 echo '<textarea name="purpose" cols="70" rows="10">';
169 echo htmlspecialchars($purpose);
176 echo '<h3>'.$index.'. '. _('Project Public Description').'</h3>';
178 echo _('This is the description of your project which will be shown on the Project Summary page, in search results, etc. Maximum length is 255 chars.');
181 <textarea name="description" cols="70" rows="5">
182 <?php echo htmlspecialchars($description); ?>
187 echo '<h3>'.$index.'. '._('Project Unix Name').'</h3>';
188 printf(_('In addition to full project name, you will need to choose short,"Unix" name for your project.<p/> The "Unix Name" has several restrictions because it is used in so many places around the site. They are:<ul><li>Cannot match the unix name of any other project</li><li>Must be between 3 and 15 characters in length</li><li>Must be in lower case</li><li>Can only contain characters, numbers, and dashes</li><li>Must be a valid unix username</li><li>Cannot match one of our reserved domains</li><li>Unix name will never change for this project</li></ul><p/>Your unix name is important, however, because it will be used for many things, including:<ul><li>A web site at <tt>unixname.%1$s</tt></li><li>A CVS Repository root of <tt>/cvsroot/unixname</tt> at <tt>cvs.unixname.%1$s</tt></li><li>Shell access to <tt>unixname.%1$s</tt></li><li>Search engines throughout the site</li></ul><p/>Unix Name:<br/>'), forge_get_config('web_host')) ?>
190 <input type="text" maxlength="15" size="15" name="unix_name" value="<?php echo htmlspecialchars($unix_name); ?>"/>
193 $SCMFactory = new SCMFactory() ;
194 $scm_plugins=$SCMFactory->getSCMs() ;
195 if ($sys_use_scm && count($scm_plugins) > 0) {
197 echo '<h3>'.$index.'. '._('Source Code').'</h3>';
198 echo _('<p>You can choose among different SCM for your project, but just one (or none at all). Please select the SCM system you want to use.</p>')."\n";
199 echo '<table><tbody><tr><td><strong>'._('SCM Repository').':</strong></td>';
200 echo '<td><input type="radio" name="scm" value="noscm" checked="checked">'._('No SCM').'</td>';
201 foreach($scm_plugins as $plugin) {
202 $myPlugin= plugin_get_object($plugin);
203 echo '<td><input type="radio" name="scm" value="'.$myPlugin->name.'">'.$myPlugin->text.'</td>';
205 echo '</tr></tbody></table>'."\n";
208 if ($sys_use_private_project) {
210 echo '<h3>'.$index.'. '._('Visibility'). '</h3>';
211 echo "<p><input type=\"radio\" name=\"is_public\" value=\"1\" ";
212 if (!isset($is_public) || $is_public) {
215 echo ">". _('Public')."</p>";
217 echo "<p><input type=\"radio\" name=\"is_public\" value=\"0\" ";
218 if (isset ($is_public) && !$is_public) {
221 echo ">". _('Private')."</p>";
223 echo "<input type=\"hidden\" name=\"is_public\" value=\"1\">";
228 <input type="submit" name="submit" value="<?php echo _('Submit') ?>"/>
229 <input type="submit" name="i_disagree" value="<?php echo _('Cancel') ?>"/>
236 site_footer(array());
240 // c-file-style: "bsd"