Merge branch 'testing' of git@gitorious.org:statusnet/mainline into 0.9.x
This commit is contained in:
commit
c14ac57b19
|
@ -303,27 +303,6 @@ class RegisterAction extends Action
|
|||
return ($user !== false);
|
||||
}
|
||||
|
||||
// overrrided to add entry-title class
|
||||
function showPageTitle() {
|
||||
if (Event::handle('StartShowPageTitle', array($this))) {
|
||||
$this->element('h1', array('class' => 'entry-title'), $this->title());
|
||||
}
|
||||
}
|
||||
|
||||
// overrided to add hentry, and content-inner class
|
||||
function showContentBlock()
|
||||
{
|
||||
$this->elementStart('div', array('id' => 'content', 'class' => 'hentry'));
|
||||
$this->showPageTitle();
|
||||
$this->showPageNoticeBlock();
|
||||
$this->elementStart('div', array('id' => 'content_inner',
|
||||
'class' => 'entry-content'));
|
||||
// show the actual content (forms, lists, whatever)
|
||||
$this->showContent();
|
||||
$this->elementEnd('div');
|
||||
$this->elementEnd('div');
|
||||
}
|
||||
|
||||
/**
|
||||
* Instructions or a notice for the page
|
||||
*
|
||||
|
|
|
@ -250,10 +250,6 @@ class User extends Memcached_DataObject
|
|||
|
||||
$user->nickname = $nickname;
|
||||
|
||||
if (!empty($password)) { // may not have a password for OpenID users
|
||||
$user->password = common_munge_password($password, $id);
|
||||
}
|
||||
|
||||
// Users who respond to invite email have proven their ownership of that address
|
||||
|
||||
if (!empty($code)) {
|
||||
|
@ -286,6 +282,9 @@ class User extends Memcached_DataObject
|
|||
|
||||
$user->id = $id;
|
||||
$user->uri = common_user_uri($user);
|
||||
if (!empty($password)) { // may not have a password for OpenID users
|
||||
$user->password = common_munge_password($password, $id);
|
||||
}
|
||||
|
||||
$result = $user->insert();
|
||||
|
||||
|
@ -945,9 +944,9 @@ class User extends Memcached_DataObject
|
|||
|
||||
$pr->orderBy('created');
|
||||
|
||||
$pr->limit(0, 1);
|
||||
$pr->limit(1);
|
||||
|
||||
if ($pr->fetch($true)) {
|
||||
if ($pr->find(true)) {
|
||||
$owner = User::staticGet('id', $pr->profile_id);
|
||||
} else {
|
||||
$owner = null;
|
||||
|
|
1292
js/jquery.form.js
1292
js/jquery.form.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
164
js/util.js
164
js/util.js
|
@ -143,87 +143,85 @@ var SN = { // StatusNet
|
|||
SN.U.Counter(form);
|
||||
},
|
||||
|
||||
FormXHR: function(f) {
|
||||
if (jQuery.data(f[0], "ElementData") === undefined) {
|
||||
jQuery.data(f[0], "ElementData", {Bind:'submit'});
|
||||
f.bind('submit', function(e) {
|
||||
form_id = $(this)[0].id;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'xml',
|
||||
url: $(this)[0].action,
|
||||
data: $(this).serialize() + '&ajax=1',
|
||||
beforeSend: function(xhr) {
|
||||
$('#'+form_id).addClass(SN.C.S.Processing);
|
||||
$('#'+form_id+' .submit').addClass(SN.C.S.Disabled);
|
||||
$('#'+form_id+' .submit').attr(SN.C.S.Disabled, SN.C.S.Disabled);
|
||||
},
|
||||
error: function (xhr, textStatus, errorThrown) {
|
||||
alert(errorThrown || textStatus);
|
||||
},
|
||||
success: function(data, textStatus) {
|
||||
if (typeof($('form', data)[0]) != 'undefined') {
|
||||
form_new = document._importNode($('form', data)[0], true);
|
||||
$('#'+form_id).replaceWith(form_new);
|
||||
$('#'+form_new.id).each(function() { SN.U.FormXHR($(this)); });
|
||||
}
|
||||
else {
|
||||
$('#'+form_id).replaceWith(document._importNode($('p', data)[0], true));
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
FormXHR: function(form) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'xml',
|
||||
url: form.attr('action'),
|
||||
data: form.serialize() + '&ajax=1',
|
||||
beforeSend: function(xhr) {
|
||||
form
|
||||
.addClass(SN.C.S.Processing)
|
||||
.find('.submit')
|
||||
.addClass(SN.C.S.Disabled)
|
||||
.attr(SN.C.S.Disabled, SN.C.S.Disabled);
|
||||
},
|
||||
error: function (xhr, textStatus, errorThrown) {
|
||||
alert(errorThrown || textStatus);
|
||||
},
|
||||
success: function(data, textStatus) {
|
||||
if (typeof($('form', data)[0]) != 'undefined') {
|
||||
form_new = document._importNode($('form', data)[0], true);
|
||||
form.replaceWith(form_new);
|
||||
}
|
||||
else {
|
||||
form.replaceWith(document._importNode($('p', data)[0], true));
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
FormNoticeXHR: function(form) {
|
||||
var NDG, NLat, NLon, NLNS, NLID;
|
||||
SN.C.I.NoticeDataGeo = {};
|
||||
form_id = form.attr('id');
|
||||
form.append('<input type="hidden" name="ajax" value="1"/>');
|
||||
form.ajaxForm({
|
||||
dataType: 'xml',
|
||||
timeout: '60000',
|
||||
beforeSend: function(formData) {
|
||||
if ($('#'+form_id+' #'+SN.C.S.NoticeDataText)[0].value.length === 0) {
|
||||
if (form.find('#'+SN.C.S.NoticeDataText)[0].value.length === 0) {
|
||||
form.addClass(SN.C.S.Warning);
|
||||
return false;
|
||||
}
|
||||
form.addClass(SN.C.S.Processing);
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).addClass(SN.C.S.Disabled);
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).attr(SN.C.S.Disabled, SN.C.S.Disabled);
|
||||
form
|
||||
.addClass(SN.C.S.Processing)
|
||||
.find('#'+SN.C.S.NoticeActionSubmit)
|
||||
.addClass(SN.C.S.Disabled)
|
||||
.attr(SN.C.S.Disabled, SN.C.S.Disabled);
|
||||
|
||||
NLat = $('#'+SN.C.S.NoticeLat).val();
|
||||
NLon = $('#'+SN.C.S.NoticeLon).val();
|
||||
NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
|
||||
NLID = $('#'+SN.C.S.NoticeLocationId).val();
|
||||
NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked');
|
||||
SN.C.I.NoticeDataGeo.NLat = $('#'+SN.C.S.NoticeLat).val();
|
||||
SN.C.I.NoticeDataGeo.NLon = $('#'+SN.C.S.NoticeLon).val();
|
||||
SN.C.I.NoticeDataGeo.NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
|
||||
SN.C.I.NoticeDataGeo.NLID = $('#'+SN.C.S.NoticeLocationId).val();
|
||||
SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked');
|
||||
|
||||
cookieValue = $.cookie(SN.C.S.NoticeDataGeoCookie);
|
||||
|
||||
if (cookieValue !== null && cookieValue != 'disabled') {
|
||||
cookieValue = JSON.parse(cookieValue);
|
||||
NLat = $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat).val();
|
||||
NLon = $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon).val();
|
||||
SN.C.I.NoticeDataGeo.NLat = $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat).val();
|
||||
SN.C.I.NoticeDataGeo.NLon = $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon).val();
|
||||
if ($('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS)) {
|
||||
NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
|
||||
NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
|
||||
SN.C.I.NoticeDataGeo.NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
|
||||
SN.C.I.NoticeDataGeo.NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
|
||||
}
|
||||
}
|
||||
if (cookieValue == 'disabled') {
|
||||
NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
|
||||
SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
|
||||
}
|
||||
else {
|
||||
NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
|
||||
SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
error: function (xhr, textStatus, errorThrown) {
|
||||
form.removeClass(SN.C.S.Processing);
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
|
||||
$('#'+form_id+' .form_response').remove();
|
||||
form
|
||||
.removeClass(SN.C.S.Processing)
|
||||
.find('#'+SN.C.S.NoticeActionSubmit)
|
||||
.removeClass(SN.C.S.Disabled)
|
||||
.removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
|
||||
form.find('.form_response').remove();
|
||||
if (textStatus == 'timeout') {
|
||||
form.append('<p class="form_response error">Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.</p>');
|
||||
}
|
||||
|
@ -233,9 +231,10 @@ var SN = { // StatusNet
|
|||
}
|
||||
else {
|
||||
if (parseInt(xhr.status) === 0 || jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) >= 0) {
|
||||
$('#'+form_id).resetForm();
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove();
|
||||
SN.U.FormNoticeEnhancements($('#'+form_id));
|
||||
form
|
||||
.resetForm()
|
||||
.find('#'+SN.C.S.NoticeDataAttachSelected).remove();
|
||||
SN.U.FormNoticeEnhancements(form);
|
||||
}
|
||||
else {
|
||||
form.append('<p class="form_response error">(Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.</p>');
|
||||
|
@ -244,7 +243,7 @@ var SN = { // StatusNet
|
|||
}
|
||||
},
|
||||
success: function(data, textStatus) {
|
||||
$('#'+form_id+' .form_response').remove();
|
||||
form.find('.form_response').remove();
|
||||
var result;
|
||||
if ($('#'+SN.C.S.Error, data).length > 0) {
|
||||
result = document._importNode($('p', data)[0], true);
|
||||
|
@ -277,11 +276,11 @@ var SN = { // StatusNet
|
|||
else {
|
||||
notices.prepend(notice);
|
||||
}
|
||||
$('#'+notice.id).css({display:'none'});
|
||||
$('#'+notice.id).fadeIn(2500);
|
||||
$('#'+notice.id)
|
||||
.css({display:'none'})
|
||||
.fadeIn(2500);
|
||||
SN.U.NoticeWithAttachment($('#'+notice.id));
|
||||
SN.U.NoticeReplyTo($('#'+notice.id));
|
||||
SN.U.FormXHR($('#'+notice.id+' .form_favor'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -290,24 +289,26 @@ var SN = { // StatusNet
|
|||
form.append('<p class="form_response success">'+result_title+'</p>');
|
||||
}
|
||||
}
|
||||
$('#'+form_id).resetForm();
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeInReplyTo).val('');
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove();
|
||||
SN.U.FormNoticeEnhancements($('#'+form_id));
|
||||
form.resetForm();
|
||||
form.find('#'+SN.C.S.NoticeInReplyTo).val('');
|
||||
form.find('#'+SN.C.S.NoticeDataAttachSelected).remove();
|
||||
SN.U.FormNoticeEnhancements(form);
|
||||
}
|
||||
},
|
||||
complete: function(xhr, textStatus) {
|
||||
form.removeClass(SN.C.S.Processing);
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled);
|
||||
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
|
||||
form
|
||||
.removeClass(SN.C.S.Processing)
|
||||
.find('#'+SN.C.S.NoticeActionSubmit)
|
||||
.removeAttr(SN.C.S.Disabled)
|
||||
.removeClass(SN.C.S.Disabled);
|
||||
|
||||
$('#'+SN.C.S.NoticeLat).val(NLat);
|
||||
$('#'+SN.C.S.NoticeLon).val(NLon);
|
||||
$('#'+SN.C.S.NoticeLat).val(SN.C.I.NoticeDataGeo.NLat);
|
||||
$('#'+SN.C.S.NoticeLon).val(SN.C.I.NoticeDataGeo.NLon);
|
||||
if ($('#'+SN.C.S.NoticeLocationNs)) {
|
||||
$('#'+SN.C.S.NoticeLocationNs).val(NLNS);
|
||||
$('#'+SN.C.S.NoticeLocationId).val(NLID);
|
||||
$('#'+SN.C.S.NoticeLocationNs).val(SN.C.I.NoticeDataGeo.NLNS);
|
||||
$('#'+SN.C.S.NoticeLocationId).val(SN.C.I.NoticeDataGeo.NLID);
|
||||
}
|
||||
$('#'+SN.C.S.NoticeDataGeo).attr('checked', NDG);
|
||||
$('#'+SN.C.S.NoticeDataGeo).attr('checked', SN.C.I.NoticeDataGeo.NDG);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -350,14 +351,15 @@ var SN = { // StatusNet
|
|||
},
|
||||
|
||||
NoticeFavor: function() {
|
||||
$('.form_favor').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_disfavor').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_favor').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
$('.form_disfavor').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
},
|
||||
|
||||
NoticeRepeat: function() {
|
||||
$('.form_repeat').each(function() {
|
||||
$('.form_repeat').live('click', function() {
|
||||
SN.U.FormXHR($(this));
|
||||
SN.U.NoticeRepeatConfirmation($(this));
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -639,7 +641,7 @@ var SN = { // StatusNet
|
|||
NDM.bind('click', function() {
|
||||
var NDMF = $('.entity_send-a-message form');
|
||||
if (NDMF.length === 0) {
|
||||
$(this).addClass('processing');
|
||||
$(this).addClass(SN.C.S.Processing);
|
||||
$.get(NDM.attr('href'), null, function(data) {
|
||||
$('.entity_send-a-message').append(document._importNode($('form', data)[0], true));
|
||||
NDMF = $('.entity_send-a-message .form_notice');
|
||||
|
@ -650,7 +652,7 @@ var SN = { // StatusNet
|
|||
NDMF.hide();
|
||||
return false;
|
||||
});
|
||||
NDM.removeClass('processing');
|
||||
NDM.removeClass(SN.C.S.Processing);
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
@ -695,11 +697,11 @@ var SN = { // StatusNet
|
|||
|
||||
EntityActions: function() {
|
||||
if ($('body.user_in').length > 0) {
|
||||
$('.form_user_subscribe').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_user_unsubscribe').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_group_join').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_group_leave').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_user_nudge').each(function() { SN.U.FormXHR($(this)); });
|
||||
$('.form_user_subscribe').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
$('.form_user_unsubscribe').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
$('.form_group_join').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
$('.form_group_leave').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
$('.form_user_nudge').live('click', function() { SN.U.FormXHR($(this)); return false; });
|
||||
|
||||
SN.U.NewDirectMessage();
|
||||
}
|
||||
|
|
12
lib/util.php
12
lib/util.php
|
@ -989,9 +989,14 @@ function common_enqueue_notice($notice)
|
|||
static $localTransports = array('omb',
|
||||
'ping');
|
||||
|
||||
static $allTransports = array('sms', 'plugin');
|
||||
|
||||
$transports = $allTransports;
|
||||
$transports = array();
|
||||
if (common_config('sms', 'enabled')) {
|
||||
$transports[] = 'sms';
|
||||
}
|
||||
if (Event::hasHandler('HandleQueuedNotice')) {
|
||||
$transports[] = 'plugin';
|
||||
}
|
||||
|
||||
|
||||
$xmpp = common_config('xmpp', 'enabled');
|
||||
|
||||
|
@ -999,6 +1004,7 @@ function common_enqueue_notice($notice)
|
|||
$transports[] = 'jabber';
|
||||
}
|
||||
|
||||
// @fixme move these checks into QueueManager and/or individual handlers
|
||||
if ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||
$notice->is_local == Notice::LOCAL_NONPUBLIC) {
|
||||
$transports = array_merge($transports, $localTransports);
|
||||
|
|
|
@ -95,9 +95,7 @@ RealtimeUpdate = {
|
|||
$("#notices_primary .notice:first").css({display:"none"});
|
||||
$("#notices_primary .notice:first").fadeIn(1000);
|
||||
|
||||
SN.U.FormXHR($('#'+noticeItemID+' .form_favor'));
|
||||
SN.U.NoticeReplyTo($('#'+noticeItemID));
|
||||
SN.U.FormXHR($('#'+noticeItemID+' .form_repeat'));
|
||||
SN.U.NoticeWithAttachment($('#'+noticeItemID));
|
||||
},
|
||||
|
||||
|
@ -132,7 +130,7 @@ RealtimeUpdate = {
|
|||
user = data['user'];
|
||||
html = data['html'].replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&');
|
||||
source = data['source'].replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&');
|
||||
console.log(data);
|
||||
|
||||
ni = "<li class=\"hentry notice\" id=\"notice-"+unique+"\">"+
|
||||
"<div class=\"entry-title\">"+
|
||||
"<span class=\"vcard author\">"+
|
||||
|
@ -180,7 +178,7 @@ console.log(data);
|
|||
|
||||
ni = ni+"</div>";
|
||||
|
||||
"</li>";
|
||||
ni = ni+"</li>";
|
||||
return ni;
|
||||
},
|
||||
|
||||
|
|
|
@ -208,8 +208,8 @@ class UserFlagPlugin extends Plugin
|
|||
function onEndShowScripts($action)
|
||||
{
|
||||
$action->inlineScript('if ($(".form_entity_flag").length > 0) { '.
|
||||
'SN.U.FormXHR($(".form_entity_flag")); '.
|
||||
'}');
|
||||
'$(".form_entity_flag").bind("click", function() {'.
|
||||
'SN.U.FormXHR($(this)); return false; }); }');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
/*
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2009, StatusNet, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||
|
||||
$shortoptions = "t:c:v:k:";
|
||||
|
||||
$helptext = <<<ENDOFHELP
|
||||
USAGE: clearcache.php <args>
|
||||
clears the cached object based on the args
|
||||
|
||||
-t table Table to look up
|
||||
-c column Column to look up, default "id"
|
||||
-v value Value to look up
|
||||
-k key Key to look up; other args are ignored
|
||||
|
||||
ENDOFHELP;
|
||||
|
||||
require_once INSTALLDIR.'/scripts/commandline.inc';
|
||||
|
||||
$karg = get_option_value('k');
|
||||
|
||||
if (!empty($karg)) {
|
||||
$k = common_cache_key($karg);
|
||||
} else {
|
||||
$table = get_option_value('t');
|
||||
if (empty($table)) {
|
||||
die("No table or key specified\n");
|
||||
}
|
||||
$column = get_option_value('c');
|
||||
if (empty($column)) {
|
||||
$column = 'id';
|
||||
}
|
||||
$value = get_option_value('v');
|
||||
|
||||
$k = Memcached_DataObject::cacheKey($table, $column, $value);
|
||||
}
|
||||
|
||||
print "Clearing key '$k'...";
|
||||
|
||||
$c = common_memcache();
|
||||
|
||||
if (empty($c)) {
|
||||
die("Can't initialize cache object!\n");
|
||||
}
|
||||
|
||||
$result = $c->delete($k);
|
||||
|
||||
if ($result) {
|
||||
print "OK.\n";
|
||||
} else {
|
||||
print "FAIL.\n";
|
||||
}
|
Loading…
Reference in New Issue