Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Haakon Meland Eriksen 2016-03-02 06:06:39 +01:00
commit 264abef817
28 changed files with 1764 additions and 1505 deletions

View File

@ -47,10 +47,10 @@ require_once('include/account.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')));
define ( 'STD_VERSION', '1.2.4' );
define ( 'STD_VERSION', '1.2.5' );
define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1164 );
define ( 'DB_UPDATE_VERSION', 1165 );
/**

View File

@ -1243,7 +1243,7 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
$channel_address = (($c) ? $c[0]['channel_address'] : 'notfound');
$photo_sql = (($is_photo) ? " and is_photo = 1 " : '');
$r = q("SELECT hash, flags, is_dir, is_photo, folder FROM attach WHERE hash = '%s' AND uid = %d $photo_sql limit 1",
$r = q("SELECT hash, os_storage, flags, is_dir, is_photo, folder FROM attach WHERE hash = '%s' AND uid = %d $photo_sql limit 1",
dbesc($resource),
intval($channel_id)
);
@ -1471,7 +1471,7 @@ function pipe_streams($in, $out) {
* @param string $deny_cid
* @param string $deny_gid
* @param string $verb
* @param boolean $no_activity
* @param boolean $notify
*/
function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $verb, $notify) {
@ -1517,13 +1517,21 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
$mid = item_message_id();
$arr = array();
$objtype = ACTIVITY_OBJ_FILE;
$arr = array();
$arr['aid'] = get_account_id();
$arr['uid'] = $channel_id;
$arr['item_wall'] = 1;
$arr['item_origin'] = 1;
$arr['item_unseen'] = 1;
$objtype = ACTIVITY_OBJ_FILE;
$arr['author_xchan'] = $poster['xchan_hash'];
$arr['owner_xchan'] = $poster['xchan_hash'];
$arr['title'] = '';
$arr['item_hidden'] = 1;
$arr['obj_type'] = $objtype;
$arr['resource_id'] = $object['hash'];
$arr['resource_type'] = 'attach';
$private = (($arr_allow_cid[0] || $arr_allow_gid[0] || $arr_deny_cid[0] || $arr_deny_gid[0]) ? 1 : 0);
@ -1551,9 +1559,8 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
}
//send update activity and create a new one
if($update && $verb == 'post' ) {
//send update activity and create a new one
//updates should be sent to everybody with recursive perms and all eventual former allowed members ($object['allow_cid'] etc.).
$u_arr_allow_cid = array_unique(array_merge($arr_allow_cid, expand_acl($object['allow_cid'])));
$u_arr_allow_gid = array_unique(array_merge($arr_allow_gid, expand_acl($object['allow_gid'])));
@ -1564,24 +1571,15 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
$u_mid = item_message_id();
$arr['aid'] = get_account_id();
$arr['uid'] = $channel_id;
$arr['mid'] = $u_mid;
$arr['parent_mid'] = $u_mid;
$arr['author_xchan'] = $poster['xchan_hash'];
$arr['owner_xchan'] = $poster['xchan_hash'];
$arr['title'] = '';
$arr['allow_cid'] = perms2str($u_arr_allow_cid);
$arr['allow_gid'] = perms2str($u_arr_allow_gid);
$arr['deny_cid'] = perms2str($u_arr_deny_cid);
$arr['deny_gid'] = perms2str($u_arr_deny_gid);
$arr['item_hidden'] = 1;
$arr['item_private'] = $private;
$arr['verb'] = ACTIVITY_UPDATE;
$arr['obj_type'] = $objtype;
$arr['object'] = $u_jsonobject;
$arr['resource_id'] = $object['hash'];
$arr['resource_type'] = 'attach';
$arr['body'] = '';
$post = item_store($arr);
@ -1597,32 +1595,25 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
//notice( t('File activity updated') . EOL);
}
//don't create new activity if notify was not enabled
if(! $notify) {
return;
}
$arr = array();
//don't create new activity if we have an update request but there is no item to update
//this can e.g. happen when deleting images
if(! $y && $verb == 'update') {
return;
}
$arr['aid'] = get_account_id();
$arr['uid'] = $channel_id;
$arr['mid'] = $mid;
$arr['parent_mid'] = $mid;
$arr['item_wall'] = 1;
$arr['item_origin'] = 1;
$arr['item_unseen'] = 1;
$arr['author_xchan'] = $poster['xchan_hash'];
$arr['owner_xchan'] = $poster['xchan_hash'];
$arr['title'] = '';
$arr['allow_cid'] = perms2str($arr_allow_cid);
$arr['allow_gid'] = perms2str($arr_allow_gid);
$arr['deny_cid'] = perms2str($arr_deny_cid);
$arr['deny_gid'] = perms2str($arr_deny_gid);
$arr['item_hidden'] = 1;
$arr['item_private'] = $private;
$arr['verb'] = (($update) ? ACTIVITY_UPDATE : ACTIVITY_POST);
$arr['obj_type'] = $objtype;
$arr['resource_id'] = $object['hash'];
$arr['resource_type'] = 'attach';
$arr['object'] = (($update) ? $u_jsonobject : $jsonobject);
$arr['body'] = '';

View File

@ -684,7 +684,11 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
}
// Check for centered text
if (strpos($Text,'[/center]') !== false) {
$Text = preg_replace("(\[center\](.*?)\[\/center\])ism", "<div style=\"text-align:center;\">$1</div>", $Text);
$Text = preg_replace("(\[center\](.*?)\[\/center\])ism", "<div style=\"text-align:center;\">$1</div>", $Text);
}
// Check for footer
if (strpos($Text,'[/footer]') !== false) {
$Text = preg_replace("(\[footer\](.*?)\[\/footer\])ism", "<div class=\"wall-item-footer\">$1</div>", $Text);
}
// Check for list text
$Text = str_replace("[*]", "<li>", $Text);

View File

@ -550,3 +550,67 @@ function set_aconfig($account_id, $family, $key, $value) {
function del_aconfig($account_id, $family, $key) {
return del_xconfig('a_' . $account_id, $family, $key);
}
function load_abconfig($chash,$xhash) {
$r = q("select * from abconfig where chan = '%s' and xchan = '%s'",
dbesc($chash),
dbesc($xhash)
);
return $r;
}
function get_abconfig($chash,$xhash,$family,$key) {
$r = q("select * from abconfig where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' limit 1",
dbesc($chash),
dbesc($xhash),
dbesc($family),
dbesc($key)
);
if($r) {
return ((preg_match('|^a:[0-9]+:{.*}$|s', $r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']);
}
return false;
}
function set_abconfig($chash,$xhash,$family,$key,$value) {
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
if(get_abconfig($chash,$xhash,$family,$key) === false) {
$r = q("insert into abconfig ( chan, xchan, cat, k, v ) values ( '%s', '%s', '%s', '%s', '%s' ) ",
dbesc($chash),
dbesc($xhash),
dbesc($family),
dbesc($key),
dbesc($dbvalue)
);
}
else {
$r = q("update abconfig set v = '%s' where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' ",
dbesc($dbvalue),
dbesc($chash),
dbesc($xhash),
dbesc($family),
dbesc($key)
);
}
if($r)
return $value;
return false;
}
function del_abconfig($chash,$xhash,$family,$key) {
$r = q("delete from abconfig where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' ",
dbesc($chash),
dbesc($xhash),
dbesc($family),
dbesc($key)
);
return $r;
}

View File

@ -20,7 +20,7 @@ function rsa_verify($data,$sig,$key,$alg = 'sha256') {
if(intval(OPENSSL_ALGO_SHA256) && $alg === 'sha256')
$alg = OPENSSL_ALGO_SHA256;
$verify = openssl_verify($data,$sig,$key,$alg);
$verify = @openssl_verify($data,$sig,$key,$alg);
if(! $verify) {
logger('openssl_verify: ' . openssl_error_string(),LOGGER_NORMAL,LOG_ERR);

View File

@ -505,8 +505,12 @@ function identity_basic_export($channel_id, $items = false) {
if($r) {
$ret['abook'] = $r;
foreach($r as $rr)
$xchans[] = $rr['abook_xchan'];
for($x = 0; $x < count($ret['abook']); $x ++) {
$xchans[] = $ret['abook'][$x]['abook_chan'];
$abconfig = load_abconfig($ret['channel']['channel_hash'],$ret['abook'][$x]['abook_xchan']);
if($abconfig)
$ret['abook'][$x]['abconfig'] = $abconfig;
}
stringify_array_elms($xchans);
}
@ -900,6 +904,55 @@ function profile_load(&$a, $nickname, $profile = '') {
}
function profile_edit_menu($uid) {
$a = get_app();
$ret = array();
$is_owner = (($uid == local_channel()) ? true : false);
// show edit profile to profile owner
if($is_owner) {
$ret['menu'] = array(
'chg_photo' => t('Change profile photo'),
'entries' => array(),
);
$multi_profiles = feature_enabled(local_channel(), 'multi_profiles');
if($multi_profiles) {
$ret['multi'] = 1;
$ret['edit'] = array($a->get_baseurl(). '/profiles', t('Edit Profiles'), '', t('Edit'));
$ret['menu']['cr_new'] = t('Create New Profile');
}
else {
$ret['edit'] = array($a->get_baseurl() . '/profiles/' . $uid, t('Edit Profile'), '', t('Edit'));
}
$r = q("SELECT * FROM profile WHERE uid = %d",
local_channel()
);
if($r) {
foreach($r as $rr) {
if(!($multi_profiles || $rr['is_default']))
continue;
$ret['menu']['entries'][] = array(
'photo' => $rr['thumb'],
'id' => $rr['id'],
'alt' => t('Profile Image'),
'profile_name' => $rr['profile_name'],
'isdefault' => $rr['is_default'],
'visible_to_everybody' => t('Visible to everybody'),
'edit_visibility' => t('Edit visibility'),
);
}
}
}
return $ret;
}
/**
* @brief Formats a profile for display in the sidebar.
*
@ -933,13 +986,9 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
head_set_icon($profile['thumb']);
$is_owner = (($profile['uid'] == local_channel()) ? true : false);
if(is_sys_channel($profile['uid']))
$show_connect = false;
$profile['picdate'] = urlencode($profile['picdate']);
call_hooks('profile_sidebar_enter', $profile);
@ -961,42 +1010,6 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
$connect_url = z_root() . '/connect/' . $profile['channel_address'];
}
// show edit profile to yourself
if($is_owner) {
$profile['menu'] = array(
'chg_photo' => t('Change profile photo'),
'entries' => array(),
);
$multi_profiles = feature_enabled(local_channel(), 'multi_profiles');
if($multi_profiles) {
$profile['edit'] = array($a->get_baseurl(). '/profiles', t('Profiles'),"", t('Manage/edit profiles'));
$profile['menu']['cr_new'] = t('Create New Profile');
}
else
$profile['edit'] = array($a->get_baseurl() . '/profiles/' . $profile['id'], t('Edit Profile'),'',t('Edit Profile'));
$r = q("SELECT * FROM `profile` WHERE `uid` = %d",
local_channel());
if($r) {
foreach($r as $rr) {
if(!($multi_profiles || $rr['is_default']))
continue;
$profile['menu']['entries'][] = array(
'photo' => $rr['thumb'],
'id' => $rr['id'],
'alt' => t('Profile Image'),
'profile_name' => $rr['profile_name'],
'isdefault' => $rr['is_default'],
'visible_to_everybody' => t('visible to everybody'),
'edit_visibility' => t('Edit visibility'),
);
}
}
}
if((x($profile,'address') == 1)
|| (x($profile,'locality') == 1)
|| (x($profile,'region') == 1)
@ -1075,6 +1088,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
'$reddress' => $reddress,
'$rating' => $z,
'$contact_block' => $contact_block,
'$editmenu' => profile_edit_menu($profile['uid'])
));
$arr = array('profile' => &$profile, 'entry' => &$o);
@ -1239,6 +1253,24 @@ function advanced_profile(&$a) {
if($a->profile['name']) {
$profile_fields_basic = get_profile_fields_basic();
$profile_fields_advanced = get_profile_fields_advanced();
$advanced = ((feature_enabled($a->profile['profile_uid'],'advanced_profiles')) ? true : false);
if($advanced)
$fields = $profile_fields_advanced;
else
$fields = $profile_fields_basic;
$clean_fields = array();
if($fields) {
foreach($fields as $k => $v) {
$clean_fields[] = trim($k);
}
}
$tpl = get_markup_template('profile_advanced.tpl');
$profile = array();
@ -1347,10 +1379,6 @@ function advanced_profile(&$a) {
$profile['extra_fields'] = $a->profile['extra_fields'];
}
$is_owner = (($a->profile['profile_uid'] == local_channel()) ? true : false);
$edit = (($is_owner) ? array('link' => $a->get_baseurl() . '/profiles/' . $a->profile['profile_uid'], 'label' => t('Edit')) : '');
$things = get_things($a->profile['profile_guid'],$a->profile['profile_uid']);
// logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA);
@ -1360,7 +1388,8 @@ function advanced_profile(&$a) {
'$canlike' => (($profile['canlike'])? true : false),
'$likethis' => t('Like this thing'),
'$profile' => $profile,
'$edit' => $edit,
'$fields' => $clean_fields,
'$editmenu' => profile_edit_menu($a->profile['profile_uid']),
'$things' => $things
));
}

View File

@ -300,7 +300,7 @@ function photo_upload($channel, $observer, $args) {
$activity_format = sprintf(t('%1$s posted %2$s to %3$s','photo_upload'), $author_link, $photo_link, $album_link);
$summary = $activity_format . "\n\n" . (($args['body']) ? $args['body'] . "\n\n" : '');
$summary = (($args['body']) ? $args['body'] : '') . '[footer]' . $activity_format . '[/footer]';
$obj_body = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
. $tag . z_root() . "/photo/{$photo_hash}-{$scale}." . $ph->getExt() . '[/zmg]'
@ -391,8 +391,8 @@ function photo_upload($channel, $observer, $args) {
$arr['deny_cid'] = $ac['deny_cid'];
$arr['deny_gid'] = $ac['deny_gid'];
$arr['verb'] = ACTIVITY_POST;
$arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
$arr['object'] = json_encode($object);
$arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
$arr['object'] = json_encode($object);
$arr['tgt_type'] = ACTIVITY_OBJ_ALBUM;
$arr['target'] = json_encode($target);
$arr['item_wall'] = 1;
@ -400,7 +400,7 @@ function photo_upload($channel, $observer, $args) {
$arr['item_thread_top'] = 1;
$arr['item_private'] = intval($acl->is_private());
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
$arr['body'] = $summary;
$arr['body'] = $summary;
// this one is tricky because the item and the photo have the same permissions, those of the photo.

View File

@ -1197,7 +1197,7 @@ function widget_forums($arr) {
$perms_sql = item_permissions_sql(local_channel()) . item_normal();
$r1 = q("select * from abook left join xchan on abook_xchan = xchan_hash where ( xchan_pubforum = 1 or ((abook_their_perms & %d ) != 0 and (abook_their_perms & %d ) = 0) ) and abook_channel = %d order by xchan_name $limit ",
$r1 = q("select * from abook left join xchan on abook_xchan = xchan_hash where ( xchan_pubforum = 1 or ((abook_their_perms & %d ) != 0 and (abook_their_perms & %d ) = 0) ) and xchan_deleted = 0 and abook_channel = %d order by xchan_name $limit ",
intval(PERMS_W_TAGWALL),
intval(PERMS_W_STREAM),
intval(local_channel())

View File

@ -522,6 +522,11 @@ function zot_refresh($them, $channel = null, $force = false) {
unset($new_connection[0]['abook_id']);
unset($new_connection[0]['abook_account']);
unset($new_connection[0]['abook_channel']);
$abconfig = load_abconfig($channel['channel_hash'],$new_connection['abook_xchan']);
if($abconfig)
$new_connection['abconfig'] = $abconfig;
build_sync_packet($channel['channel_id'], array('abook' => $new_connection));
}
}
@ -2971,6 +2976,8 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
logger('build_sync_packet: packet: ' . print_r($info,true), LOGGER_DATA, LOG_DEBUG);
$total = count($synchubs);
foreach($synchubs as $hub) {
$hash = random_string();
$n = zot_build_packet($channel,'notify',$env_recips,$hub['hubloc_sitekey'],$hash);
@ -2984,7 +2991,9 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
));
proc_run('php', 'include/deliver.php', $hash);
if($interval)
$total = $total - 1;
if($interval && $total)
@time_sleep_until(microtime(true) + (float) $interval);
}
}
@ -3120,6 +3129,11 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
foreach($arr['abook'] as $abook) {
$abconfig = null;
if(array_key_exists('abconfig',$abook) && is_array($abook['abconfig']) && count($abook['abconfig']))
$abconfig = $abook['abconfig'];
if(! array_key_exists('abook_blocked',$abook)) {
// convert from redmatrix
$abook['abook_blocked'] = (($abook['abook_flags'] & 0x0001) ? 1 : 0);
@ -3210,8 +3224,13 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
}
}
if($abconfig) {
// @fixme does not handle sync of del_abconfig
foreach($abconfig as $abc) {
if($abc['chan'] === $channel['channel_hash'])
set_abconfig($abc['chan'],$abc['xchan'],$abc['cat'],$abc['k'],$abc['v']);
}
}
}
}

View File

@ -1,4 +1,18 @@
CREATE TABLE IF NOT EXISTS `abconfig` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`chan` char(255) NOT NULL DEFAULT '',
`xchan` char(255) NOT NULL DEFAULT '',
`cat` char(255) NOT NULL DEFAULT '',
`k` char(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `chan` (`chan`),
KEY `xchan` (`xchan`),
KEY `cat` (`cat`),
KEY `k` (`k`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `abook` (
`abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`abook_account` int(10) unsigned NOT NULL DEFAULT '0',

View File

@ -1,3 +1,16 @@
CREATE TABLE "abconfig" (
"id" serial NOT NULL,
"chan" text NOT NULL,
"xchan" text NOT NULL,
"cat" text NOT NULL,
"k" text NOT NULL,
"v" text NOT NULL,
PRIMARY KEY ("id")
);
create index "abconfig_chan" on abconfig ("chan");
create index "abconfig_xchan" on abconfig ("xchan");
create index "abconfig_cat" on abconfig ("cat");
create index "abconfig_k" on abconfig ("k");
CREATE TABLE "abook" (
"abook_id" serial NOT NULL,
"abook_account" bigint NOT NULL,
@ -547,7 +560,7 @@ CREATE TABLE "iconfig" (
"k" text NOT NULL DEFAULT '',
"v" text NOT NULL DEFAULT '',
"sharing" int NOT NULL DEFAULT '0',
PRIMARY_KEY("id")
PRIMARY KEY("id")
);
create index "iconfig_iid" on iconfig ("iid");
create index "iconfig_cat" on iconfig ("cat");

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1164 );
define( 'UPDATE_VERSION' , 1165 );
/**
*
@ -2019,3 +2019,42 @@ function update_r1163() {
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
function update_r1164() {
if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
$r1 = q("CREATE TABLE \"abconfig\" (
\"id\" serial NOT NULL,
\"chan\" text NOT NULL,
\"xchan\" text NOT NULL,
\"cat\" text NOT NULL,
\"k\" text NOT NULL,
\"v\" text NOT NULL,
PRIMARY KEY (\"id\") ");
$r2 = q("create index \"abconfig_chan\" on abconfig (\"chan\") ");
$r3 = q("create index \"abconfig_xchan\" on abconfig (\"xchan\") ");
$r4 = q("create index \"abconfig_cat\" on abconfig (\"cat\") ");
$r5 = q("create index \"abconfig_k\" on abconfig (\"k\") ");
$r = $r1 && $r2 && $r3 && $r4 && $r5;
}
else {
$r = q("CREATE TABLE IF NOT EXISTS `abconfig` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`chan` char(255) NOT NULL DEFAULT '',
`xchan` char(255) NOT NULL DEFAULT '',
`cat` char(255) NOT NULL DEFAULT '',
`k` char(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `chan` (`chan`),
KEY `xchan` (`xchan`),
KEY `cat` (`cat`),
KEY `k` (`k`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
}
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

View File

@ -322,6 +322,9 @@ function connedit_clone(&$a) {
if(! $a->poi)
return;
$channel = $a->get_channel();
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d and abook_id = %d LIMIT 1",
@ -338,6 +341,10 @@ function connedit_clone(&$a) {
unset($clone['abook_account']);
unset($clone['abook_channel']);
$abconfig = load_abconfig($channel['channel_hash'],$clone['abook_xchan']);
if($abconfig)
$clone['abconfig'] = $abconfig;
build_sync_packet(0 /* use the current local_channel */, array('abook' => array($clone)));
}

View File

@ -14,7 +14,9 @@ function follow_init(&$a) {
$return_url = $_SESSION['return_url'];
$confirm = intval($_REQUEST['confirm']);
$result = new_contact($uid,$url,$a->get_channel(),true,$confirm);
$channel = $a->get_channel();
$result = new_contact($uid,$url,$channel,true,$confirm);
if($result['success'] == false) {
if($result['message'])
@ -34,6 +36,10 @@ function follow_init(&$a) {
unset($clone['abook_account']);
unset($clone['abook_channel']);
$abconfig = load_abconfig($channel['channel_hash'],$clone['abook_xchan']);
if($abconfig)
$clone['abconfig'] = $abconfig;
build_sync_packet(0 /* use the current local_channel */, array('abook' => array($clone)));

View File

@ -341,6 +341,10 @@ function import_account(&$a, $account_id) {
if($abooks) {
foreach($abooks as $abook) {
$abconfig = null;
if(array_key_exists('abconfig',$abook) && is_array($abook['abconfig']) && count($abook['abconfig']))
$abconfig = $abook['abconfig'];
unset($abook['abook_id']);
unset($abook['abook_rating']);
unset($abook['abook_rating_text']);
@ -382,6 +386,17 @@ function import_account(&$a, $account_id) {
$friends ++;
if(intval($abook['abook_feed']))
$feeds ++;
if($abconfig) {
// @fixme does not handle sync of del_abconfig
foreach($abconfig as $abc) {
if($abc['chan'] === $channel['channel_hash'])
set_abconfig($abc['chan'],$abc['xchan'],$abc['cat'],$abc['k'],$abc['v']);
}
}
}
}
logger('import step 8');

View File

@ -1 +1 @@
2016-02-27.1320H
2016-03-01.1323H

View File

@ -19,20 +19,30 @@ code {
display:none;
}
#jot-title-wrap,
#jot-pagetitle-wrap,
#jot-category-wrap {
border-bottom: 1px solid #ccc;
}
#jot-attachment-wrap {
border-top: 1px solid #ccc;
}
#jot-title-wrap input,
#jot-pagetitle-wrap input {
padding: 8px;
margin-bottom: 5px;
padding: 10px;
}
.profile-jot-text {
height: 39px;
padding: 8px;
padding: 10px;
width: 100%;
}
.jot-attachment {
padding: 8px;
border: 0px;
padding: 10px;
width: 100%;
}
@ -42,13 +52,18 @@ code {
}
#profile-jot-submit-wrapper {
margin-top: 10px;
border-top: 1px solid #ccc;
padding: 10px;
}
#profile-jot-perms-end {
height: 30px;
}
#profile-jot-form {
line-height: initial;
}
#profile-jot-wrapper {
margin-bottom: 30px;
}
@ -194,6 +209,7 @@ a.wall-item-name-link {
padding: 8px;
height: 150px;
overflow: auto;
resize: vertical;
}
.qcomment {

View File

@ -38,6 +38,6 @@
}
#files-upload {
padding: 4px;
padding: 7px 10px;
width: 100%;
}

View File

@ -25,7 +25,7 @@
}
#photos-upload-choose {
padding: 4px;
padding: 7px 10px;
width: 100%;
}

File diff suppressed because it is too large Load Diff

View File

@ -167,200 +167,6 @@ $a->strings["%d connection in common"] = array(
1 => "%d conexiones en común",
);
$a->strings["show more"] = "mostrar más";
$a->strings["photo"] = "foto";
$a->strings["event"] = "evento";
$a->strings["channel"] = "el canal";
$a->strings["status"] = "el mensaje de estado";
$a->strings["comment"] = "el comentario";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s";
$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s";
$a->strings["poked"] = "ha dado un toque a";
$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__ Dislikes"] = "No me gusta";
$a->strings["__ctx:title__ Agree"] = "De acuerdo";
$a->strings["__ctx:title__ Disagree"] = "En desacuerdo";
$a->strings["__ctx:title__ Abstain"] = "Abstención";
$a->strings["__ctx:title__ Attending"] = "Participaré";
$a->strings["__ctx:title__ Not attending"] = "No participaré";
$a->strings["__ctx:title__ Might attend"] = "Quizá participe";
$a->strings["Select"] = "Seleccionar";
$a->strings["Private Message"] = "Mensaje Privado";
$a->strings["Message signature validated"] = "Firma de mensaje validada";
$a->strings["Message signature incorrect"] = "Firma de mensaje incorrecta";
$a->strings["View %s's profile @ %s"] = "Ver el perfil @ %s de %s";
$a->strings["Categories:"] = "Categorías:";
$a->strings["Filed under:"] = "Archivado bajo:";
$a->strings["from %s"] = "desde %s";
$a->strings["last edited: %s"] = "último cambio: %s";
$a->strings["Expires: %s"] = "Caduca: %s";
$a->strings["View in context"] = "Mostrar en su contexto";
$a->strings["Please wait"] = "Espere por favor";
$a->strings["remove"] = "eliminar";
$a->strings["Loading..."] = "Cargando...";
$a->strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
$a->strings["View Source"] = "Ver la fuente original de la publicación";
$a->strings["Follow Thread"] = "Seguir este hilo";
$a->strings["Unfollow Thread"] = "Dejar de seguir este hilo";
$a->strings["View Profile"] = "Ver el perfil";
$a->strings["Activity/Posts"] = "Actividad y publicaciones";
$a->strings["Edit Connection"] = "Editar conexión";
$a->strings["Message"] = "Mensaje";
$a->strings["Ratings"] = "Valoraciones";
$a->strings["%s likes this."] = "A %s le gusta esto.";
$a->strings["%s doesn't like this."] = "A %s no le gusta esto.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
0 => "a <span %1\$s>%2\$d personas</span> le gusta esto.",
1 => "A <span %1\$s>%2\$d personas</span> les gusta esto.",
);
$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
0 => "a <span %1\$s>%2\$d personas</span> no les gusta esto.",
1 => "A <span %1\$s>%2\$d personas</span> no les gusta esto.",
);
$a->strings["and"] = "y";
$a->strings[", and %d other people"] = array(
0 => ", y %d persona más",
1 => ", y %d personas más",
);
$a->strings["%s like this."] = "A %s le gusta esto.";
$a->strings["%s don't like this."] = "A %s no le gusta esto.";
$a->strings["Visible to <strong>everybody</strong>"] = "Visible para <strong>cualquiera</strong>";
$a->strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:";
$a->strings["Please enter a video link/URL:"] = "Por favor, introduzca un enlace de vídeo:";
$a->strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace de audio:";
$a->strings["Tag term:"] = "Término de la etiqueta:";
$a->strings["Save to Folder:"] = "Guardar en carpeta:";
$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["Preview"] = "Previsualizar";
$a->strings["Share"] = "Compartir";
$a->strings["Page link name"] = "Nombre de enlace de página";
$a->strings["Post as"] = "Publicar como";
$a->strings["Bold"] = "Negrita";
$a->strings["Italic"] = "Itálico ";
$a->strings["Underline"] = "Subrayar";
$a->strings["Quote"] = "Citar";
$a->strings["Code"] = "Código";
$a->strings["Upload photo"] = "Subir foto";
$a->strings["upload photo"] = "subir foto";
$a->strings["Attach file"] = "Adjuntar fichero";
$a->strings["attach file"] = "adjuntar fichero";
$a->strings["Insert web link"] = "Insertar enlace web";
$a->strings["web link"] = "enlace web";
$a->strings["Insert video link"] = "Insertar enlace de vídeo";
$a->strings["video link"] = "enlace de vídeo";
$a->strings["Insert audio link"] = "Insertar enlace de audio";
$a->strings["audio link"] = "enlace de audio";
$a->strings["Set your location"] = "Establecer su ubicación";
$a->strings["set location"] = "establecer ubicación";
$a->strings["Toggle voting"] = "Cambiar votación";
$a->strings["Clear browser location"] = "Eliminar los datos de ubicación del navegador";
$a->strings["clear location"] = "borrar los datos de ubicación";
$a->strings["Title (optional)"] = "Título (opcional)";
$a->strings["Categories (optional, comma-separated list)"] = "Categorías (opcional, lista separada por comas)";
$a->strings["Permission settings"] = "Configuración de permisos";
$a->strings["permissions"] = "permisos";
$a->strings["Public post"] = "Entrada pública";
$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com";
$a->strings["Set expiration date"] = "Configurar fecha de caducidad";
$a->strings["Set publish date"] = "Establecer la fecha de publicación";
$a->strings["Encrypt text"] = "Cifrar texto";
$a->strings["OK"] = "OK";
$a->strings["Cancel"] = "Cancelar";
$a->strings["Discover"] = "Descubrir";
$a->strings["Imported public streams"] = "Contenidos públicos importados";
$a->strings["Commented Order"] = "Comentarios recientes";
$a->strings["Sort by Comment Date"] = "Ordenar por fecha de comentario";
$a->strings["Posted Order"] = "Publicaciones recientes";
$a->strings["Sort by Post Date"] = "Ordenar por fecha de publicación";
$a->strings["Personal"] = "Personales";
$a->strings["Posts that mention or involve you"] = "Publicaciones que le mencionan o involucran";
$a->strings["New"] = "Nuevas";
$a->strings["Activity Stream - by date"] = "Contenido - por fecha";
$a->strings["Starred"] = "Preferidas";
$a->strings["Favourite Posts"] = "Publicaciones favoritas";
$a->strings["Spam"] = "Correo basura";
$a->strings["Posts flagged as SPAM"] = "Publicaciones marcadas como basura";
$a->strings["Channel"] = "Canal";
$a->strings["Status Messages and Posts"] = "Mensajes de estado y publicaciones";
$a->strings["About"] = "Mi perfil";
$a->strings["Profile Details"] = "Detalles del perfil";
$a->strings["Photo Albums"] = "Álbumes de fotos";
$a->strings["Files and Storage"] = "Ficheros y repositorio";
$a->strings["Chatrooms"] = "Salas de chat";
$a->strings["Saved Bookmarks"] = "Marcadores guardados";
$a->strings["Manage Webpages"] = "Administrar páginas web";
$a->strings["View all"] = "Ver todo";
$a->strings["__ctx:noun__ Like"] = array(
0 => "Me gusta",
1 => "Me gusta",
);
$a->strings["__ctx:noun__ Dislike"] = array(
0 => "No me gusta",
1 => "No me gusta",
);
$a->strings["__ctx:noun__ Attending"] = array(
0 => "Participaré",
1 => "Participaré",
);
$a->strings["__ctx:noun__ Not Attending"] = array(
0 => "No participaré",
1 => "No participaré",
);
$a->strings["__ctx:noun__ Undecided"] = array(
0 => "Indeciso/a",
1 => "Indecisos/as",
);
$a->strings["__ctx:noun__ Agree"] = array(
0 => "De acuerdo",
1 => "De acuerdo",
);
$a->strings["__ctx:noun__ Disagree"] = array(
0 => "En desacuerdo",
1 => "En desacuerdo",
);
$a->strings["__ctx:noun__ Abstain"] = array(
0 => "se abstiene",
1 => "Se abstienen",
);
$a->strings["Miscellaneous"] = "Varios";
$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
$a->strings["Required"] = "Obligatorio";
$a->strings["never"] = "nunca";
$a->strings["less than a second ago"] = "hace un instante";
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s";
$a->strings["__ctx:relative_date__ year"] = array(
0 => "año",
1 => "años",
);
$a->strings["__ctx:relative_date__ month"] = array(
0 => "mes",
1 => "meses",
);
$a->strings["__ctx:relative_date__ week"] = array(
0 => "semana",
1 => "semanas",
);
$a->strings["__ctx:relative_date__ day"] = array(
0 => "día",
1 => "días",
);
$a->strings["__ctx:relative_date__ hour"] = array(
0 => "hora",
1 => "horas",
);
$a->strings["__ctx:relative_date__ minute"] = array(
0 => "minuto",
1 => "minutos",
);
$a->strings["__ctx:relative_date__ second"] = array(
0 => "segundo",
1 => "segundos",
);
$a->strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
$a->strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
$a->strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%s”";
$a->strings["Directory Options"] = "Opciones del directorio";
$a->strings["Safe Mode"] = "Modo seguro";
@ -369,6 +175,7 @@ $a->strings["Yes"] = "Sí";
$a->strings["Public Forums Only"] = "Solo foros públicos";
$a->strings["This Website Only"] = "Solo este sitio web";
$a->strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario.";
$a->strings["event"] = "evento";
$a->strings["Not specified"] = "Sin especificar";
$a->strings["Needs Action"] = "Necesita de una intervención";
$a->strings["Completed"] = "Completado/a";
@ -382,15 +189,6 @@ $a->strings["Protocol disabled."] = "Protocolo deshabilitado.";
$a->strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado.";
$a->strings["local account not found."] = "No se ha encontrado la cuenta local.";
$a->strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.";
$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente.";
$a->strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales";
$a->strings["All Channels"] = "Todos los canales";
$a->strings["edit"] = "editar";
$a->strings["Privacy Groups"] = "Grupos de canales";
$a->strings["Edit group"] = "Editar grupo";
$a->strings["Add privacy group"] = "Añadir un grupo de canales";
$a->strings["Channels not in any privacy group"] = "Sin canales en ningún grupo";
$a->strings["add"] = "añadir";
$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado.";
$a->strings["Channel clone failed. Import failed."] = "La clonación del canal no ha salido bien. La importación ha fallado.";
$a->strings["Cloned channel not found. Import failed."] = "No se ha podido importar el canal porque el canal clonado no se ha encontrado.";
@ -483,6 +281,7 @@ $a->strings["Logout"] = "Finalizar sesión";
$a->strings["End this session"] = "Finalizar esta sesión";
$a->strings["Home"] = "Inicio";
$a->strings["Your posts and conversations"] = "Sus publicaciones y conversaciones";
$a->strings["View Profile"] = "Ver el perfil";
$a->strings["Your profile page"] = "Su página del perfil";
$a->strings["Edit Profiles"] = "Editar perfiles";
$a->strings["Manage/Edit profiles"] = "Administrar/editar perfiles";
@ -527,25 +326,20 @@ $a->strings["Manage Your Channels"] = "Gestionar sus canales";
$a->strings["Account/Channel Settings"] = "Ajustes de cuenta/canales";
$a->strings["Admin"] = "Administrador";
$a->strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio";
$a->strings["Loading..."] = "Cargando...";
$a->strings["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido";
$a->strings["Please wait..."] = "Espere por favor…";
$a->strings["created a new post"] = "ha creado una nueva entrada";
$a->strings["commented on %s's post"] = "ha comentado la entrada de %s";
$a->strings["New Page"] = "Nueva página";
$a->strings["View"] = "Ver";
$a->strings["Preview"] = "Previsualizar";
$a->strings["Actions"] = "Acciones";
$a->strings["Page Link"] = "Vínculo de la página";
$a->strings["Title"] = "Título";
$a->strings["Created"] = "Creado";
$a->strings["Edited"] = "Editado";
$a->strings["Profile Photos"] = "Fotos del perfil";
$a->strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio";
$a->strings["Image file is empty."] = "El fichero de imagen está vacío. ";
$a->strings["Unable to process image"] = "No ha sido posible procesar la imagen";
$a->strings["Photo storage failed."] = "La foto no ha podido ser guardada.";
$a->strings["a new photo"] = "una nueva foto";
$a->strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s";
$a->strings["Upload New Photos"] = "Subir nuevas fotos";
$a->strings["Male"] = "Hombre";
$a->strings["Female"] = "Mujer";
$a->strings["Currently Male"] = "Actualmente hombre";
@ -615,6 +409,46 @@ $a->strings["like"] = "me gusta";
$a->strings["likes"] = "gusta de";
$a->strings["dislike"] = "no me gusta";
$a->strings["dislikes"] = "no gusta de";
$a->strings["__ctx:noun__ Like"] = array(
0 => "Me gusta",
1 => "Me gusta",
);
$a->strings["Miscellaneous"] = "Varios";
$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
$a->strings["Required"] = "Obligatorio";
$a->strings["never"] = "nunca";
$a->strings["less than a second ago"] = "hace un instante";
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s";
$a->strings["__ctx:relative_date__ year"] = array(
0 => "año",
1 => "años",
);
$a->strings["__ctx:relative_date__ month"] = array(
0 => "mes",
1 => "meses",
);
$a->strings["__ctx:relative_date__ week"] = array(
0 => "semana",
1 => "semanas",
);
$a->strings["__ctx:relative_date__ day"] = array(
0 => "día",
1 => "días",
);
$a->strings["__ctx:relative_date__ hour"] = array(
0 => "hora",
1 => "horas",
);
$a->strings["__ctx:relative_date__ minute"] = array(
0 => "minuto",
1 => "minutos",
);
$a->strings["__ctx:relative_date__ second"] = array(
0 => "segundo",
1 => "segundos",
);
$a->strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
$a->strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
$a->strings["Invalid data packet"] = "Paquete de datos no válido";
$a->strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
$a->strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
@ -641,6 +475,14 @@ $a->strings["\$projectname"] = "\$projectname";
$a->strings["Thank You,"] = "Gracias,";
$a->strings["%s Administrator"] = "%s Administrador";
$a->strings["No Subject"] = "Sin asunto";
$a->strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio";
$a->strings["Image file is empty."] = "El fichero de imagen está vacío. ";
$a->strings["Unable to process image"] = "No ha sido posible procesar la imagen";
$a->strings["Photo storage failed."] = "La foto no ha podido ser guardada.";
$a->strings["a new photo"] = "una nueva foto";
$a->strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s";
$a->strings["Photo Albums"] = "Álbumes de fotos";
$a->strings["Upload New Photos"] = "Subir nuevas fotos";
$a->strings["General Features"] = "Funcionalidades básicas";
$a->strings["Content Expiration"] = "Caducidad del contenido";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Eliminar publicaciones/comentarios y/o mensajes privados más adelante";
@ -682,6 +524,7 @@ $a->strings["Prevent posts with identical content to be published with less than
$a->strings["Network and Stream Filtering"] = "Filtrado del contenido";
$a->strings["Search by Date"] = "Buscar por fecha";
$a->strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas";
$a->strings["Privacy Groups"] = "Grupos de canales";
$a->strings["Enable management and selection of privacy groups"] = "Activar la gestión y selección de grupos de canales";
$a->strings["Saved Searches"] = "Búsquedas guardadas";
$a->strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización";
@ -707,29 +550,8 @@ $a->strings["Star Posts"] = "Entradas destacadas";
$a->strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella";
$a->strings["Tag Cloud"] = "Nube de etiquetas";
$a->strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal";
$a->strings["Permission denied"] = "Permiso denegado";
$a->strings["(Unknown)"] = "(Desconocido)";
$a->strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
$a->strings["Visible to you only."] = "Visible sólo para usted.";
$a->strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
$a->strings["Visible to anybody authenticated."] = "Visible para cualquiera que haya sido autenticado.";
$a->strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
$a->strings["Visible to all connections."] = "Visible para todas las conexiones.";
$a->strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
$a->strings["Visible to specific connections."] = "Visible para conexiones específicas.";
$a->strings["Item not found."] = "Elemento no encontrado.";
$a->strings["Privacy group not found."] = "Grupo de canales no encontrado.";
$a->strings["Privacy group is empty."] = "El grupo de canales está vacío.";
$a->strings["Privacy group: %s"] = "Grupo de canales: %s";
$a->strings["Connection: %s"] = "Conexión: %s";
$a->strings["Connection not found."] = "Conexión no encontrada";
$a->strings["female"] = "mujer";
$a->strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s";
$a->strings["male"] = "hombre";
$a->strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s";
$a->strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s";
$a->strings["profile photo"] = "foto del perfil";
$a->strings["System"] = "Sistema";
$a->strings["Personal"] = "Personales";
$a->strings["Create Personal App"] = "Crear una aplicación personal";
$a->strings["Edit Personal App"] = "Editar una aplicación personal";
$a->strings["Ignore/Hide"] = "Ignorar/Ocultar";
@ -742,6 +564,7 @@ $a->strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplo
$a->strings["Notes"] = "Notas";
$a->strings["Save"] = "Guardar";
$a->strings["Remove term"] = "Eliminar término";
$a->strings["add"] = "añadir";
$a->strings["Archives"] = "Hemeroteca";
$a->strings["Me"] = "Yo";
$a->strings["Family"] = "Familia";
@ -811,6 +634,7 @@ $a->strings["newer"] = "más recientes";
$a->strings["No connections"] = "Sin conexiones";
$a->strings["View all %s connections"] = "Ver todas las %s conexiones";
$a->strings["poke"] = "un toque";
$a->strings["poked"] = "ha dado un toque a";
$a->strings["ping"] = "un \"ping\"";
$a->strings["pinged"] = "ha enviado un \"ping\" a";
$a->strings["prod"] = "una incitación ";
@ -854,12 +678,22 @@ $a->strings["Page layout"] = "Formato de la página";
$a->strings["You can create your own with the layouts tool"] = "Puede crear su propio formato gráfico con las herramientas de diseño";
$a->strings["Page content type"] = "Tipo de contenido de página";
$a->strings["Select an alternate language"] = "Seleccionar un idioma alternativo";
$a->strings["photo"] = "foto";
$a->strings["status"] = "el mensaje de estado";
$a->strings["comment"] = "el comentario";
$a->strings["activity"] = "la actividad";
$a->strings["Design Tools"] = "Herramientas de diseño";
$a->strings["Blocks"] = "Bloques";
$a->strings["Menus"] = "Menús";
$a->strings["Layouts"] = "Formato gráfico";
$a->strings["Pages"] = "Páginas";
$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente.";
$a->strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales";
$a->strings["All Channels"] = "Todos los canales";
$a->strings["edit"] = "editar";
$a->strings["Edit group"] = "Editar grupo";
$a->strings["Add privacy group"] = "Añadir un grupo de canales";
$a->strings["Channels not in any privacy group"] = "Sin canales en ningún grupo";
$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
$a->strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Aviso] Nuevo mensaje en %s";
$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s le ha enviado un nuevo mensaje privado en %3\$s.";
@ -955,6 +789,150 @@ $a->strings["Like this thing"] = "Me gusta esto";
$a->strings["cover photo"] = "Imagen de portada del perfil";
$a->strings["Embedded content"] = "Contenido incorporado";
$a->strings["Embedding disabled"] = "Incrustación deshabilitada";
$a->strings["channel"] = "el canal";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s";
$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %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__ Dislikes"] = "No me gusta";
$a->strings["__ctx:title__ Agree"] = "De acuerdo";
$a->strings["__ctx:title__ Disagree"] = "En desacuerdo";
$a->strings["__ctx:title__ Abstain"] = "Abstención";
$a->strings["__ctx:title__ Attending"] = "Participaré";
$a->strings["__ctx:title__ Not attending"] = "No participaré";
$a->strings["__ctx:title__ Might attend"] = "Quizá participe";
$a->strings["Select"] = "Seleccionar";
$a->strings["Private Message"] = "Mensaje Privado";
$a->strings["Message signature validated"] = "Firma de mensaje validada";
$a->strings["Message signature incorrect"] = "Firma de mensaje incorrecta";
$a->strings["View %s's profile @ %s"] = "Ver el perfil @ %s de %s";
$a->strings["Categories:"] = "Categorías:";
$a->strings["Filed under:"] = "Archivado bajo:";
$a->strings["from %s"] = "desde %s";
$a->strings["last edited: %s"] = "último cambio: %s";
$a->strings["Expires: %s"] = "Caduca: %s";
$a->strings["View in context"] = "Mostrar en su contexto";
$a->strings["Please wait"] = "Espere por favor";
$a->strings["remove"] = "eliminar";
$a->strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
$a->strings["View Source"] = "Ver la fuente original de la publicación";
$a->strings["Follow Thread"] = "Seguir este hilo";
$a->strings["Unfollow Thread"] = "Dejar de seguir este hilo";
$a->strings["Activity/Posts"] = "Actividad y publicaciones";
$a->strings["Edit Connection"] = "Editar conexión";
$a->strings["Message"] = "Mensaje";
$a->strings["Ratings"] = "Valoraciones";
$a->strings["%s likes this."] = "A %s le gusta esto.";
$a->strings["%s doesn't like this."] = "A %s no le gusta esto.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
0 => "a <span %1\$s>%2\$d personas</span> le gusta esto.",
1 => "A <span %1\$s>%2\$d personas</span> les gusta esto.",
);
$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
0 => "a <span %1\$s>%2\$d personas</span> no les gusta esto.",
1 => "A <span %1\$s>%2\$d personas</span> no les gusta esto.",
);
$a->strings["and"] = "y";
$a->strings[", and %d other people"] = array(
0 => ", y %d persona más",
1 => ", y %d personas más",
);
$a->strings["%s like this."] = "A %s le gusta esto.";
$a->strings["%s don't like this."] = "A %s no le gusta esto.";
$a->strings["Visible to <strong>everybody</strong>"] = "Visible para <strong>cualquiera</strong>";
$a->strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:";
$a->strings["Please enter a video link/URL:"] = "Por favor, introduzca un enlace de vídeo:";
$a->strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace de audio:";
$a->strings["Tag term:"] = "Término de la etiqueta:";
$a->strings["Save to Folder:"] = "Guardar en carpeta:";
$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["Share"] = "Compartir";
$a->strings["Page link name"] = "Nombre de enlace de página";
$a->strings["Post as"] = "Publicar como";
$a->strings["Bold"] = "Negrita";
$a->strings["Italic"] = "Itálico ";
$a->strings["Underline"] = "Subrayar";
$a->strings["Quote"] = "Citar";
$a->strings["Code"] = "Código";
$a->strings["Upload photo"] = "Subir foto";
$a->strings["upload photo"] = "subir foto";
$a->strings["Attach file"] = "Adjuntar fichero";
$a->strings["attach file"] = "adjuntar fichero";
$a->strings["Insert web link"] = "Insertar enlace web";
$a->strings["web link"] = "enlace web";
$a->strings["Insert video link"] = "Insertar enlace de vídeo";
$a->strings["video link"] = "enlace de vídeo";
$a->strings["Insert audio link"] = "Insertar enlace de audio";
$a->strings["audio link"] = "enlace de audio";
$a->strings["Set your location"] = "Establecer su ubicación";
$a->strings["set location"] = "establecer ubicación";
$a->strings["Toggle voting"] = "Cambiar votación";
$a->strings["Clear browser location"] = "Eliminar los datos de ubicación del navegador";
$a->strings["clear location"] = "borrar los datos de ubicación";
$a->strings["Title (optional)"] = "Título (opcional)";
$a->strings["Categories (optional, comma-separated list)"] = "Categorías (opcional, lista separada por comas)";
$a->strings["Permission settings"] = "Configuración de permisos";
$a->strings["permissions"] = "permisos";
$a->strings["Public post"] = "Entrada pública";
$a->strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com";
$a->strings["Set expiration date"] = "Configurar fecha de caducidad";
$a->strings["Set publish date"] = "Establecer la fecha de publicación";
$a->strings["Encrypt text"] = "Cifrar texto";
$a->strings["OK"] = "OK";
$a->strings["Cancel"] = "Cancelar";
$a->strings["Discover"] = "Descubrir";
$a->strings["Imported public streams"] = "Contenidos públicos importados";
$a->strings["Commented Order"] = "Comentarios recientes";
$a->strings["Sort by Comment Date"] = "Ordenar por fecha de comentario";
$a->strings["Posted Order"] = "Publicaciones recientes";
$a->strings["Sort by Post Date"] = "Ordenar por fecha de publicación";
$a->strings["Posts that mention or involve you"] = "Publicaciones que le mencionan o involucran";
$a->strings["New"] = "Nuevas";
$a->strings["Activity Stream - by date"] = "Contenido - por fecha";
$a->strings["Starred"] = "Preferidas";
$a->strings["Favourite Posts"] = "Publicaciones favoritas";
$a->strings["Spam"] = "Correo basura";
$a->strings["Posts flagged as SPAM"] = "Publicaciones marcadas como basura";
$a->strings["Channel"] = "Canal";
$a->strings["Status Messages and Posts"] = "Mensajes de estado y publicaciones";
$a->strings["About"] = "Mi perfil";
$a->strings["Profile Details"] = "Detalles del perfil";
$a->strings["Files and Storage"] = "Ficheros y repositorio";
$a->strings["Chatrooms"] = "Salas de chat";
$a->strings["Saved Bookmarks"] = "Marcadores guardados";
$a->strings["Manage Webpages"] = "Administrar páginas web";
$a->strings["View all"] = "Ver todo";
$a->strings["__ctx:noun__ Dislike"] = array(
0 => "No me gusta",
1 => "No me gusta",
);
$a->strings["__ctx:noun__ Attending"] = array(
0 => "Participaré",
1 => "Participaré",
);
$a->strings["__ctx:noun__ Not Attending"] = array(
0 => "No participaré",
1 => "No participaré",
);
$a->strings["__ctx:noun__ Undecided"] = array(
0 => "Indeciso/a",
1 => "Indecisos/as",
);
$a->strings["__ctx:noun__ Agree"] = array(
0 => "De acuerdo",
1 => "De acuerdo",
);
$a->strings["__ctx:noun__ Disagree"] = array(
0 => "En desacuerdo",
1 => "En desacuerdo",
);
$a->strings["__ctx:noun__ Abstain"] = array(
0 => "se abstiene",
1 => "Se abstienen",
);
$a->strings["Save to Folder"] = "Guardar en carpeta";
$a->strings["I will attend"] = "Participaré";
$a->strings["I will not attend"] = "No participaré";
@ -1025,6 +1003,28 @@ $a->strings["Special Purpose"] = "Propósito especial";
$a->strings["Special - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada";
$a->strings["Special - Group Repository"] = "Especial - Repositorio de grupo";
$a->strings["Custom/Expert Mode"] = "Modo personalizado/experto";
$a->strings["Permission denied"] = "Permiso denegado";
$a->strings["(Unknown)"] = "(Desconocido)";
$a->strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
$a->strings["Visible to you only."] = "Visible sólo para usted.";
$a->strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
$a->strings["Visible to anybody authenticated."] = "Visible para cualquiera que haya sido autenticado.";
$a->strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
$a->strings["Visible to all connections."] = "Visible para todas las conexiones.";
$a->strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
$a->strings["Visible to specific connections."] = "Visible para conexiones específicas.";
$a->strings["Item not found."] = "Elemento no encontrado.";
$a->strings["Privacy group not found."] = "Grupo de canales no encontrado.";
$a->strings["Privacy group is empty."] = "El grupo de canales está vacío.";
$a->strings["Privacy group: %s"] = "Grupo de canales: %s";
$a->strings["Connection: %s"] = "Conexión: %s";
$a->strings["Connection not found."] = "Conexión no encontrada";
$a->strings["female"] = "mujer";
$a->strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s";
$a->strings["male"] = "hombre";
$a->strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s";
$a->strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s";
$a->strings["profile photo"] = "foto del perfil";
$a->strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí";
$a->strings["network"] = "red";
$a->strings["RSS"] = "RSS";
@ -1497,9 +1497,9 @@ $a->strings["Your nickname will be used to create an easy to remember channel ad
$a->strings["Channel role and privacy"] = "Clase de canal y privacidad";
$a->strings["Select a channel role with your privacy requirements."] = "Seleccione un tipo de canal con sus requisitos de privacidad";
$a->strings["Read more about roles"] = "Leer más sobre los roles";
$a->strings["Create a Channel"] = "Crear un canal";
$a->strings["A channel is your identity on the grid. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal es su identidad en la red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con distintos permisos extremadamente detallados.";
$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "O <a href=\"import\">importar un canal existente</a> de otro lugar";
$a->strings["Create Channel"] = "Crear un canal";
$a->strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada.";
$a->strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal existente</a> desde otro lugar.";
$a->strings["Invalid request identifier."] = "Petición inválida del identificador.";
$a->strings["Discard"] = "Descartar";
$a->strings["No more system notifications."] = "No hay más notificaciones del sistema";
@ -1734,6 +1734,7 @@ $a->strings["Maintainer: "] = "Mantenedor:";
$a->strings["Minimum project version: "] = "Versión mínima del proyecto:";
$a->strings["Maximum project version: "] = "Versión máxima del proyecto:";
$a->strings["Minimum PHP version: "] = "Versión mínima de PHP:";
$a->strings["Requires: "] = "Se requiere:";
$a->strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles";
$a->strings["No themes found."] = "No se han encontrado temas.";
$a->strings["Screenshot"] = "Instantánea de pantalla";
@ -1843,16 +1844,11 @@ $a->strings["Invalid profile identifier."] = "Identificador del perfil no válid
$a->strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil";
$a->strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadirlo o eliminarlo.";
$a->strings["Visible To"] = "Visible para";
$a->strings["Public Sites"] = "Sitios públicos";
$a->strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público en la red \$Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los enlaces de los proveedores <strong> pueden </strong> proporcionar detalles adicionales.";
$a->strings["Rate this hub"] = "Valorar este sitio";
$a->strings["Site URL"] = "Dirección del sitio";
$a->strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público en la red \$Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales.";
$a->strings["Hub URL"] = "Dirección del hub";
$a->strings["Access Type"] = "Tipo de acceso";
$a->strings["Registration Policy"] = "Normas de registro";
$a->strings["Project"] = "Proyecto";
$a->strings["View hub ratings"] = "Ver las valoraciones del sitio";
$a->strings["Rate"] = "Valorar";
$a->strings["View ratings"] = "Ver valoraciones";
$a->strings["Website:"] = "Sitio web:";
$a->strings["Remote Channel [%s] (not yet known on this site)"] = "Canal remoto [%s] (aún no es conocido en este sitio)";
$a->strings["Rating (this information is public)"] = "Valoración (esta información es pública)";
@ -1871,22 +1867,21 @@ $a->strings["Passwords do not match."] = "Las contraseñas no coinciden.";
$a->strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo.";
$a->strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio.";
$a->strings["Your registration can not be processed."] = "Su registro no puede ser procesado.";
$a->strings["Registration on this site is disabled."] = "El registro está deshabilitado en este sitio.";
$a->strings["Registration on this site/hub is by approval only."] = "El registro en este servidor/hub está sometido a aprobación previa.";
$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Inscribirse en un servidor/hub afiliado</a>";
$a->strings["Registration on this hub is disabled."] = "El registro está deshabilitado en este sitio.";
$a->strings["Registration on this hub is by approval only."] = "El registro en este hub está sometido a aprobación previa.";
$a->strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>";
$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana.";
$a->strings["Terms of Service"] = "Términos del servicio";
$a->strings["I accept the %s for this website"] = "Acepto los %s de este sitio";
$a->strings["I am over 13 years of age and accept the %s for this website"] = "Tengo más de 13 años de edad y acepto los %s de este sitio";
$a->strings["Membership on this site is by invitation only."] = "Para registrarse en este sitio es necesaria una invitación.";
$a->strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación";
$a->strings["Enter your name"] = "Su nombre";
$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Su alias podrá usarse para crear una dirección de canal fácilmente memorizable (como una dirección de correo electrónico) que puede ser compartido con otros.";
$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Elija el tipo de canal (como red social o foro de discusión) y la privacidad que requiera, así podremos seleccionar el mejor conjunto de permisos para usted";
$a->strings["Channel Type"] = "Tipo de canal";
$a->strings["Your email address"] = "Su dirección de correo electrónico";
$a->strings["Choose a password"] = "Elija una contraseña";
$a->strings["Please re-enter your password"] = "Por favor, vuelva a escribir su contraseña";
$a->strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación";
$a->strings["no"] = "no";
$a->strings["yes"] = "";
$a->strings["Membership on this site is by invitation only."] = "Para registrarse en este sitio es necesaria una invitación.";
$a->strings["Proceed to create your first channel"] = "Crear su primer canal";
$a->strings["Please login."] = "Por favor, inicie sesión.";
$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña.";
$a->strings["Remove This Account"] = "Eliminar esta cuenta";
@ -2226,6 +2221,7 @@ $a->strings["Xchan Lookup"] = "Búsqueda de canales";
$a->strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:";
$a->strings["Cover Photos"] = "Imágenes de portada del perfil";
$a->strings["Upload Cover Photo"] = "Subir imagen de portada del perfil";
$a->strings["Permissions denied."] = "Permisos denegados.";
$a->strings["Focus (Hubzilla default)"] = "Focus (predefinido)";
$a->strings["Theme settings"] = "Ajustes del tema";
$a->strings["Select scheme"] = "Elegir un esquema";

View File

@ -295,7 +295,7 @@ footer {
.vcard {
margin-bottom: 10px;
padding: 10px;
padding: 0px 10px 10px 10px;
background-color: rgba(254,254,254,0.5);
border: 1px solid rgba(254,254,254,0.5);
-moz-border-radius: $radiuspx;
@ -341,9 +341,7 @@ footer {
#profile-photo-wrapper {
width: 251px;
height: 251px;
margin-top: -10px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: $radiuspx;
}
@ -1142,7 +1140,6 @@ img.mail-conv-sender-photo {
.jothidden {
font-weight: bold;
border-radius: $radiuspx;
}
.jothidden input::-webkit-input-placeholder {
@ -1153,30 +1150,26 @@ img.mail-conv-sender-photo {
font-weight: bold;
}
.jothidden > input {
border: 1px solid transparent;
background-color: transparent;
}
.jothidden > input:hover,
.jothidden > input:focus {
border: 1px solid #cccccc;
background-color: #fff;
}
#profile-jot-wrapper {
background-color: rgba(254,254,254,.5);
border: 1px solid rgba(254,254,254,.5);
background-color: rgba(254,254,254,1);
border: 1px solid #ccc;
border-radius: $radiuspx;
}
#profile-jot-text {
color:#000;
border: 1px solid #cccccc;
-moz-border-radius: $radiuspx;
resize: none;
border-width: 0px;
border-radius: $radiuspx;
}
#profile-jot-text:focus {
resize: vertical;
}
#profile-jot-text::-webkit-input-placeholder {
font-size:16px;
}
@ -1243,6 +1236,11 @@ img.mail-conv-sender-photo {
font-size: $font_size;
}
.wall-item-footer {
font-size: $body_font_size;
margin-top: 2em;
}
.wall-item-content-wrapper {
background-color: $item_colour;
border-top-right-radius: $radiuspx;
@ -1510,7 +1508,7 @@ nav .dropdown-menu {
.section-content-tools-wrapper {
padding: 7px 10px;
background-color: $comment_item_colour;
border-bottom: 3px solid $comment_item_colour;
border-bottom: 3px solid comment_item_colour;
}
.section-content-info-wrapper {
@ -1704,9 +1702,8 @@ nav .badge.mail-update:hover {
.nav-tabs.nav-justified {
background-color: rgba(254,254,254,.5);
border: 1px solid rgba(254,254,254,.5);
border-top-left-radius: $radiuspx;
border-top-right-radius: $radiuspx;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.nav-tabs.nav-justified > .active > a,
@ -1819,13 +1816,13 @@ nav .badge.mail-update:hover {
/* Modified original CSS to match input in Redbasic */
.jothidden .bootstrap-tagsinput {
border-color: $bgcolour;
background-color: $bgcolour;
border: 0px solid transparent;
margin-bottom: 0px;
box-shadow: none;
display: inline-block;
border-radius: $radiuspx;
cursor: text;
padding: 0px 8px;
padding: 0px 10px;
width: 100%;
}
@ -1833,11 +1830,6 @@ nav .badge.mail-update:hover {
font-size: 100%;
}
.jothidden .bootstrap-tagsinput:hover, .jothidden .bootstrap-tagsinput:focus {
border: 1px solid #ccc;
background-color: #fff;
}
/* Abusing theme-green is less work than makeing a new new one */
.theme-green .back-bar .selected-bar { background-color: #000000; background-image: none; !important }

View File

@ -1,7 +1,7 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<div class="pull-right">
<button class="btn btn-success btn-xs" onclick="openClose('form'); closeMenu('event-tools');">{{$new_event.1}}</button>
<button class="btn btn-success btn-xs" onclick="openClose('form');">{{$new_event.1}}</button>
<div class="btn-group">
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="icon-backward"></i></button>
<button id="events-spinner" class="btn btn-default btn-xs" onclick="changeView('today', false);" title="{{$today}}"><i class="icon-bullseye"></i></button>

View File

@ -1,4 +1,4 @@
<div class='form-group field input'>
<div id="id_{{$field.0}}_wrapper" class='form-group field input'>
<label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}{{if $field.4}}<span class="required"> {{$field.4}}</span>{{/if}}</label>
<input class="form-control" name='{{$field.0}}' id='id_{{$field.0}}' type="text" value="{{$field.2}}"{{if $field.5}} {{$field.5}}{{/if}}>
<span id='help_{{$field.0}}' class='help-block'>{{$field.3}}</span>

View File

@ -1,3 +1,10 @@
{{$mimeselect}}
{{$layoutselect}}
{{if $id_select}}
<div class="channel-id-select-div">
<span class="channel-id-select-desc">{{$id_seltext}}</span> {{$id_select}}
</div>
{{/if}}
<div id="profile-jot-wrapper">
<form id="profile-jot-form" action="{{$action}}" method="post">
{{if $parent}}
@ -17,13 +24,7 @@
<input type="hidden" name="preview" id="jot-preview" value="0" />
<input type="hidden" id="jot-consensus" name="consensus" value="{{if $consensus}}{{$consensus}}{{else}}0{{/if}}" />
{{if $showacl}}{{$acl}}{{/if}}
{{$mimeselect}}
{{$layoutselect}}
{{if $id_select}}
<div class="channel-id-select-div">
<span class="channel-id-select-desc">{{$id_seltext}}</span> {{$id_select}}
</div>
{{/if}}
{{if $webpage}}
<div id="jot-pagetitle-wrap" class="jothidden">
<input name="pagetitle" id="jot-pagetitle" type="text" placeholder="{{$placeholdpagetitle}}" value="{{$pagetitle}}">
@ -159,10 +160,11 @@
</div>
<div id="profile-jot-text-loading"></div>
<div id="profile-jot-end" class="clear"></div>
<div id="jot-preview-content" style="display:none;"></div>
</form>
</div>
<div id="jot-preview-content" style="display:none;"></div>
<!-- Modal for item expiry-->
<div class="modal" id="expiryModal" tabindex="-1" role="dialog" aria-labelledby="expiryModalLabel" aria-hidden="true">
<div class="modal-dialog">

View File

@ -26,7 +26,7 @@
<div id="body-textarea">
{{include file="field_textarea.tpl" field=$body}}
</div>
<div class="pull-right btn-group form-group">
<div class="pull-right btn-group">
<div class="btn-group">
{{if $lockstate}}
<button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">

View File

@ -12,194 +12,260 @@
<i class="icon-thumbs-up-alt" title="{{$profile.likethis}}"></i>
</button>
{{/if}}
{{if $edit}}
<a href="{{$edit.link}}" class="btn btn-primary btn-xs"><i class="icon-pencil"></i>&nbsp;{{$edit.label}}</a>
{{if $editmenu.multi}}
<a class="btn btn-primary btn-xs dropdown-toggle" data-toggle="dropdown" href="#" ><i class="icon-pencil"></i>&nbsp;{{$editmenu.edit.3}}</a>
<ul class="dropdown-menu" role="menu">
{{foreach $editmenu.menu.entries as $e}}
<li>
<a href="profiles/{{$e.id}}"><img class="dropdown-menu-img-xs" src='{{$e.photo}}'>{{$e.profile_name}}<div class='clear'></div></a>
</li>
{{/foreach}}
<li><a href="profile_photo" >{{$editmenu.menu.chg_photo}}</a></li>
{{if $editmenu.menu.cr_new}}<li><a href="profiles/new" id="profile-listing-new-link">{{$editmenu.menu.cr_new}}</a></li>{{/if}}
</ul>
{{elseif $editmenu}}
<a class="btn btn-primary btn-xs" href="{{$editmenu.edit.0}}" ><i class="icon-pencil"></i>&nbsp;{{$editmenu.edit.3}}</a>
{{/if}}
</div>
<h2>{{$title}}</h2>
<div class="clear"></div>
</div>
<div class="section-content-wrapper">
<dl id="aprofile-fullname" class="aprofile">
<dt>{{$profile.fullname.0}}</dt>
<dd>{{$profile.fullname.1}}</dd>
</dl>
{{foreach $fields as $f}}
{{if $f == 'name'}}
<dl id="aprofile-fullname" class="aprofile">
<dt>{{$profile.fullname.0}}</dt>
<dd>{{$profile.fullname.1}}</dd>
</dl>
{{/if}}
{{if $f == 'gender'}}
{{if $profile.gender}}
<dl id="aprofile-gender" class="aprofile">
<dt>{{$profile.gender.0}}</dt>
<dd>{{$profile.gender.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'birthday'}}
{{if $profile.birthday}}
<dl id="aprofile-birthday" class="aprofile">
<dt>{{$profile.birthday.0}}</dt>
<dd>{{$profile.birthday.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'age'}}
{{if $profile.age}}
<dl id="aprofile-age" class="aprofile">
<dt>{{$profile.age.0}}</dt>
<dd>{{$profile.age.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'marital'}}
{{if $profile.marital}}
<dl id="aprofile-marital" class="aprofile">
<dt><span class="heart">&hearts;</span> {{$profile.marital.0}}</dt>
<dd>{{$profile.marital.1}}{{if $profile.marital.with}} ({{$profile.marital.with}}){{/if}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'sexual'}}
{{if $profile.sexual}}
<dl id="aprofile-sexual" class="aprofile">
<dt>{{$profile.sexual.0}}</dt>
<dd>{{$profile.sexual.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'keywords'}}
{{if $profile.keywords}}
<dl id="aprofile-tags" class="aprofile">
<dt>{{$profile.keywords.0}}</dt>
<dd>{{$profile.keywords.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'homepage'}}
{{if $profile.homepage}}
<dl id="aprofile-homepage" class="aprofile">
<dt>{{$profile.homepage.0}}</dt>
<dd>{{$profile.homepage.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'hometown'}}
{{if $profile.hometown}}
<dl id="aprofile-hometown" class="aprofile">
<dt>{{$profile.hometown.0}}</dt>
<dd>{{$profile.hometown.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'politic'}}
{{if $profile.politic}}
<dl id="aprofile-politic" class="aprofile">
<dt>{{$profile.politic.0}}</dt>
<dd>{{$profile.politic.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'religion'}}
{{if $profile.religion}}
<dl id="aprofile-religion" class="aprofile">
<dt>{{$profile.religion.0}}</dt>
<dd>{{$profile.religion.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'about'}}
{{if $profile.about}}
<dl id="aprofile-about" class="aprofile">
<dt>{{$profile.about.0}}</dt>
<dd>{{$profile.about.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'interest'}}
{{if $profile.interest}}
<dl id="aprofile-interest" class="aprofile">
<dt>{{$profile.interest.0}}</dt>
<dd>{{$profile.interest.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'likes'}}
{{if $profile.likes}}
<dl id="aprofile-likes" class="aprofile">
<dt>{{$profile.likes.0}}</dt>
<dd>{{$profile.likes.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'dislikes'}}
{{if $profile.dislikes}}
<dl id="aprofile-dislikes" class="aprofile">
<dt>{{$profile.dislikes.0}}</dt>
<dd>{{$profile.dislikes.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'contact'}}
{{if $profile.contact}}
<dl id="aprofile-contact" class="aprofile">
<dt>{{$profile.contact.0}}</dt>
<dd>{{$profile.contact.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'channels'}}
{{if $profile.channels}}
<dl id="aprofile-channels" class="aprofile">
<dt>{{$profile.channels.0}}</dt>
<dd>{{$profile.channels.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'music'}}
{{if $profile.music}}
<dl id="aprofile-music" class="aprofile">
<dt>{{$profile.music.0}}</dt>
<dd>{{$profile.music.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'book'}}
{{if $profile.book}}
<dl id="aprofile-book" class="aprofile">
<dt>{{$profile.book.0}}</dt>
<dd>{{$profile.book.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'tv'}}
{{if $profile.tv}}
<dl id="aprofile-tv" class="aprofile">
<dt>{{$profile.tv.0}}</dt>
<dd>{{$profile.tv.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'film'}}
{{if $profile.film}}
<dl id="aprofile-film" class="aprofile">
<dt>{{$profile.film.0}}</dt>
<dd>{{$profile.film.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'romance'}}
{{if $profile.romance}}
<dl id="aprofile-romance" class="aprofile">
<dt>{{$profile.romance.0}}</dt>
<dd>{{$profile.romance.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'work'}}
{{if $profile.work}}
<dl id="aprofile-work" class="aprofile">
<dt>{{$profile.work.0}}</dt>
<dd>{{$profile.work.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{if $f == 'education'}}
{{if $profile.education}}
<dl id="aprofile-education" class="aprofile">
<dt>{{$profile.education.0}}</dt>
<dd>{{$profile.education.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{foreach $profile.extra_fields as $f}}
{{if $profile.$f}}
<dl id="aprofile-{{$f}}" class="aprofile">
<dt>{{$profile.$f.0}}</dt>
<dd>{{$profile.$f.1}}</dd>
{{foreach $profile.extra_fields as $fld}}
{{if $f == $fld}}
{{if $profile.$fld}}
<dl id="aprofile-{{$fld}}" class="aprofile">
<dt>{{$profile.$fld.0}}</dt>
<dd>{{$profile.$fld.1}}</dd>
</dl>
{{/if}}
{{/if}}
{{/foreach}}
{{/foreach}}
{{if $things}}

View File

@ -6,19 +6,21 @@
<div class="connect-btn-wrapper"><a href="{{$connect_url}}" class="btn btn-block btn-success btn-sm"><i class="icon-plus"></i> {{$connect}}</a></div>
{{/if}}
{{if ! $zcard}}
{{if $profile.edit}}
{{if $editmenu.multi}}
<div class="dropdown">
<a class="profile-edit-side-link dropdown-toggle" data-toggle="dropdown" title="{{$profile.edit.3}}" href="#" ><i class="icon-pencil" title="{{$profile.edit.1}}" ></i></a>
<a class="profile-edit-side-link dropdown-toggle" data-toggle="dropdown" href="#" ><i class="icon-pencil" title="{{$editmenu.edit.1}}"></i></a>
<ul class="dropdown-menu" role="menu">
{{foreach $profile.menu.entries as $e}}
{{foreach $editmenu.menu.entries as $e}}
<li>
<a href="profiles/{{$e.id}}"><img class="dropdown-menu-img-xs" src='{{$e.photo}}'>{{$e.profile_name}}<div class='clear'></div></a>
<a href="profiles/{{$e.id}}"><img class="dropdown-menu-img-xs" src='{{$e.photo}}'>{{$e.profile_name}}</a>
</li>
{{/foreach}}
<li><a href="profile_photo" >{{$profile.menu.chg_photo}}</a></li>
{{if $profile.menu.cr_new}}<li><a href="profiles/new" id="profile-listing-new-link">{{$profile.menu.cr_new}}</a></li>{{/if}}
<li><a href="profile_photo" >{{$editmenu.menu.chg_photo}}</a></li>
{{if $editmenu.menu.cr_new}}<li><a href="profiles/new" id="profile-listing-new-link">{{$editmenu.menu.cr_new}}</a></li>{{/if}}
</ul>
</div>
{{elseif $editmenu}}
<a class="profile-edit-side-link" href="{{$editmenu.edit.0}}" ><i class="icon-pencil" title="{{$editmenu.edit.1}}"></i></a>
{{/if}}
{{/if}}
@ -27,9 +29,6 @@
{{if $reddress}}<div class="reddress" oncopy="return false;">{{$profile.reddress}}</div>{{/if}}
{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr">
@ -46,7 +45,6 @@
{{if $gender}}<dl class="mf"><dt class="gender-label">{{$gender}}</dt> <dd class="x-gender">{{$profile.gender}}</dd></dl>{{/if}}
{{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
{{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url">{{$profile.homepage}}</dd></dl>{{/if}}