Commit cad48055 authored by Brion Vibber's avatar Brion Vibber

Clean up bit.ly admin panel behavior, and hide it from the shorteners list if...

Clean up bit.ly admin panel behavior, and hide it from the shorteners list if it's not fully configured.
parent 80f0b942
......@@ -39,6 +39,8 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
{
public $shortenerName = 'bit.ly';
public $serviceUrl = 'http://bit.ly/api?method=shorten&version=2.0.1&longUrl=%s';
public $login; // To set a site-default when admins or users don't override it.
public $apiKey;
function onInitializePlugin(){
parent::onInitializePlugin();
......@@ -47,6 +49,21 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
}
}
/**
* Add bit.ly to the list of available URL shorteners if it's configured,
* otherwise leave it out.
*
* @param array $shorteners
* @return boolean hook return value
*/
function onGetUrlShorteners(&$shorteners)
{
if ($this->getLogin() && $this->getApiKey()) {
return parent::onGetUrlShorteners($shorteners);
}
return true;
}
/**
* Short a URL
* @param url
......@@ -68,7 +85,11 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
*/
protected function getLogin()
{
return common_config('bitly', 'default_login');
$login = common_config('bitly', 'default_login');
if (!$login) {
$login = $this->login;
}
return $login;
}
/**
......@@ -78,7 +99,11 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
*/
protected function getApiKey()
{
return common_config('bitly', 'default_apikey');
$key = common_config('bitly', 'default_apikey');
if (!$key) {
$key = $this->apiKey;
}
return $key;
}
/**
......@@ -213,4 +238,20 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
return true;
}
}
/**
* Internal hook point to check the default global credentials so
* the admin form knows if we have a fallback or not.
*
* @param string $login
* @param string $apiKey
* @return boolean hook return value
*/
function onBitlyDefaultCredentials(&$login, &$apiKey)
{
$login = $this->login;
$apiKey = $this->apiKey;
return false;
}
}
......@@ -206,11 +206,18 @@ class BitlyAdminPanelForm extends AdminForm
array('id' => 'settings_bitly')
);
$this->out->element('legend', null, _m('Default credentials'));
$this->out->element('p', 'form_guide',
_m('When users select the bit.ly shortening service, by default ' .
'these credentials will be used. If you leave these empty, ' .
'users will need to set up their own credentials in order to ' .
'use bit.ly.'));
// Do we have global defaults to fall back on?
$login = $apiKey = false;
Event::handle('BitlyDefaultCredentials', array(&$login, &$apiKey));
$haveGlobalDefaults = ($login && $apiKey);
if ($login && $apiKey) {
$this->out->element('p', 'form_guide',
_m('Leave these empty to use the default credentials.'));
} else {
$this->out->element('p', 'form_guide',
_m('If you leave these empty, bit.ly will be unavailable to users.'));
}
$this->out->elementStart('ul', 'form_data');
$this->li();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment