Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Some schools have rewritten their themes to provide alternate interfaces for integratedModes and ALM by maintaining the format of the URLs but introducing tricks like AJAX, new controls, etc. This is a place to document these things.

Necessary Features

  • Add: Tab, Column, Channel
  • Move: Tab, Column, Channel (fragments?)
  • Remove: Tab, Column, Channel
  • Rename Tab
  • Minimize Channel

Some Initial Thoughts from Virginia Tech

...

No Format
XMLDocument getLayout()
       void setLayout(XMLDocument)
       void saveLayout()
       Node getLayoutRoot()
       Node addFolder(name, parentNode, nextNode)
       Node addPortlet(fname, parentNode, nextNode)
       void setParameter(node, name, value[])
       void deleteParameter(node, name)
Panel
borderColor#ccc
bgColor#FFFFCC
titleBGColor#FFFFCC
borderStylesolid
titleModality

I don't really like the idea of save/set options, since I really think that the model should be non-modal. Right now there's this oddity of actions like remove channel which happen immediately, but other options which are applied and then saved. Getting users to save changes in particular seems like it's as hard as getting them to logout.

  • Looking at the example below for adding a tab, you'll see that the addTab method automatically saves the new tab when it is created. I think it should be up to the institution to decide how save should be implemented. Out of the box, all actions could be immediately saved. - Collier

So, for My VT, adding a tab might work like this:

...

Customize Servlet: (in pseudocode)
Edit: Removed :: notation which was Virginia Tech-specific.

Code Block
JavaScript
JavaScript
 
function addTab(name) {
  var root = getLayoutRoot();
  var newTab = addFolder("tab::New Tab", root, null);
  var newPage = addFolder("page::default", newTab, null);
  var newMainColumn = addFolder("column::main", newPage, null);
  var newSideColumn = addFolder("column::side", newPage, null);
  saveLayout();
}

...

Code Block
xml
xml
 
<layout>
  <folder name="tab::New Tab">
    <folder name="page::default">
      <folder name="column::main"/>
      <folder name="column::side"/>
    </folder>
  </folder>
</layout>

...

  • Having two "IDs" for folders/portlets, one that is human-readable and one that is generated by the system (database ID numbers).
  • The "name" of a folder being the display name of the folder, or moved into a parameter described in the next point.
    Code Block
    xml
    xml
    <folder id="tab-home" name="Home" systemID="345-42"/>
    
  • I'd like to see arbitrary, multi-value parameters allowed for folders and portlets
    Code Block
    xml
    xml
    
    <folder id="tab-home" systemID="345-42">
      <parameter name="display-name"><value>Home</value></parameter>
      <parameter name="type"><value>tab</value></parameter>
      <parameter name="allowed-portlet-widths">
        <value>30</value>
        <value>60</value>
      </parameter>
    </folder>