<!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>Editing and maintaining the Project Home page</title>
 </head>

 <body class="docs" onload="self.focus()">
<div class="docs" id="projectowneredit">
  <h2>Editing and maintaining the Project Home page</h2>
  <div id="toc"> 
    <ul>
      <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>
    <ul>
      <li> <a href="/nonav/docs/ProjectOwnerAdmin.html">Project owner administration</a> 
        <ul>
          <li> Editing and maintaining the Project Home page 
            <ul>
              <li><a href="#updatehome">Maintaining project information</a></li>
              <li><a href="#useindex">About the 'Use Project Home Page' option</a></li>
              <li><a href="#ownersmessage">Updating the owner's message</a></li>
              <li><a href="#other">About other operations</a></li>
              <li><a href="#aboutlocking">About project locking</a></li>
            </ul>
          </li>
          <li><a href="/nonav/docs/ProjectOwnerNews.html">Managing project site 
            news</a></li>
          <li><a href="/nonav/docs/ProjectOwnerMembers.html">Adding project members 
            and approving roles</a></li>
          <li><a href="/nonav/docs/ProjectOwnerMailingLists.html">Managing project 
            mailing lists</a></li>
          <li><a href="/nonav/docs/ProjectOwnerDocuments.html">Managing project 
            documentation</a></li>
          <li><a href="/nonav/docs/ProjectOwnerSource.html">Managing project source 
            code</a></li>
          <li><a href="/nonav/docs/ProjectOwnerIssues.html">Tracking and managing 
            project issues</a></li>
          <li><a href="/nonav/docs/ProjectOwnerCustomStyle.html">Managing custom 
            HTML styling</a></li>
        </ul>
      </li>
    </ul>
  </div>
  <h3><a id="updatehome" name="updatehome">Maintaining project information</a></h3>
  <p>The <strong>Project Home</strong> page is the entry point for all project 
    users, members as well as potential contributors. The primary role of the 
    <strong>Project Home</strong> page is to highlight the project's mission, 
    primary goals, current status, and ongoing needs.</p>
  <p><strong>NOTE</strong>: For a good example of summarizing project goals and 
    status, see the open source <a href="http://subversion.tigris.org/">Subversion 
    project home page</a>.</p>
  <p>Project information can be modified through the <strong>Edit Project</strong> page. 
    By clicking on the <strong>Edit this Project</strong> link on the <strong>Project 
    Home </strong>you can modify the information in each of these fields:</p>

<ul>
  <li> 
   <strong>Parent project</strong>: Use this field 
      to assign a new parent project for your project. 
  </li>
  <li><strong>Summary</strong>: This text appears in project listings viewed by registered 
    users. </li>
  <li><strong>Description:</strong> Because the description field accommodates html formatting 
    and graphics, you can use this to customize and add information to your project 
    home page.</li>
  <li><strong>Public project</strong>: Make your project visible or invisible to other users 
    in this domain.</li>
  <li><strong>Use project index: </strong>Use to assign an alternative home page for your 
    project. See the <a href="#useindex">About the 'Use Project Home Page' option 
    section</a> for further information on this option.</li>
  <li><strong>Owner message</strong>: Communicate with your project members and 
    potential members using this field. See the <a href="#ownersmessage">Updating 
    the owner's message section</a> for tips on using this section.</li>
  <li><strong>Addtional operations</strong>: These options allow you to manage additional 
    project resources. See the <a href="#other">About other operations section</a> 
    for an explanaition of each operation.</li>
</ul>

  <h3><a id="useindex" name="useindex">About the 'Use Project Home Page' option</a></h3>
  <p>Your <strong>Project Home</strong> page by default displays the content that you entered 
    in the Description field in the <strong>Edit Project</strong> page.</p>
  <p>Because some projects require more complex home pages, however, you have 
    the option to store and display special home page content from a different 
    file. The "Use Index" flag in the <strong>Edit Project</strong> page indicates that 
    your project home page should display the contents of the "index.html" file 
    instead of displaying description field information from the database. This 
    file is located in:</p>
  <p>http://yourprojectname.this domain/www/index.html</p>
  <p>This file is part of the project's source code repository under CVS version 
    control. If you check the "Use Index" flag, this means you must update your 
    home page content by editing the index.html file, saving it, and then committing 
    it into CVS to display the newest file revision in your project's home page. 
    When you use the index.html file, you can include HTML formatting, graphics, 
    and other more complex elements for your project's home page.</p>
  <h3><a id="ownersmessage" name="ownersmessage">Updating the owner's message</a></h3>
  <p>Initially you use the field to identify yourself as the project owner and 
    convey project goals. As the project progresses, use the Owner's Message to 
    highlight project milestones, list changing requirements, and identify particular 
    resource needs. For example, you may advertise the types of development expertise 
    currently being sought:</p>
  <blockquote> 
    <p>"Desperately seeking experienced Java servlet developers with a passion 
      for creating apps that will change the world."</p>
  </blockquote>
  <p>Or, you can give updates about the current status of development and what's 
    coming up next.</p>
  <p>However you use this field, your Owner's Message should be updated frequently: 
    usually once a week, but no less than monthly. Fresh messages convey a sense 
    of excitement and momentum; critical perceptions to the growth of development 
    projects.</p>
  <h3><a name="other" id="other"></a>About other operations</h3>
  <p><strong>Tool configuration</strong>: This link allows you to view and, if you have 
    the appropriate permission, to edit configuration options that affect your 
    project. Use this area to determine how project tools are configured.</p>
  <p><strong>Edit project roles</strong>: Allows you to view and manage roles 
    specific to this project. More information on project roles is available in 
    the <a href="/nonav/docs/ProjectOwnerMembers.html#addroles">Manage project 
    roles</a> document.</p>
  <p><strong>Edit project resource patterns</strong>: Like the project roles, 
    this allows you to view and manage resources attached to roles in this project. 
    For more information, review the <a href="/nonav/docs/ProjectOwnerMembers.html#addroles">Manage 
    project roles</a> document.</p>
  <p><strong>Lock and Delete project</strong>: Allows you to remove the project from view 
    on the domain. For more information on locking projects please see <a href="#aboutlocking">About 
    project locking</a>. </p>
  <h3><a id="aboutlocking" name="aboutlocking">About project locking</a></h3>
  <p>If you have received email notification that your project is locked, you 
    should contact a site administrator immediately for further information. Project 
    locking means that site administrators have temporarily disabled your project. 
    This may be due to site policy matters, technical issues, or other reasons.</p>
  <p>When you load your <strong>Project Home</strong> or <strong>Project Edit</strong> page, you encounter 
    the "Locked" flag in red at the top. All site-related project activity is 
    suspended in locked projects. Your project pages can still be accessed and 
    all existing project data is intact, however <strong><i>you and your project members 
    temporarily have read-only access</i></strong> to the source code repository, email 
    archives, issue database, project files, and documents. No one -- including 
    you -- can commit source code, enter issues, upload or download files and 
    documents, change web content, or subscribe to or modify mailing lists. If 
    your locked project is a public project, other site users can still view your 
    project's home page but the project is flagged as "locked."</p>
  <p>A site administrator must unlock your project to reactivate it. You will 
    receive email notification when this action is taken also.</p>
  <div class="courtesylinks"> 
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
  </div>
 </div>
</body>
</html>


