Merge remote branch 'laconica/0.8.x' into 0.9.x
Conflicts: lib/omb.php
@ -27,6 +27,8 @@ class ApiAction extends Action
|
||||
var $api_arg;
|
||||
var $api_method;
|
||||
var $api_action;
|
||||
var $auth_user;
|
||||
var $auth_pw;
|
||||
|
||||
function handle($args)
|
||||
{
|
||||
@ -35,6 +37,7 @@ class ApiAction extends Action
|
||||
$this->api_action = $this->arg('apiaction');
|
||||
$method = $this->arg('method');
|
||||
$argument = $this->arg('argument');
|
||||
$this->basic_auth_process_header();
|
||||
|
||||
if (isset($argument)) {
|
||||
$cmdext = explode('.', $argument);
|
||||
@ -50,7 +53,7 @@ class ApiAction extends Action
|
||||
}
|
||||
|
||||
if ($this->requires_auth()) {
|
||||
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
if (!isset($this->auth_user)) {
|
||||
|
||||
# This header makes basic auth go
|
||||
header('WWW-Authenticate: Basic realm="StatusNet API"');
|
||||
@ -58,8 +61,8 @@ class ApiAction extends Action
|
||||
# If the user hits cancel -- bam!
|
||||
$this->show_basic_auth_error();
|
||||
} else {
|
||||
$nickname = $_SERVER['PHP_AUTH_USER'];
|
||||
$password = $_SERVER['PHP_AUTH_PW'];
|
||||
$nickname = $this->auth_user;
|
||||
$password = $this->auth_pw;
|
||||
$user = common_check_user($nickname, $password);
|
||||
|
||||
if ($user) {
|
||||
@ -76,8 +79,8 @@ class ApiAction extends Action
|
||||
} else {
|
||||
|
||||
// Caller might give us a username even if not required
|
||||
if (isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
$user = User::staticGet('nickname', $_SERVER['PHP_AUTH_USER']);
|
||||
if (isset($this->auth_user)) {
|
||||
$user = User::staticGet('nickname', $this->auth_user);
|
||||
if ($user) {
|
||||
$this->user = $user;
|
||||
}
|
||||
@ -203,6 +206,39 @@ class ApiAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function basic_auth_process_header()
|
||||
{
|
||||
if(isset($_SERVER['AUTHORIZATION']) || isset($_SERVER['HTTP_AUTHORIZATION']))
|
||||
{
|
||||
$authorization_header = isset($_SERVER['HTTP_AUTHORIZATION'])?$_SERVER['HTTP_AUTHORIZATION']:$_SERVER['AUTHORIZATION'];
|
||||
}
|
||||
|
||||
if(isset($_SERVER['PHP_AUTH_USER']))
|
||||
{
|
||||
$this->auth_user = $_SERVER['PHP_AUTH_USER'];
|
||||
$this->auth_pw = $_SERVER['PHP_AUTH_PW'];
|
||||
}
|
||||
elseif ( isset($authorization_header) && strstr(substr($authorization_header, 0,5),'Basic') )
|
||||
{
|
||||
// decode the HTTP_AUTHORIZATION header on php-cgi server self
|
||||
// on fcgid server the header name is AUTHORIZATION
|
||||
|
||||
$auth_hash = base64_decode( substr($authorization_header, 6) );
|
||||
list($this->auth_user, $this->auth_pw) = explode(':', $auth_hash);
|
||||
|
||||
// set all to NULL on a empty basic auth request
|
||||
if($this->auth_user == "") {
|
||||
$this->auth_user = NULL;
|
||||
$this->auth_pw = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->auth_user = NULL;
|
||||
$this->auth_pw = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
function show_basic_auth_error()
|
||||
{
|
||||
header('HTTP/1.1 401 Unauthorized');
|
||||
|
@ -399,5 +399,7 @@ class AvatarsettingsAction extends AccountSettingsAction
|
||||
$this->script('js/jcrop/jquery.Jcrop.min.js');
|
||||
$this->script('js/jcrop/jquery.Jcrop.go.js');
|
||||
}
|
||||
|
||||
$this->autofocus('avatarfile');
|
||||
}
|
||||
}
|
||||
|
@ -160,6 +160,12 @@ class EditgroupAction extends GroupDesignAction
|
||||
}
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('nickname');
|
||||
}
|
||||
|
||||
function trySave()
|
||||
{
|
||||
$cur = common_current_user();
|
||||
|
@ -71,6 +71,12 @@ class EmailsettingsAction extends AccountSettingsAction
|
||||
return _('Manage how you get email from %%site.name%%.');
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('email');
|
||||
}
|
||||
|
||||
/**
|
||||
* Content area of the page
|
||||
*
|
||||
|
@ -445,6 +445,8 @@ class GrouplogoAction extends GroupDesignAction
|
||||
$this->script('js/jcrop/jquery.Jcrop.min.js');
|
||||
$this->script('js/jcrop/jquery.Jcrop.go.js');
|
||||
}
|
||||
|
||||
$this->autofocus('avatarfile');
|
||||
}
|
||||
|
||||
function showLocalNav()
|
||||
|
@ -90,6 +90,12 @@ class GroupsearchAction extends SearchAction
|
||||
$user_group->free();
|
||||
}
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('q');
|
||||
}
|
||||
}
|
||||
|
||||
class GroupSearchResults extends GroupList
|
||||
|
@ -98,6 +98,12 @@ class InviteAction extends CurrentUserDesignAction
|
||||
$this->showPage();
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('addresses');
|
||||
}
|
||||
|
||||
function title()
|
||||
{
|
||||
if ($this->mode == 'sent') {
|
||||
|
@ -22,6 +22,7 @@
|
||||
* @category Login
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @copyright 2008-2009 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
@ -37,6 +38,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
||||
* @category Personal
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -158,6 +160,12 @@ class LoginAction extends Action
|
||||
$this->showPage();
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('nickname');
|
||||
}
|
||||
|
||||
/**
|
||||
* Title of the page
|
||||
*
|
||||
|
@ -135,6 +135,12 @@ class NoticesearchAction extends SearchAction
|
||||
$this->pagination($page > 1, $cnt > NOTICES_PER_PAGE,
|
||||
$page, 'noticesearch', array('q' => $q));
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('q');
|
||||
}
|
||||
}
|
||||
|
||||
class SearchNoticeList extends NoticeList {
|
||||
@ -190,7 +196,7 @@ class SearchNoticeListItem extends NoticeListItem {
|
||||
$result = preg_replace($pattern, '<strong>\\1</strong>', $text);
|
||||
|
||||
/* Remove highlighting from inside links, loop incase multiple highlights in links */
|
||||
$pattern = '/(href="[^"]*)<strong>('.$options.')<\/strong>([^"]*")/iU';
|
||||
$pattern = '/(\w+="[^"]*)<strong>('.$options.')<\/strong>([^"]*")/iU';
|
||||
do {
|
||||
$result = preg_replace($pattern, '\\1\\2\\3', $result, -1, $count);
|
||||
} while ($count);
|
||||
|
@ -71,6 +71,12 @@ class OthersettingsAction extends AccountSettingsAction
|
||||
return _('Manage various other options.');
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('urlshorteningservice');
|
||||
}
|
||||
|
||||
/**
|
||||
* Content area of the page
|
||||
*
|
||||
|
@ -69,6 +69,12 @@ class PasswordsettingsAction extends AccountSettingsAction
|
||||
return _('Change your password.');
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('oldpassword');
|
||||
}
|
||||
|
||||
/**
|
||||
* Content area of the page
|
||||
*
|
||||
|
@ -85,6 +85,12 @@ class PeoplesearchAction extends SearchAction
|
||||
$profile->free();
|
||||
}
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('q');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,6 +23,7 @@
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @copyright 2008-2009 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
@ -41,6 +42,7 @@ require_once INSTALLDIR.'/lib/accountsettingsaction.php';
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @author Zach Copley <zach@status.net>
|
||||
* @author Sarven Capadisli <csarven@status.net>
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
@ -70,6 +72,12 @@ class ProfilesettingsAction extends AccountSettingsAction
|
||||
'so people know more about you.');
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('nickname');
|
||||
}
|
||||
|
||||
/**
|
||||
* Content area of the page
|
||||
*
|
||||
|
@ -136,6 +136,12 @@ class RegisterAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('nickname');
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to register a user
|
||||
*
|
||||
|
@ -69,6 +69,12 @@ class SmssettingsAction extends ConnectSettingsAction
|
||||
return _('You can receive SMS messages through email from %%site.name%%.');
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('sms');
|
||||
}
|
||||
|
||||
/**
|
||||
* Content area of the page
|
||||
*
|
||||
|
@ -107,6 +107,12 @@ class SubscriptionsAction extends GalleryAction
|
||||
array('nickname' => $this->user->nickname));
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('tag');
|
||||
}
|
||||
|
||||
function showEmptyListMessage()
|
||||
{
|
||||
if (common_logged_in()) {
|
||||
|
@ -199,7 +199,8 @@ class OAuthRequest {/*{{{*/
|
||||
} else {
|
||||
// collect request parameters from query string (GET) and post-data (POST) if appropriate (note: POST vars have priority)
|
||||
$req_parameters = $_GET;
|
||||
if ($http_method == "POST" && @strstr($request_headers["Content-Type"], "application/x-www-form-urlencoded") ) {
|
||||
if ($http_method == "POST" &&
|
||||
( @strstr($request_headers["Content-Type"], "application/x-www-form-urlencoded") || @strstr($_ENV["CONTENT_TYPE"], "application/x-www-form-urlencoded") )) {
|
||||
$req_parameters = array_merge($req_parameters, $_POST);
|
||||
}
|
||||
|
||||
|
@ -327,6 +327,8 @@ class DesignSettingsAction extends AccountSettingsAction
|
||||
$this->script('js/farbtastic/farbtastic.js');
|
||||
$this->script('js/farbtastic/farbtastic.go.js');
|
||||
$this->script('js/userdesign.go.js');
|
||||
|
||||
$this->autofocus('design_background-image_file');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -132,13 +132,16 @@ class GalleryAction extends OwnerDesignAction
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li', array('id'=>'filter_tags_item'));
|
||||
$this->elementStart('form', array('name' => 'bytag',
|
||||
'id' => 'bytag',
|
||||
'id' => 'form_filter_bytag',
|
||||
'action' => common_path('?action=' . $this->trimmed('action')),
|
||||
'method' => 'post'));
|
||||
$this->elementStart('fieldset');
|
||||
$this->element('legend', null, _('Select tag to filter'));
|
||||
$this->dropdown('tag', _('Tag'), $content,
|
||||
_('Choose a tag to narrow list'), false, $tag);
|
||||
$this->hidden('nickname', $this->user->nickname);
|
||||
$this->submit('submit', _('Go'));
|
||||
$this->elementEnd('fieldset');
|
||||
$this->elementEnd('form');
|
||||
$this->elementEnd('li');
|
||||
$this->elementEnd('ul');
|
||||
|
@ -412,4 +412,29 @@ class HTMLOutputter extends XMLOutputter
|
||||
$this->element('p', 'form_guide', $instructions);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Internal script to autofocus the given element on page onload.
|
||||
*
|
||||
* @param string $id element ID, must refer to an existing element
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
function autofocus($id)
|
||||
{
|
||||
$this->elementStart('script', array('type' => 'text/javascript'));
|
||||
$this->raw('
|
||||
<!--
|
||||
$(document).ready(function() {
|
||||
var el = $("#' . $id . '");
|
||||
if (el.length) {
|
||||
el.focus();
|
||||
}
|
||||
});
|
||||
-->
|
||||
');
|
||||
$this->elementEnd('script');
|
||||
}
|
||||
}
|
||||
|
11
lib/omb.php
@ -80,9 +80,14 @@ function omb_broadcast_notice($notice)
|
||||
$posted = array();
|
||||
|
||||
while ($rp->fetch()) {
|
||||
if (isset($posted[$rp->postnoticeurl])) {
|
||||
/* We already posted to this url. */
|
||||
continue;
|
||||
if (!array_key_exists($rp->postnoticeurl, $posted)) {
|
||||
common_log(LOG_DEBUG, 'Posting to ' . $rp->postnoticeurl);
|
||||
if (omb_post_notice_keys($notice, $rp->postnoticeurl, $rp->token, $rp->secret)) {
|
||||
common_log(LOG_DEBUG, 'Finished to ' . $rp->postnoticeurl);
|
||||
$posted[$rp->postnoticeurl] = true;
|
||||
} else {
|
||||
common_log(LOG_DEBUG, 'Failed posting to ' . $rp->postnoticeurl);
|
||||
}
|
||||
}
|
||||
common_debug('Posting to ' . $rp->postnoticeurl, __FILE__);
|
||||
|
||||
|
12
lib/util.php
@ -59,7 +59,7 @@ function common_init_language()
|
||||
textdomain("statusnet");
|
||||
setlocale(LC_CTYPE, 'C');
|
||||
if(!$locale_set) {
|
||||
common_log(LOG_INFO,'Language requested:'.$language.' - locale could not be set:',__FILE__);
|
||||
common_log(LOG_INFO, 'Language requested:' . $language . ' - locale could not be set. Perhaps that system locale is not installed.', __FILE__);
|
||||
}
|
||||
}
|
||||
|
||||
@ -432,7 +432,7 @@ function common_replace_urls_callback($text, $callback, $notice_id = null) {
|
||||
')'.
|
||||
'|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'. //IPv4
|
||||
'|(?:'. //IPv6
|
||||
'\[?(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}(?:(?:[0-9A-Fa-f]{1,4})|:))|(?:(?:[0-9A-Fa-f]{1,4}:){6}(?::|(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(?::[0-9A-Fa-f]{1,4})))|(?:(?:[0-9A-Fa-f]{1,4}:){5}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:){4}(?::[0-9A-Fa-f]{1,4}){0,1}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:){3}(?::[0-9A-Fa-f]{1,4}){0,2}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:){2}(?::[0-9A-Fa-f]{1,4}){0,3}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:)(?::[0-9A-Fa-f]{1,4}){0,4}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?::(?::[0-9A-Fa-f]{1,4}){0,5}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))\]?'.
|
||||
'\[?(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}(?:(?:[0-9A-Fa-f]{1,4})|:))|(?:(?:[0-9A-Fa-f]{1,4}:){6}(?::|(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(?::[0-9A-Fa-f]{1,4})))|(?:(?:[0-9A-Fa-f]{1,4}:){5}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:){4}(?::[0-9A-Fa-f]{1,4}){0,1}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:){3}(?::[0-9A-Fa-f]{1,4}){0,2}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:){2}(?::[0-9A-Fa-f]{1,4}){0,3}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:[0-9A-Fa-f]{1,4}:)(?::[0-9A-Fa-f]{1,4}){0,4}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?::(?::[0-9A-Fa-f]{1,4}){0,5}(?:(?::(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|(?:(?::[0-9A-Fa-f]{1,4}){1,2})))|(?:(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))\]?(?<!:)'.
|
||||
')|(?:'. //DNS
|
||||
'(?:[\pN\pL\-\_\+\%\~]+(?:\:[\pN\pL\-\_\+\%\~]+)?\@)?'. //user:pass@
|
||||
'[\pN\pL\-\_]+(?:\.[\pN\pL\-\_]+)*\.'.
|
||||
@ -442,13 +442,13 @@ function common_replace_urls_callback($text, $callback, $notice_id = null) {
|
||||
')'.
|
||||
'(?:'.
|
||||
'(?:\:\d+)?'. //:port
|
||||
'(?:/[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~]*)?'. // /path
|
||||
'(?:\?[\pN\pL\$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\/]*)?'. // ?query string
|
||||
'(?:\#[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\/\?\#]*)?'. // #fragment
|
||||
'(?:/[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"]*)?'. // /path
|
||||
'(?:\?[\pN\pL\$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"\/]*)?'. // ?query string
|
||||
'(?:\#[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"\/\?\#]*)?'. // #fragment
|
||||
')(?<![\?\.\,\#\,])'.
|
||||
')'.
|
||||
'#ixu';
|
||||
preg_match_all($regex,$text,$matches);
|
||||
//preg_match_all($regex,$text,$matches);
|
||||
//print_r($matches);
|
||||
return preg_replace_callback($regex, curry('callback_helper',$callback,$notice_id) ,$text);
|
||||
}
|
||||
|
@ -75,6 +75,8 @@ class LinkbackPlugin extends Plugin
|
||||
|
||||
function linkbackUrl($url)
|
||||
{
|
||||
common_log(LOG_DEBUG,"Attempting linkback for " . $url);
|
||||
|
||||
$orig = $url;
|
||||
$url = htmlspecialchars_decode($orig);
|
||||
$scheme = parse_url($url, PHP_URL_SCHEME);
|
||||
@ -134,6 +136,10 @@ class LinkbackPlugin extends Plugin
|
||||
"User-Agent: " . $this->userAgent(),
|
||||
'content' => $request)));
|
||||
$file = file_get_contents($endpoint, false, $context);
|
||||
if (!$file) {
|
||||
common_log(LOG_WARNING,
|
||||
"Pingback request failed for '$url' ($endpoint)");
|
||||
} else {
|
||||
$response = xmlrpc_decode($file);
|
||||
if (xmlrpc_is_fault($response)) {
|
||||
common_log(LOG_WARNING,
|
||||
@ -145,6 +151,7 @@ class LinkbackPlugin extends Plugin
|
||||
"'$response'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Largely cadged from trackback_cls.php by
|
||||
// Ran Aroussi <ran@blogish.org>, GPL2 or any later version
|
||||
|
@ -84,6 +84,12 @@ class OpenidloginAction extends Action
|
||||
}
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('openid_url');
|
||||
}
|
||||
|
||||
function title()
|
||||
{
|
||||
return _('OpenID Login');
|
||||
|
@ -72,6 +72,12 @@ class OpenidsettingsAction extends AccountSettingsAction
|
||||
' Manage your associated OpenIDs from here.');
|
||||
}
|
||||
|
||||
function showScripts()
|
||||
{
|
||||
parent::showScripts();
|
||||
$this->autofocus('openid_url');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for OpenID management
|
||||
*
|
||||
|
@ -25,6 +25,8 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase
|
||||
static public function provider()
|
||||
{
|
||||
return array(
|
||||
array('not a link :: no way',
|
||||
'not a link :: no way'),
|
||||
array('http://127.0.0.1',
|
||||
'<a href="http://127.0.0.1/" rel="external">http://127.0.0.1</a>'),
|
||||
array('127.0.0.1',
|
||||
@ -35,6 +37,22 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase
|
||||
'<a href="http://127.0.0.1/Name:test.php" rel="external">127.0.0.1/Name:test.php</a>'),
|
||||
array('127.0.0.1/~test',
|
||||
'<a href="http://127.0.0.1/~test" rel="external">127.0.0.1/~test</a>'),
|
||||
array('127.0.0.1/+test',
|
||||
'<a href="http://127.0.0.1/+test" rel="external">127.0.0.1/+test</a>'),
|
||||
array('127.0.0.1/$test',
|
||||
'<a href="http://127.0.0.1/$test" rel="external">127.0.0.1/$test</a>'),
|
||||
array('127.0.0.1/\'test',
|
||||
'<a href="http://127.0.0.1/\'test" rel="external">127.0.0.1/\'test</a>'),
|
||||
array('127.0.0.1/"test',
|
||||
'<a href="http://127.0.0.1/"test" rel="external">127.0.0.1/"test</a>'),
|
||||
array('127.0.0.1/-test',
|
||||
'<a href="http://127.0.0.1/-test" rel="external">127.0.0.1/-test</a>'),
|
||||
array('127.0.0.1/_test',
|
||||
'<a href="http://127.0.0.1/_test" rel="external">127.0.0.1/_test</a>'),
|
||||
array('127.0.0.1/!test',
|
||||
'<a href="http://127.0.0.1/!test" rel="external">127.0.0.1/!test</a>'),
|
||||
array('127.0.0.1/*test',
|
||||
'<a href="http://127.0.0.1/*test" rel="external">127.0.0.1/*test</a>'),
|
||||
array('127.0.0.1/test%20stuff',
|
||||
'<a href="http://127.0.0.1/test%20stuff" rel="external">127.0.0.1/test%20stuff</a>'),
|
||||
array('http://[::1]:99/test.php',
|
||||
|
@ -156,7 +156,8 @@ font-weight:bold;
|
||||
#form_notice_delete legend,
|
||||
#form_password_recover legend,
|
||||
#form_password_change legend,
|
||||
.form_entity_block legend {
|
||||
.form_entity_block legend,
|
||||
#form_filter_bytag legend {
|
||||
display:none;
|
||||
}
|
||||
|
||||
@ -510,6 +511,7 @@ margin-top:7px;
|
||||
margin-bottom:7px;
|
||||
margin-left:18px;
|
||||
float:left;
|
||||
max-width:322px;
|
||||
}
|
||||
#form_notice .error,
|
||||
#form_notice .success {
|
||||
@ -1049,36 +1051,37 @@ display:none;
|
||||
#filter_tags ul {
|
||||
list-style-type:none;
|
||||
}
|
||||
#filter_tags ul li {
|
||||
#filter_tags li {
|
||||
float:left;
|
||||
margin-left:7px;
|
||||
padding-left:7px;
|
||||
border-left-width:1px;
|
||||
border-left-style:solid;
|
||||
}
|
||||
#filter_tags ul li.child_1 {
|
||||
#filter_tags #filter_tags_all {
|
||||
margin-left:0;
|
||||
border-left:0;
|
||||
padding-left:0;
|
||||
}
|
||||
#filter_tags ul li#filter_tags_all a {
|
||||
#filter_tags_all a {
|
||||
font-weight:bold;
|
||||
margin-top:7px;
|
||||
float:left;
|
||||
}
|
||||
|
||||
#filter_tags ul li#filter_tags_item label {
|
||||
#filter_tags_item label {
|
||||
margin-right:7px;
|
||||
}
|
||||
#filter_tags ul li#filter_tags_item label,
|
||||
#filter_tags ul li#filter_tags_item select {
|
||||
display:inline;
|
||||
}
|
||||
#filter_tags ul li#filter_tags_item p {
|
||||
#filter_tags_item label,
|
||||
#filter_tags_item select {
|
||||
float:left;
|
||||
}
|
||||
#filter_tags_item p {
|
||||
float:left;
|
||||
clear:both;
|
||||
margin-left:38px;
|
||||
}
|
||||
#filter_tags ul li#filter_tags_item input {
|
||||
#filter_tags_item .submit {
|
||||
position:relative;
|
||||
top:3px;
|
||||
left:3px;
|
||||
|
@ -849,6 +849,10 @@ float:left;
|
||||
font-size:1.025em;
|
||||
}
|
||||
|
||||
.notice div.entry-content .timestamp {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.notice div.entry-content dl,
|
||||
.notice div.entry-content dt,
|
||||
.notice div.entry-content dd {
|
||||
@ -866,15 +870,12 @@ display:inline-block;
|
||||
text-transform:lowercase;
|
||||
}
|
||||
|
||||
|
||||
.notice-options {
|
||||
padding-left:2%;
|
||||
float:left;
|
||||
width:50%;
|
||||
position:relative;
|
||||
font-size:0.95em;
|
||||
width:12.5%;
|
||||
width:90px;
|
||||
float:right;
|
||||
margin-right:11px;
|
||||
}
|
||||
|
||||
.notice-options a {
|
||||
@ -897,38 +898,28 @@ left:29px;
|
||||
.notice-options .notice_delete {
|
||||
right:0;
|
||||
}
|
||||
.notice-options .notice_reply dt {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.notice-options input,
|
||||
.notice-options a {
|
||||
text-indent:-9999px;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
.notice-options .notice_reply a,
|
||||
.notice-options input.submit {
|
||||
display:block;
|
||||
border:0;
|
||||
}
|
||||
.notice-options .notice_reply a,
|
||||
.notice-options .notice_delete a {
|
||||
.notice-options .notice_reply,
|
||||
.notice-options .notice_delete {
|
||||
text-decoration:none;
|
||||
padding-left:16px;
|
||||
}
|
||||
|
||||
.notice-options form input.submit {
|
||||
width:16px;
|
||||
padding:2px 0;
|
||||
}
|
||||
|
||||
.notice-options .notice_delete dt,
|
||||
.notice-options .form_favor legend,
|
||||
.notice-options .form_disfavor legend {
|
||||
display:none;
|
||||
}
|
||||
.notice-options .notice_delete fieldset,
|
||||
.notice-options .form_favor fieldset,
|
||||
.notice-options .form_disfavor fieldset {
|
||||
border:0;
|
||||
|
@ -30,10 +30,10 @@ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
||||
}
|
||||
input, textarea, select,
|
||||
.entity_remote_subscribe {
|
||||
border-color:#aaa;
|
||||
border-color:#AAAAAA;
|
||||
}
|
||||
#filter_tags ul li {
|
||||
border-color:#ddd;
|
||||
border-color:#DDDDDD;
|
||||
}
|
||||
|
||||
.form_settings input.form_action-primary {
|
||||
@ -50,11 +50,14 @@ background-color:#9BB43E;
|
||||
input:focus, textarea:focus, select:focus,
|
||||
#form_notice.warning #notice_data-text {
|
||||
border-color:#9BB43E;
|
||||
box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.3);
|
||||
}
|
||||
input.submit,
|
||||
.entity_remote_subscribe,
|
||||
#site_nav_local_views a {
|
||||
color:#fff;
|
||||
color:#FFFFFF;
|
||||
}
|
||||
|
||||
a,
|
||||
@ -62,10 +65,13 @@ a,
|
||||
div.notice-options input,
|
||||
.form_user_block input.submit,
|
||||
.form_user_unblock input.submit,
|
||||
.form_group_block input.submit,
|
||||
.form_group_unblock input.submit,
|
||||
.entity_send-a-message a,
|
||||
.form_user_nudge input.submit,
|
||||
.entity_nudge p,
|
||||
.form_settings input.form_action-primary {
|
||||
.form_settings input.form_action-primary,
|
||||
.form_make_admin input.submit {
|
||||
color:#002E6E;
|
||||
}
|
||||
|
||||
@ -82,13 +88,6 @@ border-top-color:#CEE1E9;
|
||||
border-top-color:#87B4C8;
|
||||
}
|
||||
|
||||
#content .notice p.entry-content a:visited {
|
||||
background-color:#fcfcfc;
|
||||
}
|
||||
#content .notice p.entry-content .vcard a {
|
||||
background-color:#fcfffc;
|
||||
}
|
||||
|
||||
.aside .section {
|
||||
background-color:#F1F5F8;
|
||||
background-position:100% 0;
|
||||
@ -97,10 +96,10 @@ background-repeat:no-repeat;
|
||||
}
|
||||
|
||||
#notice_text-count {
|
||||
color:#333;
|
||||
color:#333333;
|
||||
}
|
||||
#form_notice.warning #notice_text-count {
|
||||
color:#000;
|
||||
color:#000000;
|
||||
}
|
||||
#form_notice label[for=notice_data-attach] {
|
||||
background:transparent url(../../base/images/icons/twotone/green/clip-01.gif) no-repeat 0 45%;
|
||||
@ -109,28 +108,43 @@ background:transparent url(../../base/images/icons/twotone/green/clip-01.gif) no
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
#form_notice.processing #notice_action-submit {
|
||||
background:#fff url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
#wrap form.processing input.submit {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
cursor:wait;
|
||||
text-indent:-9999px;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
#content {
|
||||
box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3);
|
||||
-moz-box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3);
|
||||
-webkit-box-shadow:5px 7px 7px rgba(194, 194, 194, 0.3);
|
||||
}
|
||||
#content,
|
||||
#site_nav_local_views a,
|
||||
.aside .section {
|
||||
border-color:#fff;
|
||||
border-color:#FFFFFF;
|
||||
}
|
||||
#content,
|
||||
#site_nav_local_views .current a {
|
||||
background-color:#fff;
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
#site_nav_local_views li {
|
||||
box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
|
||||
-moz-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
|
||||
-webkit-box-shadow:3px 7px 5px rgba(194, 194, 194, 0.5);
|
||||
}
|
||||
#site_nav_local_views a {
|
||||
background-color:rgba(135, 180, 200, 0.3);
|
||||
background-color:rgba(194, 194, 194, 0.5);
|
||||
}
|
||||
#site_nav_local_views a:hover {
|
||||
background-color:rgba(255, 255, 255, 0.7);
|
||||
}
|
||||
#site_nav_local_views .current a {
|
||||
text-shadow: rgba(194,194,194,0.5) 1px 1px 1px;
|
||||
}
|
||||
|
||||
|
||||
.error {
|
||||
background-color:#F7E8E8;
|
||||
@ -140,10 +154,7 @@ background-color:#EFF3DC;
|
||||
}
|
||||
|
||||
#anon_notice {
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
#showstream #anon_notice {
|
||||
color:#FFFFFF;
|
||||
}
|
||||
|
||||
#export_data li a {
|
||||
@ -165,7 +176,10 @@ background-image:url(../../base/images/icons/icon_foaf.gif);
|
||||
.form_user_nudge input.submit,
|
||||
.form_user_block input.submit,
|
||||
.form_user_unblock input.submit,
|
||||
.entity_nudge p {
|
||||
.form_group_block input.submit,
|
||||
.form_group_unblock input.submit,
|
||||
.entity_nudge p,
|
||||
.form_make_admin input.submit {
|
||||
background-position: 0 40%;
|
||||
background-repeat: no-repeat;
|
||||
background-color:transparent;
|
||||
@ -175,7 +189,7 @@ background-color:transparent;
|
||||
.form_user_subscribe input.submit,
|
||||
.form_user_unsubscribe input.submit {
|
||||
background-color:#9BB43E;
|
||||
color:#fff;
|
||||
color:#FFFFFF;
|
||||
}
|
||||
.form_user_unsubscribe input.submit,
|
||||
.form_group_leave input.submit,
|
||||
@ -194,20 +208,23 @@ background-image:url(../../base/images/icons/twotone/green/quote.gif);
|
||||
background-image:url(../../base/images/icons/twotone/green/mail.gif);
|
||||
}
|
||||
.form_user_block input.submit,
|
||||
.form_user_unblock input.submit {
|
||||
.form_user_unblock input.submit,
|
||||
.form_group_block input.submit,
|
||||
.form_group_unblock input.submit {
|
||||
background-image:url(../../base/images/icons/twotone/green/shield.gif);
|
||||
}
|
||||
.form_make_admin input.submit {
|
||||
background-image:url(../../base/images/icons/twotone/green/admin.gif);
|
||||
}
|
||||
|
||||
/* NOTICES */
|
||||
.notices li.over {
|
||||
background-color:#fcfcfc;
|
||||
.notice .attachment {
|
||||
background:transparent url(../../base/images/icons/twotone/green/clip-02.gif) no-repeat 0 45%;
|
||||
}
|
||||
|
||||
.notice-options .notice_reply a,
|
||||
.notice-options form input.submit {
|
||||
background-color:transparent;
|
||||
#attachments .attachment {
|
||||
background:none;
|
||||
}
|
||||
.notice-options .notice_reply a {
|
||||
.notice-options .notice_reply {
|
||||
background:transparent url(../../base/images/icons/twotone/green/reply.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options form.form_favor input.submit {
|
||||
@ -216,7 +233,7 @@ background:transparent url(../../base/images/icons/twotone/green/favourite.gif)
|
||||
.notice-options form.form_disfavor input.submit {
|
||||
background:transparent url(../../base/images/icons/twotone/green/disfavourite.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options .notice_delete a {
|
||||
.notice-options .notice_delete {
|
||||
background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-repeat 0 45%;
|
||||
}
|
||||
|
||||
@ -224,19 +241,32 @@ background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-r
|
||||
.notices div.notice-options {
|
||||
opacity:0.4;
|
||||
}
|
||||
.notices li.hover div.entry-content,
|
||||
.notices li.hover div.notice-options {
|
||||
.notices li:hover div.entry-content,
|
||||
.notices li:hover div.notice-options {
|
||||
opacity:1;
|
||||
}
|
||||
div.entry-content {
|
||||
color:#333;
|
||||
}
|
||||
div.notice-options a,
|
||||
div.notice-options input {
|
||||
font-family:sans-serif;
|
||||
}
|
||||
.notices li.hover {
|
||||
background-color:#fcfcfc;
|
||||
#content .notices li:hover {
|
||||
background-color:rgba(240, 240, 240, 0.2);
|
||||
}
|
||||
#conversation .notices li:hover {
|
||||
background-color:transparent;
|
||||
}
|
||||
|
||||
.notices .notices {
|
||||
background-color:rgba(200, 200, 200, 0.050);
|
||||
}
|
||||
.notices .notices .notices {
|
||||
background-color:rgba(200, 200, 200, 0.100);
|
||||
}
|
||||
.notices .notices .notices .notices {
|
||||
background-color:rgba(200, 200, 200, 0.150);
|
||||
}
|
||||
.notices .notices .notices .notices .notices {
|
||||
background-color:rgba(200, 200, 200, 0.300);
|
||||
}
|
||||
/*END: NOTICES */
|
||||
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 6.2 KiB |
@ -94,10 +94,11 @@ background:transparent url(../../base/images/icons/twotone/green/clip-01.gif) no
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
#form_notice.processing #notice_action-submit {
|
||||
#wrap form.processing input.submit {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
cursor:wait;
|
||||
text-indent:-9999px;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
#content {
|
||||
@ -223,10 +224,6 @@ background:transparent url(../../base/images/icons/twotone/green/favourite.gif)
|
||||
.notice-options form.form_disfavor input.submit {
|
||||
background:transparent url(../../base/images/icons/twotone/green/disfavourite.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options form.form_favor.processing input.submit,
|
||||
.notice-options form.form_disfavor.processing input.submit {
|
||||
background:transparent url(../../base/images/icons/icon_processing.gif) no-repeat 0 45%;
|
||||
}
|
||||
.notice-options .notice_delete {
|
||||
background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-repeat 0 45%;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 6.2 KiB |
@ -94,10 +94,11 @@ background:transparent url(../../base/images/icons/twotone/green/clip-01.gif) no
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
#form_notice.processing #notice_action-submit {
|
||||
#wrap form.processing input.submit {
|
||||
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
|
||||
cursor:wait;
|
||||
text-indent:-9999px;
|
||||
outline:none;
|
||||
}
|
||||
|
||||
#content {
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 6.2 KiB |