bloodhound-trac / trac / admin / templates / admin_plugins.html

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html xmlns=""
  <xi:include href="admin.html" />
    <script type="text/javascript" src="${chrome.htdocs_location}js/folding.js"></script>
    <script type="text/javascript">
        $("h3.foldable").enableFolding(true, true);
        $("p.foldable").enableFolding(true, false);
        $("thead .trac-toggler a").each(function() {
          $(this).attr("href", "").click(function() {
            var td = $(this).closest("table").find("tbody td");
            var a = td.find(".trac-toggler a");
            if ($(this).text() == "+") {
            } else {
            return false;

    <h2>Manage Plugins</h2>

    <form id="addplug" class="addnew" method="post" enctype="multipart/form-data" action="">
        <legend>Install Plugin:</legend>
        <div class="field">
          <label i18n:msg="">
            File: <input type="file" name="plugin_file" disabled="${readonly or None}" />
        <div class="buttons">
          <input type="submit" name="install" value="${_('Install')}"
                 disabled="${readonly or None}" />
        <p class="help" py:choose="readonly">
          <py:when test="True">
            The web server does not have sufficient permissions to store files in
            the environment plugins directory.
            Upload a plugin packaged as Python egg.

    <form py:for="idx, plugin in enumerate(plugins)" method="post" action="">
      <div class="plugin" id="trac-plugin-${}">
        <h3 class="foldable">${} ${plugin.version}</h3>
        <!--! FIXME: Plugin uninstall disabled as it is unreliable (#3545)
        <div class="uninstall buttons">
          <input type="hidden" name="plugin_filename"
                 value="${plugin.plugin_filename}" />
          <input type="submit" name="uninstall" value="${_('Uninstall')}"
                 disabled="${plugin.readonly or None}" />
        </div> -->
        <py:if test="">
          <p class="summary">${'summary')}</p>
          <dl py:if="'home_page' in or
                     'author' in or
                     'author_email' in"
            <py:if test="'author' in or 'author_email' in">
                <a py:strip="not'author_email')"
                  ${ or}
            <py:if test="'home_page')">
              <dt>Home page:</dt>
                <a onclick="; return false"
            <py:if test="'license')">
        <table class="listing">
                <span class="trac-toggler">
                  [<a title="Show all descriptions" href="${href.admin('general', 'plugin',
                                                            + '#trac-plugin-' +}">+</a>]
                  [<a title="Hide all descriptions" href="${href.admin('general', 'plugin')
                                                            + '#trac-plugin-' +}">&ndash;</a>]
              <th class="sel">Enabled</th>
          <tbody py:for="module_name, module in sorted(plugin.modules.iteritems())">
              <td py:with="show_doc = show == or show == module_name" id="trac-mod-${module_name}"
                  class="trac-module${' collapsed' if not show_doc and module.description else None}">
                <p class="trac-heading${' foldable' if module.description else None}">
                    <a py:when="module.description" class="trac-name"
                       href="${href.admin('general', 'plugin', show=module_name if not show_doc else None)                                                     
                               + '#trac-mod-' + module_name}">${module_name}.*</a>
                    <span py:otherwise="" class="trac-name">${module_name}.*</span>
                  <span py:if="module.summary" class="trac-summary"> &mdash; ${module.summary}</span>
                <div py:if="module.description" xml:space="preserve">${safe_wiki_to_html(context, module.description)}</div>
              <td class="sel"></td>
            <tr py:for="component_name, component in sorted(module.components.iteritems())">
              <td py:with="show_doc = show == or show == component.full_name" id="trac-comp-${component.full_name}"
                  class="trac-component${' collapsed' if not show_doc else None}">
                <p class="trac-heading${' foldable' if component.description else None}">
                    <a py:when="component.description" class="trac-name"
                       href="${href.admin('general', 'plugin', show=component.full_name if not show_doc else None)                                             
                               + '#trac-comp-' + component.full_name}">${component_name}</a>
                    <span py:otherwise="" class="trac-name">${component_name}</span>
                  <span py:if="component.summary" class="trac-summary"> &mdash; ${component.summary}</span>
                <div py:if="component.description" xml:space="preserve">${safe_wiki_to_html(context, component.description)}</div>
              <td class="sel">
                <input py:if="not component.required" type="hidden" name="component"
                       value="${module_name}.${component_name}" />
                <input type="checkbox" name="enable"
                       checked="${component.enabled or None}"
                       disabled="${component.required or None}" />
        <div class="buttons">
          <input type="hidden" name="plugin" value="$idx" />
          <input type="submit" name="update" value="${_('Apply changes')}" />

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.