Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Haakon Meland Eriksen 2015-08-23 15:54:46 +02:00
commit 092e7378cd
33 changed files with 532 additions and 238 deletions

View file

@ -49,7 +49,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H'); define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H');
define ( 'ZOT_REVISION', 1 ); define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1147 ); define ( 'DB_UPDATE_VERSION', 1148 );
/** /**
* @brief Constant with a HTML line break. * @brief Constant with a HTML line break.
@ -1990,6 +1990,11 @@ function load_pdl(&$a) {
require_once('include/comanche.php'); require_once('include/comanche.php');
if (! count($a->layout)) { if (! count($a->layout)) {
$arr = array('module' => $a->module, 'layout' => '');
call_hooks('load_pdl',$arr);
$s = $arr['layout'];
$n = 'mod_' . $a->module . '.pdl' ; $n = 'mod_' . $a->module . '.pdl' ;
$u = comanche_get_channel_id(); $u = comanche_get_channel_id();
if($u) if($u)
@ -2002,6 +2007,7 @@ function load_pdl(&$a) {
$a->pdl = $s; $a->pdl = $s;
} }
} }
} }

View file

@ -99,6 +99,11 @@ Some/many of these widgets have restrictions which may restrict the type of page
* channel_id - if not your own * channel_id - if not your own
<br />&nbsp;<br /> <br />&nbsp;<br />
* tasklist - provide a task or to-do list for the currently logged-in channel.
* args:
* all - display completed tasks if all is non-zero.
<br />&nbsp;<br />
Creating New Widgets Creating New Widgets
==================== ====================

View file

@ -56,7 +56,7 @@ Store photos in albums. All your photos may be protected by Access Control Lists
[b]Events Calendar[/b] [b]Events Calendar[/b]
Create and manage events, which may also be protected with Access Control Lists. Events can be exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly. Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.
[b]Chatrooms[/b] [b]Chatrooms[/b]

View file

@ -7,6 +7,7 @@ We need much more than this, but here are areas where developers can help. Pleas
[li](done) forum widget with unread counts (requires the DB schema changes from v3/hubzilla to be viable)[/li] [li](done) forum widget with unread counts (requires the DB schema changes from v3/hubzilla to be viable)[/li]
[li]Create bug tracker module[/li] [li]Create bug tracker module[/li]
[li]translation plugins - moses or apertium[/li] [li]translation plugins - moses or apertium[/li]
[li]plugins - provide 'disable' which is softer than 'uninstall' for those plugins which create additional DB tables[/li]
[li]Infinite scroll improvements (i.e. embedded page links) see http://scrollsample.appspot.com/items [/li] [li]Infinite scroll improvements (i.e. embedded page links) see http://scrollsample.appspot.com/items [/li]
[li]Finish the anti-spam bayesian engine[/li] [li]Finish the anti-spam bayesian engine[/li]
[li]implement an email permission denied bounce message from the sys channel[/li] [li]implement an email permission denied bounce message from the sys channel[/li]

View file

@ -631,6 +631,27 @@ require_once('include/items.php');
} }
api_register_func('api/red/photos','api_photos', true); api_register_func('api/red/photos','api_photos', true);
function api_photo_detail(&$a,$type) {
if (api_user()===false) return false;
if(! $_REQUEST['photo_id']) return false;
$scale = ((array_key_exists('scale',$_REQUEST)) ? intval($_REQUEST['scale']) : 0);
$r = q("select * from photo where uid = %d and resource_id = '%s' and scale = %d limit 1",
intval(local_channel()),
dbesc($_REQUEST['photo_id']),
intval($scale)
);
if($r) {
$data = dbunescbin($r[0]['data']);
if(array_key_exists('os_storage',$r[0]) && intval($r[0]['os_storage']))
$data = file_get_contents($data);
$r[0]['data'] = base64_encode($data);
json_return_and_die($r[0]);
}
killme();
}
api_register_func('api/red/photo', 'api_photo_detail', true);
function api_group_members(&$a,$type) { function api_group_members(&$a,$type) {
if(api_user() === false) if(api_user() === false)
@ -686,7 +707,7 @@ require_once('include/items.php');
api_register_func('api/red/xchan','api_red_xchan',true); api_register_func('api/red/xchan','api_red_xchan',true);
function api_statuses_mediap(&$a, $type) { function api_statuses_mediap(&$a, $type) {
if (api_user() === false) { if (api_user() === false) {
logger('api_statuses_update: no user'); logger('api_statuses_update: no user');
return false; return false;
@ -696,7 +717,7 @@ require_once('include/items.php');
$_REQUEST['type'] = 'wall'; $_REQUEST['type'] = 'wall';
$_REQUEST['profile_uid'] = api_user(); $_REQUEST['profile_uid'] = api_user();
$_REQUEST['api_source'] = true; $_REQUEST['api_source'] = true;
$txt = requestdata('status'); $txt = requestdata('status');
require_once('library/HTMLPurifier.auto.php'); require_once('library/HTMLPurifier.auto.php');
@ -711,13 +732,13 @@ require_once('include/items.php');
} }
$txt = html2bbcode($txt); $txt = html2bbcode($txt);
$a->argv[1] = $user_info['screen_name']; $a->argv[1] = $user_info['screen_name'];
$_REQUEST['silent']='1'; //tell wall_upload function to return img info instead of echo $_REQUEST['silent']='1'; //tell wall_upload function to return img info instead of echo
$_FILES['userfile'] = $_FILES['media']; $_FILES['userfile'] = $_FILES['media'];
require_once('mod/wall_attach.php'); require_once('mod/wall_attach.php');
$posted = wall_attach_post($a); $posted = wall_attach_post($a);
//now that we have the img url in bbcode we can add it to the status and insert the wall item. //now that we have the img url in bbcode we can add it to the status and insert the wall item.
$_REQUEST['body']=$txt."\n\n".$posted; $_REQUEST['body']=$txt."\n\n".$posted;
require_once('mod/item.php'); require_once('mod/item.php');
@ -1178,7 +1199,7 @@ require_once('include/items.php');
and uid = " . $sys['channel_id'] . " and uid = " . $sys['channel_id'] . "
$sql_extra $sql_extra
AND id > %d group by mid AND id > %d group by mid
order by received desc LIMIT %d OFFSET %d ", order by received desc LIMIT %d OFFSET %d ",
intval($since_id), intval($since_id),
intval($count), intval($count),
intval($start) intval($start)
@ -1392,17 +1413,17 @@ require_once('include/items.php');
$diasp_url = str_replace('/channel/','/u/',$myurl); $diasp_url = str_replace('/channel/','/u/',$myurl);
if (get_config('system','use_fulltext_engine')) if (get_config('system','use_fulltext_engine'))
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ", $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
dbesc(protect_sprintf($myurl)), dbesc(protect_sprintf($myurl)),
dbesc(protect_sprintf($myurl)), dbesc(protect_sprintf($myurl)),
dbesc(protect_sprintf($diasp_url)) dbesc(protect_sprintf($diasp_url))
); );
else else
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ", $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
dbesc(protect_sprintf('%' . $myurl)), dbesc(protect_sprintf('%' . $myurl)),
dbesc(protect_sprintf('%' . $myurl . ']%')), dbesc(protect_sprintf('%' . $myurl . ']%')),
dbesc(protect_sprintf('%' . $diasp_url . ']%')) dbesc(protect_sprintf('%' . $diasp_url . ']%'))
); );
if ($max_id > 0) if ($max_id > 0)
$sql_extra .= ' AND `item`.`id` <= '.intval($max_id); $sql_extra .= ' AND `item`.`id` <= '.intval($max_id);
@ -1496,10 +1517,10 @@ require_once('include/items.php');
// ); // );
$arr = array( $arr = array(
'uid' => api_user(), 'uid' => api_user(),
'since_id' => $since_id, 'since_id' => $since_id,
'start' => $start, 'start' => $start,
'records' => $count); 'records' => $count);
if ($user_info['self']==1) if ($user_info['self']==1)
$arr['wall'] = 1; $arr['wall'] = 1;
@ -1508,7 +1529,7 @@ require_once('include/items.php');
$r = items_fetch($arr,get_app()->get_channel(),get_observer_hash()); $r = items_fetch($arr,get_app()->get_channel(),get_observer_hash());
$ret = api_format_items($r,$user_info); $ret = api_format_items($r,$user_info);
@ -1526,32 +1547,32 @@ require_once('include/items.php');
/** /**
* Star/unstar an item * Star/unstar an item
* param: id : id of the item * param: id : id of the item
* *
* api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid * api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid
*/ */
function api_favorites_create_destroy(&$a, $type){ function api_favorites_create_destroy(&$a, $type){
logger('favorites_create_destroy'); logger('favorites_create_destroy');
if (api_user()===false) if (api_user()===false)
return false; return false;
$action = str_replace(".".$type,"",argv(2)); $action = str_replace(".".$type,"",argv(2));
if (argc() > 3) { if (argc() > 3) {
$itemid = intval(argv(3)); $itemid = intval(argv(3));
} else { } else {
$itemid = intval($_REQUEST['id']); $itemid = intval($_REQUEST['id']);
} }
$item = q("SELECT * FROM item WHERE id = %d AND uid = %d", $item = q("SELECT * FROM item WHERE id = %d AND uid = %d",
intval($itemid), intval($itemid),
intval(api_user()) intval(api_user())
); );
if (! $item) if (! $item)
return false; return false;
switch($action){ switch($action){
@ -1581,22 +1602,22 @@ require_once('include/items.php');
xchan_query($item,true); xchan_query($item,true);
$user_info = api_get_user($a); $user_info = api_get_user($a);
$rets = api_format_items($item,$user_info); $rets = api_format_items($item,$user_info);
$ret = $rets[0]; $ret = $rets[0];
$data = array('$status' => $ret); $data = array('$status' => $ret);
switch($type){ switch($type){
case "atom": case "atom":
case "rss": case "rss":
$data = api_rss_extra($a, $data, $user_info); $data = api_rss_extra($a, $data, $user_info);
} }
return api_apply_template("status", $type, $data); return api_apply_template("status", $type, $data);
} }
api_register_func('api/favorites/create', 'api_favorites_create_destroy', true); api_register_func('api/favorites/create', 'api_favorites_create_destroy', true);
api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true); api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true);
@ -1607,7 +1628,7 @@ require_once('include/items.php');
$user_info = api_get_user($a); $user_info = api_get_user($a);
// params // params
$count = (x($_REQUEST,'count')?$_REQUEST['count']:20); $count = (x($_REQUEST,'count')?$_REQUEST['count']:20);
$page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
if($page < 0) if($page < 0)
$page = 0; $page = 0;

View file

@ -63,9 +63,9 @@ function ical_wrapper($ev) {
return ''; return '';
$o .= "BEGIN:VCALENDAR"; $o .= "BEGIN:VCALENDAR";
$o .= "\nVERSION:2.0"; $o .= "\r\nVERSION:2.0";
$o .= "\nMETHOD:PUBLISH"; $o .= "\r\nMETHOD:PUBLISH";
$o .= "\nPRODID:-//" . get_config('system','sitename') . "//" . PLATFORM_NAME . "//" . strtoupper(get_app()->language). "\n"; $o .= "\r\nPRODID:-//" . get_config('system','sitename') . "//" . PLATFORM_NAME . "//" . strtoupper(get_app()->language). "\r\n";
if(array_key_exists('start', $ev)) if(array_key_exists('start', $ev))
$o .= format_event_ical($ev); $o .= format_event_ical($ev);
else { else {
@ -73,7 +73,7 @@ function ical_wrapper($ev) {
$o .= format_event_ical($e); $o .= format_event_ical($e);
} }
} }
$o .= "\nEND:VCALENDAR\n"; $o .= "\r\nEND:VCALENDAR\r\n";
return $o; return $o;
} }
@ -85,24 +85,26 @@ function format_event_ical($ev) {
$o = ''; $o = '';
$o .= "\nBEGIN:VEVENT"; $o .= "\r\nBEGIN:VEVENT";
$o .= "\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z'); $o .= "\r\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z');
$o .= "\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z'); $o .= "\r\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
$o .= "\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z'); $o .= "\r\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
if($ev['start']) if($ev['start'])
$o .= "\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['finish'] && ! $ev['nofinish']) if($ev['finish'] && ! $ev['nofinish'])
$o .= "\nDTEND:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); $o .= "\r\nDTEND:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['summary']) if($ev['summary'])
$o .= "\nSUMMARY:" . format_ical_text($ev['summary']); $o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']);
if($ev['location']) if($ev['location'])
$o .= "\nLOCATION:" . format_ical_text($ev['location']); $o .= "\r\nLOCATION:" . format_ical_text($ev['location']);
if($ev['description']) if($ev['description'])
$o .= "\nDESCRIPTION:" . format_ical_text($ev['description']); $o .= "\r\nDESCRIPTION:" . format_ical_text($ev['description']);
$o .= "\nUID:" . $ev['event_hash'] ; if($ev['event_priority'])
$o .= "\nEND:VEVENT\n"; $o .= "\r\nPRIORITY:" . intval($ev['event_priority']);
$o .= "\r\nUID:" . $ev['event_hash'] ;
$o .= "\r\nEND:VEVENT\r\n";
return $o; return $o;
} }
@ -111,31 +113,33 @@ function format_todo_ical($ev) {
$o = ''; $o = '';
$o .= "\nBEGIN:VTODO"; $o .= "\r\nBEGIN:VTODO";
$o .= "\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z'); $o .= "\r\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z');
$o .= "\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z'); $o .= "\r\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
$o .= "\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z'); $o .= "\r\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
if($ev['start']) if($ev['start'])
$o .= "\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['finish'] && ! $ev['nofinish']) if($ev['finish'] && ! $ev['nofinish'])
$o .= "\nDUE:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : '')); $o .= "\r\nDUE:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['summary']) if($ev['summary'])
$o .= "\nSUMMARY:" . format_ical_text($ev['summary']); $o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']);
if($ev['event_status']) { if($ev['event_status']) {
$o .= "\nSTATUS:" . $ev['event_status']; $o .= "\r\nSTATUS:" . $ev['event_status'];
if($ev['event_status'] === 'COMPLETED') if($ev['event_status'] === 'COMPLETED')
$o .= "\nCOMPLETED:" . datetime_convert('UTC','UTC', $ev['event_status_date'],'Ymd\\THis\\Z'); $o .= "\r\nCOMPLETED:" . datetime_convert('UTC','UTC', $ev['event_status_date'],'Ymd\\THis\\Z');
} }
if(intval($ev['event_percent'])) if(intval($ev['event_percent']))
$o .= "\nPERCENT-COMPLETE:" . $ev['event_percent']; $o .= "\r\nPERCENT-COMPLETE:" . $ev['event_percent'];
if(intval($ev['event_sequence'])) if(intval($ev['event_sequence']))
$o .= "\nSEQUENCE:" . $ev['event_sequence']; $o .= "\r\nSEQUENCE:" . $ev['event_sequence'];
if($ev['location']) if($ev['location'])
$o .= "\nLOCATION:" . format_ical_text($ev['location']); $o .= "\r\nLOCATION:" . format_ical_text($ev['location']);
if($ev['description']) if($ev['description'])
$o .= "\nDESCRIPTION:" . format_ical_text($ev['description']); $o .= "\r\nDESCRIPTION:" . format_ical_text($ev['description']);
$o .= "\nUID:" . $ev['event_hash'] ; $o .= "\r\nUID:" . $ev['event_hash'] ;
$o .= "\nEND:VTODO\n"; if($ev['event_priority'])
$o .= "\r\nPRIORITY:" . intval($ev['event_priority']);
$o .= "\r\nEND:VTODO\r\n";
return $o; return $o;
} }
@ -146,7 +150,7 @@ function format_ical_text($s) {
require_once('include/bbcode.php'); require_once('include/bbcode.php');
require_once('include/html2plain.php'); require_once('include/html2plain.php');
return(wordwrap(str_replace(',','\\,',html2plain(bbcode($s))),72,"\n ",true)); return(wordwrap(str_replace(array(',',';','\\'),array('\\,','\\;','\\\\'),html2plain(bbcode($s))),72,"\r\n ",true));
} }
@ -260,10 +264,11 @@ function ev_compare($a, $b) {
function event_store_event($arr) { function event_store_event($arr) {
$arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert()); $arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
$arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert()); $arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
$arr['type'] = (($arr['type']) ? $arr['type'] : 'event' ); $arr['type'] = (($arr['type']) ? $arr['type'] : 'event' );
$arr['event_xchan'] = (($arr['event_xchan']) ? $arr['event_xchan'] : ''); $arr['event_xchan'] = (($arr['event_xchan']) ? $arr['event_xchan'] : '');
$arr['event_priority'] = (($arr['event_priority']) ? $arr['event_priority'] : 0);
if(array_key_exists('event_status_date',$arr)) if(array_key_exists('event_status_date',$arr))
@ -317,6 +322,7 @@ function event_store_event($arr) {
`event_percent` = %d, `event_percent` = %d,
`event_repeat` = '%s', `event_repeat` = '%s',
`event_sequence` = %d, `event_sequence` = %d,
`event_priority` = %d,
`allow_cid` = '%s', `allow_cid` = '%s',
`allow_gid` = '%s', `allow_gid` = '%s',
`deny_cid` = '%s', `deny_cid` = '%s',
@ -337,6 +343,7 @@ function event_store_event($arr) {
intval($arr['event_percent']), intval($arr['event_percent']),
dbesc($arr['event_repeat']), dbesc($arr['event_repeat']),
intval($arr['event_sequence']), intval($arr['event_sequence']),
intval($arr['event_priority']),
dbesc($arr['allow_cid']), dbesc($arr['allow_cid']),
dbesc($arr['allow_gid']), dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']), dbesc($arr['deny_cid']),
@ -355,8 +362,8 @@ function event_store_event($arr) {
$hash = random_string() . '@' . get_app()->get_hostname(); $hash = random_string() . '@' . get_app()->get_hostname();
$r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,start,finish,summary,description,location,type, $r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,start,finish,summary,description,location,type,
adjust,nofinish, event_status, event_status_date, event_percent, event_repeat, event_sequence, allow_cid,allow_gid,deny_cid,deny_gid) adjust,nofinish, event_status, event_status_date, event_percent, event_repeat, event_sequence, event_priority, allow_cid,allow_gid,deny_cid,deny_gid)
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', %d, '%s', %d, '%s', '%s', '%s', '%s' ) ", VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', %d, '%s', %d, %d, '%s', '%s', '%s', '%s' ) ",
intval($arr['uid']), intval($arr['uid']),
intval($arr['account']), intval($arr['account']),
dbesc($arr['event_xchan']), dbesc($arr['event_xchan']),
@ -376,6 +383,7 @@ function event_store_event($arr) {
intval($arr['event_percent']), intval($arr['event_percent']),
dbesc($arr['event_repeat']), dbesc($arr['event_repeat']),
intval($arr['event_sequence']), intval($arr['event_sequence']),
intval($arr['event_priority']),
dbesc($arr['allow_cid']), dbesc($arr['allow_cid']),
dbesc($arr['allow_gid']), dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']), dbesc($arr['deny_cid']),
@ -543,6 +551,8 @@ function event_import_ical($ical, $uid) {
$ev['description'] = (string) $ical->DESCRIPTION; $ev['description'] = (string) $ical->DESCRIPTION;
if(isset($ical->SUMMARY)) if(isset($ical->SUMMARY))
$ev['summary'] = (string) $ical->SUMMARY; $ev['summary'] = (string) $ical->SUMMARY;
if(isset($ical->PRIORITY))
$ev['event_priority'] = intval((string) $ical->PRIORITY);
if(isset($ical->UID)) { if(isset($ical->UID)) {
$evuid = (string) $ical->UID; $evuid = (string) $ical->UID;
@ -641,6 +651,8 @@ function event_import_ical_task($ical, $uid) {
$ev['description'] = (string) $ical->DESCRIPTION; $ev['description'] = (string) $ical->DESCRIPTION;
if(isset($ical->SUMMARY)) if(isset($ical->SUMMARY))
$ev['summary'] = (string) $ical->SUMMARY; $ev['summary'] = (string) $ical->SUMMARY;
if(isset($ical->PRIORITY))
$ev['event_priority'] = intval((string) $ical->PRIORITY);
$stored_event = null; $stored_event = null;
@ -850,6 +862,17 @@ function event_store_item($arr, $event) {
$item_arr['item_origin'] = $item_origin; $item_arr['item_origin'] = $item_origin;
$item_arr['item_thread_top'] = $item_thread_top;; $item_arr['item_thread_top'] = $item_thread_top;;
$attach = array(array(
'href' => z_root() . '/events/ical/' . urlencode($event['event_hash']),
'length' => 0,
'type' => 'text/calendar',
'title' => t('event') . '-' . $event['event_hash'],
'revision' => ''
));
$item_arr['attach'] = $attach;
if(array_key_exists('term', $arr)) if(array_key_exists('term', $arr))
$item_arr['term'] = $arr['term']; $item_arr['term'] = $arr['term'];
@ -907,3 +930,27 @@ function todo_stat() {
'CANCELLED' => t('Cancelled') 'CANCELLED' => t('Cancelled')
); );
} }
function tasks_fetch($arr) {
if(! local_channel())
return;
$ret = array();
$sql_extra = " and event_status != 'COMPLETED' ";
if($arr && $arr['all'] == 1)
$sql_extra = '';
$r = q("select * from event where type = 'task' and uid = %d $sql_extra order by created desc",
intval(local_channel())
);
$ret['success'] = (($r) ? true : false);
if($r) {
$ret['tasks'] = $r;
}
return $ret;
}

View file

@ -229,7 +229,7 @@ function mini_group_select($uid,$group = '') {
logger('mini_group_select: ' . print_r($grps,true), LOGGER_DATA); logger('mini_group_select: ' . print_r($grps,true), LOGGER_DATA);
$o = replace_macros(get_markup_template('group_selection.tpl'), array( $o = replace_macros(get_markup_template('group_selection.tpl'), array(
'$label' => t('Default privacy group for new contacts'), '$label' => t('Add new connections to this collection (privacy group)'),
'$groups' => $grps '$groups' => $grps
)); ));
return $o; return $o;

View file

@ -3492,7 +3492,7 @@ function mail_store($arr) {
$arr['to_xchan'] = ((x($arr,'to_xchan')) ? notags(trim($arr['to_xchan'])) : ''); $arr['to_xchan'] = ((x($arr,'to_xchan')) ? notags(trim($arr['to_xchan'])) : '');
$arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert()); $arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert());
$arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : NULL_DATE); $arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : NULL_DATE);
$arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : ''); $arr['title'] = ((x($arr,'title')) ? trim($arr['title']) : '');
$arr['parent_mid'] = ((x($arr,'parent_mid')) ? notags(trim($arr['parent_mid'])) : ''); $arr['parent_mid'] = ((x($arr,'parent_mid')) ? notags(trim($arr['parent_mid'])) : '');
$arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : ''); $arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');

View file

@ -238,10 +238,12 @@ abstract class photo_driver {
if(! $this->is_valid()) if(! $this->is_valid())
return FALSE; return FALSE;
if((! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg')) if((! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg'))
return; return;
$exif = @exif_read_data($filename,null,true); $exif = @exif_read_data($filename,null,true);
if($exif) { if($exif) {
$ort = $exif['IFD0']['Orientation']; $ort = $exif['IFD0']['Orientation'];
@ -281,7 +283,6 @@ abstract class photo_driver {
break; break;
} }
// logger('exif: ' . print_r($exif,true));
return $exif; return $exif;
} }

View file

@ -166,7 +166,7 @@ function photo_upload($channel, $observer, $args) {
return $ret; return $ret;
} }
$exif = $ph->orient($src); $exif = $ph->orient(($args['os_path']) ? $args['os_path'] : $src);
@unlink($src); @unlink($src);
@ -579,6 +579,16 @@ function getGps($exifCoord, $hemi) {
return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600))); return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600)));
} }
function getGpstimestamp($exifCoord) {
$hours = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
$minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
$seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;
return sprintf('%02d:%02d:%02d',$hours,$minutes,$seconds);
}
function gps2Num($coordPart) { function gps2Num($coordPart) {
$parts = explode('/', $coordPart); $parts = explode('/', $coordPart);

View file

@ -1305,7 +1305,7 @@ function theme_attachments(&$item) {
$title = htmlspecialchars($r['title'], ENT_COMPAT,'UTF-8'); $title = htmlspecialchars($r['title'], ENT_COMPAT,'UTF-8');
if(! $title) if(! $title)
$title = t('unknown.???'); $title = t('unknown.???');
$title .= ' ' . $r['length'] . ' ' . t('bytes'); $title .= ' ' . (($r['length']) ? $r['length'] . ' ' . t('bytes') : '');
require_once('include/identity.php'); require_once('include/identity.php');
if(is_foreigner($item['author_xchan'])) if(is_foreigner($item['author_xchan']))

View file

@ -1042,3 +1042,24 @@ function widget_forums($arr) {
} }
function widget_tasklist($arr) {
require_once('include/event.php');
$o .= '<script>var tasksShowAll = 0; $(document).ready(function() { tasksFetch(); $("#tasklist-new-form").submit(function(event) { event.preventDefault(); $.post( "tasks/new", $("#tasklist-new-form").serialize(), function(data) { tasksFetch(); $("#tasklist-new-summary").val(""); } ); return false; } )});</script>';
$o .= '<script>function taskComplete(id) { $.post("tasks/complete/"+id, function(data) { tasksFetch();}); }
function tasksFetch() {
$.get("tasks/fetch" + ((tasksShowAll) ? "/all" : ""), function(data) {
$(".tasklist-tasks").html(data.html);
});
}
</script>';
$o .= '<div class="widget">' . '<h3>' . t('Tasks') . '</h3><div class="tasklist-tasks">';
$o .= '</div><form id="tasklist-new-form" action="" ><input id="tasklist-new-summary" type="text" name="summary" value="" /></form>';
$o .= '</div>';
return $o;
}

View file

@ -1688,7 +1688,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$result[] = array($d['hash'],'update ignored',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']); $result[] = array($d['hash'],'update ignored',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
} }
else { else {
update_imported_item($sender,$arr,$channel['channel_id']); update_imported_item($sender,$arr,$r[0],$channel['channel_id']);
$result[] = array($d['hash'],'updated',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']); $result[] = array($d['hash'],'updated',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
if(! $relay) if(! $relay)
add_source_route($item_id,$sender['hash']); add_source_route($item_id,$sender['hash']);
@ -1825,9 +1825,20 @@ function remove_community_tag($sender, $arr, $uid) {
* @param array $item * @param array $item
* @param int $uid (unused) * @param int $uid (unused)
*/ */
function update_imported_item($sender, $item, $uid) { function update_imported_item($sender, $item, $orig, $uid) {
$x = item_store_update($item); $x = item_store_update($item);
// If we're updating an event that we've saved locally, we store the item info first
// because event_addtocal will parse the body to get the 'new' event details
if($orig['resource_type'] === 'event') {
$res = event_addtocal($orig['id'],$uid);
if(! $res)
logger('update event: failed');
}
if(! $x['item_id']) if(! $x['item_id'])
logger('update_imported_item: failed: ' . $x['message']); logger('update_imported_item: failed: ' . $x['message']);
else else

View file

@ -372,6 +372,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`event_percent` smallint(6) NOT NULL DEFAULT '0', `event_percent` smallint(6) NOT NULL DEFAULT '0',
`event_repeat` text NOT NULL, `event_repeat` text NOT NULL,
`event_sequence` smallint(6) NOT NULL DEFAULT '0', `event_sequence` smallint(6) NOT NULL DEFAULT '0',
`event_priority` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `uid` (`uid`), KEY `uid` (`uid`),
KEY `type` (`type`), KEY `type` (`type`),
@ -384,7 +385,8 @@ CREATE TABLE IF NOT EXISTS `event` (
KEY `event_hash` (`event_hash`), KEY `event_hash` (`event_hash`),
KEY `event_xchan` (`event_xchan`), KEY `event_xchan` (`event_xchan`),
KEY `event_status` (`event_status`), KEY `event_status` (`event_status`),
KEY `event_sequence` (`event_sequence`) KEY `event_sequence` (`event_sequence`),
KEY `event_priority` (`event_priority`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `fcontact` ( CREATE TABLE IF NOT EXISTS `fcontact` (

View file

@ -363,6 +363,7 @@ CREATE TABLE "event" (
"event_percent" smallint(6) NOT NULL DEFAULT '0', "event_percent" smallint(6) NOT NULL DEFAULT '0',
"event_repeat" text NOT NULL, "event_repeat" text NOT NULL,
"event_sequence" smallint NOT NULL DEFAULT '0', "event_sequence" smallint NOT NULL DEFAULT '0',
"event_priority" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("id") PRIMARY KEY ("id")
); );
create index "event_uid_idx" on event ("uid"); create index "event_uid_idx" on event ("uid");
@ -377,6 +378,7 @@ create index "event_hash_idx" on event ("event_hash");
create index "event_xchan_idx" on event ("event_xchan"); create index "event_xchan_idx" on event ("event_xchan");
create index "event_status_idx" on event ("event_status"); create index "event_status_idx" on event ("event_status");
create index "event_sequence_idx" on event ("event_sequence"); create index "event_sequence_idx" on event ("event_sequence");
create index "event_priority_idx" on event ("event_priority");
CREATE TABLE "fcontact" ( CREATE TABLE "fcontact" (

View file

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1147 ); define( 'UPDATE_VERSION' , 1148 );
/** /**
* *
@ -1720,3 +1720,11 @@ function update_r1146() {
return UPDATE_FAILED; return UPDATE_FAILED;
} }
function update_r1147() {
$r1 = q("alter table event add event_priority smallint not null default '0' ");
$r2 = q("create index event_priority on event ( event_priority ) ");
if($r1 && $r2)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

View file

@ -32,6 +32,12 @@ function editpost_content(&$a) {
return; return;
} }
if($itm[0]['resource_type'] === 'event' && $itm[0]['resource_id']) {
goaway(z_root() . '/events/event/' . $itm[0]['resource_id']);
}
$plaintext = true; $plaintext = true;
// if(feature_enabled(local_channel(),'richtext')) // if(feature_enabled(local_channel(),'richtext'))
// $plaintext = false; // $plaintext = false;

View file

@ -8,7 +8,7 @@ require_once('include/items.php');
function events_post(&$a) { function events_post(&$a) {
logger('post: ' . print_r($_REQUEST,true)); logger('post: ' . print_r($_REQUEST,true), LOGGER_DATA);
if(! local_channel()) if(! local_channel())
return; return;
@ -89,14 +89,14 @@ function events_post(&$a) {
$summary = escape_tags(trim($_POST['summary'])); $summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc'])); $desc = escape_tags(trim($_POST['desc']));
$location = escape_tags(trim($_POST['location'])); $location = escape_tags(trim($_POST['location']));
$type = 'event'; $type = escape_tags(trim($_POST['type']));
require_once('include/text.php'); require_once('include/text.php');
linkify_tags($a, $desc, local_channel()); linkify_tags($a, $desc, local_channel());
linkify_tags($a, $location, local_channel()); linkify_tags($a, $location, local_channel());
$action = ($event_hash == '') ? 'new' : "event/" . $event_hash; $action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
$onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish"; $onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish&type=$type";
if(strcmp($finish,$start) < 0 && !$nofinish) { if(strcmp($finish,$start) < 0 && !$nofinish) {
notice( t('Event can not end before it has started.') . EOL); notice( t('Event can not end before it has started.') . EOL);
if(intval($_REQUEST['preview'])) { if(intval($_REQUEST['preview'])) {
@ -228,6 +228,27 @@ function events_post(&$a) {
function events_content(&$a) { function events_content(&$a) {
if(argc() > 2 && argv(1) == 'ical') {
$event_id = argv(2);
require_once('include/security.php');
$sql_extra = permissions_sql(local_channel());
$r = q("select * from event where event_hash = '%s' $sql_extra limit 1",
dbesc($event_id)
);
if($r) {
header('Content-type: text/calendar');
header('content-disposition: attachment; filename="' . t('event') . '-' . $event_id . '.ics"' );
echo ical_wrapper($r);
killme();
}
else {
notice( t('Event not found.') . EOL );
return;
}
}
if(! local_channel()) { if(! local_channel()) {
notice( t('Permission denied.') . EOL); notice( t('Permission denied.') . EOL);
return; return;
@ -306,6 +327,10 @@ function events_content(&$a) {
killme(); killme();
} }
if($mode == 'view') { if($mode == 'view') {
@ -366,8 +391,18 @@ function events_content(&$a) {
intval(local_channel()), intval(local_channel()),
intval($_GET['id']) intval($_GET['id'])
); );
} else { } elseif($export) {
$r = q("SELECT * from event where uid = %d
AND (( `adjust` = 0 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )
OR ( `adjust` = 1 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )) ",
intval(local_channel()),
dbesc($start),
dbesc($finish),
dbesc($adjust_start),
dbesc($adjust_finish)
);
}
else {
// fixed an issue with "nofinish" events not showing up in the calendar. // fixed an issue with "nofinish" events not showing up in the calendar.
// There's still an issue if the finish date crosses the end of month. // There's still an issue if the finish date crosses the end of month.
// Noting this for now - it will need to be fixed here and in Friendica. // Noting this for now - it will need to be fixed here and in Friendica.
@ -384,17 +419,19 @@ function events_content(&$a) {
dbesc($adjust_start), dbesc($adjust_start),
dbesc($adjust_finish) dbesc($adjust_finish)
); );
} }
$links = array(); $links = array();
if($r) { if($r && ! $export) {
xchan_query($r); xchan_query($r);
$r = fetch_post_tags($r,true); $r = fetch_post_tags($r,true);
$r = sort_by_date($r); $r = sort_by_date($r);
}
if($r) {
foreach($r as $rr) { foreach($r as $rr) {
$j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j')); $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
if(! x($links,$j)) if(! x($links,$j))
@ -402,7 +439,6 @@ function events_content(&$a) {
} }
} }
$events=array(); $events=array();
$last_date = ''; $last_date = '';
@ -547,9 +583,7 @@ function events_content(&$a) {
if(x($_REQUEST,'location')) $orig_event['location'] = $_REQUEST['location']; if(x($_REQUEST,'location')) $orig_event['location'] = $_REQUEST['location'];
if(x($_REQUEST,'start')) $orig_event['start'] = $_REQUEST['start']; if(x($_REQUEST,'start')) $orig_event['start'] = $_REQUEST['start'];
if(x($_REQUEST,'finish')) $orig_event['finish'] = $_REQUEST['finish']; if(x($_REQUEST,'finish')) $orig_event['finish'] = $_REQUEST['finish'];
} if(x($_REQUEST,'type')) $orig_event['type'] = $_REQUEST['type'];
if($mode === 'edit' || $mode === 'new') {
$n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : ''); $n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : '');
$a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' checked="checked" ' : ''); $a_checked = ((x($orig_event) && $orig_event['adjust']) ? ' checked="checked" ' : '');
@ -568,9 +602,6 @@ function events_content(&$a) {
if($orig_event['event_xchan']) if($orig_event['event_xchan'])
$sh_checked .= ' disabled="disabled" '; $sh_checked .= ' disabled="disabled" ';
$sdt = ((x($orig_event)) ? $orig_event['start'] : 'now'); $sdt = ((x($orig_event)) ? $orig_event['start'] : 'now');
$fdt = ((x($orig_event)) ? $orig_event['finish'] : 'now'); $fdt = ((x($orig_event)) ? $orig_event['finish'] : 'now');
@ -596,6 +627,7 @@ function events_content(&$a) {
$fminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'i') : 0); $fminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'i') : 0);
$ftext = datetime_convert('UTC',$tz,$fdt); $ftext = datetime_convert('UTC',$tz,$fdt);
$ftext = substr($ftext,0,14) . "00:00"; $ftext = substr($ftext,0,14) . "00:00";
$type = ((x($orig_event)) ? $orig_event['type'] : 'event');
$f = get_config('system','event_input_format'); $f = get_config('system','event_input_format');
if(! $f) if(! $f)
@ -635,6 +667,7 @@ function events_content(&$a) {
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$post' => $a->get_baseurl() . '/events', '$post' => $a->get_baseurl() . '/events',
'$eid' => $eid, '$eid' => $eid,
'$type' => $type,
'$xchan' => $event_xchan, '$xchan' => $event_xchan,
'$mid' => $mid, '$mid' => $mid,
'$event_hash' => $event_id, '$event_hash' => $event_id,

View file

@ -47,7 +47,7 @@ function oexchange_content(&$a) {
$tags = (((x($_REQUEST,'tags')) && strlen($_REQUEST['tags'])) $tags = (((x($_REQUEST,'tags')) && strlen($_REQUEST['tags']))
? '&tags=' . urlencode(notags(trim($_REQUEST['tags']))) : ''); ? '&tags=' . urlencode(notags(trim($_REQUEST['tags']))) : '');
$ret = z_fetch_url($a->get_baseurl() . '/parse_url?f=&url=' . $url . $title . $description . $tags); $ret = z_fetch_url($a->get_baseurl() . '/urlinfo?f=&url=' . $url . $title . $description . $tags);
if($ret['success']) if($ret['success'])
$s = $ret['body']; $s = $ret['body'];

View file

@ -321,6 +321,7 @@ function ping_init(&$a) {
$r = q("SELECT * FROM event left join xchan on event_xchan = xchan_hash $r = q("SELECT * FROM event left join xchan on event_xchan = xchan_hash
WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0 WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
and type in ( 'event', 'birthday' )
ORDER BY `start` DESC LIMIT 1000", ORDER BY `start` DESC LIMIT 1000",
intval(local_channel()), intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')), dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
@ -439,6 +440,7 @@ function ping_init(&$a) {
if($vnotify & (VNOTIFY_EVENT|VNOTIFY_EVENTTODAY|VNOTIFY_BIRTHDAY)) { if($vnotify & (VNOTIFY_EVENT|VNOTIFY_EVENTTODAY|VNOTIFY_BIRTHDAY)) {
$events = q("SELECT type, start, adjust FROM `event` $events = q("SELECT type, start, adjust FROM `event`
WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0 WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
and type in ( 'event', 'birthday' )
ORDER BY `start` ASC ", ORDER BY `start` ASC ",
intval(local_channel()), intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')), dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),

View file

@ -102,7 +102,7 @@ function rpost_content(&$a) {
); );
if($_REQUEST['url']) { if($_REQUEST['url']) {
$x = z_fetch_url(z_root() . '/parse_url?f=&url=' . urlencode($_REQUEST['url'])); $x = z_fetch_url(z_root() . '/urlinfo?f=&url=' . urlencode($_REQUEST['url']));
if($x['success']) if($x['success'])
$_REQUEST['body'] = $_REQUEST['body'] . $x['body']; $_REQUEST['body'] = $_REQUEST['body'] . $x['body'];
} }

107
mod/tasks.php Normal file
View file

@ -0,0 +1,107 @@
<?php
require_once('include/event.php');
function tasks_init(&$a) {
// logger('request: ' . print_r($_REQUEST,true));
$arr = array();
if(argc() > 1 && argv(1) === 'fetch') {
if(argc() > 2 && argv(2) === 'all')
$arr['all'] = 1;
$x = tasks_fetch($arr);
if($x['tasks']) {
$x['html'] = '';
foreach($x['tasks'] as $y) {
$x['html'] .= '<div class="tasklist-item"><input type="checkbox" onchange="taskComplete(' . $y['id'] . '); return false;" /> ' . $y['summary'] . '</div>';
}
}
json_return_and_die($x);
}
}
function tasks_post(&$a) {
// logger('post: ' . print_r($_POST,true));
if(! local_channel())
return;
$channel = $a->get_channel();
if((argc() > 2) && (argv(1) === 'complete') && intval(argv(2))) {
$ret = array('success' => false);
$r = q("select * from event where `type` = 'task' and uid = %d and id = %d limit 1",
intval(local_channel()),
intval(argv(2))
);
if($r) {
$event = $r[0];
if($event['event_status'] === 'COMPLETED') {
$event['event_status'] = 'IN-PROCESS';
$event['event_status_date'] = NULL_DATE;
$event['event_percent'] = 0;
$event['event_sequence'] = $event['event_sequence'] + 1;
$event['edited'] = datetime_convert();
}
else {
$event['event_status'] = 'COMPLETED';
$event['event_status_date'] = datetime_convert();
$event['event_percent'] = 100;
$event['event_sequence'] = $event['event_sequence'] + 1;
$event['edited'] = datetime_convert();
}
$x = event_store_event($event);
if($x)
$ret['success'] = true;
}
json_return_and_die($ret);
}
if(argc() == 2 && argv(1) === 'new') {
$text = escape_tags(trim($_REQUEST['summary']));
if(! $text)
return array('success' => false);
$event = array();
$event['aid'] = $channel['channel_account_id'];
$event['uid'] = $channel['channel_id'];
$event['event_xchan'] = $channel['channel_hash'];
$event['type'] = 'task';
$event['nofinish'] = true;
$event['created'] = $event['edited'] = $event['start'] = datetime_convert();
$event['adjust'] = 1;
$event['allow_cid'] = '<' . $channel['channel_hash'] . '>';
$event['summary'] = escape_tags($_REQUEST['summary']);
$x = event_store_event($event);
if($x)
$x['success'] = true;
else
$x = array('success' => false);
json_return_and_die($x);
}
}
function tasks_content(&$a) {
if(! local_channel())
return;
return '';
}

View file

@ -220,7 +220,9 @@ function arr_add_hashes(&$item,$k) {
$item = '#' . $item; $item = '#' . $item;
} }
function parse_url_content(&$a) { function urlinfo_content(&$a) {
logger('urlinfo: ' . print_r($_REQUEST,true));
$text = null; $text = null;
$str_tags = ''; $str_tags = '';
@ -251,7 +253,7 @@ function parse_url_content(&$a) {
} }
} }
logger('parse_url: ' . $url); logger('urlinfo: ' . $url);
$result = z_fetch_url($url,false,0,array('novalidate' => true, 'nobody' => true)); $result = z_fetch_url($url,false,0,array('novalidate' => true, 'nobody' => true));
if($result['success']) { if($result['success']) {
@ -315,7 +317,7 @@ function parse_url_content(&$a) {
$result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags; $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
logger('parse_url (unparsed): returns: ' . $result); logger('urlinfo (unparsed): returns: ' . $result);
echo $result; echo $result;
killme(); killme();
@ -374,7 +376,7 @@ function parse_url_content(&$a) {
$result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags; $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
logger('parse_url: returns: ' . $result, LOGGER_DEBUG); logger('urlinfo: returns: ' . $result, LOGGER_DEBUG);
echo trim($result); echo trim($result);
killme(); killme();

View file

@ -52,6 +52,7 @@ function wall_attach_post(&$a) {
echo "\n\n" . $r['body'] . "\n\n"; echo "\n\n" . $r['body'] . "\n\n";
if($using_api) if($using_api)
return; return;
killme();
} }
echo "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; echo "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n";
killme(); killme();

View file

@ -1 +1 @@
2015-08-18.1128 2015-08-20.1130

View file

@ -110,3 +110,15 @@ li:hover .group-edit-icon {
.directory-rating-submit { .directory-rating-submit {
margin-top: 15px; margin-top: 15px;
} }
/* tasklist */
.tasklist-tasks {
max-height: 300px;
overflow-y: auto;
}
#tasklist-new-summary {
width: 250px;
}

View file

@ -14,7 +14,7 @@ msgstr ""
"Project-Id-Version: Redmatrix\n" "Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-14 00:04-0700\n" "POT-Creation-Date: 2015-08-14 00:04-0700\n"
"PO-Revision-Date: 2015-08-17 16:39+0000\n" "PO-Revision-Date: 2015-08-20 11:57+0000\n"
"Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/red-matrix/language/es/)\n" "Language-Team: Spanish (http://www.transifex.com/Friendica/red-matrix/language/es/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -268,7 +268,7 @@ msgstr "nunca"
#: ../../include/datetime.php:268 #: ../../include/datetime.php:268
msgid "less than a second ago" msgid "less than a second ago"
msgstr "hace menos de un segundo" msgstr "hace un instante"
#: ../../include/datetime.php:271 #: ../../include/datetime.php:271
msgid "year" msgid "year"
@ -330,7 +330,7 @@ msgstr "segundos"
#, php-format #, php-format
msgctxt "e.g. 22 hours ago, 1 minute ago" msgctxt "e.g. 22 hours ago, 1 minute ago"
msgid "%1$d %2$s ago" msgid "%1$d %2$s ago"
msgstr "hace %1$d %2$s" msgstr "Hace %1$d y %2$s"
#: ../../include/datetime.php:519 #: ../../include/datetime.php:519
#, php-format #, php-format
@ -543,7 +543,7 @@ msgstr "timeago.prefixFromNow"
#: ../../include/js_strings.php:28 #: ../../include/js_strings.php:28
msgid "ago" msgid "ago"
msgstr "hace" msgstr "de su publicación"
#: ../../include/js_strings.php:29 #: ../../include/js_strings.php:29
msgid "from now" msgid "from now"
@ -555,7 +555,7 @@ msgstr "menos de un minuto"
#: ../../include/js_strings.php:31 #: ../../include/js_strings.php:31
msgid "about a minute" msgid "about a minute"
msgstr "hace como un minuto" msgstr "alrededor de un minuto"
#: ../../include/js_strings.php:32 #: ../../include/js_strings.php:32
#, php-format #, php-format
@ -564,12 +564,12 @@ msgstr "%d minutos"
#: ../../include/js_strings.php:33 #: ../../include/js_strings.php:33
msgid "about an hour" msgid "about an hour"
msgstr "hace como una hora" msgstr "alrededor de una hora"
#: ../../include/js_strings.php:34 #: ../../include/js_strings.php:34
#, php-format #, php-format
msgid "about %d hours" msgid "about %d hours"
msgstr "hace %d minutos" msgstr "alrededor de %d horas"
#: ../../include/js_strings.php:35 #: ../../include/js_strings.php:35
msgid "a day" msgid "a day"
@ -582,7 +582,7 @@ msgstr "%d días"
#: ../../include/js_strings.php:37 #: ../../include/js_strings.php:37
msgid "about a month" msgid "about a month"
msgstr "hace como un mes" msgstr "alrededor de un mes"
#: ../../include/js_strings.php:38 #: ../../include/js_strings.php:38
#, php-format #, php-format
@ -591,7 +591,7 @@ msgstr "%d meses"
#: ../../include/js_strings.php:39 #: ../../include/js_strings.php:39
msgid "about a year" msgid "about a year"
msgstr "hace un año" msgstr "alrededor de un año"
#: ../../include/js_strings.php:40 #: ../../include/js_strings.php:40
#, php-format #, php-format
@ -888,7 +888,7 @@ msgstr "Pulsar para abrir/cerrar"
#: ../../include/text.php:1665 ../../mod/events.php:457 #: ../../include/text.php:1665 ../../mod/events.php:457
msgid "Link to Source" msgid "Link to Source"
msgstr "Enlace a la fuente" msgstr "Ir al mensaje original"
#: ../../include/text.php:1686 ../../include/text.php:1757 #: ../../include/text.php:1686 ../../include/text.php:1757
msgid "default" msgid "default"
@ -1483,7 +1483,7 @@ msgstr "Configuración de visualización"
#: ../../include/widgets.php:517 #: ../../include/widgets.php:517
msgid "Connected apps" msgid "Connected apps"
msgstr "Apps conectadas" msgstr "Aplicaciones conectadas"
#: ../../include/widgets.php:523 #: ../../include/widgets.php:523
msgid "Export channel" msgid "Export channel"
@ -1630,7 +1630,7 @@ msgstr "Para ver o comentar la conversación, visita %s"
#: ../../include/enotify.php:196 #: ../../include/enotify.php:196
#, php-format #, php-format
msgid "[Red:Notify] %s posted to your profile wall" msgid "[Red:Notify] %s posted to your profile wall"
msgstr "[Red:aviso] %s escribió en su muro" msgstr "[Red:Notify] %s escribió en su muro"
#: ../../include/enotify.php:198 #: ../../include/enotify.php:198
#, php-format #, php-format
@ -1765,7 +1765,7 @@ msgstr "No se ha podido verificar las entradas guardadas."
#: ../../mod/like.php:394 #: ../../mod/like.php:394
#, php-format #, php-format
msgid "%1$s likes %2$s's %3$s" msgid "%1$s likes %2$s's %3$s"
msgstr "a %1$s le gusta el/la %3$s de %2$s" msgstr "a %1$s le gusta el %3$s de %2$s"
#: ../../include/diaspora.php:2494 #: ../../include/diaspora.php:2494
msgid "Please choose" msgid "Please choose"
@ -1781,7 +1781,7 @@ msgstr "En desacuerdo"
#: ../../include/diaspora.php:2500 #: ../../include/diaspora.php:2500
msgid "Abstain" msgid "Abstain"
msgstr "Se abstiene" msgstr "Abstención"
#: ../../include/follow.php:28 #: ../../include/follow.php:28
msgid "Channel is blocked on this site." msgid "Channel is blocked on this site."
@ -1833,11 +1833,11 @@ msgstr "Guardar en carpeta"
#: ../../include/ItemObject.php:151 #: ../../include/ItemObject.php:151
msgid "I will attend" msgid "I will attend"
msgstr "Asistiré" msgstr "Participaré"
#: ../../include/ItemObject.php:151 #: ../../include/ItemObject.php:151
msgid "I will not attend" msgid "I will not attend"
msgstr "No asistiré" msgstr "No participaré"
#: ../../include/ItemObject.php:151 #: ../../include/ItemObject.php:151
msgid "I might attend" msgid "I might attend"
@ -1867,7 +1867,7 @@ msgstr "Ver todo"
msgctxt "noun" msgctxt "noun"
msgid "Like" msgid "Like"
msgid_plural "Likes" msgid_plural "Likes"
msgstr[0] "Le gusta" msgstr[0] "Me gusta"
msgstr[1] "Me gusta" msgstr[1] "Me gusta"
#: ../../include/ItemObject.php:184 ../../include/conversation.php:1704 #: ../../include/ItemObject.php:184 ../../include/conversation.php:1704
@ -1875,7 +1875,7 @@ msgstr[1] "Me gusta"
msgctxt "noun" msgctxt "noun"
msgid "Dislike" msgid "Dislike"
msgid_plural "Dislikes" msgid_plural "Dislikes"
msgstr[0] "No le gusta" msgstr[0] "No me gusta"
msgstr[1] "No me gusta" msgstr[1] "No me gusta"
#: ../../include/ItemObject.php:212 #: ../../include/ItemObject.php:212
@ -1888,7 +1888,7 @@ msgstr "Eliminar estrella"
#: ../../include/ItemObject.php:214 #: ../../include/ItemObject.php:214
msgid "Toggle Star Status" msgid "Toggle Star Status"
msgstr "Invertir estado de estrella" msgstr "Activa o desactiva el estado de preferido"
#: ../../include/ItemObject.php:218 #: ../../include/ItemObject.php:218
msgid "starred" msgid "starred"
@ -1908,7 +1908,7 @@ msgstr "Añadir etiqueta"
#: ../../include/ItemObject.php:254 ../../mod/photos.php:959 #: ../../include/ItemObject.php:254 ../../mod/photos.php:959
msgid "I like this (toggle)" msgid "I like this (toggle)"
msgstr "me gusta (conmutar)" msgstr "me gusta (cambiar)"
#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:310 #: ../../include/ItemObject.php:254 ../../include/taxonomy.php:310
msgid "like" msgid "like"
@ -1916,7 +1916,7 @@ msgstr "Me gusta"
#: ../../include/ItemObject.php:255 ../../mod/photos.php:960 #: ../../include/ItemObject.php:255 ../../mod/photos.php:960
msgid "I don't like this (toggle)" msgid "I don't like this (toggle)"
msgstr "No me gusta (conmutar)" msgstr "No me gusta (cambiar)"
#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:311 #: ../../include/ItemObject.php:255 ../../include/taxonomy.php:311
msgid "dislike" msgid "dislike"
@ -1961,7 +1961,7 @@ msgstr "mediante Muro-a-Muro"
#: ../../include/ItemObject.php:312 ../../include/conversation.php:716 #: ../../include/ItemObject.php:312 ../../include/conversation.php:716
#, php-format #, php-format
msgid "from %s" msgid "from %s"
msgstr "de %s" msgstr "desde %s"
#: ../../include/ItemObject.php:315 ../../include/conversation.php:719 #: ../../include/ItemObject.php:315 ../../include/conversation.php:719
#, php-format #, php-format
@ -2176,7 +2176,7 @@ msgstr "%s - pulsar para cerrar sesión"
#: ../../include/nav.php:137 #: ../../include/nav.php:137
msgid "Remote authentication" msgid "Remote authentication"
msgstr "Autenticación remota" msgstr "Acceder desde su servidor"
#: ../../include/nav.php:137 #: ../../include/nav.php:137
msgid "Click to authenticate to your home hub" msgid "Click to authenticate to your home hub"
@ -2543,12 +2543,12 @@ msgstr "canal"
#: ../../include/conversation.php:167 ../../mod/like.php:396 #: ../../include/conversation.php:167 ../../mod/like.php:396
#, php-format #, php-format
msgid "%1$s doesn't like %2$s's %3$s" msgid "%1$s doesn't like %2$s's %3$s"
msgstr "a %1$s no le gusta el/la %3$s de %2$s" msgstr "a %1$s no le gusta el %3$s de %2$s"
#: ../../include/conversation.php:204 #: ../../include/conversation.php:204
#, php-format #, php-format
msgid "%1$s is now connected with %2$s" msgid "%1$s is now connected with %2$s"
msgstr "%1$s ahora es conectada con %2$s" msgstr "%1$s ahora está conectado con %2$s"
#: ../../include/conversation.php:239 #: ../../include/conversation.php:239
#, php-format #, php-format
@ -2589,17 +2589,17 @@ msgstr "Abstenerse"
#: ../../include/conversation.php:574 ../../mod/photos.php:998 #: ../../include/conversation.php:574 ../../mod/photos.php:998
msgctxt "title" msgctxt "title"
msgid "Attending" msgid "Attending"
msgstr "Asistir" msgstr "Participar"
#: ../../include/conversation.php:574 ../../mod/photos.php:998 #: ../../include/conversation.php:574 ../../mod/photos.php:998
msgctxt "title" msgctxt "title"
msgid "Not attending" msgid "Not attending"
msgstr "No asistir" msgstr "No participar"
#: ../../include/conversation.php:574 ../../mod/photos.php:998 #: ../../include/conversation.php:574 ../../mod/photos.php:998
msgctxt "title" msgctxt "title"
msgid "Might attend" msgid "Might attend"
msgstr "Quizá asista" msgstr "Quizá participe"
#: ../../include/conversation.php:692 #: ../../include/conversation.php:692
#, php-format #, php-format
@ -2616,7 +2616,7 @@ msgstr "Archivado bajo:"
#: ../../include/conversation.php:735 #: ../../include/conversation.php:735
msgid "View in context" msgid "View in context"
msgstr "Mostrar en contexto" msgstr "Mostrar en su contexto"
#: ../../include/conversation.php:846 #: ../../include/conversation.php:846
msgid "remove" msgid "remove"
@ -2644,7 +2644,7 @@ msgstr "Ver fotos"
#: ../../include/conversation.php:944 #: ../../include/conversation.php:944
msgid "Matrix Activity" msgid "Matrix Activity"
msgstr "Actvidad de Matrix" msgstr "Actividad en la red"
#: ../../include/conversation.php:946 #: ../../include/conversation.php:946
msgid "Edit Contact" msgid "Edit Contact"
@ -2730,7 +2730,7 @@ msgstr "Guardar en carpeta:"
#: ../../include/conversation.php:1146 #: ../../include/conversation.php:1146
msgid "Where are you right now?" msgid "Where are you right now?"
msgstr "¿Donde estás ahora?" msgstr "¿Donde está ahora?"
#: ../../include/conversation.php:1147 ../../mod/editpost.php:47 #: ../../include/conversation.php:1147 ../../mod/editpost.php:47
#: ../../mod/mail.php:175 ../../mod/mail.php:290 #: ../../mod/mail.php:175 ../../mod/mail.php:290
@ -2965,14 +2965,14 @@ msgctxt "noun"
msgid "Attending" msgid "Attending"
msgid_plural "Attending" msgid_plural "Attending"
msgstr[0] "Asistir" msgstr[0] "Asistir"
msgstr[1] "Asistir" msgstr[1] "Participar"
#: ../../include/conversation.php:1710 #: ../../include/conversation.php:1710
msgctxt "noun" msgctxt "noun"
msgid "Not Attending" msgid "Not Attending"
msgid_plural "Not Attending" msgid_plural "Not Attending"
msgstr[0] "No asistir" msgstr[0] "No asistir"
msgstr[1] "No asistir" msgstr[1] "No participar"
#: ../../include/conversation.php:1713 #: ../../include/conversation.php:1713
msgctxt "noun" msgctxt "noun"
@ -3000,7 +3000,7 @@ msgctxt "noun"
msgid "Abstain" msgid "Abstain"
msgid_plural "Abstains" msgid_plural "Abstains"
msgstr[0] "se abstiene" msgstr[0] "se abstiene"
msgstr[1] "se abstienen" msgstr[1] "Abstenerse"
#: ../../include/items.php:413 ../../mod/like.php:270 #: ../../include/items.php:413 ../../mod/like.php:270
#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/profperm.php:23 #: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/profperm.php:23
@ -3414,7 +3414,7 @@ msgstr "Recordatorios de eventos"
#: ../../include/identity.php:1128 #: ../../include/identity.php:1128
msgid "Events this week:" msgid "Events this week:"
msgstr "Eventos esta semana:" msgstr "Eventos de esta semana:"
#: ../../include/identity.php:1141 ../../include/identity.php:1258 #: ../../include/identity.php:1141 ../../include/identity.php:1258
#: ../../include/apps.php:138 ../../mod/profperm.php:112 #: ../../include/apps.php:138 ../../mod/profperm.php:112
@ -3473,7 +3473,7 @@ msgstr "Religión:"
#: ../../include/identity.php:1216 ../../mod/directory.php:315 #: ../../include/identity.php:1216 ../../mod/directory.php:315
msgid "About:" msgid "About:"
msgstr "Sobre usted:" msgstr "Sobre :"
#: ../../include/identity.php:1218 #: ../../include/identity.php:1218
msgid "Hobbies/Interests:" msgid "Hobbies/Interests:"
@ -3521,7 +3521,7 @@ msgstr "Trabajo/empleo:"
#: ../../include/identity.php:1240 #: ../../include/identity.php:1240
msgid "School/education:" msgid "School/education:"
msgstr "Escuela/educación:" msgstr "Estudios:"
#: ../../include/identity.php:1260 #: ../../include/identity.php:1260
msgid "Like this thing" msgid "Like this thing"
@ -4346,32 +4346,32 @@ msgstr "Acción anterior revocada."
#: ../../mod/like.php:398 #: ../../mod/like.php:398
#, php-format #, php-format
msgid "%1$s agrees with %2$s's %3$s" msgid "%1$s agrees with %2$s's %3$s"
msgstr "%1$s está de acuerdo con %2$s de %3$s" msgstr "%1$s está de acuerdo con %3$s de %2$s"
#: ../../mod/like.php:400 #: ../../mod/like.php:400
#, php-format #, php-format
msgid "%1$s doesn't agree with %2$s's %3$s" msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%1$s no están de acuerdo con %2$s de %3$s" msgstr "%1$s no está de acuerdo con %3$s de %2$s"
#: ../../mod/like.php:402 #: ../../mod/like.php:402
#, php-format #, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s" msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%1$s se abstiene de pronunciarse sobre %2$s de %3$s" msgstr "%1$s se abstiene en %3$s de %2$s"
#: ../../mod/like.php:404 #: ../../mod/like.php:404
#, php-format #, php-format
msgid "%1$s is attending %2$s's %3$s" msgid "%1$s is attending %2$s's %3$s"
msgstr "%1$s asistirá a %2$s de %3$s" msgstr "%1$s participará en el %3$s de %2$s"
#: ../../mod/like.php:406 #: ../../mod/like.php:406
#, php-format #, php-format
msgid "%1$s is not attending %2$s's %3$s" msgid "%1$s is not attending %2$s's %3$s"
msgstr "%1$s no asistirá a %2$s de %3$s" msgstr "%1$s no participará en el %3$s de %2$s"
#: ../../mod/like.php:408 #: ../../mod/like.php:408
#, php-format #, php-format
msgid "%1$s may attend %2$s's %3$s" msgid "%1$s may attend %2$s's %3$s"
msgstr "%1$s podrá asistir a %2$s de %3$s" msgstr "%1$s tal vez participe en el %3$s de %2$s"
#: ../../mod/like.php:492 #: ../../mod/like.php:492
msgid "Action completed." msgid "Action completed."
@ -4626,11 +4626,11 @@ msgstr "Etiqueta:"
#: ../../mod/siteinfo.php:160 #: ../../mod/siteinfo.php:160
msgid "Last background fetch: " msgid "Last background fetch: "
msgstr "Último fondo elegido:" msgstr "Última actualización en segundo plano:"
#: ../../mod/siteinfo.php:163 #: ../../mod/siteinfo.php:163
msgid "Running at web location" msgid "Running at web location"
msgstr "Corriendo en un sitio web" msgstr "Corriendo en el sitio web"
#: ../../mod/siteinfo.php:164 #: ../../mod/siteinfo.php:164
msgid "" msgid ""
@ -4843,7 +4843,7 @@ msgstr "El elemento no es editable"
#: ../../mod/editpost.php:48 #: ../../mod/editpost.php:48
msgid "Delete item?" msgid "Delete item?"
msgstr "¿Borrar este elemento?" msgstr "¿Borrar el elemento?"
#: ../../mod/editpost.php:115 ../../mod/editlayout.php:142 #: ../../mod/editpost.php:115 ../../mod/editlayout.php:142
#: ../../mod/editwebpage.php:187 ../../mod/editblock.php:144 #: ../../mod/editwebpage.php:187 ../../mod/editblock.php:144
@ -6082,7 +6082,7 @@ msgstr "Trabajo"
#: ../../mod/profiles.php:711 #: ../../mod/profiles.php:711
msgid "School/education" msgid "School/education"
msgstr "Educación" msgstr "Estudios"
#: ../../mod/profiles.php:717 #: ../../mod/profiles.php:717
msgid "This is your default profile." msgid "This is your default profile."
@ -6543,7 +6543,7 @@ msgstr "Error del protocolo OpenID. Ningún ID recibido como respuesta."
#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:286 #: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:286
#, php-format #, php-format
msgid "Welcome %s. Remote authentication successful." msgid "Welcome %s. Remote authentication successful."
msgstr "Bienvenido %s. La identificación remota se ha llevado a cabo correctamente." msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."
#: ../../mod/tagger.php:96 #: ../../mod/tagger.php:96
#, php-format #, php-format
@ -7960,7 +7960,7 @@ msgstr "acepte una solicitud de amistad"
#: ../../mod/settings.php:1099 #: ../../mod/settings.php:1099
msgid "joining a forum/community" msgid "joining a forum/community"
msgstr "se una a un foro o comunidad" msgstr "unirse a un foro o comunidad"
#: ../../mod/settings.php:1100 #: ../../mod/settings.php:1100
msgid "making an <em>interesting</em> profile change" msgid "making an <em>interesting</em> profile change"
@ -8467,7 +8467,7 @@ msgstr "Falló la autenticación."
#: ../../mod/rmagic.php:84 #: ../../mod/rmagic.php:84
msgid "Remote Authentication" msgid "Remote Authentication"
msgstr "Autenticación Remota" msgstr "Acceso desde su servidor"
#: ../../mod/rmagic.php:85 #: ../../mod/rmagic.php:85
msgid "Enter your channel address (e.g. channel@example.com)" msgid "Enter your channel address (e.g. channel@example.com)"
@ -8563,7 +8563,7 @@ msgstr "Por favor, inicia sesión."
msgid "" msgid ""
"Remote authentication blocked. You are logged into this site locally. Please" "Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry." " logout and retry."
msgstr "La autenticación remota está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo." msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."
#: ../../mod/new_channel.php:109 #: ../../mod/new_channel.php:109
msgid "Add a Channel" msgid "Add a Channel"
@ -8667,7 +8667,7 @@ msgstr "se añadió su canal"
#: ../../mod/ping.php:355 #: ../../mod/ping.php:355
msgid "posted an event" msgid "posted an event"
msgstr "Se publicó un evento" msgstr "publicó un evento"
#: ../../mod/layouts.php:176 #: ../../mod/layouts.php:176
msgid "Comanche page description language help" msgid "Comanche page description language help"
@ -8908,7 +8908,7 @@ msgstr "Elija un esquema"
#: ../../view/theme/redbasic/php/config.php:104 #: ../../view/theme/redbasic/php/config.php:104
msgid "Narrow navbar" msgid "Narrow navbar"
msgstr "Limita la barra de navegación" msgstr "Estrechar la barra de navegación"
#: ../../view/theme/redbasic/php/config.php:105 #: ../../view/theme/redbasic/php/config.php:105
msgid "Navigation bar background color" msgid "Navigation bar background color"

View file

@ -60,7 +60,7 @@ $a->strings["Miscellaneous"] = "Varios";
$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD"; $a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD";
$a->strings["Required"] = "Obligatorio"; $a->strings["Required"] = "Obligatorio";
$a->strings["never"] = "nunca"; $a->strings["never"] = "nunca";
$a->strings["less than a second ago"] = "hace menos de un segundo"; $a->strings["less than a second ago"] = "hace un instante";
$a->strings["year"] = "año"; $a->strings["year"] = "año";
$a->strings["years"] = "años"; $a->strings["years"] = "años";
$a->strings["month"] = "mes"; $a->strings["month"] = "mes";
@ -75,7 +75,7 @@ $a->strings["minute"] = "minuto";
$a->strings["minutes"] = "minutos"; $a->strings["minutes"] = "minutos";
$a->strings["second"] = "segundo"; $a->strings["second"] = "segundo";
$a->strings["seconds"] = "segundos"; $a->strings["seconds"] = "segundos";
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s"; $a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "Hace %1\$d y %2\$s";
$a->strings["%1\$s's birthday"] = "Cumpleaños de %1\$s"; $a->strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
$a->strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s"; $a->strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
$a->strings["Directory Options"] = "Opciones del directorio"; $a->strings["Directory Options"] = "Opciones del directorio";
@ -116,18 +116,18 @@ $a->strings["Please enter a link URL"] = "Por favor, introduzca una dirección d
$a->strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro que desea abandonar la página?"; $a->strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro que desea abandonar la página?";
$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo"; $a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow"; $a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
$a->strings["ago"] = "hace"; $a->strings["ago"] = "de su publicación";
$a->strings["from now"] = "desde ahora"; $a->strings["from now"] = "desde ahora";
$a->strings["less than a minute"] = "menos de un minuto"; $a->strings["less than a minute"] = "menos de un minuto";
$a->strings["about a minute"] = "hace como un minuto"; $a->strings["about a minute"] = "alrededor de un minuto";
$a->strings["%d minutes"] = "%d minutos"; $a->strings["%d minutes"] = "%d minutos";
$a->strings["about an hour"] = "hace como una hora"; $a->strings["about an hour"] = "alrededor de una hora";
$a->strings["about %d hours"] = "hace %d minutos"; $a->strings["about %d hours"] = "alrededor de %d horas";
$a->strings["a day"] = "un día"; $a->strings["a day"] = "un día";
$a->strings["%d days"] = "%d días"; $a->strings["%d days"] = "%d días";
$a->strings["about a month"] = "hace como un mes"; $a->strings["about a month"] = "alrededor de un mes";
$a->strings["%d months"] = "%d meses"; $a->strings["%d months"] = "%d meses";
$a->strings["about a year"] = "hace un año"; $a->strings["about a year"] = "alrededor de un año";
$a->strings["%d years"] = "%d años"; $a->strings["%d years"] = "%d años";
$a->strings[" "] = " "; $a->strings[" "] = " ";
$a->strings["timeago.numbers"] = "timeago.numbers"; $a->strings["timeago.numbers"] = "timeago.numbers";
@ -202,7 +202,7 @@ $a->strings["bytes"] = "bytes";
$a->strings["remove category"] = "eliminar categoría"; $a->strings["remove category"] = "eliminar categoría";
$a->strings["remove from file"] = "eliminar del archivo"; $a->strings["remove from file"] = "eliminar del archivo";
$a->strings["Click to open/close"] = "Pulsar para abrir/cerrar"; $a->strings["Click to open/close"] = "Pulsar para abrir/cerrar";
$a->strings["Link to Source"] = "Enlace a la fuente"; $a->strings["Link to Source"] = "Ir al mensaje original";
$a->strings["default"] = "por defecto"; $a->strings["default"] = "por defecto";
$a->strings["Page layout"] = "Disposición de página"; $a->strings["Page layout"] = "Disposición de página";
$a->strings["You can create your own with the layouts tool"] = "Puede crear la suya propia con la herramienta de disposiciones"; $a->strings["You can create your own with the layouts tool"] = "Puede crear la suya propia con la herramienta de disposiciones";
@ -338,7 +338,7 @@ $a->strings["Channel settings"] = "Configuración del canal";
$a->strings["Additional features"] = "Características adicionales"; $a->strings["Additional features"] = "Características adicionales";
$a->strings["Feature/Addon settings"] = "Configuración de característica/complemento"; $a->strings["Feature/Addon settings"] = "Configuración de característica/complemento";
$a->strings["Display settings"] = "Configuración de visualización"; $a->strings["Display settings"] = "Configuración de visualización";
$a->strings["Connected apps"] = "Apps conectadas"; $a->strings["Connected apps"] = "Aplicaciones conectadas";
$a->strings["Export channel"] = "Exportar canal"; $a->strings["Export channel"] = "Exportar canal";
$a->strings["Connection Default Permissions"] = "Permisos predeterminados de conexión"; $a->strings["Connection Default Permissions"] = "Permisos predeterminados de conexión";
$a->strings["Premium Channel Settings"] = "Configuración del canal premium"; $a->strings["Premium Channel Settings"] = "Configuración del canal premium";
@ -370,7 +370,7 @@ $a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %
$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red notifica] Comentario en la conversación #%1\$d por %2\$s"; $a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red notifica] Comentario en la conversación #%1\$d por %2\$s";
$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentó sobre un elemento/conversación que ha estado siguiendo."; $a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentó sobre un elemento/conversación que ha estado siguiendo.";
$a->strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visita %s"; $a->strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visita %s";
$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:aviso] %s escribió en su muro"; $a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notify] %s escribió en su muro";
$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s publicó en su muro de perfil en %3\$s"; $a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s publicó en su muro de perfil en %3\$s";
$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s publicó en [zrl=%3\$s]su muro[/zrl]"; $a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s publicó en [zrl=%3\$s]su muro[/zrl]";
$a->strings["[Red:Notify] %s tagged you"] = "[Red notifica] %s le etiquetó"; $a->strings["[Red:Notify] %s tagged you"] = "[Red notifica] %s le etiquetó";
@ -398,11 +398,11 @@ $a->strings["No recipient provided."] = "No se ha especificado ningún destinata
$a->strings["[no subject]"] = "[sin asunto]"; $a->strings["[no subject]"] = "[sin asunto]";
$a->strings["Unable to determine sender."] = "No ha sido posible de determinar el remitente. "; $a->strings["Unable to determine sender."] = "No ha sido posible de determinar el remitente. ";
$a->strings["Stored post could not be verified."] = "No se ha podido verificar las entradas guardadas."; $a->strings["Stored post could not be verified."] = "No se ha podido verificar las entradas guardadas.";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s le gusta el/la %3\$s de %2\$s"; $a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s le gusta el %3\$s de %2\$s";
$a->strings["Please choose"] = "Por favor selecciona"; $a->strings["Please choose"] = "Por favor selecciona";
$a->strings["Agree"] = "De acuerdo"; $a->strings["Agree"] = "De acuerdo";
$a->strings["Disagree"] = "En desacuerdo"; $a->strings["Disagree"] = "En desacuerdo";
$a->strings["Abstain"] = "Se abstiene"; $a->strings["Abstain"] = "Abstención";
$a->strings["Channel is blocked on this site."] = "El canal está bloqueado en éste sitio."; $a->strings["Channel is blocked on this site."] = "El canal está bloqueado en éste sitio.";
$a->strings["Channel location missing."] = "Falta la dirección del canal "; $a->strings["Channel location missing."] = "Falta la dirección del canal ";
$a->strings["Response from remote channel was incomplete."] = "Respuesta del canal remoto incompleta."; $a->strings["Response from remote channel was incomplete."] = "Respuesta del canal remoto incompleta.";
@ -415,31 +415,31 @@ $a->strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.
$a->strings["Private Message"] = "Mensaje Privado"; $a->strings["Private Message"] = "Mensaje Privado";
$a->strings["Select"] = "Seleccionar"; $a->strings["Select"] = "Seleccionar";
$a->strings["Save to Folder"] = "Guardar en carpeta"; $a->strings["Save to Folder"] = "Guardar en carpeta";
$a->strings["I will attend"] = "Asisti"; $a->strings["I will attend"] = "Participa";
$a->strings["I will not attend"] = "No asisti"; $a->strings["I will not attend"] = "No participa";
$a->strings["I might attend"] = "Quizá asista"; $a->strings["I might attend"] = "Quizá asista";
$a->strings["I agree"] = "Estoy de acuerdo"; $a->strings["I agree"] = "Estoy de acuerdo";
$a->strings["I disagree"] = "No estoy de acuerdo"; $a->strings["I disagree"] = "No estoy de acuerdo";
$a->strings["I abstain"] = "Me abstengo"; $a->strings["I abstain"] = "Me abstengo";
$a->strings["View all"] = "Ver todo"; $a->strings["View all"] = "Ver todo";
$a->strings["__ctx:noun__ Like"] = array( $a->strings["__ctx:noun__ Like"] = array(
0 => "Le gusta", 0 => "Me gusta",
1 => "Me gusta", 1 => "Me gusta",
); );
$a->strings["__ctx:noun__ Dislike"] = array( $a->strings["__ctx:noun__ Dislike"] = array(
0 => "No le gusta", 0 => "No me gusta",
1 => "No me gusta", 1 => "No me gusta",
); );
$a->strings["Add Star"] = "Añadir estrella"; $a->strings["Add Star"] = "Añadir estrella";
$a->strings["Remove Star"] = "Eliminar estrella"; $a->strings["Remove Star"] = "Eliminar estrella";
$a->strings["Toggle Star Status"] = "Invertir estado de estrella"; $a->strings["Toggle Star Status"] = "Activa o desactiva el estado de preferido";
$a->strings["starred"] = "preferidos"; $a->strings["starred"] = "preferidos";
$a->strings["Message signature validated"] = "Firma de mensaje validada"; $a->strings["Message signature validated"] = "Firma de mensaje validada";
$a->strings["Message signature incorrect"] = "Firma de mensaje incorrecta"; $a->strings["Message signature incorrect"] = "Firma de mensaje incorrecta";
$a->strings["Add Tag"] = "Añadir etiqueta"; $a->strings["Add Tag"] = "Añadir etiqueta";
$a->strings["I like this (toggle)"] = "me gusta (conmutar)"; $a->strings["I like this (toggle)"] = "me gusta (cambiar)";
$a->strings["like"] = "Me gusta"; $a->strings["like"] = "Me gusta";
$a->strings["I don't like this (toggle)"] = "No me gusta (conmutar)"; $a->strings["I don't like this (toggle)"] = "No me gusta (cambiar)";
$a->strings["dislike"] = "No me gusta"; $a->strings["dislike"] = "No me gusta";
$a->strings["Share This"] = "Compartir esto"; $a->strings["Share This"] = "Compartir esto";
$a->strings["share"] = "Compartir"; $a->strings["share"] = "Compartir";
@ -452,7 +452,7 @@ $a->strings["to"] = "a";
$a->strings["via"] = "mediante"; $a->strings["via"] = "mediante";
$a->strings["Wall-to-Wall"] = "Muro-a-Muro"; $a->strings["Wall-to-Wall"] = "Muro-a-Muro";
$a->strings["via Wall-To-Wall:"] = "mediante Muro-a-Muro"; $a->strings["via Wall-To-Wall:"] = "mediante Muro-a-Muro";
$a->strings["from %s"] = "de %s"; $a->strings["from %s"] = "desde %s";
$a->strings["last edited: %s"] = "último cambio: %s"; $a->strings["last edited: %s"] = "último cambio: %s";
$a->strings["Expires: %s"] = "Caduca: %s"; $a->strings["Expires: %s"] = "Caduca: %s";
$a->strings["Save Bookmarks"] = "Guardar marcadores"; $a->strings["Save Bookmarks"] = "Guardar marcadores";
@ -499,7 +499,7 @@ $a->strings["Your webpages"] = "Sus páginas web";
$a->strings["Login"] = "Iniciar sesión"; $a->strings["Login"] = "Iniciar sesión";
$a->strings["Sign in"] = "Acceder"; $a->strings["Sign in"] = "Acceder";
$a->strings["%s - click to logout"] = "%s - pulsar para cerrar sesión"; $a->strings["%s - click to logout"] = "%s - pulsar para cerrar sesión";
$a->strings["Remote authentication"] = "Autenticación remota"; $a->strings["Remote authentication"] = "Acceder desde su servidor";
$a->strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor"; $a->strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor";
$a->strings["Home Page"] = "Página de inicio"; $a->strings["Home Page"] = "Página de inicio";
$a->strings["Register"] = "Registrarse"; $a->strings["Register"] = "Registrarse";
@ -587,8 +587,8 @@ $a->strings["Group Repository"] = "Repositorio de grupo";
$a->strings["Other"] = "Otro"; $a->strings["Other"] = "Otro";
$a->strings["Custom/Expert Mode"] = "Modo personalizado/experto"; $a->strings["Custom/Expert Mode"] = "Modo personalizado/experto";
$a->strings["channel"] = "canal"; $a->strings["channel"] = "canal";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "a %1\$s no le gusta el/la %3\$s de %2\$s"; $a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "a %1\$s no le gusta el %3\$s de %2\$s";
$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora es conectada con %2\$s"; $a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado con %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s dio un toque a %2\$s"; $a->strings["%1\$s poked %2\$s"] = "%1\$s dio un toque a %2\$s";
$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; $a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s";
$a->strings["__ctx:title__ Likes"] = "Me gusta"; $a->strings["__ctx:title__ Likes"] = "Me gusta";
@ -596,20 +596,20 @@ $a->strings["__ctx:title__ Dislikes"] = "No me gusta";
$a->strings["__ctx:title__ Agree"] = "De acuerdo"; $a->strings["__ctx:title__ Agree"] = "De acuerdo";
$a->strings["__ctx:title__ Disagree"] = "En desacuerdo"; $a->strings["__ctx:title__ Disagree"] = "En desacuerdo";
$a->strings["__ctx:title__ Abstain"] = "Abstenerse"; $a->strings["__ctx:title__ Abstain"] = "Abstenerse";
$a->strings["__ctx:title__ Attending"] = "Asistir"; $a->strings["__ctx:title__ Attending"] = "Participar";
$a->strings["__ctx:title__ Not attending"] = "No asistir"; $a->strings["__ctx:title__ Not attending"] = "No participar";
$a->strings["__ctx:title__ Might attend"] = "Quizá asista"; $a->strings["__ctx:title__ Might attend"] = "Quizá participe";
$a->strings["View %s's profile @ %s"] = "Ver perfil @ %s de %s"; $a->strings["View %s's profile @ %s"] = "Ver perfil @ %s de %s";
$a->strings["Categories:"] = "Categorías:"; $a->strings["Categories:"] = "Categorías:";
$a->strings["Filed under:"] = "Archivado bajo:"; $a->strings["Filed under:"] = "Archivado bajo:";
$a->strings["View in context"] = "Mostrar en contexto"; $a->strings["View in context"] = "Mostrar en su contexto";
$a->strings["remove"] = "eliminar"; $a->strings["remove"] = "eliminar";
$a->strings["Delete Selected Items"] = "Eliminar elementos seleccionados"; $a->strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
$a->strings["View Source"] = "Ver fuente"; $a->strings["View Source"] = "Ver fuente";
$a->strings["Follow Thread"] = "Seguir el hilo"; $a->strings["Follow Thread"] = "Seguir el hilo";
$a->strings["View Status"] = "Ver estado"; $a->strings["View Status"] = "Ver estado";
$a->strings["View Photos"] = "Ver fotos"; $a->strings["View Photos"] = "Ver fotos";
$a->strings["Matrix Activity"] = "Actvidad de Matrix"; $a->strings["Matrix Activity"] = "Actividad en la red";
$a->strings["Edit Contact"] = "Editar contacto"; $a->strings["Edit Contact"] = "Editar contacto";
$a->strings["Send PM"] = "Enviar Mensaje Privado"; $a->strings["Send PM"] = "Enviar Mensaje Privado";
$a->strings["Poke"] = "Dar un toque"; $a->strings["Poke"] = "Dar un toque";
@ -636,7 +636,7 @@ $a->strings["Please enter a video link/URL:"] = "Por favor, introduzca un enlace
$a->strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace/URL de audio:"; $a->strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace/URL de audio:";
$a->strings["Tag term:"] = "Término de etiqueta:"; $a->strings["Tag term:"] = "Término de etiqueta:";
$a->strings["Save to Folder:"] = "Guardar en carpeta:"; $a->strings["Save to Folder:"] = "Guardar en carpeta:";
$a->strings["Where are you right now?"] = "¿Donde estás ahora?"; $a->strings["Where are you right now?"] = "¿Donde está ahora?";
$a->strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; $a->strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM";
$a->strings["Share"] = "Compartir"; $a->strings["Share"] = "Compartir";
$a->strings["Page link name"] = "Nombre de enlace de página"; $a->strings["Page link name"] = "Nombre de enlace de página";
@ -689,11 +689,11 @@ $a->strings["Saved Bookmarks"] = "Marcadores guardados";
$a->strings["Manage Webpages"] = "Administrar páginas web"; $a->strings["Manage Webpages"] = "Administrar páginas web";
$a->strings["__ctx:noun__ Attending"] = array( $a->strings["__ctx:noun__ Attending"] = array(
0 => "Asistir", 0 => "Asistir",
1 => "Asistir", 1 => "Participar",
); );
$a->strings["__ctx:noun__ Not Attending"] = array( $a->strings["__ctx:noun__ Not Attending"] = array(
0 => "No asistir", 0 => "No asistir",
1 => "No asistir", 1 => "No participar",
); );
$a->strings["__ctx:noun__ Undecided"] = array( $a->strings["__ctx:noun__ Undecided"] = array(
0 => "Indeciso/a", 0 => "Indeciso/a",
@ -709,7 +709,7 @@ $a->strings["__ctx:noun__ Disagree"] = array(
); );
$a->strings["__ctx:noun__ Abstain"] = array( $a->strings["__ctx:noun__ Abstain"] = array(
0 => "se abstiene", 0 => "se abstiene",
1 => "se abstienen", 1 => "Abstenerse",
); );
$a->strings["Permission denied"] = "Permiso denegado"; $a->strings["Permission denied"] = "Permiso denegado";
$a->strings["(Unknown)"] = "(Desconocido)"; $a->strings["(Unknown)"] = "(Desconocido)";
@ -802,7 +802,7 @@ $a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
$a->strings["Birthdays this week:"] = "Cumpleaños esta semana:"; $a->strings["Birthdays this week:"] = "Cumpleaños esta semana:";
$a->strings["[No description]"] = "[Sin descripción]"; $a->strings["[No description]"] = "[Sin descripción]";
$a->strings["Event Reminders"] = "Recordatorios de eventos"; $a->strings["Event Reminders"] = "Recordatorios de eventos";
$a->strings["Events this week:"] = "Eventos esta semana:"; $a->strings["Events this week:"] = "Eventos de esta semana:";
$a->strings["Profile"] = "Perfil"; $a->strings["Profile"] = "Perfil";
$a->strings["Full Name:"] = "Nombre completo:"; $a->strings["Full Name:"] = "Nombre completo:";
$a->strings["Like this channel"] = "Me gusta este canal"; $a->strings["Like this channel"] = "Me gusta este canal";
@ -816,7 +816,7 @@ $a->strings["Hometown:"] = "Ciudad de origen:";
$a->strings["Tags:"] = "Etiquetas:"; $a->strings["Tags:"] = "Etiquetas:";
$a->strings["Political Views:"] = "Posición política:"; $a->strings["Political Views:"] = "Posición política:";
$a->strings["Religion:"] = "Religión:"; $a->strings["Religion:"] = "Religión:";
$a->strings["About:"] = "Sobre usted:"; $a->strings["About:"] = "Sobre :";
$a->strings["Hobbies/Interests:"] = "Aficciones/Intereses:"; $a->strings["Hobbies/Interests:"] = "Aficciones/Intereses:";
$a->strings["Likes:"] = "Me gusta:"; $a->strings["Likes:"] = "Me gusta:";
$a->strings["Dislikes:"] = "No me gusta:"; $a->strings["Dislikes:"] = "No me gusta:";
@ -828,7 +828,7 @@ $a->strings["Television:"] = "Televisión:";
$a->strings["Film/dance/culture/entertainment:"] = "Cine/baile/cultura/entretenimiento:"; $a->strings["Film/dance/culture/entertainment:"] = "Cine/baile/cultura/entretenimiento:";
$a->strings["Love/Romance:"] = "Amor/romance:"; $a->strings["Love/Romance:"] = "Amor/romance:";
$a->strings["Work/employment:"] = "Trabajo/empleo:"; $a->strings["Work/employment:"] = "Trabajo/empleo:";
$a->strings["School/education:"] = "Escuela/educación:"; $a->strings["School/education:"] = "Estudios:";
$a->strings["Like this thing"] = "Me gusta esto"; $a->strings["Like this thing"] = "Me gusta esto";
$a->strings["Male"] = "Hombre"; $a->strings["Male"] = "Hombre";
$a->strings["Female"] = "Mujer"; $a->strings["Female"] = "Mujer";
@ -1024,12 +1024,12 @@ $a->strings["Invalid request."] = "Solicitud incorrecta.";
$a->strings["thing"] = "elemento"; $a->strings["thing"] = "elemento";
$a->strings["Channel unavailable."] = "Canal no disponible."; $a->strings["Channel unavailable."] = "Canal no disponible.";
$a->strings["Previous action reversed."] = "Acción anterior revocada."; $a->strings["Previous action reversed."] = "Acción anterior revocada.";
$a->strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s está de acuerdo con %2\$s de %3\$s"; $a->strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s está de acuerdo con %3\$s de %2\$s";
$a->strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no están de acuerdo con %2\$s de %3\$s"; $a->strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no está de acuerdo con %3\$s de %2\$s";
$a->strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s se abstiene de pronunciarse sobre %2\$s de %3\$s"; $a->strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s se abstiene en %3\$s de %2\$s";
$a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s asistirá a %2\$s de %3\$s"; $a->strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s participará en el %3\$s de %2\$s";
$a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no asistirá a %2\$s de %3\$s"; $a->strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no participará en el %3\$s de %2\$s";
$a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s podrá asistir a %2\$s de %3\$s"; $a->strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s tal vez participe en el %3\$s de %2\$s";
$a->strings["Action completed."] = "Acción completada."; $a->strings["Action completed."] = "Acción completada.";
$a->strings["Thank you."] = "Gracias."; $a->strings["Thank you."] = "Gracias.";
$a->strings["Calendar entries imported."] = "Entradas de calendario importadas."; $a->strings["Calendar entries imported."] = "Entradas de calendario importadas.";
@ -1090,8 +1090,8 @@ $a->strings["No installed plugins/addons/apps"] = "Extensiones/Aplicaciones no i
$a->strings["\$Projectname"] = "\$Projectname"; $a->strings["\$Projectname"] = "\$Projectname";
$a->strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Este es un sitio integrado en \$Projectname - una red cooperativa mundial de sitios web descentralizados de privacidad mejorada."; $a->strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Este es un sitio integrado en \$Projectname - una red cooperativa mundial de sitios web descentralizados de privacidad mejorada.";
$a->strings["Tag: "] = "Etiqueta:"; $a->strings["Tag: "] = "Etiqueta:";
$a->strings["Last background fetch: "] = "Último fondo elegido:"; $a->strings["Last background fetch: "] = "Última actualización en segundo plano:";
$a->strings["Running at web location"] = "Corriendo en un sitio web"; $a->strings["Running at web location"] = "Corriendo en el sitio web";
$a->strings["Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more about \$Projectname."] = "Por favor, visite <a href=\"https://redmatrix.me\">redmatrix.me </a> para aprender más sobre \$Projectname."; $a->strings["Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more about \$Projectname."] = "Por favor, visite <a href=\"https://redmatrix.me\">redmatrix.me </a> para aprender más sobre \$Projectname.";
$a->strings["Bug reports and issues: please visit"] = "Informes de errores e incidencias: por, favor visite"; $a->strings["Bug reports and issues: please visit"] = "Informes de errores e incidencias: por, favor visite";
$a->strings["\$projectname issues"] = "Problemas en \$projectname"; $a->strings["\$projectname issues"] = "Problemas en \$projectname";
@ -1142,7 +1142,7 @@ $a->strings["Block Name"] = "Nombre del bloque";
$a->strings["Block Title"] = "Título del bloque"; $a->strings["Block Title"] = "Título del bloque";
$a->strings["Item not found"] = "Elemento no encontrado"; $a->strings["Item not found"] = "Elemento no encontrado";
$a->strings["Item is not editable"] = "El elemento no es editable"; $a->strings["Item is not editable"] = "El elemento no es editable";
$a->strings["Delete item?"] = "¿Borrar este elemento?"; $a->strings["Delete item?"] = "¿Borrar el elemento?";
$a->strings["Insert YouTube video"] = "Insertar vídeo de YouTube"; $a->strings["Insert YouTube video"] = "Insertar vídeo de YouTube";
$a->strings["Insert Vorbis [.ogg] video"] = "Insertar vídeo Vorbis [.ogg]"; $a->strings["Insert Vorbis [.ogg] video"] = "Insertar vídeo Vorbis [.ogg]";
$a->strings["Insert Vorbis [.ogg] audio"] = "Insertar audio Vorbis [.ogg]"; $a->strings["Insert Vorbis [.ogg] audio"] = "Insertar audio Vorbis [.ogg]";
@ -1443,7 +1443,7 @@ $a->strings["Television"] = "Televisión";
$a->strings["Film/dance/culture/entertainment"] = "Cine/danza/cultura/entretenimiento"; $a->strings["Film/dance/culture/entertainment"] = "Cine/danza/cultura/entretenimiento";
$a->strings["Love/romance"] = "Vida sentimental/amorosa"; $a->strings["Love/romance"] = "Vida sentimental/amorosa";
$a->strings["Work/employment"] = "Trabajo"; $a->strings["Work/employment"] = "Trabajo";
$a->strings["School/education"] = "Educación"; $a->strings["School/education"] = "Estudios";
$a->strings["This is your default profile."] = "Este es su perfil principal."; $a->strings["This is your default profile."] = "Este es su perfil principal.";
$a->strings["Age: "] = "Edad:"; $a->strings["Age: "] = "Edad:";
$a->strings["Edit/Manage Profiles"] = "Modificar/gestionar perfiles"; $a->strings["Edit/Manage Profiles"] = "Modificar/gestionar perfiles";
@ -1540,7 +1540,7 @@ $a->strings["Errors encountered creating database tables."] = "Se han encontrado
$a->strings["<h1>What next</h1>"] = "<h1>Siguiente paso</h1>"; $a->strings["<h1>What next</h1>"] = "<h1>Siguiente paso</h1>";
$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para las actualizaciones."; $a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para las actualizaciones.";
$a->strings["OpenID protocol error. No ID returned."] = "Error del protocolo OpenID. Ningún ID recibido como respuesta."; $a->strings["OpenID protocol error. No ID returned."] = "Error del protocolo OpenID. Ningún ID recibido como respuesta.";
$a->strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación remota se ha llevado a cabo correctamente."; $a->strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente.";
$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado el %3\$s de %2\$s con %4\$s"; $a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado el %3\$s de %2\$s con %4\$s";
$a->strings["Export Channel"] = "Exportar el canal"; $a->strings["Export Channel"] = "Exportar el canal";
$a->strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exportar la base de datos de su canal a un pequeño fichero. Este podrá servir como una copia de seguridad de sus conexiones, permisos, perfil y datos básicos, que podrá importar a un nuevo canal, pero sin sus contenidos."; $a->strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exportar la base de datos de su canal a un pequeño fichero. Este podrá servir como una copia de seguridad de sus conexiones, permisos, perfil y datos básicos, que podrá importar a un nuevo canal, pero sin sus contenidos.";
@ -1881,7 +1881,7 @@ $a->strings["Useful to reduce spamming"] = "Útil para reducir el envío de corr
$a->strings["Notification Settings"] = "Configuración de notificaciones"; $a->strings["Notification Settings"] = "Configuración de notificaciones";
$a->strings["By default post a status message when:"] = "Por defecto, enviar un mensaje de estado cuando:"; $a->strings["By default post a status message when:"] = "Por defecto, enviar un mensaje de estado cuando:";
$a->strings["accepting a friend request"] = "acepte una solicitud de amistad"; $a->strings["accepting a friend request"] = "acepte una solicitud de amistad";
$a->strings["joining a forum/community"] = "se una a un foro o comunidad"; $a->strings["joining a forum/community"] = "unirse a un foro o comunidad";
$a->strings["making an <em>interesting</em> profile change"] = "realice un cambio <em>interesante</em> en su perfil"; $a->strings["making an <em>interesting</em> profile change"] = "realice un cambio <em>interesante</em> en su perfil";
$a->strings["Send a notification email when:"] = "Enviar una notificación por correo electrónico cuando:"; $a->strings["Send a notification email when:"] = "Enviar una notificación por correo electrónico cuando:";
$a->strings["You receive a connection request"] = "Reciba una solicitud de conexión"; $a->strings["You receive a connection request"] = "Reciba una solicitud de conexión";
@ -2000,7 +2000,7 @@ $a->strings["Last update:"] = "Última actualización:";
$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema durante el inicio de sesión con la OpenID que proporcionaste. por favor, comprueba la escritura correcta de la ID."; $a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema durante el inicio de sesión con la OpenID que proporcionaste. por favor, comprueba la escritura correcta de la ID.";
$a->strings["The error message was:"] = "El mensaje de error fue:"; $a->strings["The error message was:"] = "El mensaje de error fue:";
$a->strings["Authentication failed."] = "Falló la autenticación."; $a->strings["Authentication failed."] = "Falló la autenticación.";
$a->strings["Remote Authentication"] = "Autenticación Remota"; $a->strings["Remote Authentication"] = "Acceso desde su servidor";
$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.e. channel@example.com)"; $a->strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.e. channel@example.com)";
$a->strings["Authenticate"] = "Identifíquese"; $a->strings["Authenticate"] = "Identifíquese";
$a->strings["Unable to lookup recipient."] = "No ha sido posible de "; $a->strings["Unable to lookup recipient."] = "No ha sido posible de ";
@ -2023,7 +2023,7 @@ $a->strings["Send Reply"] = "Envía Respuesta";
$a->strings["Invalid request identifier."] = "Petición inválida del identificador."; $a->strings["Invalid request identifier."] = "Petición inválida del identificador.";
$a->strings["Discard"] = "Descarta"; $a->strings["Discard"] = "Descarta";
$a->strings["Please login."] = "Por favor, inicia sesión."; $a->strings["Please login."] = "Por favor, inicia sesión.";
$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación remota está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."; $a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo.";
$a->strings["Add a Channel"] = "Añade un Canal"; $a->strings["Add a Channel"] = "Añade un Canal";
$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal es su propia colección de páginas web relacionadas. Un canal se puede utilizar para almacenar los perfiles sociales de la red, blogs, grupos de conversación y foros, páginas de famosos y mucho más. Puede crear tantos canales como su proveedor de servicio permita."; $a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal es su propia colección de páginas web relacionadas. Un canal se puede utilizar para almacenar los perfiles sociales de la red, blogs, grupos de conversación y foros, páginas de famosos y mucho más. Puede crear tantos canales como su proveedor de servicio permita.";
$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Ejemplos: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "; $a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Ejemplos: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" ";
@ -2047,7 +2047,7 @@ $a->strings["Price of app"] = "Precio de la aplicación";
$a->strings["Location (URL) to purchase app"] = "Ubicación (URL) para conseguir la aplicación"; $a->strings["Location (URL) to purchase app"] = "Ubicación (URL) para conseguir la aplicación";
$a->strings["sent you a private message"] = "envia un mensaje privado"; $a->strings["sent you a private message"] = "envia un mensaje privado";
$a->strings["added your channel"] = "se añadió su canal"; $a->strings["added your channel"] = "se añadió su canal";
$a->strings["posted an event"] = "Se publicó un evento"; $a->strings["posted an event"] = "publicó un evento";
$a->strings["Comanche page description language help"] = "Página de ayuda de la descripción del lenguaje Comanche"; $a->strings["Comanche page description language help"] = "Página de ayuda de la descripción del lenguaje Comanche";
$a->strings["Layout Description"] = "Descripción del Formato Gráfico"; $a->strings["Layout Description"] = "Descripción del Formato Gráfico";
$a->strings["Download PDL file"] = "Descarga el fichero PDL"; $a->strings["Download PDL file"] = "Descarga el fichero PDL";
@ -2105,7 +2105,7 @@ $a->strings["Left offset of the aside"] = "Desplazamiento izquierdo del lateral"
$a->strings["Right offset of the aside element"] = "Desplazamiento derecho del elemento lateral"; $a->strings["Right offset of the aside element"] = "Desplazamiento derecho del elemento lateral";
$a->strings["Light (Red Matrix default)"] = "Ligero (Red Matrix predeterminado)"; $a->strings["Light (Red Matrix default)"] = "Ligero (Red Matrix predeterminado)";
$a->strings["Select scheme"] = "Elija un esquema"; $a->strings["Select scheme"] = "Elija un esquema";
$a->strings["Narrow navbar"] = "Limita la barra de navegación"; $a->strings["Narrow navbar"] = "Estrechar la barra de navegación";
$a->strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; $a->strings["Navigation bar background color"] = "Color de fondo de la barra de navegación";
$a->strings["Navigation bar gradient top color"] = "Color superior del gradiente de la barra de navegación"; $a->strings["Navigation bar gradient top color"] = "Color superior del gradiente de la barra de navegación";
$a->strings["Navigation bar gradient bottom color"] = "Color inferior del gradiente de la barra de navegación"; $a->strings["Navigation bar gradient bottom color"] = "Color inferior del gradiente de la barra de navegación";

View file

@ -135,7 +135,7 @@ function insertCommentURL(comment, id) {
if(reply && reply.length) { if(reply && reply.length) {
reply = bin2hex(reply); reply = bin2hex(reply);
$('body').css('cursor', 'wait'); $('body').css('cursor', 'wait');
$.get('parse_url?binurl=' + reply, function(data) { $.get('urlinfo?f=&binurl=' + reply, function(data) {
var tmpStr = $("#comment-edit-text-" + id).val(); var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) { if(tmpStr == comment) {
tmpStr = ""; tmpStr = "";

3
view/pdl/mod_events.pdl Normal file
View file

@ -0,0 +1,3 @@
[region=aside]
[widget=tasklist][/widget]
[/region]

View file

@ -12,6 +12,7 @@
<input type="hidden" name="event_hash" value="{{$event_hash}}" /> <input type="hidden" name="event_hash" value="{{$event_hash}}" />
<input type="hidden" name="xchan" value="{{$xchan}}" /> <input type="hidden" name="xchan" value="{{$xchan}}" />
<input type="hidden" name="mid" value="{{$mid}}" /> <input type="hidden" name="mid" value="{{$mid}}" />
<input type="hidden" name="type" value="{{$type}}" />
<input type="hidden" name="preview" id="event-edit-preview" value="0" /> <input type="hidden" name="preview" id="event-edit-preview" value="0" />
<div id="event-summary-text">{{$t_text}}</div> <div id="event-summary-text">{{$t_text}}</div>
@ -92,14 +93,6 @@
</div> </div>
</div> </div>
<!-- <div class="btn-group pull-right" id="comment-edit-submit-wrapper-desc">
{{if $preview}}
<button id="comment-edit-submit-desc" class="btn btn-default btn-xs" onclick="preview_comment(desc); return false;" title="{{$preview}}">
<i class="icon-eye-open comment-icon" ></i>
</button>
{{/if}}
-->
</div> </div>
<div class="clear"></div> <div class="clear"></div>

View file

@ -191,7 +191,7 @@ function enableOnUser(){
if(reply && reply.length) { if(reply && reply.length) {
reply = bin2hex(reply); reply = bin2hex(reply);
$('#profile-rotator').spin('tiny'); $('#profile-rotator').spin('tiny');
$.get('{{$baseurl}}/parse_url?binurl=' + reply, function(data) { $.get('{{$baseurl}}/urlinfo?f=&binurl=' + reply, function(data) {
addeditortext(data); addeditortext(data);
$('#profile-rotator').spin(false); $('#profile-rotator').spin(false);
}); });
@ -258,7 +258,7 @@ function enableOnUser(){
if(reply && reply.length) { if(reply && reply.length) {
reply = bin2hex(reply); reply = bin2hex(reply);
$('#profile-rotator').spin('tiny'); $('#profile-rotator').spin('tiny');
$.get('{{$baseurl}}/parse_url?binurl=' + reply, function(data) { $.get('{{$baseurl}}/urlinfo?f=&binurl=' + reply, function(data) {
if (!editor) $("#profile-jot-text").val(""); if (!editor) $("#profile-jot-text").val("");
initEditor(function(){ initEditor(function(){
addeditortext(data); addeditortext(data);

View file

@ -78,7 +78,7 @@ else
reply = prompt("{{$linkurl}}"); reply = prompt("{{$linkurl}}");
if(reply && reply.length) { if(reply && reply.length) {
$('#prvmail-rotator').spin('tiny'); $('#prvmail-rotator').spin('tiny');
$.get('parse_url?url=' + reply, function(data) { $.get('urlinfo?f=&url=' + reply, function(data) {
addmailtext(data); addmailtext(data);
$('#prvmail-rotator').spin(false); $('#prvmail-rotator').spin(false);
}); });
@ -104,7 +104,7 @@ else
event.preventDefault(); event.preventDefault();
if(reply && reply.length) { if(reply && reply.length) {
$('#prvmail-rotator').spin('tiny'); $('#prvmail-rotator').spin('tiny');
$.get('parse_url?url=' + reply, function(data) { $.get('urlinfo?f=&url=' + reply, function(data) {
addmailtext(data); addmailtext(data);
$('#prvmail-rotator').spin(false); $('#prvmail-rotator').spin(false);
}); });