Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

Table of Contents

Panel

Excerpt

Tips and techniques to help in the process of customizing the interface.

Use the Developer Panel

Many of these techniques involve The Developer Panel, which is described in the VIVO Programmer's Notes section of the wiki.the Developer Panel.  You can start the Developer Panel at Site Admin > Activate Developer Panel.  When the Developer Panel has been activated, you will see:

Image Added

When you click on the Developer Mode banner, you will see:

Image Added

To close the Developer Panel, unselect "Enable Developer Mode" in the upper left hand corner, and press "Save Settings" in the lower left hand corner.

Developer Panel Settings

You can change settings on The Developer Panel interactivelyYou can change settings on The Developer Panel interactively, while VIVO is running, or you can use a developer.properties file  file in your VIVO home directory.

Code Block
titleA typical developer.properties file
developer.enabled=true
developer.permitAnonymousControl=true
developer.defeatFreemarkerCache=true

When any feature of The Developer Panel is active, you will see this indicator in the header of your VIVO pages:Image Removed

This is to remind you that developer options may slow down your VIVO, and should not be used in production.

Iterate your code more quickly

Reduce the VIVO build time

A full rebuild of VIVO may be necessary if you are changing the Java source code, or the contents of RDF files. However, if you are only making changes to the Freemarker templates, you can run the build script like this:

Code Block
ant deploy -Dskiptests=true

By choosing ant deploy instead of ant all or ant clean deploy, you are selecting an incremental build which will not re-compile all of the Java classes, or copy all of the unchanged files. By setting the option -skiptests=true, you are choosing not to run the unit tests. This is reasonable because the unit tests to not apply to the Freemarker templates.

After making your changes to the templates, you should perform a full build with unit tests.

...

...

ant all

Don't restart VIVO until you need to

...

As mentioned above, VIVO will detect changes to Freemarker templates. By default, however, VIVO will not detect the changes immediately. The Freemarker framework caches the templates that it uses, and won't even look to see if a template has changed until 1 minute after it was last read from disk. In a production system, of course, that makes the accessing much more efficient. When you are making frequent changes, it's an annoyance.

Use The Developer Panel to defeat the Freemarker cache.

...

Also, you can skip the unit tests when building VIVO, as shown in Reduce the VIVO build time. Unit  Unit tests do not apply to listViewConfigs.

...

It's not always clear which template has created a particular piece of your HTML page. Templates include other templates, templates are invoked in custom list views, short views, etc. You can use The Developer Panel to insert comments in the HTML that tell you where each template begins and ends.

...

Code Block
...
    
    <body >
            <!-- FM_BEGIN identity.ftl -->

<header id="branding" role="banner">

  <h1 class="vivo-logo"><a title="VIVO | connect share discover" href="/vivo">
    <span class="displace">VIVO</span>
  </a></h1>

  <nav role="navigation">
    <ul id="header-nav" role="list">
<!-- FM_BEGIN languageSelector.ftl -->
<!-- FM_END languageSelector.ftl -->
        <li role="listitem"><a href="/vivo/browse" title="Index">Index</a></li>
        <li role="listitem"><a href="/vivo/siteAdmin" title="Site Admin">Site Admin</a></li>
        <li>
          <ul class="dropdown">
            <li id="user-menu"><a href="#" title="user">Jim</a>
              <ul class="sub_menu">
                <li role="listitem"><a href="/vivo/accounts/myAccount" title="My account">My account</a></li>
                <li role="listitem"><a href="/vivo/logout" title="Log out">Log out</a></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </nav><!-- FM_END identity.ftl -->
            <!-- FM_BEGIN menu.ftl -->
</header>

...