<!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>
        </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 conversitons , 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>
   <a id="contributedocs" name="contributedocs"></a> 

   <h3>Contributing and collaborating on files</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 document</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 document</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 document</b> link under the page title. New files and folders are always placed inside the currently selected folder.</p>

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

   <ul>
    <li><b>Document 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 arguements 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>File</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>Edit</b> link of the file on the <b>File sharing</b> page. Click on the <b>Reserve for editing</b> link at the bottom of the <b>Edit project document</b> page under <i>Other operations.</i> On the <b>Reserve document</b> page you can set the end of your reservation period and enter a reason for the reservation. When other project members view this document they will see that it has been reserved by you and the date you intend to release your reservation. Reserving a document for editing does not prevent others from accessing or altering the document. Before you update a document with your changes it is always 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>

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


