Main Page | Directories | File List | File Members

project_home.php

Go to the documentation of this file.
00001 <?php
00002 # This file is part of the Savane project
00003 # <http://gna.org/projects/savane/>
00004 #
00005 # $Id: project_home.php 5420 2006-02-17 22:15:58Z toddy $
00006 #
00007 # Copyright 1999-2000 (c) The SourceForge Crew
00008 # Copyright 2000-2003 (c) Free Software Foundation
00009 #
00010 # Copyright 2002-2005 (c) Mathieu Roy <yeupou--gnu.org>
00011 #                         Yves Perrin <yves.perrin--cern.ch>
00012 #
00013 # The Savane project is free software; you can redistribute it and/or
00014 # modify it under the terms of the GNU General Public License
00015 # as published by the Free Software Foundation; either version 2
00016 # of the License, or (at your option) any later version.
00017 #
00018 # The Savane project is distributed in the hope that it will be useful,
00019 # but WITHOUT ANY WARRANTY; without even the implied warranty of
00020 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00021 # GNU General Public License for more details.
00022 #
00023 # You should have received a copy of the GNU General Public License
00024 # along with the Savane project; if not, write to the Free Software
00025 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00026 
00027 require_directory("people");
00028 require_directory("news");
00029 require_directory("stats");
00030 require $GLOBALS['sys_www_topdir']."/include/vars.php";
00031 
00032 
00033 # if we are at wrong url, redirect
00034 if (strcasecmp($HTTP_HOST, $project->getTypeBaseHost()) != 0 && $project->getTypeBaseHost())
00035 {
00036   header ("Location: http".(session_issecure()?'s':'')."://".$project->getTypeBaseHost().$PHP_SELF);
00037   exit;
00038 }
00039 
00040 $group_name = $project->getUnixName();
00041 
00042 site_project_header(array());
00043 
00044 # ########################### Members of this project
00045 # (little box on the right)
00046 
00047 $res_admin = db_query("SELECT user.user_id AS user_id,user.user_name AS user_name, user.realname AS realname "
00048                       . "FROM user,user_group "
00049                       . "WHERE user_group.user_id=user.user_id AND user_group.group_id=$group_id AND "
00050                       . "user_group.admin_flags = 'A'");
00051 
00052 
00053 print '
00054 <div class="indexright">
00055 ';
00056 
00057 print $HTML->box_top(_("Membership Info"));
00058 print '<span class="smaller">';
00059 $adminsnum = db_numrows($res_admin);
00060 $j = 0;
00061 if ($adminsnum > 0)
00062   {
00063     print ngettext("Project Admin:", "Project Admins:", $adminsnum);
00064     while ($row_admin = db_fetch_array($res_admin))
00065       {
00066         print '</span></div><div class="'.utils_get_alt_row_color($j++).'"><span class="smaller">';
00067         print "&nbsp; - ".utils_link($GLOBALS['sys_home']."users/".$row_admin[user_name], $row_admin[realname]);
00068       }
00069   }
00070 
00071 #count of developers on this project
00072 $membersnum = db_fetch_array(db_query("SELECT COUNT(*) AS count FROM user_group WHERE group_id=$group_id AND admin_flags<>'P'"));
00073 print '</span></div><div class="'.utils_get_alt_row_color($j++).'"><span class="smaller">';
00074 printf(ngettext("%s member", "%s members", $membersnum[count]),'<strong>'.$membersnum[count].'</strong>');
00075 
00076 # if member = 1, it's obviously (or it should be) the project admin
00077 # if there's no admin, we need to get access to the list
00078 # But we show it anyway: this page can be used for request for membership,
00079 # provide more info that the little infobox.
00080 print '</span></div><div class="'.utils_get_alt_row_color($j++).'"><span class="smaller">';
00081 print '['.utils_link($GLOBALS['sys_home'].'project/memberlist.php?group='.$group_name, _("View Members")).']</span>'; # [ and ] are cosmetics, not supposed to be affected by any translation
00082 
00083 print $HTML->box_bottom();
00084 print '<br />
00085 ';
00086 print $HTML->box_top(_("Group identification"));
00087 print '<span class="smaller">';
00088 print _("Id:").' <strong>#'.$group_id.'</strong>';
00089 $j = 0;
00090 print '</span></div><div class="'.utils_get_alt_row_color($j++).'"><span class="smaller">';
00091 print _("System Name:").' <strong>'.$group_name.'</strong>';
00092 print '</span></div><div class="'.utils_get_alt_row_color($j++).'"><span class="smaller">';
00093 print _("Name:").' <strong>'.$project->GetName().'</strong>';
00094 print '</span></div><div class="'.utils_get_alt_row_color($j++).'"><span class="smaller">';
00095 print _("Group Type:").' <strong>'.$project->getTypeName().'</strong>';
00096 print '</span>';
00097 print $HTML->box_bottom();
00098 print '<br />
00099 ';
00100 
00101 
00102 # As all projects use the cookbook, this is accurate is all cases
00103 print $HTML->box_top(_("Search in this Group"));
00104 print '<span class="smaller">';
00105 print search_box('','');
00106 print '</span>';
00107 print $HTML->box_bottom();
00108 
00109 print '
00110 </div><!-- end indexright -->
00111 <div class="indexcenter">
00112 ';
00113 
00114 
00115 # ########################### General Informations
00116 
00117 if ($project->getTypeDescription())
00118 { print utils_rich_markup($project->getTypeDescription()); }
00119 
00120 if ($project->getLongDescription())
00121   {
00122     print utils_full_markup($project->getLongDescription());
00123   }
00124 else
00125   {
00126     if ($project->getDescription())
00127       {
00128         print utils_basic_markup($project->getDescription());
00129       }
00130     else
00131       {
00132         print '<p>';
00133         printf(_("This project has not yet submitted a short description. You can %ssubmit it%s now."), '<a href="'.$GLOBALS['sys_home'].'project/admin/editgroupinfo.php?group='.$group_name.'">', '</a>');
00134         print "</p>\n";
00135       }
00136   }
00137 
00138 print '<p>'._("Registration Date")._(": ").' '.format_date($sys_datefmt,$project->getStartDate())."\n";
00139 
00140 if ($project->CanUse("license"))
00141 {
00142   $license = $project->getLicense();
00143   print '<br />'._("License")._(": ").' ';
00144   if ($LICENSE_URL[$license] != "0") {
00145     print utils_link($LICENSE_URL[$license], $LICENSE[$license]);
00146   } else {
00147     print $LICENSE[$license];
00148     if ($license == "other") {
00149       print $project->getLicense_other();
00150     }
00151   }
00152 }
00153 
00154 
00155 if ($project->CanUse("devel_status"))
00156 {
00157   $devel_status = $project->getDevelStatus();
00158   print '<br />'._("Development Status")._(": ").' '.$DEVEL_STATUS[$devel_status]."\n";
00159 }
00160 print '</p>
00161 </div><!-- end indexcenter -->
00162 <p class="clearr">&nbsp;</p>
00163 ';
00164 
00165 # ############################## ###########################
00166 # #######################################################################
00167 # ##############################  ###########################
00168 # #######################################################################
00169 
00170 # ########################### News
00171 
00172 if ($project->Uses("news")) {
00173 
00174   print '
00175 <div class="splitright">';
00176 
00177   print $HTML->box_top(_("Latest News"));
00178   print news_show_latest($group_id,4,"true");
00179   print $HTML->box_bottom();
00180 
00181   print '
00182 </div><!-- end splitright -->
00183 <div class="splitleft">
00184 ';
00185 
00186 }
00187 
00188 # ############################## ADMIN AREA ###########################
00189 # #######################################################################
00190 
00191 if ($GLOBALS[sys_group_id] == $group_id)
00192 {
00193   if (member_check(0, $group_id, 'A'))
00194     {
00195       require $GLOBALS['sys_www_topdir']."/include/features_boxes.php";
00196       print $HTML->box_top(sprintf(_("Administration: %s server"), $GLOBALS['sys_name']));
00197       print '<div class="justify">'.sprintf(_("Since you are administrator of this project, which one is the \"system project\", you are administrator of the whole %s server."), $GLOBALS['sys_name']).'</div>';
00198 
00199       print $HTML->box_nextitem(utils_get_alt_row_color($i));
00200 
00201       print utils_link($GLOBALS['sys_home'].'admin/',
00202                       html_image("admin.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Server Admin"))).'&nbsp;'._("Server Main Administration Page"));
00203 
00204       print $HTML->box_nextitem(utils_get_alt_row_color($i+1));
00205 
00206       print utils_link($GLOBALS['sys_home'].'task/?group='.$GLOBALS['sys_unix_group_name'].'&amp;category_id=1&amp;status_id=1&amp;set=custom',
00207                        html_image("admin.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Server Admin"))).'&nbsp;'._("Pending Projects List"));
00208       $registration_count = number_format(stats_getprojects_pending());
00209       print " (";
00210       printf(ngettext("%s registration pending", "%s registrations pending", $registration_count), "<strong>$registration_count</strong>");
00211       print ")";
00212       print $HTML->box_bottom();
00213       print '<br />';
00214     }
00215 }
00216 
00217 if (member_check(0, $group_id, 'A'))
00218 {
00219   print $HTML->box_top(sprintf(_("Administration: %s project"), $project->getName()));
00220   print '<div class="justify">'._("As administrator of this project, you can manage members and activate, deactivate and configure your project's tools.").'</div>';
00221 
00222   print $HTML->box_nextitem(utils_get_alt_row_color($i));
00223 
00224   print utils_link($GLOBALS['sys_home'].'project/admin/?group='.$group_name,
00225                   html_image("main.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Admin Page"))).'&nbsp;'._("Project Main Administration Page"));
00226   print $HTML->box_bottom();
00227   print '<br />';
00228 }
00229 
00230 
00231 # ############################## PUBLIC AREAS ###########################
00232 # #######################################################################
00233 
00234 # ################################## QUICK OVERVIEW
00235 
00236 function specific_makesep ()
00237 {
00238   # too specific to be general function
00239   global $i, $j, $HTML;
00240   if ($i != $j)
00241     {
00242       print $HTML->box_nextitem(utils_get_alt_row_color($i));
00243       $j = $i;
00244     }
00245 }
00246 
00247 print $HTML->box_top(_("Public Areas: Quick Overview"));
00248 $i = 1;
00249 $j = $i;
00250 
00251 # Homepage Link
00252 if ($project->Uses("homepage"))
00253 {
00254   print utils_link($project->getUrl("homepage"),
00255                    html_image("www.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Homepage"))).'&nbsp;'._("Project Homepage"));
00256   $i++;
00257 }
00258 
00259 # Cookbook Documentation (internal)
00260 # Projects dont have the choice to use it, as there maybe site recipe that
00261 # applies to features they use.
00262 # FIXME: this should print the number of recipes available
00263 specific_makesep();
00264 print utils_link($project->getArtifactUrl("cookbook"),
00265                  html_image("man.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Cookbook"))).'&nbsp;'._("Cookbook"));
00266 $i++;
00267 
00268 # Documentation (extra link)
00269 if ($project->Uses("extralink_documentation"))
00270 {
00271   specific_makesep();
00272 
00273   print utils_link($project->getUrl("extralink_documentation"),
00274                    html_image("man.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Other Documentation"))).'&nbsp;'._("Other Documentation"));
00275   $i++;
00276 }
00277 
00278 # Download area
00279 if($project->Uses("download")) {
00280   specific_makesep();
00281 
00282   # the pointer is always the filelist, this page will handle redirect
00283   # appropriately in case that no download area is here
00284   print utils_link($project->getArtifactUrl("files"),
00285                    html_image("download.png",array('width'=>'24', 'height'=>'24', 'alt'=>'Filelist')).'&nbsp;'._("Filelist (Download area)"));
00286   $i++;
00287 }
00288 
00289 # Memberlist
00290 specific_makesep();
00291 print utils_link($GLOBALS['sys_home'].'project/memberlist.php?group='.$group_name,
00292          html_image("people.png",array('width'=>'24', 'height'=>'24', 'alt'=>'Memberlist')).'&nbsp;'._("Project Memberlist"));
00293 print " (";
00294 printf(ngettext("%s member", "%s members", $membersnum[count]), "<strong>$membersnum[count]</strong>");
00295 print ")";
00296 $i++;
00297 
00298 if ($project->getGPGKeyring())
00299 {
00300   specific_makesep();
00301   print utils_link($GLOBALS['sys_home'].'project/memberlist-gpgkeys.php?group='.$group_name,
00302                    html_image("keys.png",array('width'=>'24', 'height'=>'24', 'alt'=>'GPG Keyring')).'&nbsp;'._("Project Members GPG Keyring"));
00303   $i++;
00304 
00305 }
00306 
00307 
00308 print $HTML->box_bottom();
00309 print '<br />';
00310 
00311 
00312 # ################################## COMMUNICATION
00313 
00314 if ($GLOBALS[sys_unix_group_name] == $group_name ||
00315     $project->Uses("support") ||
00316     $project->Uses("forum") ||
00317     $project->usesMail() ||
00318     people_project_jobs_rows($group_id) != 0)
00319 {
00320 
00321   print $HTML->box_top(_("Public Areas: Communication Tools"));
00322   $i = 1;
00323   $j = $i;
00324 
00325   # Support Manager
00326 
00327   if ($project->Uses("support")) {
00328     specific_makesep();
00329     $url = $project->getArtifactUrl("support");
00330 
00331     print utils_link($url,
00332                      html_image("help.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Tech Support Manager"))).'&nbsp;'._("Tech Support Manager"));
00333 
00334     if (group_get_artifact_url("support", 0) == $url)
00335       {
00336 
00337         $res_count = db_query("SELECT count(*) AS count FROM support WHERE group_id=$group_id AND status_id != 3");
00338         $row_count = db_fetch_array($res_count);
00339 
00340 
00341         print " (";
00342         printf(ngettext("%s open request", "%s open requests", $row_count[count]), "<strong>$row_count[count]</strong>");
00343         $res_count = db_query("SELECT count(*) AS count FROM support WHERE group_id=$group_id");
00344         $row_count = db_fetch_array($res_count);
00345         print ', ';
00346         printf(ngettext("%s total", "%s total", $row_count[count]), "<strong>$row_count[count]</strong>");
00347         print ")\n";
00348 
00349         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=additem', _("Submit a Request"), 0, group_restrictions_check($group_id, "support"));
00350         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=browse&amp;set=open', _("Browse Open Requests"));
00351       }
00352 
00353     $i++;
00354   }
00355 
00356 
00357   # Fora
00358   # Could be reactivated on Savannah.
00359 
00360   if ($project->Uses("forum")) {
00361     specific_makesep();
00362 
00363     $url = $project->getArtifactUrl("forum");
00364 
00365     print utils_link($url,
00366                      html_image("help.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Public Forum"))).'&nbsp;'._("Public Forum"));
00367 
00368     if (group_get_artifact_url("forum", 0) == $url)
00369       {
00370 
00371         $res_count = db_query("SELECT count(forum.msg_id) AS count FROM forum,forum_group_list WHERE "
00372                               . "forum_group_list.group_id=$group_id AND forum.group_forum_id=forum_group_list.group_forum_id "
00373                               . "AND forum_group_list.is_public=1");
00374         $row_count = db_fetch_array($res_count);
00375         print " (";
00376         printf(ngettext("%s message in", "%s messages in", $row_count[count]), "<strong>$row_count[count]</strong>");
00377 
00378         $res_count = db_query("SELECT count(*) AS count FROM forum_group_list WHERE group_id=$group_id "
00379                               . "AND is_public=1");
00380         $row_count = db_fetch_array($res_count);
00381 
00382         print " ";
00383         printf(ngettext("%s forum", "%s forums", $row_count[count]), "<strong>$row_count[count]</strong>");
00384         print ")\n";
00385       }
00386     $i++;
00387 
00388   }
00389 
00390   # Mailing lists
00391 
00392   if ($project->usesMail())
00393     {
00394       specific_makesep();
00395       $url = $project->getArtifactUrl("mail");
00396 
00397       print utils_link($url,
00398                        html_image("mail.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Mailing Lists"))).'&nbsp;'._("Mailing Lists"));
00399       $res_count = db_query("SELECT count(*) AS count FROM mail_group_list WHERE group_id=$group_id AND is_public=1");
00400       $row_count = db_fetch_array($res_count);
00401       print " (";
00402       printf(ngettext("%s public mailing-list", "%s public mailing-lists", $row_count[count]), "<strong>$row_count[count]</strong>");
00403       print ")";
00404 
00405       $i++;
00406     }
00407 
00408   # Looking for people
00409 
00410   if (people_project_jobs_rows($group_id) != 0) {
00411     specific_makesep();
00412     print utils_link($GLOBALS['sys_home'].'people/?group='.$group_name,
00413                      html_image("people.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("People"))).'&nbsp;'._("This project is looking for people"));
00414 
00415     $job_count = people_project_jobs_rows($group_id);
00416 
00417     print " (";
00418     printf(ngettext("%s contributor wanted", "%s contributors wanted", $job_count), "<strong>$job_count</strong>");
00419     print ")";
00420     $i++;
00421   }
00422 
00423   print $HTML->box_bottom();
00424   print '<br />';
00425 }
00426 
00427 # ################################## DEVELOPMENT
00428 
00429 if ($project->Uses("patch") ||
00430     $project->Uses("cvs") ||
00431     $project->Uses("homepage") ||
00432     $project->Uses("bugs") ||
00433     $project->Uses("task") ||
00434     $project->Uses("patch"))
00435 {
00436   print $HTML->box_top(_("Public Areas: Development Tools"));
00437   $i = 1;
00438   $j = $i;
00439 
00440   # SCMs
00441   #  - check if the SCM is selected by the project
00442   #  - check if the SCM is the default SCM, if the project use the standard
00443   #    webpage
00444   if ($project->Uses("cvs") || $project->UsesForHomepage("cvs"))
00445     {
00446 
00447       $url = $project->getArtifactUrl("cvs");
00448 
00449       html_image("cvs.png",array('width'=>'24', 'height'=>'24', 'alt'=>'CVS'));
00450       print '&nbsp;<a href="'.$url.'">'._("Source Code Manager: CVS Repository").'</a>';
00451       if ($project->Uses("cvs") && $project->getUrl("cvs_viewcvs") != 'http://' && $project->getUrl("cvs_viewcvs") != '')
00452         {
00453           print '<br /> &nbsp; - <a href="'.$project->getUrl("cvs_viewcvs").'">'._("Browse Sources Repository").'</a>';
00454         }
00455       if ($project->UsesForHomepage("cvs") && $project->getUrl("cvs_viewcvs_homepage") != 'http://' && $project->getUrl("cvs_viewcvs_homepage") != '')
00456         {
00457           print '<br /> &nbsp; - <a href="'.$project->getUrl("cvs_viewcvs_homepage").'">'._("Browse Web Pages Repository").'</a>';
00458         }
00459       $i++;
00460     }
00461 
00462   if ($project->Uses("arch") || $project->UsesForHomepage("arch"))
00463     {
00464       specific_makesep();
00465       $url = $project->getArtifactUrl("arch");
00466 
00467       html_image("cvs.png",array('width'=>'24', 'height'=>'24', 'alt'=>'Arch'));
00468       print '&nbsp;<a href="'.$url.'">'._("Source Code Manager: GNU Arch Repository").'</a>';
00469 
00470       if ($project->Uses("arch") && $project->getUrl("arch_viewcvs") != 'http://' && $project->getUrl("arch_viewcvs") != '')
00471         {
00472           print '<br /> &nbsp; - <a href="'.$project->getUrl("arch_viewcvs").'">'._("Browse Sources Repository").'</a>';
00473         }
00474       if ($project->UsesForHomepage("arch") && $project->getUrl("cvs_viewcvs_homepage") != 'http://' && $project->getUrl("cvs_viewcvs_homepage") != '')
00475         {
00476           print '<br /> &nbsp; - <a href="'.$project->getUrl("cvs_viewcvs_homepage").'">'._("Browse Web Pages Repository").'</a>';
00477         }
00478       $i++;
00479     }
00480 
00481   if ($project->Uses("svn") || $project->UsesForHomepage("svn"))
00482     {
00483       specific_makesep();
00484       $url = $project->getArtifactUrl("svn");
00485 
00486       html_image("cvs.png",array('width'=>'24', 'height'=>'24', 'alt'=>'Arch'));
00487       print '&nbsp;<a href="'.$url.'">'._("Source Code Manager: Subversion Repository").'</a>';
00488 
00489       if ($project->Uses("svn") && $project->getUrl("svn_viewcvs") != 'http://' && $project->getUrl("svn_viewcvs") != '')
00490         {
00491           print '<br /> &nbsp; - <a href="'.$project->getUrl("svn_viewcvs").'">'._("Browse Sources Repository").'</a>';
00492         }
00493       if ($project->UsesForHomepage("svn") && $project->getUrl("cvs_viewcvs_homepage") != 'http://' && $project->getUrl("cvs_viewcvs_homepage") != '')
00494         {
00495           print '<br /> &nbsp; - <a href="'.$project->getUrl("cvs_viewcvs_homepage").'">'._("Browse Web Pages Repository").'</a>';
00496         }
00497       $i++;
00498     }
00499 
00500 
00501 
00502   # Bug tracking
00503 
00504   if ($project->Uses("bugs")) {
00505     specific_makesep();
00506     $url = $project->getArtifactUrl("bugs");
00507 
00508     print utils_link($url,
00509                      html_image("bug.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Bug Tracking"))).'&nbsp;'._("Bug Tracker"));
00510 
00511     if (group_get_artifact_url("bugs", 0) == $url)
00512       {
00513 
00514         $res_count = db_query("SELECT count(*) AS count FROM bugs WHERE group_id=$group_id AND status_id != 3");
00515         $row_count = db_fetch_array($res_count);
00516 
00517         print " (";
00518         printf(ngettext("%s open bug", "%s open bugs", $row_count[count]), "<strong>$row_count[count]</strong>");
00519         $res_count = db_query("SELECT count(*) AS count FROM bugs WHERE group_id=$group_id");
00520         $row_count = db_fetch_array($res_count);
00521         print ', ';
00522         printf(ngettext("%s total", "%s total", $row_count[count]), "<strong>$row_count[count]</strong>");
00523         print ")\n";
00524 
00525         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=additem', _("Submit a Bug"), 0, group_restrictions_check($group_id, "bugs"));
00526         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=browse&amp;set=open', _("Browse Open Bugs"));
00527       }
00528     $i++;
00529   }
00530 
00531 
00532   # Task Manager
00533 
00534   if ($project->Uses("task")) {
00535     specific_makesep();
00536     $url = $project->getArtifactUrl("task");
00537 
00538     print utils_link($url,
00539                      html_image("task.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Task Manager"))).'&nbsp;'._("Task Manager"));
00540 
00541     if (group_get_artifact_url("task", 0) == $url)
00542       {
00543 
00544         $res_count = db_query("SELECT count(*) AS count FROM task WHERE group_id=$group_id AND status_id != 3");
00545         $row_count = db_fetch_array($res_count);
00546 
00547         print " (";
00548         printf(ngettext("%s open task", "%s open tasks", $row_count[count]), "<strong>$row_count[count]</strong>");
00549         $res_count = db_query("SELECT count(*) AS count FROM task WHERE group_id=$group_id");
00550         $row_count = db_fetch_array($res_count);
00551         print ', ';
00552         printf(ngettext("%s total", "%s total", $row_count[count]), "<strong>$row_count[count]</strong>");
00553         print ")\n";
00554 
00555         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=additem', _("Submit a Task"), 0, group_restrictions_check($group_id, "task"));
00556         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=browse&amp;set=open', _("Browse Open Tasks"));
00557       }
00558     $i++;
00559   }
00560 
00561 
00562   # Patch Manager
00563 
00564   if ($project->Uses("patch")) {
00565     specific_makesep();
00566     $url = $project->getArtifactUrl("patch");
00567 
00568     print utils_link($url,
00569                      html_image("patch.png",array('width'=>'24', 'height'=>'24', 'alt'=>_("Patch Manager"))).'&nbsp;'._("Patch Manager"));
00570 
00571 
00572     if (group_get_artifact_url("patch", 0) == $url)
00573       {
00574         $res_count = db_query("SELECT count(*) AS count FROM patch WHERE group_id=$group_id AND status_id != 3");
00575         $row_count = db_fetch_array($res_count);
00576 
00577         print " (";
00578         printf(ngettext("%s open patch", "%s open patches", $row_count[count]), "<strong>$row_count[count]</strong>");
00579         $res_count = db_query("SELECT count(*) AS count FROM patch WHERE group_id=$group_id");
00580         $row_count = db_fetch_array($res_count);
00581         print ', ';
00582         printf(ngettext("%s total", "%s total", $row_count[count]), "<strong>$row_count[count]</strong>");
00583         print ")\n";
00584 
00585         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=additem', _("Submit a Patch"), 0, group_restrictions_check($group_id, "patch"));
00586         print '<br /> &nbsp; - '.utils_link($url.'&amp;func=browse&amp;set=open', _("Browse Open Patches"));
00587       }
00588     $i++;
00589   }
00590 
00591   print $HTML->box_bottom();
00592 }
00593 
00594 
00595 # ########################### News
00596 
00597 if ($project->Uses("news")) {
00598   print '
00599 </div><!-- end splitleft -->
00600 ';
00601 }
00602 
00603 
00604 site_project_footer(array());
00605 
00606 ?>

Generated on Sun Feb 26 13:23:04 2006 for Savane PHP Frontend Developer Reference by  doxygen 1.4.4