示例#1
0
 static function _array_or_string_for_javascript($option)
 {
     Ak::deprecateMethod(__CLASS__ . '::' . __METHOD__, __CLASS__ . '::' . 'array_or_string_for_javascript');
     return AkJavascriptHelper::array_or_string_for_javascript($option);
 }
示例#2
0
 /**
  * Makes the element with the DOM ID specified by +element_id+ receive
  * dropped draggable elements (created by draggable_element).
  * and make an AJAX call  By default, the action called gets the DOM ID 
  * of the element as parameter.
  *
  * Example:
  *   <?= $scriptaculous_helper->drop_receiving_element("my_cart", array('url' => 
  *     array('controller' => "cart", 'action' => "add" ))) ?>
  *
  * You can change the behaviour with various options, see
  * http://script.aculo.us for more documentation.
  */
 public function drop_receiving_element($element_id, $options = array())
 {
     $options['with'] = !empty($options['with']) ? $options['with'] : "'id='" . urlencode(element . id);
     $options['onDrop'] = !empty($options['onDrop']) ? $options['onDrop'] : "function(element){" . AkPrototypeHelper::remote_function($options) . "}";
     foreach ($options as $key => $option) {
         /**
          * @todo: fix this code when implemented PrototypeHelper
          * 
          * if (in_array(AkPrototypeHelper::AJAX_OPTIONS[$option])) {
          *      unset($options[$option]);
          * }
          */
     }
     if (in_array($options['accept'])) {
         $options['accept'] = AkJavascriptHelper::array_or_string_for_javascript($options['accept']);
     }
     if (in_array($options['hoverclass'])) {
         $options['hoverclass'] = "'{$options['hoverclass']}'";
     }
     return AkJavascriptHelper::javascript_tag("Droppables.add('{$element_id}', " . AkJavascriptHelper::_options_for_javascript($options) . ")");
 }
示例#3
0
 public function _post_javascript_function($method = null)
 {
     $method = empty($method) ? '' : "m.setAttribute('type', 'hidden'); " . "m.setAttribute('name', '_method'); " . "m.setAttribute('value', 'delete'); ";
     //     <td><a href="/credit_cards/3" onclick="if (confirm('Are you sure?')) {
     return "var f = document.createElement('form'); " . "f.style.display = 'none'; " . "this.parentNode.appendChild(f); " . "f.method = 'POST'; " . "f.action = this.href;" . "var m = document.createElement('input'); " . $method . "f.appendChild(m);" . "var s = document.createElement('input'); " . "s.setAttribute('type', 'hidden'); " . "s.setAttribute('name', 'authenticity_token'); " . "s.setAttribute('value', '" . AkJavascriptHelper::escape_javascript(AkFormHelper::form_authenticity_token()) . "'); " . "f.appendChild(s);" . "f.submit();";
 }
 /**
  * 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 
  */
 public 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 .= "'" . $this->_controller->ak_url_helper->url_for($options['url']) . "'";
     $js_options = array();
     if (!empty($options['tokens'])) {
         $js_options['tokens'] = AkJavascriptHelper::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 .= ', ' . AkJavascriptHelper::_options_for_javascript($js_options) . ')';
     return AkJavascriptHelper::javascript_tag($function);
 }