mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Updating AjaxHelper docblocks and fixing code formatting -- lines wrap at 100 characters. Fixes #5701.
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@7852 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
e9953e3f93
commit
ab152bd291
1 changed files with 176 additions and 60 deletions
|
@ -58,49 +58,78 @@ class AjaxHelper extends AppHelper {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
var $callbacks = array('complete', 'create', 'exception', 'failure', 'interactive', 'loading', 'loaded', 'success', 'uninitialized');
|
||||
var $callbacks = array(
|
||||
'complete', 'create', 'exception', 'failure', 'interactive', 'loading',
|
||||
'loaded', 'success', 'uninitialized'
|
||||
);
|
||||
/**
|
||||
* Names of AJAX options.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $ajaxOptions = array('after', 'asynchronous', 'before', 'confirm', 'condition', 'contentType', 'encoding', 'evalScripts', 'failure', 'fallback', 'form', 'indicator', 'insertion', 'interactive', 'loaded', 'loading', 'method', 'onCreate', 'onComplete', 'onException', 'onFailure', 'onInteractive', 'onLoaded', 'onLoading', 'onSuccess', 'onUninitialized', 'parameters', 'position', 'postBody', 'requestHeaders', 'success', 'type', 'update', 'with');
|
||||
var $ajaxOptions = array(
|
||||
'after', 'asynchronous', 'before', 'confirm', 'condition', 'contentType', 'encoding',
|
||||
'evalScripts', 'failure', 'fallback', 'form', 'indicator', 'insertion', 'interactive',
|
||||
'loaded', 'loading', 'method', 'onCreate', 'onComplete', 'onException', 'onFailure',
|
||||
'onInteractive', 'onLoaded', 'onLoading', 'onSuccess', 'onUninitialized', 'parameters',
|
||||
'position', 'postBody', 'requestHeaders', 'success', 'type', 'update', 'with'
|
||||
);
|
||||
/**
|
||||
* Options for draggable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $dragOptions = array('handle', 'revert', 'snap', 'zindex', 'constraint', 'change', 'ghosting', 'starteffect', 'reverteffect', 'endeffect');
|
||||
var $dragOptions = array(
|
||||
'handle', 'revert', 'snap', 'zindex', 'constraint', 'change', 'ghosting',
|
||||
'starteffect', 'reverteffect', 'endeffect'
|
||||
);
|
||||
/**
|
||||
* Options for droppable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $dropOptions = array('accept', 'containment', 'greedy', 'hoverclass', 'onHover', 'onDrop', 'overlap');
|
||||
var $dropOptions = array(
|
||||
'accept', 'containment', 'greedy', 'hoverclass', 'onHover', 'onDrop', 'overlap'
|
||||
);
|
||||
/**
|
||||
* Options for sortable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $sortOptions = array('constraint', 'containment', 'dropOnEmpty', 'ghosting', 'handle', 'hoverclass', 'onUpdate', 'onChange', 'only', 'overlap', 'scroll', 'scrollSensitivity', 'scrollSpeed', 'tag', 'tree', 'treeTag', 'update');
|
||||
var $sortOptions = array(
|
||||
'constraint', 'containment', 'dropOnEmpty', 'ghosting', 'handle', 'hoverclass', 'onUpdate',
|
||||
'onChange', 'only', 'overlap', 'scroll', 'scrollSensitivity', 'scrollSpeed', 'tag', 'tree',
|
||||
'treeTag', 'update'
|
||||
);
|
||||
/**
|
||||
* Options for slider.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $sliderOptions = array('alignX', 'alignY', 'axis', 'disabled', 'handleDisabled', 'handleImage', 'increment', 'maximum', 'minimum', 'onChange', 'onSlide', 'range', 'sliderValue', 'values');
|
||||
var $sliderOptions = array(
|
||||
'alignX', 'alignY', 'axis', 'disabled', 'handleDisabled', 'handleImage', 'increment',
|
||||
'maximum', 'minimum', 'onChange', 'onSlide', 'range', 'sliderValue', 'values'
|
||||
);
|
||||
/**
|
||||
* Options for in-place editor.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $editorOptions = array('okText', 'cancelText', 'savingText', 'formId', 'externalControl', 'rows', 'cols', 'size', 'highlightcolor', 'highlightendcolor', 'savingClassName', 'formClassName', 'loadTextURL', 'loadingText', 'callback', 'ajaxOptions', 'clickToEditText', 'collection', 'okButton', 'cancelLink', 'submitOnBlur');
|
||||
var $editorOptions = array(
|
||||
'okText', 'cancelText', 'savingText', 'formId', 'externalControl', 'rows', 'cols', 'size',
|
||||
'highlightcolor', 'highlightendcolor', 'savingClassName', 'formClassName', 'loadTextURL',
|
||||
'loadingText', 'callback', 'ajaxOptions', 'clickToEditText', 'collection', 'okButton',
|
||||
'cancelLink', 'submitOnBlur'
|
||||
);
|
||||
/**
|
||||
* Options for auto-complete editor.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $autoCompleteOptions = array('afterUpdateElement', 'callback', 'frequency', 'indicator', 'minChars', 'onShow', 'onHide', 'parameters', 'paramName', 'tokens', 'updateElement');
|
||||
var $autoCompleteOptions = array(
|
||||
'afterUpdateElement', 'callback', 'frequency', 'indicator', 'minChars', 'onShow', 'onHide',
|
||||
'parameters', 'paramName', 'tokens', 'updateElement'
|
||||
);
|
||||
/**
|
||||
* Output buffer for Ajax update content
|
||||
*
|
||||
|
@ -187,11 +216,13 @@ class AjaxHelper extends AppHelper {
|
|||
if (empty($options['fallback']) || !isset($options['fallback'])) {
|
||||
$options['fallback'] = $href;
|
||||
}
|
||||
$htmlOptions = array_merge(array('id' => 'link' . intval(mt_rand()), 'onclick' => ''), $htmlOptions);
|
||||
$htmlDefaults = array('id' => 'link' . intval(mt_rand()), 'onclick' => '');
|
||||
$htmlOptions = array_merge($htmlDefaults, $htmlOptions);
|
||||
|
||||
$htmlOptions['onclick'] .= ' event.returnValue = false; return false;';
|
||||
$return = $this->Html->link($title, $href, $htmlOptions, null, $escapeTitle);
|
||||
$script = $this->Javascript->event("'{$htmlOptions['id']}'", "click", $this->remoteFunction($options));
|
||||
$callback = $this->remoteFunction($options);
|
||||
$script = $this->Javascript->event("'{$htmlOptions['id']}'", "click", $callback);
|
||||
|
||||
if (is_string($script)) {
|
||||
$return .= $script;
|
||||
|
@ -248,30 +279,40 @@ class AjaxHelper extends AppHelper {
|
|||
/**
|
||||
* Periodically call remote url via AJAX.
|
||||
*
|
||||
* Periodically calls the specified url (<i>options[url]</i>) every <i>options[frequency]</i> seconds (default is 10).
|
||||
* Usually used to update a specified div (<i>options[update]</i>) with the results of the remote call.
|
||||
* The options for specifying the target with url and defining callbacks is the same as linkToRemote.
|
||||
* Periodically calls the specified url (<i>options[url]</i>) every <i>options[frequency]</i>
|
||||
* seconds (default is 10). Usually used to update a specified div (<i>options[update]</i>) with
|
||||
* the results of the remote call. The options for specifying the target with url and defining
|
||||
* callbacks is the same as AjaxHelper::link().
|
||||
*
|
||||
* @param array $options Callback options
|
||||
* @return string Javascript code
|
||||
* @see AjaxHelper::link()
|
||||
*/
|
||||
function remoteTimer($options = null) {
|
||||
$frequency = (isset($options['frequency'])) ? $options['frequency'] : 10;
|
||||
$code = "new PeriodicalExecuter(function() {" . $this->remoteFunction($options) . "}, $frequency)";
|
||||
$callback = $this->remoteFunction($options);
|
||||
$code = "new PeriodicalExecuter(function() {{$callback}}, $frequency)";
|
||||
return $this->Javascript->codeBlock($code);
|
||||
}
|
||||
/**
|
||||
* Returns form tag that will submit using Ajax.
|
||||
*
|
||||
* Returns a form tag that will submit using XMLHttpRequest in the background instead of the regular
|
||||
* reloading POST arrangement. Even though it's using Javascript to serialize the form elements, the form submission
|
||||
* will work just like a regular submission as viewed by the receiving side (all elements available in params).
|
||||
* The options for defining callbacks is the same as link().
|
||||
* reloading POST arrangement. Even though it's using Javascript to serialize the form elements,
|
||||
* the form submission will work just like a regular submission as viewed by the receiving side
|
||||
* (all elements available in params). The options for defining callbacks is the same
|
||||
* as AjaxHelper::link().
|
||||
*
|
||||
* @param array $params Form target
|
||||
* @param mixed $params Either a string identifying the form target, or an array of method
|
||||
* parameters, including:
|
||||
* - 'params' => Acts as the form target
|
||||
* - 'type' => 'post' or 'get'
|
||||
* - 'options' => An array containing all HTML and script options used to
|
||||
* generate the form tag and Ajax request.
|
||||
* @param array $type How form data is posted: 'get' or 'post'
|
||||
* @param array $options Callback/HTML options
|
||||
* @return string JavaScript/HTML code
|
||||
* @see AjaxHelper::link()
|
||||
*/
|
||||
function form($params = null, $type = 'post', $options = array()) {
|
||||
$model = false;
|
||||
|
@ -283,25 +324,33 @@ class AjaxHelper extends AppHelper {
|
|||
$options['url'] = array('action' => $params);
|
||||
}
|
||||
|
||||
$htmlOptions = array_merge(array(
|
||||
'id' => 'form' . intval(mt_rand()), 'onsubmit' => "event.returnValue = false; return false;",
|
||||
'type' => $type),
|
||||
$this->__getHtmlOptions($options, array('model', 'with'))
|
||||
$htmlDefaults = array(
|
||||
'id' => 'form' . intval(mt_rand()),
|
||||
'onsubmit' => "event.returnValue = false; return false;",
|
||||
'type' => $type
|
||||
);
|
||||
$htmlOptions = $this->__getHtmlOptions($options, array('model', 'with'));
|
||||
$htmlOptions = array_merge($htmlDefaults, $htmlOptions);
|
||||
|
||||
$options = array_merge(array('model' => $model,'with' => "Form.serialize('{$htmlOptions['id']}')"), $options);
|
||||
return $this->Form->create($options['model'], $htmlOptions)
|
||||
. $this->Javascript->event("'" . $htmlOptions['id']. "'", 'submit', $this->remoteFunction($options));
|
||||
$defaults = array('model' => $model, 'with' => "Form.serialize('{$htmlOptions['id']}')");
|
||||
$options = array_merge($defaults, $options);
|
||||
$callback = $this->remoteFunction($options);
|
||||
|
||||
$form = $this->Form->create($options['model'], $htmlOptions);
|
||||
$script = $this->Javascript->event("'" . $htmlOptions['id']. "'", 'submit', $callback);
|
||||
return $form . $script;
|
||||
}
|
||||
/**
|
||||
* Returns a button input tag that will submit using Ajax
|
||||
*
|
||||
* Returns a button input tag that will submit form using XMLHttpRequest in the background instead of regular
|
||||
* reloading POST arrangement. <i>options</i> argument is the same as in <i>form_remote_tag</i>
|
||||
* Returns a button input tag that will submit form using XMLHttpRequest in the background instead
|
||||
* of regular reloading POST arrangement. <i>options</i> argument is the same as
|
||||
* in AjaxHelper::form().
|
||||
*
|
||||
* @param string $title Input button title
|
||||
* @param array $options Callback options
|
||||
* @return string Ajaxed input button
|
||||
* @see AjaxHelper::form()
|
||||
*/
|
||||
function submit($title = 'Submit', $options = array()) {
|
||||
$htmlOptions = $this->__getHtmlOptions($options);
|
||||
|
@ -315,8 +364,11 @@ class AjaxHelper extends AppHelper {
|
|||
}
|
||||
|
||||
$htmlOptions['onclick'] = "event.returnValue = false; return false;";
|
||||
return $this->Form->submit($title, $htmlOptions)
|
||||
. $this->Javascript->event('"' . $htmlOptions['id'] . '"', 'click', $this->remoteFunction($options));
|
||||
$callback = $this->remoteFunction($options);
|
||||
|
||||
$form = $this->Form->submit($title, $htmlOptions);
|
||||
$script = $this->Javascript->event('"' . $htmlOptions['id'] . '"', 'click', $callback);
|
||||
return $form . $script;
|
||||
}
|
||||
/**
|
||||
* Observe field and call ajax on change.
|
||||
|
@ -354,7 +406,9 @@ class AjaxHelper extends AppHelper {
|
|||
if (!isset($options['frequency']) || intval($options['frequency']) == 0) {
|
||||
$observer = 'EventObserver';
|
||||
}
|
||||
return $this->Javascript->codeBlock($this->_buildObserver('Form.Element.' . $observer, $field, $options));
|
||||
return $this->Javascript->codeBlock(
|
||||
$this->_buildObserver('Form.Element.' . $observer, $field, $options)
|
||||
);
|
||||
}
|
||||
/**
|
||||
* Observe entire form and call ajax on change.
|
||||
|
@ -376,7 +430,9 @@ class AjaxHelper extends AppHelper {
|
|||
if (!isset($options['frequency']) || intval($options['frequency']) == 0) {
|
||||
$observer = 'EventObserver';
|
||||
}
|
||||
return $this->Javascript->codeBlock($this->_buildObserver('Form.' . $observer, $form, $options));
|
||||
return $this->Javascript->codeBlock(
|
||||
$this->_buildObserver('Form.' . $observer, $form, $options)
|
||||
);
|
||||
}
|
||||
/**
|
||||
* Create a text field with Autocomplete.
|
||||
|
@ -402,7 +458,11 @@ class AjaxHelper extends AppHelper {
|
|||
$options['id'] = Inflector::camelize(str_replace(".", "_", $field));
|
||||
}
|
||||
|
||||
$divOptions = array('id' => $options['id'] . "_autoComplete", 'class' => isset($options['class']) ? $options['class'] : 'auto_complete');
|
||||
$divOptions = array(
|
||||
'id' => $options['id'] . "_autoComplete",
|
||||
'class' => isset($options['class']) ? $options['class'] : 'auto_complete'
|
||||
);
|
||||
|
||||
if (isset($options['div_id'])) {
|
||||
$divOptions['id'] = $options['div_id'];
|
||||
unset($options['div_id']);
|
||||
|
@ -426,11 +486,13 @@ class AjaxHelper extends AppHelper {
|
|||
$options = $this->_optionsToString($options, array('paramName', 'indicator'));
|
||||
$options = $this->_buildOptions($options, $this->autoCompleteOptions);
|
||||
|
||||
return $this->Form->text($field, $htmlOptions) . "\n" .
|
||||
$this->Html->div(null, '', $divOptions) . "\n" .
|
||||
$this->Javascript->codeBlock("{$var}new Ajax.Autocompleter('" . $htmlOptions['id']
|
||||
. "', '" . $divOptions['id'] . "', '" . $this->Html->url($url) . "', " .
|
||||
$options . ");");
|
||||
|
||||
$text = $this->Form->text($field, $htmlOptions);
|
||||
$div = $this->Html->div(null, '', $divOptions);
|
||||
$script = "{$var}new Ajax.Autocompleter('{$htmlOptions['id']}', '{$divOptions['id']}', '";
|
||||
$script .= $this->Html->url($url) . "', {$options});";
|
||||
|
||||
return "{$text}\n{$div}\n" . $this->Javascript->codeBlock($script);
|
||||
}
|
||||
/**
|
||||
* Creates an Ajax-updateable DIV element
|
||||
|
@ -492,7 +554,9 @@ class AjaxHelper extends AppHelper {
|
|||
$var = 'var ' . $options['var'] . ' = ';
|
||||
unset($options['var']);
|
||||
}
|
||||
$options = $this->_buildOptions($this->_optionsToString($options, array('handle', 'constraint')), $this->dragOptions);
|
||||
$options = $this->_buildOptions(
|
||||
$this->_optionsToString($options, array('handle', 'constraint')), $this->dragOptions
|
||||
);
|
||||
return $this->Javascript->codeBlock("{$var}new Draggable('$id', " .$options . ");");
|
||||
}
|
||||
/**
|
||||
|
@ -510,7 +574,9 @@ class AjaxHelper extends AppHelper {
|
|||
} else if (isset($options['accept'])) {
|
||||
$options['accept'] = $this->Javascript->object($options['accept']);
|
||||
}
|
||||
$options = $this->_buildOptions($this->_optionsToString($options, $optionsString), $this->dropOptions);
|
||||
$options = $this->_buildOptions(
|
||||
$this->_optionsToString($options, $optionsString), $this->dropOptions
|
||||
);
|
||||
return $this->Javascript->codeBlock("Droppables.add('{$id}', {$options});");
|
||||
}
|
||||
/**
|
||||
|
@ -526,14 +592,20 @@ class AjaxHelper extends AppHelper {
|
|||
* @return string JavaScript block to create a droppable element
|
||||
*/
|
||||
function dropRemote($id, $options = array(), $ajaxOptions = array()) {
|
||||
$options['onDrop'] = "function(element, droppable, event) {" . $this->remoteFunction($ajaxOptions) . "}";
|
||||
$callback = $this->remoteFunction($ajaxOptions);
|
||||
$options['onDrop'] = "function(element, droppable, event) {{$callback}}";
|
||||
$optionsString = array('overlap', 'hoverclass');
|
||||
|
||||
if (!isset($options['accept']) || !is_array($options['accept'])) {
|
||||
$optionsString[] = 'accept';
|
||||
} else if (isset($options['accept'])) {
|
||||
$options['accept'] = $this->Javascript->object($options['accept']);
|
||||
}
|
||||
$options = $this->_buildOptions($this->_optionsToString($options, $optionsString), $this->dropOptions);
|
||||
|
||||
$options = $this->_buildOptions(
|
||||
$this->_optionsToString($options, $optionsString),
|
||||
$this->dropOptions
|
||||
);
|
||||
return $this->Javascript->codeBlock("Droppables.add('{$id}', {$options});");
|
||||
}
|
||||
/**
|
||||
|
@ -552,12 +624,15 @@ class AjaxHelper extends AppHelper {
|
|||
$var = 'var ' . $id . ' = ';
|
||||
}
|
||||
|
||||
$options = $this->_optionsToString($options, array('axis', 'handleImage', 'handleDisabled'));
|
||||
$options = $this->_optionsToString($options, array(
|
||||
'axis', 'handleImage', 'handleDisabled'
|
||||
));
|
||||
$callbacks = array('change', 'slide');
|
||||
|
||||
foreach ($callbacks as $callback) {
|
||||
if (isset($options[$callback])) {
|
||||
$options['on' . ucfirst($callback)] = 'function(value) {' . $options[$callback] . '}';
|
||||
$call = $options[$callback];
|
||||
$options['on' . ucfirst($callback)] = "function(value) {{$call}}";
|
||||
unset($options[$callback]);
|
||||
}
|
||||
}
|
||||
|
@ -567,7 +642,8 @@ class AjaxHelper extends AppHelper {
|
|||
}
|
||||
|
||||
$options = $this->_buildOptions($options, $this->sliderOptions);
|
||||
return $this->Javascript->codeBlock("{$var}new Control.Slider('$id', '$trackId', $options);");
|
||||
$script = "{$var}new Control.Slider('$id', '$trackId', $options);";
|
||||
return $this->Javascript->codeBlock($script);
|
||||
}
|
||||
/**
|
||||
* Makes an Ajax In Place editor control.
|
||||
|
@ -603,9 +679,14 @@ class AjaxHelper extends AppHelper {
|
|||
unset($options['var']);
|
||||
}
|
||||
|
||||
$options = $this->_optionsToString($options, array('okText', 'cancelText', 'savingText', 'formId', 'externalControl', 'highlightcolor', 'highlightendcolor', 'savingClassName', 'formClassName', 'loadTextURL', 'loadingText', 'clickToEditText', 'okButton', 'cancelLink'));
|
||||
$options = $this->_optionsToString($options, array(
|
||||
'okText', 'cancelText', 'savingText', 'formId', 'externalControl', 'highlightcolor',
|
||||
'highlightendcolor', 'savingClassName', 'formClassName', 'loadTextURL', 'loadingText',
|
||||
'clickToEditText', 'okButton', 'cancelLink'
|
||||
));
|
||||
$options = $this->_buildOptions($options, $this->editorOptions);
|
||||
return $this->Javascript->codeBlock("{$var}new Ajax.{$type}('{$id}', '{$url}', {$options});");
|
||||
$script = "{$var}new Ajax.{$type}('{$id}', '{$url}', {$options});";
|
||||
return $this->Javascript->codeBlock($script);
|
||||
}
|
||||
/**
|
||||
* Makes a list or group of floated objects sortable.
|
||||
|
@ -627,8 +708,17 @@ class AjaxHelper extends AppHelper {
|
|||
$block = $options['block'];
|
||||
unset($options['block']);
|
||||
}
|
||||
$strings = array('tag', 'constraint', 'only', 'handle', 'hoverclass', 'tree', 'treeTag', 'update', 'overlap');
|
||||
if (isset($options['scroll']) && $options['scroll'] != 'window' && strpos($options['scroll'], '$(') !== 0) {
|
||||
$strings = array(
|
||||
'tag', 'constraint', 'only', 'handle', 'hoverclass', 'tree',
|
||||
'treeTag', 'update', 'overlap'
|
||||
);
|
||||
$scrollIsObject = (
|
||||
isset($options['scroll']) &&
|
||||
$options['scroll'] != 'window' &&
|
||||
strpos($options['scroll'], '$(') !== 0
|
||||
);
|
||||
|
||||
if ($scrollIsObject) {
|
||||
$strings[] = 'scroll';
|
||||
}
|
||||
|
||||
|
@ -636,6 +726,7 @@ class AjaxHelper extends AppHelper {
|
|||
$options = array_merge($options, $this->_buildCallbacks($options));
|
||||
$options = $this->_buildOptions($options, $this->sortOptions);
|
||||
$result = "Sortable.create('$id', $options);";
|
||||
|
||||
if (!$block) {
|
||||
return $result;
|
||||
}
|
||||
|
@ -650,7 +741,9 @@ class AjaxHelper extends AppHelper {
|
|||
function __optionsForAjax($options) {
|
||||
if (isset($options['indicator'])) {
|
||||
if (isset($options['loading'])) {
|
||||
if (!empty($options['loading']) && substr(trim($options['loading']), -1, 1) != ';') {
|
||||
$loading = $options['loading'];
|
||||
|
||||
if (!empty($loading) && substr(trim($loading), -1, 1) != ';') {
|
||||
$options['loading'] .= '; ';
|
||||
}
|
||||
$options['loading'] .= "Element.show('{$options['indicator']}');";
|
||||
|
@ -658,7 +751,9 @@ class AjaxHelper extends AppHelper {
|
|||
$options['loading'] = "Element.show('{$options['indicator']}');";
|
||||
}
|
||||
if (isset($options['complete'])) {
|
||||
if (!empty($options['complete']) && substr(trim($options['complete']), -1, 1) != ';') {
|
||||
$complete = $options['complete'];
|
||||
|
||||
if (!empty($complete) && substr(trim($complete), -1, 1) != ';') {
|
||||
$options['complete'] .= '; ';
|
||||
}
|
||||
$options['complete'] .= "Element.hide('{$options['indicator']}');";
|
||||
|
@ -672,8 +767,13 @@ class AjaxHelper extends AppHelper {
|
|||
array('asynchronous' => 'true', 'evalScripts' => 'true'),
|
||||
$this->_buildCallbacks($options)
|
||||
);
|
||||
$options = $this->_optionsToString($options, array('contentType', 'encoding', 'fallback', 'method', 'postBody', 'update', 'url'));
|
||||
$jsOptions = array_merge($jsOptions, array_intersect_key($options, array_flip(array('contentType', 'encoding', 'method', 'postBody'))));
|
||||
|
||||
$options = $this->_optionsToString($options, array(
|
||||
'contentType', 'encoding', 'fallback', 'method', 'postBody', 'update', 'url'
|
||||
));
|
||||
$jsOptions = array_merge($jsOptions, array_intersect_key($options, array_flip(array(
|
||||
'contentType', 'encoding', 'method', 'postBody'
|
||||
))));
|
||||
|
||||
foreach ($options as $key => $value) {
|
||||
switch ($key) {
|
||||
|
@ -684,7 +784,8 @@ class AjaxHelper extends AppHelper {
|
|||
$jsOptions['evalScripts'] = ($value) ? 'true' : 'false';
|
||||
break;
|
||||
case 'position':
|
||||
$jsOptions['insertion'] = "Insertion." . Inflector::camelize($options['position']);
|
||||
$pos = Inflector::camelize($options['position']);
|
||||
$jsOptions['insertion'] = "Insertion.{$pos}";
|
||||
break;
|
||||
case 'with':
|
||||
$jsOptions['parameters'] = $options['with'];
|
||||
|
@ -766,10 +867,10 @@ class AjaxHelper extends AppHelper {
|
|||
}
|
||||
|
||||
$callback = $this->remoteFunction($options);
|
||||
$javascript = "new $klass('$name', ";
|
||||
$javascript .= (!isset($options['frequency']) || intval($options['frequency']) == 0 ? '' : $options['frequency'] . ', ' ) . "function(element, value) {";
|
||||
$javascript .= "$callback})";
|
||||
return $javascript;
|
||||
$hasFrequency = !(!isset($options['frequency']) || intval($options['frequency']) == 0);
|
||||
$frequency = $hasFrequency ? $options['frequency'] . ', ' : '';
|
||||
|
||||
return "new $klass('$name', {$frequency}function(element, value) {{$callback}})";
|
||||
}
|
||||
/**
|
||||
* Return Javascript text for callbacks.
|
||||
|
@ -800,7 +901,14 @@ class AjaxHelper extends AppHelper {
|
|||
break;
|
||||
}
|
||||
if (isset($options['bind'])) {
|
||||
if ((is_array($options['bind']) && in_array($callback, $options['bind'])) || (is_string($options['bind']) && strpos($options['bind'], $callback) !== false)) {
|
||||
$bind = $options['bind'];
|
||||
|
||||
$hasBinding = (
|
||||
(is_array($bind) && in_array($callback, $bind)) ||
|
||||
(is_string($bind) && strpos($bind, $callback) !== false)
|
||||
);
|
||||
|
||||
if ($hasBinding) {
|
||||
$callbacks[$name] .= ".bind(this)";
|
||||
}
|
||||
}
|
||||
|
@ -818,7 +926,12 @@ class AjaxHelper extends AppHelper {
|
|||
*/
|
||||
function _optionsToString($options, $stringOpts = array()) {
|
||||
foreach ($stringOpts as $option) {
|
||||
if (isset($options[$option]) && !empty($options[$option]) && is_string($options[$option]) && $options[$option][0] != "'") {
|
||||
$hasOption = (
|
||||
isset($options[$option]) && !empty($options[$option]) &&
|
||||
is_string($options[$option]) && $options[$option][0] != "'"
|
||||
);
|
||||
|
||||
if ($hasOption) {
|
||||
if ($options[$option] === true || $options[$option] === 'true') {
|
||||
$options[$option] = 'true';
|
||||
} elseif ($options[$option] === false || $options[$option] === 'false') {
|
||||
|
@ -853,7 +966,9 @@ class AjaxHelper extends AppHelper {
|
|||
}
|
||||
}
|
||||
$out = 'var __ajaxUpdater__ = {' . join(", \n", $data) . '};' . "\n";
|
||||
$out .= 'for (n in __ajaxUpdater__) { if (typeof __ajaxUpdater__[n] == "string" && $(n)) Element.update($(n), unescape(decodeURIComponent(__ajaxUpdater__[n]))); }';
|
||||
$out .= 'for (n in __ajaxUpdater__) { if (typeof __ajaxUpdater__[n] == "string"';
|
||||
$out .= ' && $(n)) Element.update($(n), unescape(decodeURIComponent(';
|
||||
$out .= '__ajaxUpdater__[n]))); }';
|
||||
e($this->Javascript->codeBlock($out, false));
|
||||
}
|
||||
$scripts = $this->Javascript->getCache();
|
||||
|
@ -866,4 +981,5 @@ class AjaxHelper extends AppHelper {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in a new issue