<!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>Project File sharing</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="projectdocuments">
   <h2>Project File sharing</h2>

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

    <ul>
     <li>
      <a href="/nonav/docs/ProjectMemberResources.html">Project resources for members</a> 

      <ul>
       <li><a href="/nonav/docs/ProjectHome.html">Project Home Page</a></li>

       <li><a href="/nonav/docs/ProjectNews.html">Project News</a></li>

       <li><a href="/nonav/docs/ProjectMemberList.html">Project Membership</a></li>

       <li><a href="/nonav/docs/ProjectMail.html">Project Mailing Lists</a></li>

          <li> Project File sharing 
            <ul>
         <li><b><a href="#aboutdocs">About file sharing</a></b></li>

         <li><b><a href="#viewdocs">Viewing files</a></b></li>

         <li><b><a href="#contributedocs">Contributing files</a></b></li>

         <li><b><a href="#linkcvs">Linking to files in the CVS repository</a></b></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/ProjectSource.html">Project Source Code</a></li>

       <li><a href="/nonav/docs/ProjectIssues.html">Project Issue Tracking</a></li>
      </ul>
     </li>
    </ul>
   </div>

   <h3><a id="aboutfiles" name="aboutfiles"></a>About file sharing</h3>

   <p>Files in a project serve many different purposes:</p>

   <ul>
    <li>Statements of the projects vision, direction, feature lists and requirements</li>

    <li>Project plans and schedules</li>

    <li>Technical files such as design, specifications, coding conversions , developer FAQs and How-Tos, test plans, api references, and descriptions of theory of operations.</li>


    <li>User files such as user's guides, installation guides, and user FAQs and How-Tos</li>

    <li>"Downloads" and other deliverable files, such as compiled application or library code, that have been produced by this project for consumption by end users or other developers in other projects.</li>
   </ul>

   
  <p>How files are added to the <b>File sharing</b> page depends on the contributor's permissions. Observers and Content developers can suggest new files which must be reviewed and approved by the Project owner before they are posted for viewing by all project members and guests. Developers can add files directly into the project.</p>
  <p>Often, project files require team collaboration. One team member may post a draft which for other members to review, edit and post updates. Once a file is obsolete it needs to be archived and, possibly, removed from view by the Project owner.</p>
    

   <h3><a id="contributedocs" name="contributedocs">Contributing and collaborating on files</a></h3>

   
  <p>Contributing members of a project can create new files or folders by using the <b>Add a folder</b> or <b>Add a file</b> links. Non contributing members, such as Observers suggest new files or folders by using the <b>Suggest a folder</b> or <b>Suggest a file</b> links. Suggested items must be approved by a Project owner before they are visible to other users.</p>
  <p>To suggest a new document access any page within the project and click on the <b>File sharing</b> link. Once the <b>File sharing</b> page appears, select the folder in which you would like to save the file and click on the <b>Add a file</b> link under the page title. New files and folders are always placed inside the currently selected folder.</p>

   
  <p>On the <b>Add  file</b> page you can define and set attributes for the suggested file.</p>

   <ul>
    <li><b>Name</b>: This is a required field. Your file name should be brief and descriptive. Ideally, users will be able to identify the main topic of your file by browsing the file names.</li>

    <li><b>Status</b>: Select a value from the menu. Your options are Draft, Reviewed, Baselined, Stable, Archival and Obsolete.</li>

    <li><b>Description</b>: This is an optional field. The file description can be used to provide a brief abstract of the salient arguments in the file, or list major ideas/topics discussed within the file. Once again, keep this brief.</li>
   </ul>

   <p>At any time, you can use the <i>Edit</i> link to modify the file title, description, or other fields, or you use the <i>Delete</i> link to remove the file. If your suggested file is not approved, you will receive an email notification with the reason for this action.</p>

   <p>A file can be textual content, a file from your local directory or a link to a URL. Each of these types have distinctive characteristics.</p>

   <ul>
    <li><b>Text</b>: This field allows you to enter your content directly. You can choose to save the file in raw text format, as it has been entered into this field, or use the <i>Text Format</i> selector to mark your content as HTML source.</li>

    <li><b>Attachment</b>: If you would like to include a file you have on your local drive you must first upload the file to the project storage area. To do so, select "File" as your document type and use the <b>Browse</b> button to navigate to your file. Once you have located your file click the <b>Open</b> button to add the file location and name to the field. Suggested files should not exceed 25 MB in size. Files larger than this cannot be uploaded.</li>

    <li><b>Link</b>: This field allows you to enter a link to a URL containing the content you intend to share with other project members.</li>
   </ul>

    
  <p>The collaboration process can be tracked using the file status. Marking the status of a file allows project participants to easily identify which files are available for collaboration (for instance, Draft files), have been reviewed or are no longer applicable. Project members with an item in process can flag the file as reserved for editing. To do so, click on the <b>Reserve for editing</b> link in the Reservations column of the file you wish to reserve. On the <b>Reserve document</b> page you can set the end of your reservation period, the reservation type, and enter a reason for the reservation. When other project members view this file they will see that it has been reserved by you and the date you intend to release your reservation. Setting the reservation type to "strict lock" prevents others from editing the document during the reserved period. The Project owner will still be able to edit the document; however, all other members will have read-only access until the reservation is released. Setting the reservation type to "advisory warning" does not prevent others from accessing or altering the document. Before you update a document with your changes it is a good idea to make sure that no one else has made any changes since your reservation.</p>

   <a id="viewdocs" name="viewdocs"></a> 

   <h3>Viewing files</h3>

   <p>To view project files, from any project page click the <b>File sharing</b> link on the left navigation bar. The <b>File sharing</b> page displays files organized by folders, in a dual pane format. The left pane lists all project folders while the right pane displays a list of all files within the currently active folder. To change the active folder, click on the folder name. Files are shown ten (10) at a time with links at the bottom of the page for browsing through further pages of files. Clicking on the name of a file will show it's contents.</p>

   <p>Alternatively, if you need to share a file with another user you can send a URL to the location of the file. To do so, navigate to the document and cut and paste the location into your communication.</p>

   <p>Attributes for each file appear beside the file name. The name is a link to the file contents. The file description appears below the name of the file. The status describes the point in the life-cycle of the file. Additional information includes the last date of modification and the user id responsible, and a link to more <b>Info</b> on the file. If you have permission to edit the file, the <b>Info</b> link becomes <b>Edit</b>. NOTE: files in locked projects can not be edited, they are read-only. If any users have placed reservations on the file, their user id appears under the Reservations heading.</p>

   
  <p>Similar to files, folders have attributes. Folders appear below their parent folder to a depth of four folders (not including the Top). Once you've selected a folder to make it active, the active folder appears as an open file folder and the description appears below the folder list.</p>
  <p><a id="linkcvs" name="linkcvs"></a>
   
   </p>
  <h3>Linking to files in the CVS repository</h3>
  <p>You can use a project's File sharing to allow non-CVS users to view files in the project's CVS repository. Linking to files under CVS revision control allows users to view the most current version of the file without needing to check out the source code.</p>
  <p>Only those files in the projects "www" directory and subdirectories thereof can be linked in this fashion. To create the link:</p>
  <ol>
     
    <li>Place the desired file under CVS control in either the "www" directory or one of its subdirectories.</li>
    <li>Click the <b>Add new file</b> link on the <b>File sharing</b> page.</li>
    <li>Enter a Name, Status and optional Description for the file.</li>
    <li>In the <strong>Contents</strong> section, select the <strong>Link</strong> radio button and enter the URL for the file as a relative link "www" directory. For example, a link to index.html in the "www" directory would simply be <em>http://domain.com/index.html</em> and a link to index.html in a "docs" directory under "www" would be <em>http://domain.com/docs/index.html</em>.</li>
  </ol>   
   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


