CXM_jquery_tabs.anubis 2.27 KB
/*
 * Created by PyramIDE.
 * User: Jeremy
 * Date: 04/09/2012
 * Time: 16:19
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
 
read calexium_lib/web/CXM_making_a_web_site.anubis
read calexium_lib/web/CXM_jquery.anubis
read tools/basis.anubis

public type JQuery_tab:
 jQuery_tab(String title, HTML_Partial_Content content)
.

  // Helper to be compatible with the first version of JQuery_tab which
  // take HTML_Off_Form as second argument instead of HTML_Partial_Content.
  
public define JQuery_tab
  jQuery_tab
  (
    String        title,
    HTML_Off_Form content
  )=
  jQuery_tab(title, partial_content([], content)).
  
define HTML_Partial_Content
  _jquery_tabs
  (
    String              tabs_container_id,
    List(JQuery_tab)    tabs,
    String              tabs_titles,
    List(HTML_Off_Form) tabs_contents,
    List(HTML_Head_Tag) tabs_heads,
    Int                 count
  )
  =
   if tabs is
   {
      [ ]         then
        partial_content(
          tabs_heads,
          sequence([
            literal("<ul>"+tabs_titles+"</ul>"),
            sequence(reverse(tabs_contents))
          ])
        ),
      [ h . t ]   then
        if h is jQuery_tab(title, p_content) then
        if p_content is partial_content(tags, content) then
          _jquery_tabs(
            tabs_container_id,
            t,
            tabs_titles + "<li><a href=\"#"+tabs_container_id+"-tab-"+count+"\">"+title+"</a></li>",
            [
              sequence([
                literal("<div id=\""+tabs_container_id+"-tab-"+count+"\">"),
                content,
                literal("</div>")
              ])
              .
              tabs_contents
            ],
            tabs_heads + tags ,
            count+1
          )
    }
  .
  
  
public define HTML_Partial_Content
  jquery_tabs
  (
    String              tabs_container_id,
    List(JQuery_tab)    tabs
  )
  =
    if _jquery_tabs(tabs_container_id, tabs, "", [], [], 0) is partial_content(tags, html) then
      partial_content(
        [
          js_inline(jquery_ready("$('#"+tabs_container_id+"').tabs();"))
          .
          tags
        ],
        sequence([
          literal("<div id=\""+tabs_container_id+"\">"),
            html,
      	  literal("</div>")
      	])
      )
  .