Version 0 of scriptaculous

Updated 2006-10-23 16:06:46 by MJ

MJ - Scriptaculous [L1 ] is a framework to simplify the JavaScript part of Ajax. Because it is server implementation agnostic, it can be used to add Ajax functionality to tclhttpd. Note that according to the wiki, it is already integrated in OpenACS.

To instal it download the javascript files from the URL above and put them in the htdocs/javascripts directory of your tclhttpd directory. In you custom directory add the file ajax.tcl with contents:

 proc ajax {} {
  # Initial call: build page
  set ::ajax text/html
  set head {
    <script src="/javascripts/prototype.js" type="text/javascript"></script>
    <script src="/javascripts/scriptaculous.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="/css/scriptaculous.css" />    
  }
  set body {
    <input type="text" id="autocomplete" name="autocomplete_parameter"/><div id="autocomplete_choices" class="autocomplete"></div>
    <script type="text/javascript" language="javascript" charset="utf-8">
    // <![CDATA[
      new Ajax.Autocompleter("autocomplete", "autocomplete_choices", "/ajax/complete", {});
      // ]]>
    </script>
  }
  set result "<html><head>$head</head><body>$body</body></html>"
  return $result
 }

 proc ajax/complete {args} {
  puts $args
  set txt [lindex $args 1]
  set ajax/complete text/xml
  set result <ul>
  foreach cmd [info commands ${txt}*] {
    set result [concat $result "<li>$cmd</li>\r\n"]
  }
  set result [concat $result "</ul>"]
  puts $result
  return $result
 }

 Direct_Url /ajax ::ajax 

And for nice markup the following in httpdocs/css/scriptaculous.css

 div.autocomplete {
  position:absolute;
  width:250px;
  background-color:white;
  border:1px solid #888;
  margin:0px;
  padding:0px;
 }
 div.autocomplete ul {
  list-style-type:none;
  margin:0px;
  padding:0px;
 }
 div.autocomplete ul li.selected { background-color: #ffb;}
 div.autocomplete ul li {
  list-style-type:none;
  display:block;
  margin:0;
  padding:2px;
  /* height:32px; */
  cursor:pointer;
 }

Now we have a text field with autocompletion on the currently defined Tcl commands.


Category Internet