/** * create OAuth Link * * @param $options * loading: loading message * login: login link text * datasource: datasource name (default: twitter) * authenticate: use authenticate link (default: false) */ public function oauthLink($options = array()) { $default = array('loading' => __d('twitter_kit', 'Loading...', true), 'login' => __d('twitter_kit', 'Login Twitter', true), 'datasource' => 'twitter', 'authorize' => false, 'loginElementId' => 'twitter-login-wrap'); $options = am($default, $options); $action = $options['authorize'] ? 'authorize_url' : 'authenticate_url'; $request_url = $this->Html->url(array('plugin' => 'twitter_kit', 'controller' => 'oauth', 'action' => $action . '/' . urlencode($options['datasource'])), true); $this->Js->buffer("\n \$.getJSON('{$request_url}', {}, function(data){\n var link = \$('<a>').attr('href', data.url).html('{$options['login']}');\n \$('#{$options['loginElementId']} .loading').remove();\n \$('#{$options['loginElementId']}').append(link);\n });\n "); $out = sprintf('<span id="%s"><span class="loading">%s</span></span>', $options['loginElementId'], $options['loading']); return $this->output($out); }
/** * create tweet box * * @param $fieldName * @param $options * type: element type (default: textarea) * maxLength: text max length (default: 140) * counterText: length message * submit: submit button message. if set to false, not create. * jqueryCharCount: path to charCount.js (jquery plugin) * other keys set to input element options. */ public function tweet($fieldName, $options = array()) { $this->setEntity($fieldName); $domId = !empty($options['id']) ? $options['id'] : $this->domId($fieldName); $default = array('type' => 'textarea', 'maxlength' => 140, 'jqueryCharCount' => '/twitter_kit/js/charCount.js', 'counterText' => __d('twitter_kit', 'Characters left: ', true), 'submit' => __d('twitter_kit', 'Tweet', true)); $options = am($default, $options); $inputOptions = $options; unset($inputOptions['jqueryCharCount']); unset($inputOptions['counterText']); unset($inputOptions['submit']); $out = $this->Html->script($options['jqueryCharCount']); $out .= $this->Form->input($fieldName, $inputOptions); $out .= $this->Js->buffer("\n \$('#{$domId}').charCount({\n limit: {$options['maxlength']},\n counterText: '{$options['counterText']}',\n exceeded: function(element) {\n \$('#{$domId}Submit').attr('disabled', true);\n },\n allowed: function(element) {\n \$('#{$domId}Submit').removeAttr('disabled');\n }\n });\n "); if ($options['submit']) { $out .= $this->Form->submit($options['submit'], array('id' => $domId . 'Submit')); } return $this->output($out); }
/** * create Hovercards * * @param string $element * @param array $options */ public function hovercards($element = '.content', $options = array()) { if (!empty($options['username'])) { $username = $options['username']; unset($options['username']); } $opt = ''; if (!empty($options)) { $opt = json_encode($options); } if (!empty($username)) { if (empty($options)) { $opt = "{ username: {$username} }"; } else { $opt = preg_replace('/^{/', "{ username: {$username},", $opt); } } $this->Js->buffer("\n twttr.anywhere(function (T) {\n T('{$element}').hovercards({$opt});\n });"); }