Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x

This commit is contained in:
Zach Copley 2009-12-04 20:18:42 +00:00
commit 0177b386d8
3 changed files with 64 additions and 49 deletions

View File

@ -112,6 +112,11 @@ class MapstractionPlugin extends Plugin
{
$actionName = $action->trimmed('action');
if (!in_array($actionName,
array('showstream', 'all', 'usermap', 'allmap'))) {
return true;
}
switch ($this->provider)
{
case 'cloudmade':
@ -143,9 +148,19 @@ class MapstractionPlugin extends Plugin
$action->script(common_path('plugins/Mapstraction/usermap.js'));
$action->elementStart('script', array('type' => 'text/javascript'));
$action->raw(sprintf('var _provider = "%s";', $this->provider));
$action->elementEnd('script');
$action->inlineScript(sprintf('var _provider = "%s";', $this->provider));
// usermap and allmap handle this themselves
if (in_array($actionName,
array('showstream', 'all'))) {
$action->inlineScript('$(document).ready(function() { '.
' var user = null; '.
(($actionName == 'showstream') ? ' user = scrapeUser(); ' : '') .
' var notices = scrapeNotices(user); ' .
' showMapstraction($("#map_canvas"), notices); '.
'});');
}
return true;
}

View File

@ -128,12 +128,9 @@ class MapAction extends OwnerDesignAction
}
}
$this->elementStart('script', array('type' => 'text/javascript'));
$this->raw('/*<![CDATA[*/'); // XHTML compat for Safari
$this->raw('var _notices = ' . json_encode($jsonArray).'; ');
$this->raw('showMapstraction($("#map_canvas"),_notices);');
$this->raw('/*]]>*/'); // XHTML compat for Safari
$this->elementEnd('script');
$this->inlineScript('$(document).ready(function() { '.
' var _notices = ' . json_encode($jsonArray).'; ' .
'showMapstraction($("#map_canvas"), _notices); });');
return true;
}

View File

@ -1,40 +1,32 @@
$(document).ready(function() {
function scrapeNotices(user)
{
var notices = [];
$(".notice").each(function(){
var notice = getNoticeFromElement($(this));
if(notice['geo'])
notices.push(notice);
var notice = getNoticeFromElement($(this));
if (user) {
notice['user'] = user;
} else {
notice['user'] = getUserFromElement($(this));
}
if(notice['geo'])
notices.push(notice);
});
if($("#map_canvas").length && notices.length>0)
{
showMapstraction($("#map_canvas"), notices);
}
$('.geo').click(function(){
var noticeElement = $(this).closest(".notice");
notice = getNoticeFromElement(noticeElement);
return notices;
}
$.fn.jOverlay.options = {
color : '#000',
opacity : '0.6',
zIndex : 99,
center : false,
bgClickToClose : true,
autoHide : true,
css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'}
};
var html="<div id='map_canvas_popup' class='gray smallmap' style='width: 542px; height: 500px' />";
html+="<button class='close'>&#215;</button>";
html+=$("<div/>").append($(this).clone()).html();
$().jOverlay({ "html": html });
$('#jOverlayContent').show();
$('#jOverlayContent button').click($.closeOverlay);
showMapstraction($("#map_canvas_popup"), notice);
function scrapeUser()
{
var avatarURL = $(".entity_profile .entity_depiction img.avatar").attr('src');
var profileURL = $(".entity_profile .entity_nickname .url").attr('href');
var nickname = $(".entity_profile .entity_nickname .nickname").text();
return false;
});
});
return {
'profile_image_url': avatarURL,
'profile_url': profileURL,
'screen_name': nickname
};
}
function getMicroformatValue(element)
{
@ -48,23 +40,34 @@ function getMicroformatValue(element)
function getNoticeFromElement(noticeElement)
{
var notice = {};
if(noticeElement.find(".geo").length){
if(noticeElement.find(".geo").length) {
var latlon = noticeElement.find(".geo").attr('title').split(";");
notice['geo']={'coordinates': [
parseFloat(latlon[0]),
parseFloat(latlon[1])] };
}
notice['user']={
'profile_image_url': noticeElement.find("img.avatar").attr('src'),
'profile_url': noticeElement.find(".author a.url").attr('href'),
'screen_name': noticeElement.find(".author .nickname").text()
};
notice['html']=noticeElement.find(".entry-content").html();
notice['url']=noticeElement.find("a.timestamp").attr('href');
notice['created_at']=noticeElement.find("abbr.published").text();
notice['html'] = noticeElement.find(".entry-content").html();
notice['url'] = noticeElement.find("a.timestamp").attr('href');
notice['created_at'] = noticeElement.find("abbr.published").text();
return notice;
}
function getUserFromElement(noticeElement)
{
var avatarURL = noticeElement.find("img.avatar").attr('src');
var profileURL = noticeElement.find(".author a.url").attr('href');
var nickname = noticeElement.find(".author .nickname").text();
return {
'profile_image_url': avatarURL,
'profile_url': profileURL,
'screen_name': nickname
};
}
function showMapstraction(element, notices) {
if(element instanceof jQuery) element = element[0];
if(! $.isArray(notices)) notices = [notices];