function test_javascript_tag() { $javascript = new JavaScriptHelper(); //static call $this->AssertEqual(JavascriptHelper::javascript_tag("alert('test akelos');"), "<script type=\"text/javascript\">\n//<![CDATA[\nalert('test akelos');\n//]]>\n</script>"); //object call $this->AssertEqual($javascript->javascript_tag("alert('test akelos');"), "<script type=\"text/javascript\">\n//<![CDATA[\nalert('test akelos');\n//]]>\n</script>"); }
function test_for_JavascriptHelper() { require_once AK_LIB_DIR . DS . 'AkActionView' . DS . 'helpers' . DS . 'javascript_helper.php'; $javascript = new JavaScriptHelper(); $this->assertEqual($javascript->link_to_function('Greeting', "alert('Hello world!')"), '<a href="#" onclick="alert(\'Hello world!\'); return false;">Greeting</a>'); $this->assertEqual($javascript->link_to_function('my link', "if confirm('Really?'){ do_delete(); }", array('href' => 'http://www.akelos.com')), '<a href="http://www.akelos.com" onclick="if confirm(\'Really?\'){ do_delete(); }; return false;">my link</a>'); $this->assertEqual($javascript->button_to_function("Greeting", "alert('Hello world!')"), '<input onclick="alert(\'Hello world!\');" type="button" value="Greeting" />'); $this->assertEqual($javascript->button_to_function("Delete", "if confirm('Really?'){ do_delete(); }", array('id' => 'confirm')), '<input id="confirm" onclick="if confirm(\'Really?\'){ do_delete(); };" type="button" value="Delete" />'); $this->assertEqual($javascript->javascript_tag("alert('All is good')"), "<script type=\"text/javascript\">\n//<![CDATA[\nalert('All is good')\n//]]>\n</script>"); $input = "\n <div id='meesage'\n \n class=\"hisghtlight\" />\n "; $expected = "\\n <div id=\\'meesage\\'\\n \\n class=\\\"hisghtlight\\\" />\\n "; $this->assertEqual($javascript->escape_javascript($input), $expected); }
/** * Adds AJAX autocomplete functionality to the text input field with the * DOM ID specified by +field_id+. * * This function expects that the called action returns a HTML <ul> list, * or nothing if no entries should be displayed for autocompletion. * * You'll probably want to turn the browser's built-in autocompletion off, * so be sure to include a autocomplete="off" attribute with your text * input field. * * The autocompleter object is assigned to a Javascript variable named <tt>field_id</tt>_auto_completer. * This object is useful if you for example want to trigger the auto-complete suggestions through * other means than user input (for that specific case, call the <tt>activate</tt> method on that object). * * Required +options+ are: * <tt>url</tt>:: URL to call for autocompletion results * in url_for format. * * Addtional +options+ are: * <tt>update</tt>:: Specifies the DOM ID of the element whose * innerHTML should be updated with the autocomplete * entries returned by the AJAX request. * Defaults to field_id + '_auto_complete' * <tt>with</tt>:: A JavaScript expression specifying the * parameters for the XMLHttpRequest. This defaults * to 'fieldname=value'. * <tt>indicator</tt>:: Specifies the DOM ID of an element which will be * displayed while autocomplete is running. * <tt>tokens</tt>:: A string or an array of strings containing * separator tokens for tokenized incremental * autocompletion. Example: <tt>tokens => ','</tt> would * allow multiple autocompletion entries, separated * by commas. * <tt>min_chars</tt>:: The minimum number of characters that should be * in the input field before an Ajax call is made * to the server. * <tt>on_hide</tt>:: A Javascript expression that is called when the * autocompletion div is hidden. The expression * should take two variables: element and update. * Element is a DOM element for the field, update * is a DOM element for the div from which the * innerHTML is replaced. * <tt>on_show</tt>:: Like on_hide, only now the expression is called * then the div is shown. * <tt>select</tt>:: Pick the class of the element from which the value for * insertion should be extracted. If this is not specified, * the entire element is used. * @deprecated */ function auto_complete_field($field_id, $options = array()) { $function = "var {$field_id}_auto_completer = new Ajax.Autocompleter("; $function .= "'{$field_id}', "; $function .= !empty($options['update']) ? "'{$options['update']}', " : "'{$field_id}_auto_complete', "; $function .= "'".UrlHelper::url_for($options['url'])."'"; $js_options = array(); if (!empty($options['tokens'])){ $js_options['tokens'] = JavaScriptHelper::_array_or_string_for_javascript($options['tokens']) ; } if (!empty($options['with'])) { $js_options['callback'] = "function(element, value) { return {$options['with']} }"; } if (!empty($options['indicator'])) { $js_options['indicator'] = "'{$options['indicator']}'"; } if (!empty($options['select'])) { $js_options['select'] = "'{$options['select']}'"; } $default_options = array( 'on_show' => 'onShow', 'on_hide' => 'onHide', 'min_chars' => 'min_chars' ); foreach ($default_options as $key=>$default_option) { if (!empty($options[$key])) { $js_options[$default_option] = $options[$key]; } } $function .= ', '.JavaScriptHelper::_options_for_javascript($js_options).')'; return JavaScriptHelper::javascript_tag($function); }