<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <script src="/branding/scripts/sc.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>Approving, deferring, or disapproving projects</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="domadminprojectapproval">
   <h2>Approving, deferring, or disapproving projects</h2>

   <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

    <ul>
     <li>
      <a href="/nonav/docs/DomAdminOverview.html">Domain administration overview</a> 

      <ul>
       <li><a href="/nonav/docs/DomAdminAddUsers.html">Adding and editing user accounts</a></li>

       <li><a href="/nonav/docs/DomAdminRoles.html">Administering roles and permissions</a></li>

       <li><a href="/nonav/docs/DomAdminUserGroups.html">Creating and editing user groups</a></li>

       <li><a href="/nonav/docs/DomAdminProjectGroups.html">Creating and editing project groups</a></li>

       <li>
        Approving, disapproving, or deferring projects 

        <ul>
         <li><a href="#aboutapproval">About the project approval process</a></li>

         <li><a href="#deferdisapprove">Deferring and disapproving projects</a></li>

         <li><a href="#other">Locking, unlocking, and deleting projects</a></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/DomAdminAuditLogs.html">Using domain administration tools</a></li>
      </ul>
     </li>
    </ul>
   </div>

   <h3><a id="aboutapproval" name="aboutapproval">About the project approval process</a></h3>

   <p>When a project is proposed on this site, it appears in the <i>Proposed Projects</i> link in the "Pending Actions" section of the Domain Administrator's <b>Start Page</b>. The next time you log in, this count indicates how many projects are awaiting your action. Taking no action has the same result as deferring a project; they remain effectively in limbo as pending actions.</p>

   <p>Click the <i>Proposed Projects</i> link in the "Pending Actions" section to display the <b>Project Approval</b> page. An alphabetical listing of all pending projects appears with the proposer's name and a project summary included. Project titles link to each project's home page. The proposer's name links to the <b>Edit User</b> screen containing this user's account information.</p>

   <p>As the Domain Administrator, you disperse with pending projects in one of three ways: approve, defer, or disapprove them by placing checkmarks in the appropriate boxes. All of these actions are tracked in an administrative audit log, along with other administrative actions. See <a href="/nonav/docs/DomAdminAuditLogs.html">Using administrative audit logs</a> for further information.</p>

   <p>The criteria for approving or disapproving proposed projects falls within your judgment as the Domain Administrator. Factors to consider might include:</p>

   <ul>
    <li>Does the project fall within your site's overall mission and general goals?</li>

    <li>Is the project well scoped out?</li>

    <li>Are project objectives clearly stated?</li>
   </ul>

   <p>When you approve a project, an email message is automatically generated notifying the Project Owner. The project appears in the site's hosted project listings, including the <b>Projects</b> page and the appropriate category home page(s). The Project Owner can now approve members and grant roles to them.</p>

   <h3><a id="deferdisapprove" name="deferdisapprove">Deferring or disapproving projects</a></h3>

   <p>While your approval of a project is pending, or when you defer approval, the project simply remains in your list of pending projects awaiting approval. It does not appear within any project listings in public pages or to any other users. The proposer, however, continues to see a link to this project in her/his <b>Start Page</b> under the "My Projects" section, and can conduct most project related activities including:</p>

   <ul>
    <li>accessing and updating their project's home page</li>

    <li>inviting participants</li>

    <li>uploading and downloading project files and documents</li>

    <li>adding and editing news items</li>

    <li>checking source code into the project's CVS repository</li>

    <li>assigning and tracking project issues.</li>
   </ul>

   <p>None of this project information on pending projects is visible to other site users, however. And until you approve a pending project, the Project Owner <i>cannot</i> approve project members or grant roles to them.</p>

   <p>When you disapprove a project, an email message is automatically generated to notify the proposer. This message is brief; the proposer is encouraged to contact you for further discussion about the specific reasons for disapproval.</p>

   <h3><a id="other" name="other">Locking, unlocking, and deleting projects</a></h3>

   <p>The Project Lock feature enables you to stop all activity on a project if circumstances arise to necessitate this. Whether this is due to site policy matters, technical issues, or other reasons, project locking lets you essentially turn off all site-related project activity. The locked project's home page and other pages can still be accessed and all existing project data is intact, however the Project Owner and members have read-only access to the source code repository, email archives, issue database, project files, and documents. No one -- including the project owner -- can commit source code, enter issues, upload or download files and documents, change web content, or subscribe to or modify mailing lists. If the locked project is a public project, other site users can still view the project's home page but the project is flagged as "locked."</p>

   <p>To lock a currently active project, navigate to the project's home page and click on the <b>Edit this project</b> link. Use the <i>Project Lock</i> link at the bottom to display a screen where you can set the lock. This action automatically generates an email notice to the project owner, telling him/her to contact a site administrator immediately.</p>

   <p>To unlock a project, your view of the locked project's home page displays the red "Locked" flag and an <i>Unlock</i> link next to it you can use to enable the project again. Alternatively, you can use the <b>Project Edit</b> page where there an <b>Unlock Project</b> link appears at the bottom of the page. When you unlock a project to reactivate it, another email notice is automatically sent to the project owner.</p>

   <p>Projects may also be deleted from this site when they either don't pan out or reach the end of their development life cycle. The <b>Project Edit</b> page includes a <i>Project Delete</i> link at the bottom of the page. If you click this link, you are asked to confirm the action. <b><i>Use the project delete feature with caution!</i> Deleting the project not only removes it from site project listings, but also completely erases the project's cvs repository files, all project files and documents, issues database, and mailing list archives.</b></p>

   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


