<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
   
http://www.apache.org/licenses/LICENSE-2.0
   
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<chapter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
    <title>Project Manager</title>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR.xml" />
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_main.xml" />
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_MyTasks.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_MyTimesheet.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_Projects.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_Project.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectBilling.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectContent.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectEditProject.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectMailingList.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectNotes.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectOrders.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectPhases.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectResources.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectSubProjects.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_ProjectTasks.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_Requests.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_Resources.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_Skills.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_Tasks.xml"/>
    <xi:include href="../data/helpdata/HELP_PROJECTMGR_TimeSheets.xml"/>
</chapter>
