mirror of
https://framagit.org/hubzilla/core.git
synced 2026-06-21 00:52:33 -04:00
ux improvements
This commit is contained in:
@@ -332,9 +332,6 @@ class Connections extends \Zotlabs\Web\Controller {
|
|||||||
'thumb' => $rr['xchan_photo_m'],
|
'thumb' => $rr['xchan_photo_m'],
|
||||||
'name' => $rr['xchan_name'],
|
'name' => $rr['xchan_name'],
|
||||||
'classes' => ((intval($rr['abook_archived']) || intval($rr['abook_not_here'])) ? 'archived' : ''),
|
'classes' => ((intval($rr['abook_archived']) || intval($rr['abook_not_here'])) ? 'archived' : ''),
|
||||||
'link' => z_root() . '/connedit/' . $rr['abook_id'],
|
|
||||||
'deletelink' => z_root() . '/connedit/' . intval($rr['abook_id']) . '/drop',
|
|
||||||
'delete' => t('Delete'),
|
|
||||||
'url' => chanlink_hash($rr['xchan_hash']),
|
'url' => chanlink_hash($rr['xchan_hash']),
|
||||||
'webbie_label' => t('Channel address'),
|
'webbie_label' => t('Channel address'),
|
||||||
'webbie' => $rr['xchan_addr'],
|
'webbie' => $rr['xchan_addr'],
|
||||||
@@ -345,6 +342,7 @@ class Connections extends \Zotlabs\Web\Controller {
|
|||||||
'phone' => $phone,
|
'phone' => $phone,
|
||||||
'status_label' => t('Status'),
|
'status_label' => t('Status'),
|
||||||
'status' => $status_str,
|
'status' => $status_str,
|
||||||
|
'states' => $status,
|
||||||
'connected_label' => t('Connected'),
|
'connected_label' => t('Connected'),
|
||||||
'connected' => datetime_convert('UTC',date_default_timezone_get(),$rr['abook_created'], 'c'),
|
'connected' => datetime_convert('UTC',date_default_timezone_get(),$rr['abook_created'], 'c'),
|
||||||
'approve_hover' => t('Approve connection'),
|
'approve_hover' => t('Approve connection'),
|
||||||
@@ -358,7 +356,8 @@ class Connections extends \Zotlabs\Web\Controller {
|
|||||||
'connect' => (intval($rr['abook_not_here']) ? t('Connect') : ''),
|
'connect' => (intval($rr['abook_not_here']) ? t('Connect') : ''),
|
||||||
'follow' => z_root() . '/follow/?f=&url=' . urlencode($rr['xchan_hash']) . '&interactive=0',
|
'follow' => z_root() . '/follow/?f=&url=' . urlencode($rr['xchan_hash']) . '&interactive=0',
|
||||||
'connect_hover' => t('Connect at this location'),
|
'connect_hover' => t('Connect at this location'),
|
||||||
'role' => $roles_dict[$rr['abook_role']]
|
'role' => $roles_dict[$rr['abook_role']],
|
||||||
|
'pending' => intval($rr['abook_pending'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -398,6 +397,7 @@ class Connections extends \Zotlabs\Web\Controller {
|
|||||||
'$finding' => (($searching) ? t('Contact search') . ": '" . $search . "'" : ""),
|
'$finding' => (($searching) ? t('Contact search') . ": '" . $search . "'" : ""),
|
||||||
'$submit' => t('Find'),
|
'$submit' => t('Find'),
|
||||||
'$edit' => t('Edit'),
|
'$edit' => t('Edit'),
|
||||||
|
'$approve' => t('Approve'),
|
||||||
'$cmd' => App::$cmd,
|
'$cmd' => App::$cmd,
|
||||||
'$contacts' => $contacts,
|
'$contacts' => $contacts,
|
||||||
'$paginate' => paginate($a),
|
'$paginate' => paginate($a),
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ class Profile_photo extends Controller {
|
|||||||
|
|
||||||
check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo');
|
check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo');
|
||||||
|
|
||||||
|
|
||||||
$r = q("select id, profile_guid, is_default, gender from profile where uid = %d",
|
$r = q("select id, profile_guid, is_default, gender from profile where uid = %d",
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
@@ -99,7 +98,6 @@ class Profile_photo extends Controller {
|
|||||||
dbesc(z_root() . '/photo/profile/m/' . local_channel()),
|
dbesc(z_root() . '/photo/profile/m/' . local_channel()),
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -211,14 +209,12 @@ class Profile_photo extends Controller {
|
|||||||
// If setting for the default profile, unset the profile photo flag from any other photos I own
|
// If setting for the default profile, unset the profile photo flag from any other photos I own
|
||||||
|
|
||||||
if ($is_default_profile) {
|
if ($is_default_profile) {
|
||||||
|
|
||||||
q("update profile set photo = '%s', thumb = '%s' where is_default = 1 and uid = %d",
|
q("update profile set photo = '%s', thumb = '%s' where is_default = 1 and uid = %d",
|
||||||
dbesc(z_root() . '/photo/profile/l/' . local_channel()),
|
dbesc(z_root() . '/photo/profile/l/' . local_channel()),
|
||||||
dbesc(z_root() . '/photo/profile/m/' . local_channel()),
|
dbesc(z_root() . '/photo/profile/m/' . local_channel()),
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
q("UPDATE photo SET photo_usage = %d WHERE photo_usage = %d
|
q("UPDATE photo SET photo_usage = %d WHERE photo_usage = %d
|
||||||
AND resource_id != '%s' AND uid = %d",
|
AND resource_id != '%s' AND uid = %d",
|
||||||
intval(PHOTO_NORMAL),
|
intval(PHOTO_NORMAL),
|
||||||
@@ -227,9 +223,7 @@ class Profile_photo extends Controller {
|
|||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
send_profile_photo_activity($channel, $base_image, $profile);
|
send_profile_photo_activity($channel, $base_image, $profile);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
q("update profile set photo = '%s', thumb = '%s' where id = %d and uid = %d",
|
q("update profile set photo = '%s', thumb = '%s' where id = %d and uid = %d",
|
||||||
@@ -288,12 +282,10 @@ class Profile_photo extends Controller {
|
|||||||
// A new photo was uploaded. Store it and save some important details
|
// A new photo was uploaded. Store it and save some important details
|
||||||
// in App::$data for use in the cropping function
|
// in App::$data for use in the cropping function
|
||||||
|
|
||||||
|
|
||||||
$hash = photo_new_resource();
|
$hash = photo_new_resource();
|
||||||
$importing = false;
|
$importing = false;
|
||||||
$smallest = 0;
|
$smallest = 0;
|
||||||
|
|
||||||
|
|
||||||
if ($_REQUEST['importfile']) {
|
if ($_REQUEST['importfile']) {
|
||||||
$hash = $_REQUEST['importfile'];
|
$hash = $_REQUEST['importfile'];
|
||||||
$importing = true;
|
$importing = true;
|
||||||
@@ -358,6 +350,7 @@ class Profile_photo extends Controller {
|
|||||||
notice(t('Image upload failed.') . EOL);
|
notice(t('Image upload failed.') . EOL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$os_storage = false;
|
$os_storage = false;
|
||||||
|
|
||||||
foreach ($i as $ii) {
|
foreach ($i as $ii) {
|
||||||
@@ -501,14 +494,16 @@ class Profile_photo extends Controller {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intval($r[0]['os_storage']))
|
if (intval($r[0]['os_storage'])) {
|
||||||
$data = @file_get_contents($r[0]['content']);
|
$data = @file_get_contents($r[0]['content']);
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
$data = dbunescbin($r[0]['content']);
|
$data = dbunescbin($r[0]['content']);
|
||||||
|
}
|
||||||
|
|
||||||
$ph = photo_factory($data, $r[0]['mimetype']);
|
$ph = photo_factory($data, $r[0]['mimetype']);
|
||||||
$smallest = 0;
|
$smallest = 0;
|
||||||
|
|
||||||
if ($ph->is_valid()) {
|
if ($ph->is_valid()) {
|
||||||
|
|
||||||
// go ahead as if we have just uploaded a new photo to crop
|
// go ahead as if we have just uploaded a new photo to crop
|
||||||
@@ -573,7 +568,8 @@ class Profile_photo extends Controller {
|
|||||||
|
|
||||||
$filename = App::$data['imagecrop'] . '-' . App::$data['imagecrop_resolution'];
|
$filename = App::$data['imagecrop'] . '-' . App::$data['imagecrop_resolution'];
|
||||||
$tpl = get_markup_template("cropbody.tpl");
|
$tpl = get_markup_template("cropbody.tpl");
|
||||||
$o = replace_macros($tpl, [
|
|
||||||
|
$o = replace_macros($tpl, [
|
||||||
'$filename' => $filename,
|
'$filename' => $filename,
|
||||||
'$profile' => $profile_id,
|
'$profile' => $profile_id,
|
||||||
'$resource' => App::$data['imagecrop'] . '-' . App::$data['imagecrop_resolution'],
|
'$resource' => App::$data['imagecrop'] . '-' . App::$data['imagecrop_resolution'],
|
||||||
@@ -583,6 +579,7 @@ class Profile_photo extends Controller {
|
|||||||
'$form_security_token' => get_form_security_token("profile_photo"),
|
'$form_security_token' => get_form_security_token("profile_photo"),
|
||||||
'$done' => t('Done editing')
|
'$done' => t('Done editing')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -601,10 +598,13 @@ class Profile_photo extends Controller {
|
|||||||
function profile_photo_crop_ui_head($ph, $hash, $smallest) {
|
function profile_photo_crop_ui_head($ph, $hash, $smallest) {
|
||||||
|
|
||||||
$max_length = get_config('system', 'max_image_length');
|
$max_length = get_config('system', 'max_image_length');
|
||||||
if (!$max_length)
|
|
||||||
|
if (!$max_length) {
|
||||||
$max_length = MAX_IMAGE_LENGTH;
|
$max_length = MAX_IMAGE_LENGTH;
|
||||||
if ($max_length > 0)
|
}
|
||||||
|
if ($max_length > 0) {
|
||||||
$ph->scaleImage($max_length);
|
$ph->scaleImage($max_length);
|
||||||
|
}
|
||||||
|
|
||||||
App::$data['width'] = $ph->getWidth();
|
App::$data['width'] = $ph->getWidth();
|
||||||
App::$data['height'] = $ph->getHeight();
|
App::$data['height'] = $ph->getHeight();
|
||||||
@@ -615,10 +615,10 @@ class Profile_photo extends Controller {
|
|||||||
App::$data['height'] = $ph->getHeight();
|
App::$data['height'] = $ph->getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
App::$data['imagecrop'] = $hash;
|
App::$data['imagecrop'] = $hash;
|
||||||
App::$data['imagecrop_resolution'] = $smallest;
|
App::$data['imagecrop_resolution'] = $smallest;
|
||||||
App::$page['htmlhead'] .= replace_macros(get_markup_template("crophead.tpl"), []);
|
App::$page['htmlhead'] .= replace_macros(get_markup_template("crophead.tpl"), []);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -163,34 +163,6 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
killme();
|
killme();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Run profile_load() here to make sure the theme is set before
|
|
||||||
// we start loading content
|
|
||||||
if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_channel(),'multi_profiles')) {
|
|
||||||
if(feature_enabled(local_channel(),'multi_profiles'))
|
|
||||||
$id = \App::$argv[1];
|
|
||||||
else {
|
|
||||||
$x = q("select id from profile where uid = %d and is_default = 1",
|
|
||||||
intval(local_channel())
|
|
||||||
);
|
|
||||||
if($x)
|
|
||||||
$id = $x[0]['id'];
|
|
||||||
}
|
|
||||||
$r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1",
|
|
||||||
intval($id),
|
|
||||||
intval(local_channel())
|
|
||||||
);
|
|
||||||
if(! count($r)) {
|
|
||||||
notice( t('Profile not found.') . EOL);
|
|
||||||
\App::$error = 404;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$chan = \App::get_channel();
|
|
||||||
profile_load($chan['channel_address'],$r[0]['id']);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function post() {
|
function post() {
|
||||||
@@ -628,8 +600,6 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($is_default) {
|
if($is_default) {
|
||||||
// reload the info for the sidebar widget
|
|
||||||
profile_load($channel['channel_address']);
|
|
||||||
\Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
|
\Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -640,13 +610,13 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
$o = '';
|
$o = '';
|
||||||
|
|
||||||
$channel = \App::get_channel();
|
|
||||||
|
|
||||||
if(! local_channel()) {
|
if(! local_channel()) {
|
||||||
notice( t('Permission denied.') . EOL);
|
notice( t('Permission denied.') . EOL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$channel = \App::get_channel();
|
||||||
|
|
||||||
require_once('include/channel.php');
|
require_once('include/channel.php');
|
||||||
|
|
||||||
$profile_fields_basic = get_profile_fields_basic();
|
$profile_fields_basic = get_profile_fields_basic();
|
||||||
@@ -662,6 +632,7 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
if($x)
|
if($x)
|
||||||
$id = $x[0]['id'];
|
$id = $x[0]['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1",
|
$r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1",
|
||||||
intval($id),
|
intval($id),
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
@@ -672,6 +643,9 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// make sure we got uptodate data
|
||||||
|
profile_load($channel['channel_address'], $id);
|
||||||
|
|
||||||
$editselect = 'none';
|
$editselect = 'none';
|
||||||
|
|
||||||
\App::$page['htmlhead'] .= replace_macros(get_markup_template('profed_head.tpl'), array(
|
\App::$page['htmlhead'] .= replace_macros(get_markup_template('profed_head.tpl'), array(
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ class Profiles {
|
|||||||
$module = substr(strrchr(strtolower(static::class), '\\'), 1);
|
$module = substr(strrchr(strtolower(static::class), '\\'), 1);
|
||||||
|
|
||||||
check_form_security_token_redirectOnErr('/settings/' . $module, 'settings_' . $module);
|
check_form_security_token_redirectOnErr('/settings/' . $module, 'settings_' . $module);
|
||||||
|
|
||||||
$features = get_module_features($module);
|
$features = get_module_features($module);
|
||||||
|
|
||||||
process_module_features_post(local_channel(), $features, $_POST);
|
process_module_features_post(local_channel(), $features, $_POST);
|
||||||
|
|
||||||
$profile_assign = ((x($_POST,'profile_assign')) ? notags(trim($_POST['profile_assign'])) : '');
|
$profile_assign = ((x($_POST,'profile_assign')) ? notags(trim($_POST['profile_assign'])) : '');
|
||||||
set_pconfig(local_channel(),'system','profile_assign',$profile_assign);
|
set_pconfig(local_channel(),'system','profile_assign',$profile_assign);
|
||||||
|
|
||||||
Libsync::build_sync_packet();
|
Libsync::build_sync_packet();
|
||||||
|
|
||||||
if($_POST['rpath'])
|
if($_POST['rpath'])
|
||||||
@@ -38,7 +38,7 @@ class Profiles {
|
|||||||
|
|
||||||
$extra_settings_html = '';
|
$extra_settings_html = '';
|
||||||
if(feature_enabled(local_channel(),'multi_profiles'))
|
if(feature_enabled(local_channel(),'multi_profiles'))
|
||||||
$extra_settings_html = contact_profile_assign(get_pconfig(local_channel(),'system','profile_assign',''));
|
$extra_settings_html = contact_profile_assign(get_pconfig(local_channel(),'system','profile_assign',''), t('Default profile for new contacts'));
|
||||||
|
|
||||||
$tpl = get_markup_template("settings_module.tpl");
|
$tpl = get_markup_template("settings_module.tpl");
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ class Profiles {
|
|||||||
'$extra_settings_html' => $extra_settings_html,
|
'$extra_settings_html' => $extra_settings_html,
|
||||||
'$submit' => t('Submit')
|
'$submit' => t('Submit')
|
||||||
));
|
));
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php /** @file */
|
<?php /** @file */
|
||||||
|
|
||||||
|
|
||||||
function contact_profile_assign($current) {
|
function contact_profile_assign($current, $label = '') {
|
||||||
|
|
||||||
$r = q("SELECT profile_guid, profile_name FROM profile WHERE uid = %d",
|
$r = q("SELECT profile_guid, profile_name FROM profile WHERE uid = %d",
|
||||||
intval($_SESSION['uid'])
|
intval($_SESSION['uid'])
|
||||||
@@ -13,9 +13,13 @@ function contact_profile_assign($current) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$label) {
|
||||||
|
$label = t('Select a profile to assign to this contact');
|
||||||
|
}
|
||||||
|
|
||||||
$select = [
|
$select = [
|
||||||
'profile_assign',
|
'profile_assign',
|
||||||
t('Select a profile to assign to this contact'),
|
$label,
|
||||||
$current,
|
$current,
|
||||||
'',
|
'',
|
||||||
$options
|
$options
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
<div id="contact-entry-wrapper-{{$contact.id}}">
|
<div id="contact-entry-wrapper-{{$contact.id}}">
|
||||||
<div class="section-subtitle-wrapper clearfix">
|
<div class="section-subtitle-wrapper clearfix">
|
||||||
<div class="float-end">
|
<div class="float-end">
|
||||||
|
{{if $contact.status}}
|
||||||
|
{{foreach $contact.states as $state}}
|
||||||
|
<span class="badge rounded-pill bg-danger text-white me-1" title="">{{$state}}</span>
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
<span id="contact-role-{{$contact.id}}" class="badge rounded-pill bg-warning text-dark me-1" title="{{$role_label}}">{{$contact.role}}</span>
|
<span id="contact-role-{{$contact.id}}" class="badge rounded-pill bg-warning text-dark me-1" title="{{$role_label}}">{{$contact.role}}</span>
|
||||||
<button type="button" class="btn btn-outline-secondary btn-sm contact-edit" title="{{$contact.edit_hover}}" data-id="{{$contact.id}}">
|
<button type="button" class="btn btn-outline-secondary btn-sm contact-edit" title="{{$contact.edit_hover}}" data-id="{{$contact.id}}">
|
||||||
<i class="fa fa-pencil"></i> {{$contact.edit}}
|
<i class="fa fa-pencil"></i> {{$contact.edit}}
|
||||||
@@ -16,11 +21,11 @@
|
|||||||
{{include "connstatus.tpl" perminfo=$contact.perminfo}}
|
{{include "connstatus.tpl" perminfo=$contact.perminfo}}
|
||||||
</div>
|
</div>
|
||||||
<div class="contact-info">
|
<div class="contact-info">
|
||||||
{{if $contact.status}}
|
{{** if $contact.status}}
|
||||||
<div class="contact-info-element">
|
<div class="contact-info-element">
|
||||||
<span class="contact-info-label">{{$contact.status_label}}:</span> {{$contact.status}}
|
<span class="contact-info-label">{{$contact.status_label}}:</span> {{$contact.status}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if **}}
|
||||||
{{if $contact.connected}}
|
{{if $contact.connected}}
|
||||||
<div class="contact-info-element">
|
<div class="contact-info-element">
|
||||||
<span class="contact-info-label">{{$contact.connected_label}}:</span> <span class="autotime" title="{{$contact.connected}}"></span>
|
<span class="contact-info-label">{{$contact.connected_label}}:</span> <span class="autotime" title="{{$contact.connected}}"></span>
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h2>{{$banner}}</h2>
|
<h2>{{$banner}}{{if $multi_profiles}}: {{$profile_name.2}}{{/if}}</h2>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="section-content-tools-wrapper" id="profile-upload-form">
|
<div class="section-content-tools-wrapper" id="profile-upload-form">
|
||||||
|
|||||||
Reference in New Issue
Block a user