<!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="projectownerdocuments">
   <h2>Managing 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/ProjectOwnerAdmin.html">Project owner administration</a> 

      <ul>
       <li><a href="/nonav/docs/ProjectOwnerEdit.html">Editing and maintaining the Project Home page</a></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">Configuring and managing project mailing lists</a></li>

       <li>
        Managing file sharing 

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

         <li><a href="#adddocs">Adding/maintaining files and folders</a></li>

         <li><a href="#approvedocs">Approving file suggestions</a></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/ProjectOwnerSource.html">Managing project source code</a></li>


       <li><a href="/nonav/docs/ProjectOwnerIssues.html">Managing project issues and generating reports</a></li>
   <li><a href="/nonav/docs/ProjectOwnerCustomStyle.html">Managing custom HTML styling</a></li>


      </ul>
     </li>
    </ul>
   </div>

   <h3><a id="aboutdocs" name="aboutdocs">About your project file sharing</a></h3>

   <p>Either you or members of your project can make your project's files available for viewing and sharing through the <b>File sharing</b> page. These can be binary or other file format uploads, URLs, and HTML pages. The files you include here come under your project's version control.</p>

   <p>Files are organized in folders. Folders are organized in a tree hierarchy; the parent folder at the top, with child folders beneath. The folder hierarchy provides ease of organization of files. Thus, you may have a parent folder entitled "Test Scripts" with child folders "White Box Tests" and "Black Box Tests", each containing files relevant to their folder name.</p>

   <p>The <b>File sharing</b> page displays the folder hierarchy down three levels; you are able to see the level you currently are in as well as it's subfolders and their subfolders. When you select a subfolder it becomes your current top level and you are presented with two levels of child folders beneath. The folder description appears to the right of the folder name, and above the list of files contained within the folder.</p>

   <h3><a id="folders" name="folders"></a>Creating Folders</h3>

   <p>To create a new folder:</p>

   <ol>
    <li>From the Project Home page, select the <b>File sharing</b> link from the left navigation bar.</li>

    <li>Select the <b>Suggest a Folder</b> link from the <b>Tasks</b> bar.</li>

    <li>Enter a name in the <i>Folder Name</i> field. The folder name should be short and descriptive of the content expected to be placed in this folder. The <i>Folder Name</i> field will accept up to 125 characters, but you should carefully consider the length of your folder name. If you feel the need to further describe the folder to your end users you can use the <i>Optional Description</i> field to enter a description of the type of content, up to 240 characters in length.</li>

    <li>Click on the <b>Add Folder</b> button.</li>
   </ol>

   <h3><a id="adddocs" name="adddocs">Adding/maintaining files and sections</a></h3>

   <p>You can add files by clicking <i>Add New Document</i> from the <b>Tasks</b> bar displays the <b>Add Project Document</b> <b>to Folder</b> page. Use the input fields on this page to describe the file that will appear in this folder. To suggest a file enter the following information:</p>

   <ul>
    <li>File Name: this should be a short name for the file and cannot be more than 120 characters in length.</li>

    <li>Status: you must set your status as active or inactive.</li>

    <li>Description (optional): if you find that you would like to further describe the file, use this field to add more information</li>

    <li>
     one or more of the following: 

     <ul>
      <li>File (can be made public):</li>

      <li>URL</li>

      <li>HTML content</li>
     </ul>
    </li>
   </ul>

   <p>Click on the <b>Add a file</b> button.</p>

   <p>If you need to update file information, move files to different folders, or remove files altogether, use the <i>Edit</i> and <i>Delete</i> links in the <b>File sharing</b> page. You may also rearrange the hierarchy of file subsections you have created or delete sections altogether. If a subsection you wish to delete contains files, you can choose to delete everything or move the files to the top level.</p>

   <h3><a id="approvedocs" name="approvedocs">Approving file suggestions</a></h3>

   <p>Project members can suggest files and/or new sections for file organization, but these are not added to the <b>File sharing</b> page until you give your approval. Project members' view of this page features links to suggest new files and sections.</p>

   <p>Suggested files appear in the "Pending Actions" section of your <b>Start Page</b>. Both suggested files and sections appear in your view of the <b>File sharing</b> page. The <i>Pending Approval</i> links adjacent to suggested files/sections lead to the <b>Project Document Approval</b> page where you can approve, defer, or disapprove each item using the radio buttons. Then click the "Perform Actions" button to complete the task.</p>

   <p>The actions you take as Project Owner in response to suggested files and sections automatically generate email notifications to the users who suggested the files, and include instructions for them to contact you directly by email if they have further questions about your action. When you disapprove a suggested file, you are prompted to give the reason for your decision. This reason is included verbatim in the email notification to the user who suggested the file.</p>

   <p>For example, since the maximum file upload size is 25 MB per file, if one of your project members suggests a file that exceeds this limit, you can disapprove the file but also include a suggestion to break the file into smaller pieces to address this.</p>

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


