# bb-mainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://www.blackboard.com/bb-manifest-plugin"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.blackboard.com/bb-manifest-plugin http://fibbba.medu.com/xsd/bb-manifest-plugin.xsd">

  <plugin>
    <!-- 插件名 -->
    <name value="plugin.name"/>
    <!-- 插件ID -->
    <handle value="starting-block"/>
    <!-- 插件描述 -->
    <description value="plugin.description"/>
    <!-- 插件语言 -->
    <default-locale value="en_US"/>
    <!-- 插件版本 -->
    <version value= "3300.0.1-rel.37+c07f12a"/>
    <!-- 插件要求 -->
    <requires>
      <!-- Blackboard最低必须是3300.0.1 -->
      <bbversion value="3300.0.1"/>
    </requires>

    <!-- 供应商/开发商 -->
    <vendor>
      <id value="bb"/>
      <name value="Blackboard Inc."/>
      <url value="http://www.blackboard.com/"/>
      <description value="Blackboard Learn"/>
    </vendor>

    <!-- application-defs指的是应用出现位置,非必须项 -->
    <application-defs>
        <application handle="starting-block" is-course-tool="true" is-sys-tool="true" use-ssl="false" can-allow-guest="false" name="starting-block">
            <links>
                <!-- 课程工具 -->
                <link>
                    <type value="course_tool"/> 
                    <name value="课程工具"/>
                    <!-- 你自己项目里的URL,从哪里触发 -->
                    <url value="course_tool/init" />
                    <description value="课程工具Des" />
                </link>
                <link>
                    <type value="tool"/> 
                    <name value="工具"/>
                    <!-- 你自己项目里的URL,从哪里触发 -->
                    <url value="tool/init" />
                    <description value="工具Des" />
                </link>
                <link>
                    <type value="user_tool" />
                    <name value="用户工具" />
                    <!-- 你自己项目里的URL,从哪里触发 -->
                    <url value="user_tool/init" />
                    <description value="用户工具Desc" />
                    <icons>
                        <listitem value="images/icon.gif" />
                    </icons>
                </link>
            </links>
        </application>
    </application-defs>

    <!-- module-defs指的是是否启用模块,非必须项 -->
    <module-defs>
        <module-type ext-ref="starting-block-module" title="starting-block模块" uicreatable="true">
            <!-- Blackboard会根据用户权限来调度用户看的页面 -->
            <jsp-dir>views</jsp-dir>
            <jsp>
                <view>module1.jsp</view>
                <admin>module2.jsp</admin>
                <edit>module3.jsp</edit>   
            </jsp>
        </module-type>

        <module type="starting-block-module" isadmin="true" useraddable="true" isdeletable="true"  title="starting-block模块">
            <description>starting-block模块</description>
            <ExtraInfo>
                <property key="body.text" type="String">starting-block模块</property>
            </ExtraInfo>  
        </module>
    </module-defs>

    <!-- extension-defs指的是是否启用扩展类,非必须项 -->
    <extension-defs>
        <!-- Blackboard提供了很多扩展接口point,这个就是一个自定义登录的实现方案 -->
        <definition namespace="blackboard.platform">
            <extension id="customAuthProvider" 
                point="blackboard.platform.authProviderHandler"
                class="cn.com.blackboard.CustomAuthProvider" 
                singleton="true" />
        </definition>
    </extension-defs>

    <!-- 插件所需要的权限,Blackboard在你部署时会检测出哪些权限需要单独申请 -->
    <permissions>
      <permission type="runtime" name="db.connection.*" actions=""/>
      <permission type="java.io.FilePermission" name="&amp;lt;&amp;lt;ALL FILES&amp;gt;&amp;gt;" actions="read,write,delete"/>
      <permission type="java.io.FilePermission" name="BB_CONTENT/-" actions="read,write,delete"/>
      <permission type="runtime" name="plugin.install" actions=""/>
      <permission type="runtime" name="report.install" actions=""/>
      <permission type="runtime" name="setContextClassLoader" actions=""/>
      <permission type="runtime" name="accessClassInPackage.*"/>
      <permission type="runtime" name="accessDeclaredMembers"/>
      <permission type="runtime" name="modifyThreadGroup"/>
      <permission type="runtime" name="createClassLoader"/>
      <permission type="persist" name="Plugin" actions="modify"/>
      <permission type="persist" name="contenthandler" actions="modify"/>
      <permission type="javax.management.MBeanPermission" name="*" actions="*"/>
      <permission type="java.lang.reflect.ReflectPermission" name="suppressAccessChecks"/>
      <permission type="java.net.SocketPermission" name="*" actions="connect,accept,resolve,listen"/>
      <permission type="java.util.logging.LoggingPermission" name="control"/>
      <permission type="java.util.PropertyPermission" name="*" actions="read,write"/>
      <permission type="javax.security.auth.AuthPermission" name="doAsPrivileged"/>
      <permission type="runtime" name="getProtectionDomain"/>
      <permission type="runtime" name="*"/>
      <permission type="persist" name="*" actions="*"/>
    </permissions>
  </plugin>
</manifest>