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 ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc'))); 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 ( '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'); $channel_address = (($c) ? $c[0]['channel_address'] : 'notfound');
$photo_sql = (($is_photo) ? " and is_photo = 1 " : ''); $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), dbesc($resource),
intval($channel_id) intval($channel_id)
); );
@ -1471,7 +1471,7 @@ function pipe_streams($in, $out) {
* @param string $deny_cid * @param string $deny_cid
* @param string $deny_gid * @param string $deny_gid
* @param string $verb * @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) { 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(); $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_wall'] = 1;
$arr['item_origin'] = 1; $arr['item_origin'] = 1;
$arr['item_unseen'] = 1; $arr['item_unseen'] = 1;
$arr['author_xchan'] = $poster['xchan_hash'];
$objtype = ACTIVITY_OBJ_FILE; $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); $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,
} }
if($update && $verb == 'post' ) {
//send update activity and create a new one //send update activity and create a new one
if($update && $verb == 'post' ) {
//updates should be sent to everybody with recursive perms and all eventual former allowed members ($object['allow_cid'] etc.). //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_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']))); $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(); $u_mid = item_message_id();
$arr['aid'] = get_account_id();
$arr['uid'] = $channel_id;
$arr['mid'] = $u_mid; $arr['mid'] = $u_mid;
$arr['parent_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_cid'] = perms2str($u_arr_allow_cid);
$arr['allow_gid'] = perms2str($u_arr_allow_gid); $arr['allow_gid'] = perms2str($u_arr_allow_gid);
$arr['deny_cid'] = perms2str($u_arr_deny_cid); $arr['deny_cid'] = perms2str($u_arr_deny_cid);
$arr['deny_gid'] = perms2str($u_arr_deny_gid); $arr['deny_gid'] = perms2str($u_arr_deny_gid);
$arr['item_hidden'] = 1;
$arr['item_private'] = $private; $arr['item_private'] = $private;
$arr['verb'] = ACTIVITY_UPDATE; $arr['verb'] = ACTIVITY_UPDATE;
$arr['obj_type'] = $objtype;
$arr['object'] = $u_jsonobject; $arr['object'] = $u_jsonobject;
$arr['resource_id'] = $object['hash'];
$arr['resource_type'] = 'attach';
$arr['body'] = ''; $arr['body'] = '';
$post = item_store($arr); $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); //notice( t('File activity updated') . EOL);
} }
//don't create new activity if notify was not enabled
if(! $notify) { if(! $notify) {
return; 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['mid'] = $mid;
$arr['parent_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_cid'] = perms2str($arr_allow_cid);
$arr['allow_gid'] = perms2str($arr_allow_gid); $arr['allow_gid'] = perms2str($arr_allow_gid);
$arr['deny_cid'] = perms2str($arr_deny_cid); $arr['deny_cid'] = perms2str($arr_deny_cid);
$arr['deny_gid'] = perms2str($arr_deny_gid); $arr['deny_gid'] = perms2str($arr_deny_gid);
$arr['item_hidden'] = 1;
$arr['item_private'] = $private; $arr['item_private'] = $private;
$arr['verb'] = (($update) ? ACTIVITY_UPDATE : ACTIVITY_POST); $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['object'] = (($update) ? $u_jsonobject : $jsonobject);
$arr['body'] = ''; $arr['body'] = '';

View File

@ -686,6 +686,10 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
if (strpos($Text,'[/center]') !== false) { 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 // Check for list text
$Text = str_replace("[*]", "<li>", $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) { function del_aconfig($account_id, $family, $key) {
return del_xconfig('a_' . $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') if(intval(OPENSSL_ALGO_SHA256) && $alg === 'sha256')
$alg = OPENSSL_ALGO_SHA256; $alg = OPENSSL_ALGO_SHA256;
$verify = openssl_verify($data,$sig,$key,$alg); $verify = @openssl_verify($data,$sig,$key,$alg);
if(! $verify) { if(! $verify) {
logger('openssl_verify: ' . openssl_error_string(),LOGGER_NORMAL,LOG_ERR); 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) { if($r) {
$ret['abook'] = $r; $ret['abook'] = $r;
foreach($r as $rr) for($x = 0; $x < count($ret['abook']); $x ++) {
$xchans[] = $rr['abook_xchan']; $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); 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. * @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']); head_set_icon($profile['thumb']);
$is_owner = (($profile['uid'] == local_channel()) ? true : false);
if(is_sys_channel($profile['uid'])) if(is_sys_channel($profile['uid']))
$show_connect = false; $show_connect = false;
$profile['picdate'] = urlencode($profile['picdate']); $profile['picdate'] = urlencode($profile['picdate']);
call_hooks('profile_sidebar_enter', $profile); 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']; $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) if((x($profile,'address') == 1)
|| (x($profile,'locality') == 1) || (x($profile,'locality') == 1)
|| (x($profile,'region') == 1) || (x($profile,'region') == 1)
@ -1075,6 +1088,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
'$reddress' => $reddress, '$reddress' => $reddress,
'$rating' => $z, '$rating' => $z,
'$contact_block' => $contact_block, '$contact_block' => $contact_block,
'$editmenu' => profile_edit_menu($profile['uid'])
)); ));
$arr = array('profile' => &$profile, 'entry' => &$o); $arr = array('profile' => &$profile, 'entry' => &$o);
@ -1239,6 +1253,24 @@ function advanced_profile(&$a) {
if($a->profile['name']) { 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'); $tpl = get_markup_template('profile_advanced.tpl');
$profile = array(); $profile = array();
@ -1347,10 +1379,6 @@ function advanced_profile(&$a) {
$profile['extra_fields'] = $a->profile['extra_fields']; $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']); $things = get_things($a->profile['profile_guid'],$a->profile['profile_uid']);
// logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA); // logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA);
@ -1360,7 +1388,8 @@ function advanced_profile(&$a) {
'$canlike' => (($profile['canlike'])? true : false), '$canlike' => (($profile['canlike'])? true : false),
'$likethis' => t('Like this thing'), '$likethis' => t('Like this thing'),
'$profile' => $profile, '$profile' => $profile,
'$edit' => $edit, '$fields' => $clean_fields,
'$editmenu' => profile_edit_menu($a->profile['profile_uid']),
'$things' => $things '$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); $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 . ']' $obj_body = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
. $tag . z_root() . "/photo/{$photo_hash}-{$scale}." . $ph->getExt() . '[/zmg]' . $tag . z_root() . "/photo/{$photo_hash}-{$scale}." . $ph->getExt() . '[/zmg]'

View File

@ -1197,7 +1197,7 @@ function widget_forums($arr) {
$perms_sql = item_permissions_sql(local_channel()) . item_normal(); $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_TAGWALL),
intval(PERMS_W_STREAM), intval(PERMS_W_STREAM),
intval(local_channel()) 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_id']);
unset($new_connection[0]['abook_account']); unset($new_connection[0]['abook_account']);
unset($new_connection[0]['abook_channel']); 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)); 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); logger('build_sync_packet: packet: ' . print_r($info,true), LOGGER_DATA, LOG_DEBUG);
$total = count($synchubs);
foreach($synchubs as $hub) { foreach($synchubs as $hub) {
$hash = random_string(); $hash = random_string();
$n = zot_build_packet($channel,'notify',$env_recips,$hub['hubloc_sitekey'],$hash); $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); proc_run('php', 'include/deliver.php', $hash);
if($interval) $total = $total - 1;
if($interval && $total)
@time_sleep_until(microtime(true) + (float) $interval); @time_sleep_until(microtime(true) + (float) $interval);
} }
} }
@ -3120,6 +3129,11 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
foreach($arr['abook'] as $abook) { 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)) { if(! array_key_exists('abook_blocked',$abook)) {
// convert from redmatrix // convert from redmatrix
$abook['abook_blocked'] = (($abook['abook_flags'] & 0x0001) ? 1 : 0); $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` ( CREATE TABLE IF NOT EXISTS `abook` (
`abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`abook_account` int(10) unsigned NOT NULL DEFAULT '0', `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" ( CREATE TABLE "abook" (
"abook_id" serial NOT NULL, "abook_id" serial NOT NULL,
"abook_account" bigint NOT NULL, "abook_account" bigint NOT NULL,
@ -547,7 +560,7 @@ CREATE TABLE "iconfig" (
"k" text NOT NULL DEFAULT '', "k" text NOT NULL DEFAULT '',
"v" text NOT NULL DEFAULT '', "v" text NOT NULL DEFAULT '',
"sharing" int NOT NULL DEFAULT '0', "sharing" int NOT NULL DEFAULT '0',
PRIMARY_KEY("id") PRIMARY KEY("id")
); );
create index "iconfig_iid" on iconfig ("iid"); create index "iconfig_iid" on iconfig ("iid");
create index "iconfig_cat" on iconfig ("cat"); create index "iconfig_cat" on iconfig ("cat");

View File

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1164 ); define( 'UPDATE_VERSION' , 1165 );
/** /**
* *
@ -2019,3 +2019,42 @@ function update_r1163() {
return UPDATE_SUCCESS; return UPDATE_SUCCESS;
return UPDATE_FAILED; 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) if(! $a->poi)
return; return;
$channel = $a->get_channel();
$r = q("SELECT abook.*, xchan.* $r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d and abook_id = %d LIMIT 1", 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_account']);
unset($clone['abook_channel']); 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))); 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']; $return_url = $_SESSION['return_url'];
$confirm = intval($_REQUEST['confirm']); $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['success'] == false) {
if($result['message']) if($result['message'])
@ -34,6 +36,10 @@ function follow_init(&$a) {
unset($clone['abook_account']); unset($clone['abook_account']);
unset($clone['abook_channel']); 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))); 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) { if($abooks) {
foreach($abooks as $abook) { 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_id']);
unset($abook['abook_rating']); unset($abook['abook_rating']);
unset($abook['abook_rating_text']); unset($abook['abook_rating_text']);
@ -382,6 +386,17 @@ function import_account(&$a, $account_id) {
$friends ++; $friends ++;
if(intval($abook['abook_feed'])) if(intval($abook['abook_feed']))
$feeds ++; $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'); 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; 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-title-wrap input,
#jot-pagetitle-wrap input { #jot-pagetitle-wrap input {
padding: 8px; padding: 10px;
margin-bottom: 5px;
} }
.profile-jot-text { .profile-jot-text {
height: 39px; height: 39px;
padding: 8px; padding: 10px;
width: 100%; width: 100%;
} }
.jot-attachment { .jot-attachment {
padding: 8px; border: 0px;
padding: 10px;
width: 100%; width: 100%;
} }
@ -42,13 +52,18 @@ code {
} }
#profile-jot-submit-wrapper { #profile-jot-submit-wrapper {
margin-top: 10px; border-top: 1px solid #ccc;
padding: 10px;
} }
#profile-jot-perms-end { #profile-jot-perms-end {
height: 30px; height: 30px;
} }
#profile-jot-form {
line-height: initial;
}
#profile-jot-wrapper { #profile-jot-wrapper {
margin-bottom: 30px; margin-bottom: 30px;
} }
@ -194,6 +209,7 @@ a.wall-item-name-link {
padding: 8px; padding: 8px;
height: 150px; height: 150px;
overflow: auto; overflow: auto;
resize: vertical;
} }
.qcomment { .qcomment {

View File

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

View File

@ -25,7 +25,7 @@
} }
#photos-upload-choose { #photos-upload-choose {
padding: 4px; padding: 7px 10px;
width: 100%; 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", 1 => "%d conexiones en común",
); );
$a->strings["show more"] = "mostrar más"; $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["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["Directory Options"] = "Opciones del directorio";
$a->strings["Safe Mode"] = "Modo seguro"; $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["Public Forums Only"] = "Solo foros públicos";
$a->strings["This Website Only"] = "Solo este sitio web"; $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["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["Not specified"] = "Sin especificar";
$a->strings["Needs Action"] = "Necesita de una intervención"; $a->strings["Needs Action"] = "Necesita de una intervención";
$a->strings["Completed"] = "Completado/a"; $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["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["local account not found."] = "No se ha encontrado la cuenta local.";
$a->strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo."; $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["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["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."; $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["End this session"] = "Finalizar esta sesión";
$a->strings["Home"] = "Inicio"; $a->strings["Home"] = "Inicio";
$a->strings["Your posts and conversations"] = "Sus publicaciones y conversaciones"; $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["Your profile page"] = "Su página del perfil";
$a->strings["Edit Profiles"] = "Editar perfiles"; $a->strings["Edit Profiles"] = "Editar perfiles";
$a->strings["Manage/Edit profiles"] = "Administrar/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["Account/Channel Settings"] = "Ajustes de cuenta/canales";
$a->strings["Admin"] = "Administrador"; $a->strings["Admin"] = "Administrador";
$a->strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio"; $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["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido";
$a->strings["Please wait..."] = "Espere por favor…"; $a->strings["Please wait..."] = "Espere por favor…";
$a->strings["created a new post"] = "ha creado una nueva entrada"; $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["commented on %s's post"] = "ha comentado la entrada de %s";
$a->strings["New Page"] = "Nueva página"; $a->strings["New Page"] = "Nueva página";
$a->strings["View"] = "Ver"; $a->strings["View"] = "Ver";
$a->strings["Preview"] = "Previsualizar";
$a->strings["Actions"] = "Acciones"; $a->strings["Actions"] = "Acciones";
$a->strings["Page Link"] = "Vínculo de la página"; $a->strings["Page Link"] = "Vínculo de la página";
$a->strings["Title"] = "Título"; $a->strings["Title"] = "Título";
$a->strings["Created"] = "Creado"; $a->strings["Created"] = "Creado";
$a->strings["Edited"] = "Editado"; $a->strings["Edited"] = "Editado";
$a->strings["Profile Photos"] = "Fotos del perfil"; $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["Male"] = "Hombre";
$a->strings["Female"] = "Mujer"; $a->strings["Female"] = "Mujer";
$a->strings["Currently Male"] = "Actualmente hombre"; $a->strings["Currently Male"] = "Actualmente hombre";
@ -615,6 +409,46 @@ $a->strings["like"] = "me gusta";
$a->strings["likes"] = "gusta de"; $a->strings["likes"] = "gusta de";
$a->strings["dislike"] = "no me gusta"; $a->strings["dislike"] = "no me gusta";
$a->strings["dislikes"] = "no gusta de"; $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["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 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"; $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["Thank You,"] = "Gracias,";
$a->strings["%s Administrator"] = "%s Administrador"; $a->strings["%s Administrator"] = "%s Administrador";
$a->strings["No Subject"] = "Sin asunto"; $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["General Features"] = "Funcionalidades básicas";
$a->strings["Content Expiration"] = "Caducidad del contenido"; $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"; $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["Network and Stream Filtering"] = "Filtrado del contenido";
$a->strings["Search by Date"] = "Buscar por fecha"; $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["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["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["Saved Searches"] = "Búsquedas guardadas";
$a->strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización"; $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["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["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["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["System"] = "Sistema";
$a->strings["Personal"] = "Personales";
$a->strings["Create Personal App"] = "Crear una aplicación personal"; $a->strings["Create Personal App"] = "Crear una aplicación personal";
$a->strings["Edit Personal App"] = "Editar una aplicación personal"; $a->strings["Edit Personal App"] = "Editar una aplicación personal";
$a->strings["Ignore/Hide"] = "Ignorar/Ocultar"; $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["Notes"] = "Notas";
$a->strings["Save"] = "Guardar"; $a->strings["Save"] = "Guardar";
$a->strings["Remove term"] = "Eliminar término"; $a->strings["Remove term"] = "Eliminar término";
$a->strings["add"] = "añadir";
$a->strings["Archives"] = "Hemeroteca"; $a->strings["Archives"] = "Hemeroteca";
$a->strings["Me"] = "Yo"; $a->strings["Me"] = "Yo";
$a->strings["Family"] = "Familia"; $a->strings["Family"] = "Familia";
@ -811,6 +634,7 @@ $a->strings["newer"] = "más recientes";
$a->strings["No connections"] = "Sin conexiones"; $a->strings["No connections"] = "Sin conexiones";
$a->strings["View all %s connections"] = "Ver todas las %s conexiones"; $a->strings["View all %s connections"] = "Ver todas las %s conexiones";
$a->strings["poke"] = "un toque"; $a->strings["poke"] = "un toque";
$a->strings["poked"] = "ha dado un toque a";
$a->strings["ping"] = "un \"ping\""; $a->strings["ping"] = "un \"ping\"";
$a->strings["pinged"] = "ha enviado un \"ping\" a"; $a->strings["pinged"] = "ha enviado un \"ping\" a";
$a->strings["prod"] = "una incitación "; $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["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["Page content type"] = "Tipo de contenido de página";
$a->strings["Select an alternate language"] = "Seleccionar un idioma alternativo"; $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["activity"] = "la actividad";
$a->strings["Design Tools"] = "Herramientas de diseño"; $a->strings["Design Tools"] = "Herramientas de diseño";
$a->strings["Blocks"] = "Bloques"; $a->strings["Blocks"] = "Bloques";
$a->strings["Menus"] = "Menús"; $a->strings["Menus"] = "Menús";
$a->strings["Layouts"] = "Formato gráfico"; $a->strings["Layouts"] = "Formato gráfico";
$a->strings["Pages"] = "Páginas"; $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["%s <!item_type!>"] = "%s <!item_type!>";
$a->strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Aviso] Nuevo mensaje en %s"; $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."; $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["cover photo"] = "Imagen de portada del perfil";
$a->strings["Embedded content"] = "Contenido incorporado"; $a->strings["Embedded content"] = "Contenido incorporado";
$a->strings["Embedding disabled"] = "Incrustación deshabilitada"; $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["Save to Folder"] = "Guardar en carpeta";
$a->strings["I will attend"] = "Participaré"; $a->strings["I will attend"] = "Participaré";
$a->strings["I will not attend"] = "No 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 - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada";
$a->strings["Special - Group Repository"] = "Especial - Repositorio de grupo"; $a->strings["Special - Group Repository"] = "Especial - Repositorio de grupo";
$a->strings["Custom/Expert Mode"] = "Modo personalizado/experto"; $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["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["network"] = "red";
$a->strings["RSS"] = "RSS"; $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["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["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["Read more about roles"] = "Leer más sobre los roles";
$a->strings["Create a Channel"] = "Crear un canal"; $a->strings["Create 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["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> de otro lugar"; $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["Invalid request identifier."] = "Petición inválida del identificador.";
$a->strings["Discard"] = "Descartar"; $a->strings["Discard"] = "Descartar";
$a->strings["No more system notifications."] = "No hay más notificaciones del sistema"; $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["Minimum project version: "] = "Versión mínima del proyecto:";
$a->strings["Maximum project version: "] = "Versión máxima 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["Minimum PHP version: "] = "Versión mínima de PHP:";
$a->strings["Requires: "] = "Se requiere:";
$a->strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles"; $a->strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles";
$a->strings["No themes found."] = "No se han encontrado temas."; $a->strings["No themes found."] = "No se han encontrado temas.";
$a->strings["Screenshot"] = "Instantánea de pantalla"; $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["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["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["Visible To"] = "Visible para";
$a->strings["Public Sites"] = "Sitios públicos"; $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["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["Hub URL"] = "Dirección del hub";
$a->strings["Rate this hub"] = "Valorar este sitio";
$a->strings["Site URL"] = "Dirección del sitio";
$a->strings["Access Type"] = "Tipo de acceso"; $a->strings["Access Type"] = "Tipo de acceso";
$a->strings["Registration Policy"] = "Normas de registro"; $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["Rate"] = "Valorar";
$a->strings["View ratings"] = "Ver valoraciones";
$a->strings["Website:"] = "Sitio web:"; $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["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)"; $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["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 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["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 hub 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["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 site/hub</a>"] = "<a href=\"pubsites\">Inscribirse en un servidor/hub afiliado</a>"; $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["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["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 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["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["Your email address"] = "Su dirección de correo electrónico";
$a->strings["Choose a password"] = "Elija una contraseña"; $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 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["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["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"; $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["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["Cover Photos"] = "Imágenes de portada del perfil";
$a->strings["Upload Cover Photo"] = "Subir imagen 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["Focus (Hubzilla default)"] = "Focus (predefinido)";
$a->strings["Theme settings"] = "Ajustes del tema"; $a->strings["Theme settings"] = "Ajustes del tema";
$a->strings["Select scheme"] = "Elegir un esquema"; $a->strings["Select scheme"] = "Elegir un esquema";

View File

@ -295,7 +295,7 @@ footer {
.vcard { .vcard {
margin-bottom: 10px; margin-bottom: 10px;
padding: 10px; padding: 0px 10px 10px 10px;
background-color: rgba(254,254,254,0.5); background-color: rgba(254,254,254,0.5);
border: 1px solid rgba(254,254,254,0.5); border: 1px solid rgba(254,254,254,0.5);
-moz-border-radius: $radiuspx; -moz-border-radius: $radiuspx;
@ -341,9 +341,7 @@ footer {
#profile-photo-wrapper { #profile-photo-wrapper {
width: 251px; width: 251px;
height: 251px; height: 251px;
margin-top: -10px;
margin-bottom: 10px; margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: $radiuspx; border-radius: $radiuspx;
} }
@ -1142,7 +1140,6 @@ img.mail-conv-sender-photo {
.jothidden { .jothidden {
font-weight: bold; font-weight: bold;
border-radius: $radiuspx;
} }
.jothidden input::-webkit-input-placeholder { .jothidden input::-webkit-input-placeholder {
@ -1153,30 +1150,26 @@ img.mail-conv-sender-photo {
font-weight: bold; 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 { #profile-jot-wrapper {
background-color: rgba(254,254,254,.5); background-color: rgba(254,254,254,1);
border: 1px solid rgba(254,254,254,.5); border: 1px solid #ccc;
border-radius: $radiuspx; border-radius: $radiuspx;
} }
#profile-jot-text { #profile-jot-text {
color:#000; resize: none;
border: 1px solid #cccccc; border-width: 0px;
-moz-border-radius: $radiuspx;
border-radius: $radiuspx; border-radius: $radiuspx;
} }
#profile-jot-text:focus {
resize: vertical;
}
#profile-jot-text::-webkit-input-placeholder { #profile-jot-text::-webkit-input-placeholder {
font-size:16px; font-size:16px;
} }
@ -1243,6 +1236,11 @@ img.mail-conv-sender-photo {
font-size: $font_size; font-size: $font_size;
} }
.wall-item-footer {
font-size: $body_font_size;
margin-top: 2em;
}
.wall-item-content-wrapper { .wall-item-content-wrapper {
background-color: $item_colour; background-color: $item_colour;
border-top-right-radius: $radiuspx; border-top-right-radius: $radiuspx;
@ -1510,7 +1508,7 @@ nav .dropdown-menu {
.section-content-tools-wrapper { .section-content-tools-wrapper {
padding: 7px 10px; padding: 7px 10px;
background-color: $comment_item_colour; background-color: $comment_item_colour;
border-bottom: 3px solid $comment_item_colour; border-bottom: 3px solid comment_item_colour;
} }
.section-content-info-wrapper { .section-content-info-wrapper {
@ -1704,9 +1702,8 @@ nav .badge.mail-update:hover {
.nav-tabs.nav-justified { .nav-tabs.nav-justified {
background-color: rgba(254,254,254,.5); background-color: rgba(254,254,254,.5);
border: 1px solid rgba(254,254,254,.5); border-top-left-radius: 4px;
border-top-left-radius: $radiuspx; border-top-right-radius: 4px;
border-top-right-radius: $radiuspx;
} }
.nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a,
@ -1819,13 +1816,13 @@ nav .badge.mail-update:hover {
/* Modified original CSS to match input in Redbasic */ /* Modified original CSS to match input in Redbasic */
.jothidden .bootstrap-tagsinput { .jothidden .bootstrap-tagsinput {
border-color: $bgcolour; border: 0px solid transparent;
background-color: $bgcolour; margin-bottom: 0px;
box-shadow: none; box-shadow: none;
display: inline-block; display: inline-block;
border-radius: $radiuspx; border-radius: $radiuspx;
cursor: text; cursor: text;
padding: 0px 8px; padding: 0px 10px;
width: 100%; width: 100%;
} }
@ -1833,11 +1830,6 @@ nav .badge.mail-update:hover {
font-size: 100%; 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 */ /* 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 } .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="generic-content-wrapper">
<div class="section-title-wrapper"> <div class="section-title-wrapper">
<div class="pull-right"> <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"> <div class="btn-group">
<button class="btn btn-default btn-xs" onclick="changeView('prev', false);" title="{{$prev}}"><i class="icon-backward"></i></button> <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> <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> <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}}> <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> <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"> <div id="profile-jot-wrapper">
<form id="profile-jot-form" action="{{$action}}" method="post"> <form id="profile-jot-form" action="{{$action}}" method="post">
{{if $parent}} {{if $parent}}
@ -17,13 +24,7 @@
<input type="hidden" name="preview" id="jot-preview" value="0" /> <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}}" /> <input type="hidden" id="jot-consensus" name="consensus" value="{{if $consensus}}{{$consensus}}{{else}}0{{/if}}" />
{{if $showacl}}{{$acl}}{{/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}} {{if $webpage}}
<div id="jot-pagetitle-wrap" class="jothidden"> <div id="jot-pagetitle-wrap" class="jothidden">
<input name="pagetitle" id="jot-pagetitle" type="text" placeholder="{{$placeholdpagetitle}}" value="{{$pagetitle}}"> <input name="pagetitle" id="jot-pagetitle" type="text" placeholder="{{$placeholdpagetitle}}" value="{{$pagetitle}}">
@ -159,10 +160,11 @@
</div> </div>
<div id="profile-jot-text-loading"></div> <div id="profile-jot-text-loading"></div>
<div id="profile-jot-end" class="clear"></div> <div id="profile-jot-end" class="clear"></div>
<div id="jot-preview-content" style="display:none;"></div>
</form> </form>
</div> </div>
<div id="jot-preview-content" style="display:none;"></div>
<!-- Modal for item expiry--> <!-- Modal for item expiry-->
<div class="modal" id="expiryModal" tabindex="-1" role="dialog" aria-labelledby="expiryModalLabel" aria-hidden="true"> <div class="modal" id="expiryModal" tabindex="-1" role="dialog" aria-labelledby="expiryModalLabel" aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">

View File

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

View File

@ -12,193 +12,259 @@
<i class="icon-thumbs-up-alt" title="{{$profile.likethis}}"></i> <i class="icon-thumbs-up-alt" title="{{$profile.likethis}}"></i>
</button> </button>
{{/if}} {{/if}}
{{if $edit}} {{if $editmenu.multi}}
<a href="{{$edit.link}}" class="btn btn-primary btn-xs"><i class="icon-pencil"></i>&nbsp;{{$edit.label}}</a> <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}} {{/if}}
</div> </div>
<h2>{{$title}}</h2> <h2>{{$title}}</h2>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="section-content-wrapper"> <div class="section-content-wrapper">
{{foreach $fields as $f}}
{{if $f == 'name'}}
<dl id="aprofile-fullname" class="aprofile"> <dl id="aprofile-fullname" class="aprofile">
<dt>{{$profile.fullname.0}}</dt> <dt>{{$profile.fullname.0}}</dt>
<dd>{{$profile.fullname.1}}</dd> <dd>{{$profile.fullname.1}}</dd>
</dl> </dl>
{{/if}}
{{if $f == 'gender'}}
{{if $profile.gender}} {{if $profile.gender}}
<dl id="aprofile-gender" class="aprofile"> <dl id="aprofile-gender" class="aprofile">
<dt>{{$profile.gender.0}}</dt> <dt>{{$profile.gender.0}}</dt>
<dd>{{$profile.gender.1}}</dd> <dd>{{$profile.gender.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'birthday'}}
{{if $profile.birthday}} {{if $profile.birthday}}
<dl id="aprofile-birthday" class="aprofile"> <dl id="aprofile-birthday" class="aprofile">
<dt>{{$profile.birthday.0}}</dt> <dt>{{$profile.birthday.0}}</dt>
<dd>{{$profile.birthday.1}}</dd> <dd>{{$profile.birthday.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'age'}}
{{if $profile.age}} {{if $profile.age}}
<dl id="aprofile-age" class="aprofile"> <dl id="aprofile-age" class="aprofile">
<dt>{{$profile.age.0}}</dt> <dt>{{$profile.age.0}}</dt>
<dd>{{$profile.age.1}}</dd> <dd>{{$profile.age.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'marital'}}
{{if $profile.marital}} {{if $profile.marital}}
<dl id="aprofile-marital" class="aprofile"> <dl id="aprofile-marital" class="aprofile">
<dt><span class="heart">&hearts;</span> {{$profile.marital.0}}</dt> <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> <dd>{{$profile.marital.1}}{{if $profile.marital.with}} ({{$profile.marital.with}}){{/if}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'sexual'}}
{{if $profile.sexual}} {{if $profile.sexual}}
<dl id="aprofile-sexual" class="aprofile"> <dl id="aprofile-sexual" class="aprofile">
<dt>{{$profile.sexual.0}}</dt> <dt>{{$profile.sexual.0}}</dt>
<dd>{{$profile.sexual.1}}</dd> <dd>{{$profile.sexual.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'keywords'}}
{{if $profile.keywords}} {{if $profile.keywords}}
<dl id="aprofile-tags" class="aprofile"> <dl id="aprofile-tags" class="aprofile">
<dt>{{$profile.keywords.0}}</dt> <dt>{{$profile.keywords.0}}</dt>
<dd>{{$profile.keywords.1}}</dd> <dd>{{$profile.keywords.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'homepage'}}
{{if $profile.homepage}} {{if $profile.homepage}}
<dl id="aprofile-homepage" class="aprofile"> <dl id="aprofile-homepage" class="aprofile">
<dt>{{$profile.homepage.0}}</dt> <dt>{{$profile.homepage.0}}</dt>
<dd>{{$profile.homepage.1}}</dd> <dd>{{$profile.homepage.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'hometown'}}
{{if $profile.hometown}} {{if $profile.hometown}}
<dl id="aprofile-hometown" class="aprofile"> <dl id="aprofile-hometown" class="aprofile">
<dt>{{$profile.hometown.0}}</dt> <dt>{{$profile.hometown.0}}</dt>
<dd>{{$profile.hometown.1}}</dd> <dd>{{$profile.hometown.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'politic'}}
{{if $profile.politic}} {{if $profile.politic}}
<dl id="aprofile-politic" class="aprofile"> <dl id="aprofile-politic" class="aprofile">
<dt>{{$profile.politic.0}}</dt> <dt>{{$profile.politic.0}}</dt>
<dd>{{$profile.politic.1}}</dd> <dd>{{$profile.politic.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'religion'}}
{{if $profile.religion}} {{if $profile.religion}}
<dl id="aprofile-religion" class="aprofile"> <dl id="aprofile-religion" class="aprofile">
<dt>{{$profile.religion.0}}</dt> <dt>{{$profile.religion.0}}</dt>
<dd>{{$profile.religion.1}}</dd> <dd>{{$profile.religion.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'about'}}
{{if $profile.about}} {{if $profile.about}}
<dl id="aprofile-about" class="aprofile"> <dl id="aprofile-about" class="aprofile">
<dt>{{$profile.about.0}}</dt> <dt>{{$profile.about.0}}</dt>
<dd>{{$profile.about.1}}</dd> <dd>{{$profile.about.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'interest'}}
{{if $profile.interest}} {{if $profile.interest}}
<dl id="aprofile-interest" class="aprofile"> <dl id="aprofile-interest" class="aprofile">
<dt>{{$profile.interest.0}}</dt> <dt>{{$profile.interest.0}}</dt>
<dd>{{$profile.interest.1}}</dd> <dd>{{$profile.interest.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'likes'}}
{{if $profile.likes}} {{if $profile.likes}}
<dl id="aprofile-likes" class="aprofile"> <dl id="aprofile-likes" class="aprofile">
<dt>{{$profile.likes.0}}</dt> <dt>{{$profile.likes.0}}</dt>
<dd>{{$profile.likes.1}}</dd> <dd>{{$profile.likes.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'dislikes'}}
{{if $profile.dislikes}} {{if $profile.dislikes}}
<dl id="aprofile-dislikes" class="aprofile"> <dl id="aprofile-dislikes" class="aprofile">
<dt>{{$profile.dislikes.0}}</dt> <dt>{{$profile.dislikes.0}}</dt>
<dd>{{$profile.dislikes.1}}</dd> <dd>{{$profile.dislikes.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'contact'}}
{{if $profile.contact}} {{if $profile.contact}}
<dl id="aprofile-contact" class="aprofile"> <dl id="aprofile-contact" class="aprofile">
<dt>{{$profile.contact.0}}</dt> <dt>{{$profile.contact.0}}</dt>
<dd>{{$profile.contact.1}}</dd> <dd>{{$profile.contact.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'channels'}}
{{if $profile.channels}} {{if $profile.channels}}
<dl id="aprofile-channels" class="aprofile"> <dl id="aprofile-channels" class="aprofile">
<dt>{{$profile.channels.0}}</dt> <dt>{{$profile.channels.0}}</dt>
<dd>{{$profile.channels.1}}</dd> <dd>{{$profile.channels.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'music'}}
{{if $profile.music}} {{if $profile.music}}
<dl id="aprofile-music" class="aprofile"> <dl id="aprofile-music" class="aprofile">
<dt>{{$profile.music.0}}</dt> <dt>{{$profile.music.0}}</dt>
<dd>{{$profile.music.1}}</dd> <dd>{{$profile.music.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'book'}}
{{if $profile.book}} {{if $profile.book}}
<dl id="aprofile-book" class="aprofile"> <dl id="aprofile-book" class="aprofile">
<dt>{{$profile.book.0}}</dt> <dt>{{$profile.book.0}}</dt>
<dd>{{$profile.book.1}}</dd> <dd>{{$profile.book.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'tv'}}
{{if $profile.tv}} {{if $profile.tv}}
<dl id="aprofile-tv" class="aprofile"> <dl id="aprofile-tv" class="aprofile">
<dt>{{$profile.tv.0}}</dt> <dt>{{$profile.tv.0}}</dt>
<dd>{{$profile.tv.1}}</dd> <dd>{{$profile.tv.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'film'}}
{{if $profile.film}} {{if $profile.film}}
<dl id="aprofile-film" class="aprofile"> <dl id="aprofile-film" class="aprofile">
<dt>{{$profile.film.0}}</dt> <dt>{{$profile.film.0}}</dt>
<dd>{{$profile.film.1}}</dd> <dd>{{$profile.film.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'romance'}}
{{if $profile.romance}} {{if $profile.romance}}
<dl id="aprofile-romance" class="aprofile"> <dl id="aprofile-romance" class="aprofile">
<dt>{{$profile.romance.0}}</dt> <dt>{{$profile.romance.0}}</dt>
<dd>{{$profile.romance.1}}</dd> <dd>{{$profile.romance.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'work'}}
{{if $profile.work}} {{if $profile.work}}
<dl id="aprofile-work" class="aprofile"> <dl id="aprofile-work" class="aprofile">
<dt>{{$profile.work.0}}</dt> <dt>{{$profile.work.0}}</dt>
<dd>{{$profile.work.1}}</dd> <dd>{{$profile.work.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{if $f == 'education'}}
{{if $profile.education}} {{if $profile.education}}
<dl id="aprofile-education" class="aprofile"> <dl id="aprofile-education" class="aprofile">
<dt>{{$profile.education.0}}</dt> <dt>{{$profile.education.0}}</dt>
<dd>{{$profile.education.1}}</dd> <dd>{{$profile.education.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{foreach $profile.extra_fields as $f}} {{foreach $profile.extra_fields as $fld}}
{{if $profile.$f}} {{if $f == $fld}}
<dl id="aprofile-{{$f}}" class="aprofile"> {{if $profile.$fld}}
<dt>{{$profile.$f.0}}</dt> <dl id="aprofile-{{$fld}}" class="aprofile">
<dd>{{$profile.$f.1}}</dd> <dt>{{$profile.$fld.0}}</dt>
<dd>{{$profile.$fld.1}}</dd>
</dl> </dl>
{{/if}} {{/if}}
{{/if}}
{{/foreach}}
{{/foreach}} {{/foreach}}

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> <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}}
{{if ! $zcard}} {{if ! $zcard}}
{{if $profile.edit}} {{if $editmenu.multi}}
<div class="dropdown"> <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"> <ul class="dropdown-menu" role="menu">
{{foreach $profile.menu.entries as $e}} {{foreach $editmenu.menu.entries as $e}}
<li> <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> </li>
{{/foreach}} {{/foreach}}
<li><a href="profile_photo" >{{$profile.menu.chg_photo}}</a></li> <li><a href="profile_photo" >{{$editmenu.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}} {{if $editmenu.menu.cr_new}}<li><a href="profiles/new" id="profile-listing-new-link">{{$editmenu.menu.cr_new}}</a></li>{{/if}}
</ul> </ul>
</div> </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}}
{{/if}} {{/if}}
@ -27,9 +29,6 @@
{{if $reddress}}<div class="reddress" oncopy="return false;">{{$profile.reddress}}</div>{{/if}} {{if $reddress}}<div class="reddress" oncopy="return false;">{{$profile.reddress}}</div>{{/if}}
{{/if}} {{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr"> <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 $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 $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}} {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url">{{$profile.homepage}}</dd></dl>{{/if}}