<!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>Using host administration tools</title>
 </head>

 <body class="docs" onload="self.focus()">
 <div class="docs" id="hostadminutils">
  <h2><a id="HostAdminUtils" name = "hostadminutils">Using domain administration 
    tools</a></h2>
    <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

    
    <ul>
      <li>Help for domain administration 
        <ul>
          <li>Using domain adminstration tools 
            <ul>
              <li><a href="#sessions">Sessions</a></li>
              <li><a href="#config">Configure site</a> </li>
              <li><a href="#build">Build information</a></li>
              <li><a href="#broadcast">Broadcast message</a></li>
              <li><a href="#viewlog">Audit logs</a> </li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
</div>
  <p>The host administrator can set a variety of options for the entire site. 
    These options should be set with caution as they can adversely affect the 
    entire site. Access the host administrator tools from the <strong>Administration 
    </strong> tab. </p>
  <dl> 
    <dt><a name="sessions"></a>Sessions</dt>
    <dd>You can view a list of users currently logged into your site by clicking 
      the <strong>Active User Sessions</strong> link. This servlet lists the logged 
      in users by username and details the time and date each logged in, the last 
      servlet accessed by each, and the last access time for each user. While 
      this information is not logged, periodically reviewing the active user session 
      provides insight into who is accessing your site.</dd>
    <dd>&nbsp;</dd>
    <dt><a name="config"></a>Configure site</dt>
    <dd>Use the <strong>Configure site</strong> link to set site wide configuration options. 
      Configuration options are organized into three categories; <a href="#domain">Domain 
      Options </a>and <a href="#project">Project Options</a>. Use the tabs to 
      navigate between configuration sets. </dd>
    <dt>&nbsp;</dt>
    <dd>The following options can be set: </dd>
    <dd> 
      <p> <a name="domain" id="domain"></a><strong><em>Domain Options</em></strong></p>
      <dl> 
        <dt>Enable dicussion forums</dt>
        <dd>You can enable or disable the use of discussion forums site-wide.</dd>
        <dt>Issue tracking component</dt>
        <dd>You can choose which issue tracking components will be available for 
          projects.</dd>
        <dt>Domain contact</dt>
        <dd>You can define an email address for the domain contact.</dd>
        <dt>Allow guest access</dt>
        <dd>You can enable or disable the ability for users to see public portions 
          of the site without logging in.</dd>
        <dt>Always allow access to domain home</dt>
        <dd>You can make the domain home page visible to all users, even if guest 
          access is turned off.</dd>
        <dt>Allow user join</dt>
        <dd>You can enable or disable the ability for users to register on the 
          site. Note, this option is available only when guest user access is 
          enabled.</dd>
        <dt>Enable community section</dt>
        <dd>You can activate a community section seperate from the SourceCast 
          tools. The community section can be used to communicate important information 
          to community members.</dd>
        <dt>Project path separator string</dt>
        <dd>You can define a character to separate the names of projects within 
          a parentage tree. For example, SuperProject&gt;SuperProject&gt;Project, 
          where &gt; is the separator character. Be sure to add any needed spaces.</dd>
        <dt>Enforce click-through</dt>
        <dd>You can enable or disable the requirement for users to agree to the 
          Terms of Use.</dd>
        <dt>Send plaintext passwords to new users</dt>
        <dd>New users can receive their current passwords in plaintext email, 
          instead of having a ticket to set their passwords generated. NOTE: this 
          is a potential security risk and should be set only as required.</dd>
        <dt>Destination on login</dt>
        <dd>You can choose whether users are sent to their individual start pages 
          or to the community page after logging in.</dd>
        <dt>Policy on public projects</dt>
        <dd>You can select whether to allow new projects to be public or private 
          and set a default.</dd>
        <dt>Show project artifact links on category home page</dt>
        <dd>You can enable or disable the display of project artifacts on category 
          home pages.</dd>
        <dt>User can edit own organization</dt>
        <dd>You can enable or disable the ability for users to edit the <strong>Organization</strong> 
          field on their own user profiles.</dd>
        <dt>List of file extensions that should always be downloaded</dt>
        <dd>You can force users to download files with certain extensions, rather 
          than allowing browser plug-ins to automatically open these files. Multiple 
          entries should be seperated by spaces (e.g. .wmv .mp3).</dd>
        <dt>Show project artifact links on category home</dt>
        <dd>Checking this adds links to project artifact resources on category 
          home pages</dd>
        <dt>Users can edit own organizations</dt>
        <dd>allows users to edit their own "Organization" fields.</dd>
      </dl>
      <p><a name="project" id="project"></a><strong><em>Project Default Options</em></strong></p>
    </dd>
    <dd> 
      <dl> 
        <dt>Maximum attachment size</dt>
        <dd>You can define the maximum attachment size that can be uploaded to 
          a project's <strong>Discussion forums</strong> component.</dd>
        <dt>Maximum file upload size</dt>
        <dd>You can define the maximum file size that can be uploaded to a project's 
          <strong>File sharing</strong> component.</dd>
        <dt>Offer to lock files</dt>
        <dd>You can enable or disable the ability for user to lock files when 
          they are first created in a project's <strong>File sharing</strong> component.</dd>
      </dl>
    </dd>
    <dt><a name="build"></a>Build information</dt>
    <dd>Use the <strong>Build Information</strong> link to view current build 
      information. Clicking this link will display the versions number, build 
      number and build instance of SourceCast.</dd>
    <dt><a name="broadcast"></a>Broadcast message</dt>
    <dd>Use the <strong>Broadcast message</strong> link to enter a message to be displayed 
      at the top od every page viewed by users.</dd>
    <dt><a name="viewlog"></a>View system logs</dt>
    <dd>Use the <strong>View system logs </strong>link to select a log to view. </dd>
    <dt>&nbsp;</dt>
  </dl>

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


