Merge remote-tracking branch 'upstream/dev' into doco
This commit is contained in:
commit
69b08a2062
@ -104,6 +104,23 @@ class Acl extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
if($type == '' || $type == 'g') {
|
if($type == '' || $type == 'g') {
|
||||||
|
|
||||||
|
$r = q("select id, profile_guid, profile_name from profile where is_default = 0 and uid = %d",
|
||||||
|
intval(local_channel())
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rv) {
|
||||||
|
$groups[] = array(
|
||||||
|
"type" => "g",
|
||||||
|
"photo" => "images/twopeople.png",
|
||||||
|
"name" => t('Profile','acl') . ' ' . $rv['profile_name'],
|
||||||
|
"id" => 'vp' . $rv['id'],
|
||||||
|
"xid" => 'vp.' . $rv['profile_guid'],
|
||||||
|
"uids" => group_get_profile_members_xchan(local_channel(), $rv['id']),
|
||||||
|
"link" => ''
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT groups.id, groups.hash, groups.gname
|
$r = q("SELECT groups.id, groups.hash, groups.gname
|
||||||
FROM groups, group_member
|
FROM groups, group_member
|
||||||
WHERE groups.deleted = 0 AND groups.uid = %d
|
WHERE groups.deleted = 0 AND groups.uid = %d
|
||||||
|
@ -245,14 +245,6 @@ class Connedit extends \Zotlabs\Web\Controller {
|
|||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
|
|
||||||
if($orig_record[0]['abook_profile'] != $profile_id) {
|
|
||||||
//Update profile photo permissions
|
|
||||||
|
|
||||||
logger('A new profile was assigned - updating profile photos');
|
|
||||||
profile_photo_set_profile_perms(local_channel(),$profile_id);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if($r)
|
if($r)
|
||||||
info( t('Connection updated.') . EOL);
|
info( t('Connection updated.') . EOL);
|
||||||
else
|
else
|
||||||
|
@ -32,10 +32,10 @@ class Lockview extends \Zotlabs\Web\Controller {
|
|||||||
if(! $item_id)
|
if(! $item_id)
|
||||||
killme();
|
killme();
|
||||||
|
|
||||||
if (!in_array($type, array('item','photo','event', 'menu_item', 'chatroom')))
|
if (! in_array($type, array('item', 'photo', 'attach', 'event', 'menu_item', 'chatroom')))
|
||||||
killme();
|
killme();
|
||||||
|
|
||||||
//we have different naming in in menu_item table and chatroom table
|
// we have different naming in in menu_item table and chatroom table
|
||||||
switch($type) {
|
switch($type) {
|
||||||
case 'menu_item':
|
case 'menu_item':
|
||||||
$id = 'mitem_id';
|
$id = 'mitem_id';
|
||||||
@ -101,6 +101,22 @@ class Lockview extends \Zotlabs\Web\Controller {
|
|||||||
stringify_array_elms($deny_groups,true);
|
stringify_array_elms($deny_groups,true);
|
||||||
stringify_array_elms($deny_users,true);
|
stringify_array_elms($deny_users,true);
|
||||||
|
|
||||||
|
|
||||||
|
$profile_groups = [];
|
||||||
|
if($allowed_groups) {
|
||||||
|
foreach($allowed_groups as $g) {
|
||||||
|
if(substr($g,0,4) === '\'vp.') {
|
||||||
|
$profile_groups[] = '\'' . substr($g,4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count($profile_groups)) {
|
||||||
|
$r = q("SELECT profile_name FROM profile WHERE profile_guid IN ( " . implode(', ', $profile_groups) . " )");
|
||||||
|
if($r)
|
||||||
|
foreach($r as $rr)
|
||||||
|
$l[] = '<li><b>' . t('Profile','acl') . ' ' . $rr['profile_name'] . '</b></li>';
|
||||||
|
}
|
||||||
|
|
||||||
if(count($allowed_groups)) {
|
if(count($allowed_groups)) {
|
||||||
$r = q("SELECT gname FROM groups WHERE hash IN ( " . implode(', ', $allowed_groups) . " )");
|
$r = q("SELECT gname FROM groups WHERE hash IN ( " . implode(', ', $allowed_groups) . " )");
|
||||||
if($r)
|
if($r)
|
||||||
@ -120,6 +136,25 @@ class Lockview extends \Zotlabs\Web\Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$profile_groups = [];
|
||||||
|
if($deny_groups) {
|
||||||
|
foreach($deny_groups as $g) {
|
||||||
|
if(substr($g,0,4) === '\'vp.') {
|
||||||
|
$profile_groups[] = '\'' . substr($g,4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count($profile_groups)) {
|
||||||
|
$r = q("SELECT profile_name FROM profile WHERE profile_guid IN ( " . implode(', ', $profile_groups) . " )");
|
||||||
|
if($r)
|
||||||
|
foreach($r as $rr)
|
||||||
|
$l[] = '<li><b><strike>' . t('Profile','acl') . ' ' . $rr['profile_name'] . '</strike></b></li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(count($deny_groups)) {
|
if(count($deny_groups)) {
|
||||||
$r = q("SELECT gname FROM groups WHERE hash IN ( " . implode(', ', $deny_groups) . " )");
|
$r = q("SELECT gname FROM groups WHERE hash IN ( " . implode(', ', $deny_groups) . " )");
|
||||||
if($r)
|
if($r)
|
||||||
|
@ -180,6 +180,10 @@ class Profile_photo extends \Zotlabs\Web\Controller {
|
|||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
dbesc($channel['xchan_hash'])
|
dbesc($channel['xchan_hash'])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
photo_profile_setperms(local_channel(),$base_image['resource_id'],$_REQUEST['profile']);
|
||||||
|
|
||||||
|
|
||||||
// Similarly, tell the nav bar to bypass the cache and update the avater image.
|
// Similarly, tell the nav bar to bypass the cache and update the avater image.
|
||||||
$_SESSION['reload_avatar'] = true;
|
$_SESSION['reload_avatar'] = true;
|
||||||
|
|
||||||
@ -188,9 +192,6 @@ class Profile_photo extends \Zotlabs\Web\Controller {
|
|||||||
// Update directory in background
|
// Update directory in background
|
||||||
\Zotlabs\Daemon\Master::Summon(array('Directory',$channel['channel_id']));
|
\Zotlabs\Daemon\Master::Summon(array('Directory',$channel['channel_id']));
|
||||||
|
|
||||||
// Now copy profile-permissions to pictures, to prevent privacyleaks by automatically created folder 'Profile Pictures'
|
|
||||||
|
|
||||||
profile_photo_set_profile_perms(local_channel(),$_REQUEST['profile']);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
notice( t('Unable to process image') . EOL);
|
notice( t('Unable to process image') . EOL);
|
||||||
@ -338,7 +339,8 @@ class Profile_photo extends \Zotlabs\Web\Controller {
|
|||||||
dbesc($channel['xchan_hash'])
|
dbesc($channel['xchan_hash'])
|
||||||
);
|
);
|
||||||
|
|
||||||
profile_photo_set_profile_perms(local_channel()); // Reset default photo permissions to public
|
photo_profile_setperms(local_channel(),$resource_id,$_REQUEST['profile']);
|
||||||
|
|
||||||
\Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
|
\Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
|
||||||
goaway(z_root() . '/profiles');
|
goaway(z_root() . '/profiles');
|
||||||
}
|
}
|
||||||
|
@ -94,12 +94,8 @@ class Profperm extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
|
||||||
//Time to update the permissions on the profile-pictures as well
|
WHERE abook_channel = %d AND abook_profile = '%s'",
|
||||||
|
|
||||||
profile_photo_set_profile_perms(local_channel(),$profile['id']);
|
|
||||||
|
|
||||||
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'",
|
|
||||||
intval(local_channel()),
|
intval(local_channel()),
|
||||||
dbesc($profile['profile_guid'])
|
dbesc($profile['profile_guid'])
|
||||||
);
|
);
|
||||||
|
@ -19,6 +19,7 @@ class Channel {
|
|||||||
$role = ((x($_POST,'permissions_role')) ? notags(trim($_POST['permissions_role'])) : '');
|
$role = ((x($_POST,'permissions_role')) ? notags(trim($_POST['permissions_role'])) : '');
|
||||||
$oldrole = get_pconfig(local_channel(),'system','permissions_role');
|
$oldrole = get_pconfig(local_channel(),'system','permissions_role');
|
||||||
|
|
||||||
|
|
||||||
if(($role != $oldrole) || ($role === 'custom')) {
|
if(($role != $oldrole) || ($role === 'custom')) {
|
||||||
|
|
||||||
if($role === 'custom') {
|
if($role === 'custom') {
|
||||||
@ -144,6 +145,7 @@ class Channel {
|
|||||||
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
|
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
|
||||||
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
|
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
|
||||||
$adult = (($_POST['adult'] == 1) ? 1 : 0);
|
$adult = (($_POST['adult'] == 1) ? 1 : 0);
|
||||||
|
$defpermcat = ((x($_POST,'defpermcat')) ? notags(trim($_POST['defpermcat'])) : 'default');
|
||||||
|
|
||||||
$cal_first_day = (((x($_POST,'first_day')) && (intval($_POST['first_day']) == 1)) ? 1: 0);
|
$cal_first_day = (((x($_POST,'first_day')) && (intval($_POST['first_day']) == 1)) ? 1: 0);
|
||||||
|
|
||||||
@ -232,6 +234,7 @@ class Channel {
|
|||||||
set_pconfig(local_channel(),'system','photo_path',$photo_path);
|
set_pconfig(local_channel(),'system','photo_path',$photo_path);
|
||||||
set_pconfig(local_channel(),'system','attach_path',$attach_path);
|
set_pconfig(local_channel(),'system','attach_path',$attach_path);
|
||||||
set_pconfig(local_channel(),'system','cal_first_day',$cal_first_day);
|
set_pconfig(local_channel(),'system','cal_first_day',$cal_first_day);
|
||||||
|
set_pconfig(local_channel(),'system','default_permcat',$defpermcat);
|
||||||
|
|
||||||
$r = q("update channel set channel_name = '%s', channel_pageflags = %d, channel_timezone = '%s', channel_location = '%s', channel_notifyflags = %d, channel_max_anon_mail = %d, channel_max_friend_req = %d, channel_expire_days = %d $set_perms where channel_id = %d",
|
$r = q("update channel set channel_name = '%s', channel_pageflags = %d, channel_timezone = '%s', channel_location = '%s', channel_notifyflags = %d, channel_max_anon_mail = %d, channel_max_friend_req = %d, channel_expire_days = %d $set_perms where channel_id = %d",
|
||||||
dbesc($username),
|
dbesc($username),
|
||||||
@ -412,6 +415,19 @@ class Channel {
|
|||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$pcat = new \Zotlabs\Lib\Permcat(local_channel());
|
||||||
|
$pcatlist = $pcat->listing();
|
||||||
|
$permcats = [];
|
||||||
|
if($pcatlist) {
|
||||||
|
foreach($pcatlist as $pc) {
|
||||||
|
$permcats[$pc['name']] = $pc['localname'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$default_permcat = get_pconfig(local_channel(),'system','default_permcat','default');
|
||||||
|
|
||||||
|
|
||||||
$stpl = get_markup_template('settings.tpl');
|
$stpl = get_markup_template('settings.tpl');
|
||||||
|
|
||||||
$acl = new \Zotlabs\Access\AccessList($channel);
|
$acl = new \Zotlabs\Access\AccessList($channel);
|
||||||
@ -500,7 +516,8 @@ class Channel {
|
|||||||
'$suggestme' => $suggestme,
|
'$suggestme' => $suggestme,
|
||||||
'$group_select' => $group_select,
|
'$group_select' => $group_select,
|
||||||
'$role' => array('permissions_role' , t('Channel permissions category:'), $permissions_role, '', $perm_roles),
|
'$role' => array('permissions_role' , t('Channel permissions category:'), $permissions_role, '', $perm_roles),
|
||||||
|
'$defpermcat' => [ 'defpermcat', t('Default Permissions Group'), $default_permcat, '', $permcats ],
|
||||||
|
'$permcat_enable' => feature_enabled(local_channel(),'permcats'),
|
||||||
'$profile_in_dir' => $profile_in_dir,
|
'$profile_in_dir' => $profile_in_dir,
|
||||||
'$hide_friends' => $hide_friends,
|
'$hide_friends' => $hide_friends,
|
||||||
'$hide_wall' => $hide_wall,
|
'$hide_wall' => $hide_wall,
|
||||||
|
BIN
doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png
Normal file
BIN
doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
14
doc/context/es-es/admin/plugins/help.html
Normal file
14
doc/context/es-es/admin/plugins/help.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>General</dt>
|
||||||
|
<dd>Esta página gestiona qué plugins (también llamados <i>addons</i> o <i>complementos</i>) están instalados.</dd>
|
||||||
|
<dt>Gestión de los repositorios</dt>
|
||||||
|
<dd>Si su servidor web tiene los permisos de escritura necesarios, verá un botón etiquetado como <b>Gestión de repositorios</b>,
|
||||||
|
que abre un panel de control para administrar qué <i>repositorios</i> de plugins están instalados. Estos repositorios están
|
||||||
|
almacenados en <span style="font-family: monospace;">extend/addon/[nombre del repositorio]/</span>. El repositorio de plugins oficial de Hubzilla
|
||||||
|
se puede añadir escribiendo la URL del repositorio
|
||||||
|
<span style="font-family: monospace;">https://github.com/redmatrix/hubzilla-addons.git</span>
|
||||||
|
y eligiendo un nombre para el repositorio como <b>oficial</b>. Debería ver este repositorio en una lista parecida
|
||||||
|
a esta:
|
||||||
|
<br>
|
||||||
|
<img class="img-responsive" src="doc/context/es-es/admin/plugins/assets/addon_repo_gui_1.png"></dd>
|
||||||
|
</dl>
|
35
doc/context/es-es/profiles/help.html
Normal file
35
doc/context/es-es/profiles/help.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>General</dt>
|
||||||
|
<dd>
|
||||||
|
Al registar <i>cuenta</i> en Hubzilla, también ha creado un <i>perfil</i> y un <i>canal</i>.
|
||||||
|
</dd>
|
||||||
|
<dt>Cuenta</dt>
|
||||||
|
<dd>
|
||||||
|
Tiene <i>una</i> cuenta. Esta consta de su correo electrónico y su contraseña. Mediante su cuenta, accede a su
|
||||||
|
perfil y su canal. <i>Piense en su cuenta como la vía para identificarse en un sitio Hubzilla. Le permite
|
||||||
|
hacer cosas, como crear perfiles y canales a través de los cuelas podrá conectar con otra gente.</i>
|
||||||
|
</dd>
|
||||||
|
<dt>Perfil</dt>
|
||||||
|
<dd>
|
||||||
|
Usted está registrado, seguramente, con algunos otros servicios de Internet, como foros o comunidades en línea. Para todos ellos
|
||||||
|
usted proporcionó algún tipo de información sobre usted mismo, tal como su fecha de nacimiento, país, edad y gustos o preferencias. Frente a otros
|
||||||
|
servicios, Hubzilla le ofrece la ventaja de crear
|
||||||
|
<i>muchos más perfiles</i>. De esa manera usted puede distinguir entre los perfiles dirigidos especialmente a todo el mundo
|
||||||
|
(su perfil público), Sus compañeros de trabajo, su familia y su pareja.<i>Piense en su perfil como la información básica
|
||||||
|
básica que acerca de usted mismo muestra a otra gente,</i>
|
||||||
|
</dd>
|
||||||
|
<dt>Canal</dt>
|
||||||
|
<dd>
|
||||||
|
Durante el registro, creó su primer <i>canal</i>. Sí, además de los varios perfiles, usted puede tener
|
||||||
|
varios canales. Esto podría ser un poco confuso al principio, pero vamos a aclarar las cosas. Usted ya ha creado
|
||||||
|
un canal. Puede usarlo para el público en general, para informar a los demás sobre su vida cotidiana. Pero
|
||||||
|
Tal vez usted es un ávido lector de libros y muchas personas se aburren con eso. Así que abre un <i>segundo canal</i> sólo
|
||||||
|
para los amantes de los libros, en el que todos ustedes pueden hablar de libros tanto como quieran. Obviamente, este es un nuevo flujo de
|
||||||
|
entradas, con un nuevo perfil (...o nuevos perfil<i>es</i>...) y contactos completamente diferentes. Algunas conexiones
|
||||||
|
pueden existir en ambos canales, pero habrá algunas que estén exclusivamente en uno de los dos. Usted mismo simplemente
|
||||||
|
cambie entre ambos como cambia de interlocutor en el mundo real cuando habla con varias personas en la calle
|
||||||
|
o personas con las que se reúne especialmente para hablar de libros. Incluso puede conectarse a sí mismo, o mejor: a su otro
|
||||||
|
canal. :)<i> Piense en un canal como en diferentes espacios dedicados a diferentes temas en los que puede hablar con diferentes
|
||||||
|
personas.</i>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
35
doc/context/es-es/settings/account/help.html
Normal file
35
doc/context/es-es/settings/account/help.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>General</dt>
|
||||||
|
<dd>
|
||||||
|
Al registar <i>cuenta</i> en Hubzilla, también ha creado un <i>perfil</i> y un <i>canal</i>.
|
||||||
|
</dd>
|
||||||
|
<dt>Cuenta</dt>
|
||||||
|
<dd>
|
||||||
|
Tiene <i>una</i> cuenta. Esta consta de su correo electrónico y su contraseña. Mediante su cuenta, accede a su
|
||||||
|
perfil y su canal. <i>Piense en su cuenta como la vía para identificarse en un sitio Hubzilla. Le permite
|
||||||
|
hacer cosas, como crear perfiles y canales a través de los cuelas podrá conectar con otra gente.</i>
|
||||||
|
</dd>
|
||||||
|
<dt>Perfil</dt>
|
||||||
|
<dd>
|
||||||
|
Usted está registrado, seguramente, con algunos otros servicios de Internet, como foros o comunidades en línea. Para todos ellos
|
||||||
|
usted proporcionó algún tipo de información sobre usted mismo, tal como su fecha de nacimiento, país, edad y gustos o preferencias. Frente a otros
|
||||||
|
servicios, Hubzilla le ofrece la ventaja de crear
|
||||||
|
<i>muchos más perfiles</i>. De esa manera usted puede distinguir entre los perfiles dirigidos especialmente a todo el mundo
|
||||||
|
(su perfil público), Sus compañeros de trabajo, su familia y su pareja.<i>Piense en su perfil como la información básica
|
||||||
|
básica que acerca de usted mismo muestra a otra gente,</i>
|
||||||
|
</dd>
|
||||||
|
<dt>Canal</dt>
|
||||||
|
<dd>
|
||||||
|
Durante el registro, creó su primer <i>canal</i>. Sí, además de los varios perfiles, usted puede tener
|
||||||
|
varios canales. Esto podría ser un poco confuso al principio, pero vamos a aclarar las cosas. Usted ya ha creado
|
||||||
|
un canal. Puede usarlo para el público en general, para informar a los demás sobre su vida cotidiana. Pero
|
||||||
|
Tal vez usted es un ávido lector de libros y muchas personas se aburren con eso. Así que abre un <i>segundo canal</i> sólo
|
||||||
|
para los amantes de los libros, en el que todos ustedes pueden hablar de libros tanto como quieran. Obviamente, este es un nuevo flujo de
|
||||||
|
entradas, con un nuevo perfil (...o nuevos perfil<i>es</i>...) y contactos completamente diferentes. Algunas conexiones
|
||||||
|
pueden existir en ambos canales, pero habrá algunas que estén exclusivamente en uno de los dos. Usted mismo simplemente
|
||||||
|
cambie entre ambos como cambia de interlocutor en el mundo real cuando habla con varias personas en la calle
|
||||||
|
o personas con las que se reúne especialmente para hablar de libros. Incluso puede conectarse a sí mismo, o mejor: a su otro
|
||||||
|
canal. :)<i> Piense en un canal como en diferentes espacios dedicados a diferentes temas en los que puede hablar con diferentes
|
||||||
|
personas.</i>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
35
doc/context/es-es/settings/channel/help.html
Normal file
35
doc/context/es-es/settings/channel/help.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>General</dt>
|
||||||
|
<dd>
|
||||||
|
Al registar <i>cuenta</i> en Hubzilla, también ha creado un <i>perfil</i> y un <i>canal</i>.
|
||||||
|
</dd>
|
||||||
|
<dt>Cuenta</dt>
|
||||||
|
<dd>
|
||||||
|
Tiene <i>una</i> cuenta. Esta consta de su correo electrónico y su contraseña. Mediante su cuenta, accede a su
|
||||||
|
perfil y su canal. <i>Piense en su cuenta como la vía para identificarse en un sitio Hubzilla. Le permite
|
||||||
|
hacer cosas, como crear perfiles y canales a través de los cuelas podrá conectar con otra gente.</i>
|
||||||
|
</dd>
|
||||||
|
<dt>Perfil</dt>
|
||||||
|
<dd>
|
||||||
|
Usted está registrado, seguramente, con algunos otros servicios de Internet, como foros o comunidades en línea. Para todos ellos
|
||||||
|
usted proporcionó algún tipo de información sobre usted mismo, tal como su fecha de nacimiento, país, edad y gustos o preferencias. Frente a otros
|
||||||
|
servicios, Hubzilla le ofrece la ventaja de crear
|
||||||
|
<i>muchos más perfiles</i>. De esa manera usted puede distinguir entre los perfiles dirigidos especialmente a todo el mundo
|
||||||
|
(su perfil público), Sus compañeros de trabajo, su familia y su pareja.<i>Piense en su perfil como la información básica
|
||||||
|
básica que acerca de usted mismo muestra a otra gente,</i>
|
||||||
|
</dd>
|
||||||
|
<dt>Canal</dt>
|
||||||
|
<dd>
|
||||||
|
Durante el registro, creó su primer <i>canal</i>. Sí, además de los varios perfiles, usted puede tener
|
||||||
|
varios canales. Esto podría ser un poco confuso al principio, pero vamos a aclarar las cosas. Usted ya ha creado
|
||||||
|
un canal. Puede usarlo para el público en general, para informar a los demás sobre su vida cotidiana. Pero
|
||||||
|
Tal vez usted es un ávido lector de libros y muchas personas se aburren con eso. Así que abre un <i>segundo canal</i> sólo
|
||||||
|
para los amantes de los libros, en el que todos ustedes pueden hablar de libros tanto como quieran. Obviamente, este es un nuevo flujo de
|
||||||
|
entradas, con un nuevo perfil (...o nuevos perfil<i>es</i>...) y contactos completamente diferentes. Algunas conexiones
|
||||||
|
pueden existir en ambos canales, pero habrá algunas que estén exclusivamente en uno de los dos. Usted mismo simplemente
|
||||||
|
cambie entre ambos como cambia de interlocutor en el mundo real cuando habla con varias personas en la calle
|
||||||
|
o personas con las que se reúne especialmente para hablar de libros. Incluso puede conectarse a sí mismo, o mejor: a su otro
|
||||||
|
canal. :)<i> Piense en un canal como en diferentes espacios dedicados a diferentes temas en los que puede hablar con diferentes
|
||||||
|
personas.</i>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
23
doc/context/es-es/settings/tokens/help.html
Normal file
23
doc/context/es-es/settings/tokens/help.html
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt><a href="/help/member/member_guide#Guest_Access_Tokens">Guest Access Tokens</a></dt>
|
||||||
|
<dd>
|
||||||
|
Para facilitar el intercambio de recursos privados con no miembros o miembros de otros nodos federados con una identificación limitada, Hubzilla debe proporcionar a los miembros un mecanismo para crear y administrar inicios de sesión temporales ("desechables"), también conocidos como "Zot Access Tokens". Estos tokens/credenciales se pueden utilizar para autenticarse en un sitio de hubzilla con el único propósito de acceder a recursos privilegiados o de acceso controlado (archivos, fotos, publicaciones, páginas web, salas de chat, etc.).
|
||||||
|
</dd>
|
||||||
|
<dt>Crear un token</dt>
|
||||||
|
<dd>
|
||||||
|
El formulario para crear / editar acepta tres parámetros, un nombre legible por el usuario, una contraseña o un token de acceso, y un
|
||||||
|
límite de caducidad opcional. Una vez que ha caducado, el acceso mediante el token deja de ser válido, ya no puede usarse, y será
|
||||||
|
purgado automáticamente de la lista de cuentas temporales. El campo de la contraseña, en los formularios para crear/editar,
|
||||||
|
muestra el texto del token de acceso y no una displays the text of the access token and not una contraseña oscurecida.
|
||||||
|
</dd>
|
||||||
|
<dt>Compartir un token</dt>
|
||||||
|
<dd>
|
||||||
|
No especificamos mecanismos para compartir estos tokens con otros. Se puede usar cualquier método de comunicación. Cualquier token que haya creado se añade al selector de la Lista de Control y puede ser usado por cualquiera que esté en esa lista.
|
||||||
|
|
||||||
|
<b>Ejemplo</b>: Una visitante llega a su sitio. Tiene un token de acceso que usted le ha proporcionado e intenta ver uno de sus álbumes de fotos (que está restringido para que solo lo puedan ver usted mismo y una identidad temporal). El permiso es denegado.
|
||||||
|
|
||||||
|
La visitante, ahora, selecciona "Iniciar sesión" del menú de la barra de navegación, que muestra la página de inicio de sesión. Ella escribe el nombre y contraseña que usted le ha proporcionado: ahora ya puede ver el álbum privado de fotos.
|
||||||
|
|
||||||
|
De forma alternativa, puede compartir un enlace a un fichero protegido, añadiendo un parámetro del tipo "&zat=abc123" a la dirección URL, en el que la cadena "abc123" es el token de acceso o contraseña para el inicio de sesión temporal. No se requiere ninguna negociación posterior: el fichero será mostrado.
|
||||||
|
</dd>
|
||||||
|
</dl>
|
8
doc/context/es-es/webpages/help.html
Normal file
8
doc/context/es-es/webpages/help.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>General</dt>
|
||||||
|
<dd>Puede crear sitios web modulares, con identidad propia, compuestos de elementos compartibles. </dd>
|
||||||
|
<dt>Páginas</dt>
|
||||||
|
<dd>Esta página enumera sus "páginas", a las que se asignan URLs en las que la gente pueden visitar su sitio. La estructura de las páginas se describe típicamente mediante una plantilla de diseño <b>asociada</b>, y su contenido se construye a partir de una colección de <b>bloques</b>.</dd>
|
||||||
|
<dt><a href='#' onclick='contextualHelpFocus("#website-portation-tools", 1); return false;' title="Pulsar para resaltar el elmento...">Herramientas de portabilidad de sitios web</a></dt>
|
||||||
|
<dd>Las herramientas de portabilidad de sitios web le permiten importar y exportar múltiples elementos de páginas web (páginas, plantillas, bloques). Puede <b>importar</b> tanto de un fichero zip como de una carpeta de ficheros existente en la nube. Puede <b>exportar</b> tanto a un fichero zip que contenga un grupo seleccionado de elementos de páginas web, o exportarlos directamente a una carpeta de ficheros en la nube. <a target="_blank" href="help/webpages">Leer más...</a></dd>
|
||||||
|
</dl>
|
@ -174,6 +174,16 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti
|
|||||||
$custom = false;
|
$custom = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$r = q("SELECT id, profile_guid, profile_name from profile where is_default = 0 and uid = %d order by profile_name",
|
||||||
|
intval(local_channel())
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rv) {
|
||||||
|
$selected = (($single_group && 'vp.' . $rr['hash'] === $allow_gid[0]) ? ' selected = "selected" ' : '');
|
||||||
|
$groups .= '<option id="' . 'vp' . $rv['id'] . '" value="' . 'vp.' . $rv['profile_guid'] . '"' . $selected . '>' . t('Profile','acl') . ' ' . $rv['profile_name'] . '</option>' . "\r\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$r = q("SELECT id, hash, gname FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
|
$r = q("SELECT id, hash, gname FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
|
@ -33,6 +33,8 @@ function z_mime_content_type($filename) {
|
|||||||
'html' => 'text/html',
|
'html' => 'text/html',
|
||||||
'php' => 'text/html',
|
'php' => 'text/html',
|
||||||
'css' => 'text/css',
|
'css' => 'text/css',
|
||||||
|
'md' => 'text/markdown',
|
||||||
|
'bb' => 'text/bbcode',
|
||||||
'js' => 'application/javascript',
|
'js' => 'application/javascript',
|
||||||
'json' => 'application/json',
|
'json' => 'application/json',
|
||||||
'xml' => 'application/xml',
|
'xml' => 'application/xml',
|
||||||
|
@ -227,6 +227,26 @@ function group_get_members_xchan($gid) {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function group_get_profile_members_xchan($uid,$gid) {
|
||||||
|
$ret = [];
|
||||||
|
|
||||||
|
if(intval($gid)) {
|
||||||
|
$r = q("SELECT abook_xchan as xchan from abook left join profile on abook_profile = profile_guid where profile.id = %d and profile.uid = %d",
|
||||||
|
intval($gid),
|
||||||
|
intval($uid)
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rr) {
|
||||||
|
$ret[] = $rr['xchan'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function mini_group_select($uid,$group = '') {
|
function mini_group_select($uid,$group = '') {
|
||||||
|
|
||||||
$grps = array();
|
$grps = array();
|
||||||
@ -320,20 +340,46 @@ function group_side($every="connections",$each="group",$edit = false, $group_id
|
|||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
function expand_groups($a) {
|
function expand_groups($g) {
|
||||||
if(! (is_array($a) && count($a)))
|
if(! (is_array($g) && count($g)))
|
||||||
return array();
|
return array();
|
||||||
$x = $a;
|
|
||||||
|
$ret = [];
|
||||||
|
$x = [];
|
||||||
|
|
||||||
|
// private profile linked virtual groups
|
||||||
|
|
||||||
|
foreach($g as $gv) {
|
||||||
|
if(substr($gv,0,3) === 'vp.') {
|
||||||
|
$profile_hash = substr($gv,3);
|
||||||
|
if($profile_hash) {
|
||||||
|
$r = q("select abook_xchan from abook where abook_profile = '%s'",
|
||||||
|
dbesc($profile_hash)
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rv) {
|
||||||
|
$ret[] = $rv['abook_xchan'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$x[] = $gv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($x) {
|
||||||
stringify_array_elms($x,true);
|
stringify_array_elms($x,true);
|
||||||
$groups = implode(',', $x);
|
$groups = implode(',', $x);
|
||||||
|
if($groups) {
|
||||||
if($groups)
|
|
||||||
$r = q("SELECT xchan FROM group_member WHERE gid IN ( select id from groups where hash in ( $groups ))");
|
$r = q("SELECT xchan FROM group_member WHERE gid IN ( select id from groups where hash in ( $groups ))");
|
||||||
$ret = array();
|
if($r) {
|
||||||
|
foreach($r as $rr) {
|
||||||
if($r)
|
|
||||||
foreach($r as $rr)
|
|
||||||
$ret[] = $rr['xchan'];
|
$ret[] = $rr['xchan'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,10 +718,59 @@ function gps2Num($coordPart) {
|
|||||||
return floatval($parts[0]) / floatval($parts[1]);
|
return floatval($parts[0]) / floatval($parts[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function photo_profile_setperms($channel_id,$resource_id,$profile_id) {
|
||||||
|
|
||||||
|
if(! $profile_id)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$r = q("select profile_guid, is_default from profile where id = %d and uid = %d limit 1",
|
||||||
|
dbesc($profile_id),
|
||||||
|
intval($channel_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
if(! $r)
|
||||||
|
return;
|
||||||
|
|
||||||
|
$is_default = $r[0]['is_default'];
|
||||||
|
$profile_guid = $r[0]['profile_guid'];
|
||||||
|
|
||||||
|
if($is_default) {
|
||||||
|
$r = q("update photo set allow_cid = '', allow_gid = '', deny_cid = '', deny_gid = ''
|
||||||
|
where resource_id = '%s' and uid = %d",
|
||||||
|
dbesc($resource_id),
|
||||||
|
intval($channel_id)
|
||||||
|
);
|
||||||
|
$r = q("update attach set allow_cid = '', allow_gid = '', deny_cid = '', deny_gid = ''
|
||||||
|
where hash = '%s' and uid = %d",
|
||||||
|
dbesc($resource_id),
|
||||||
|
intval($channel_id)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$r = q("update photo set allow_cid = '', allow_gid = '%s', deny_cid = '', deny_gid = ''
|
||||||
|
where resource_id = '%s' and uid = %d",
|
||||||
|
dbesc('<vp.' . $profile_guid . '>'),
|
||||||
|
dbesc($resource_id),
|
||||||
|
intval($channel_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
$r = q("update attach set allow_cid = '', allow_gid = '%s', deny_cid = '', deny_gid = ''
|
||||||
|
where hash = '%s' and uid = %d",
|
||||||
|
dbesc('<vp.' . $profile_guid . '>'),
|
||||||
|
dbesc($resource_id),
|
||||||
|
intval($channel_id)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function profile_photo_set_profile_perms($uid, $profileid = 0) {
|
function profile_photo_set_profile_perms($uid, $profileid = 0) {
|
||||||
|
|
||||||
$allowcid = '';
|
$allowcid = '';
|
||||||
|
|
||||||
|
|
||||||
if($profileid) {
|
if($profileid) {
|
||||||
|
|
||||||
$r = q("SELECT photo, profile_guid, id, is_default, uid
|
$r = q("SELECT photo, profile_guid, id, is_default, uid
|
||||||
FROM profile WHERE uid = %d and ( profile.id = %d OR profile.profile_guid = '%s') LIMIT 1",
|
FROM profile WHERE uid = %d and ( profile.id = %d OR profile.profile_guid = '%s') LIMIT 1",
|
||||||
intval($uid),
|
intval($uid),
|
||||||
|
@ -553,7 +553,21 @@ function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'f
|
|||||||
// var $contact_id = xchan_hash of connection
|
// var $contact_id = xchan_hash of connection
|
||||||
|
|
||||||
function init_groups_visitor($contact_id) {
|
function init_groups_visitor($contact_id) {
|
||||||
$groups = array();
|
$groups = [];
|
||||||
|
|
||||||
|
// private profiles are treated as a virtual group
|
||||||
|
|
||||||
|
$r = q("SELECT abook_profile from abook where abook_xchan = '%s' and abook_profile != '' ",
|
||||||
|
dbesc($contact_id)
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rv) {
|
||||||
|
$groups[] = 'vp.' . $rv['abook_profile'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// physical groups this channel is a member of
|
||||||
|
|
||||||
$r = q("SELECT hash FROM groups left join group_member on groups.id = group_member.gid WHERE xchan = '%s' ",
|
$r = q("SELECT hash FROM groups left join group_member on groups.id = group_member.gid WHERE xchan = '%s' ",
|
||||||
dbesc($contact_id)
|
dbesc($contact_id)
|
||||||
);
|
);
|
||||||
|
@ -663,7 +663,7 @@ function widget_settings_menu($arr) {
|
|||||||
|
|
||||||
if(feature_enabled(local_channel(),'permcats')) {
|
if(feature_enabled(local_channel(),'permcats')) {
|
||||||
$tabs[] = array(
|
$tabs[] = array(
|
||||||
'label' => t('Permission Categories'),
|
'label' => t('Permission Groups'),
|
||||||
'url' => z_root() . '/settings/permcats',
|
'url' => z_root() . '/settings/permcats',
|
||||||
'selected' => ((argv(1) === 'permcats') ? 'active' : ''),
|
'selected' => ((argv(1) === 'permcats') ? 'active' : ''),
|
||||||
);
|
);
|
||||||
|
2317
util/hmessages.po
2317
util/hmessages.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -252,7 +252,7 @@ header #banner #logo-text {
|
|||||||
display: block;
|
display: block;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 51px;
|
top: 51px;
|
||||||
width: 100%;
|
left: 0px;
|
||||||
max-height: 50%;
|
max-height: 50%;
|
||||||
background: $comment_item_colour;
|
background: $comment_item_colour;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
@ -84,6 +84,10 @@
|
|||||||
{{include file="field_checkbox.tpl" field=$blocktags}}
|
{{include file="field_checkbox.tpl" field=$blocktags}}
|
||||||
{{include file="field_input.tpl" field=$expire}}
|
{{include file="field_input.tpl" field=$expire}}
|
||||||
</div>
|
</div>
|
||||||
|
{{if $permcat_enable}}
|
||||||
|
{{include file="field_select.tpl" field=$defpermcat}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{if $sec_addon}}
|
{{if $sec_addon}}
|
||||||
{{$sec_addon}}
|
{{$sec_addon}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
Reference in New Issue
Block a user