Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Haakon Meland Eriksen 2016-02-09 06:03:43 +01:00
commit 8c99228c8a
30 changed files with 246 additions and 49 deletions

View file

@ -24,6 +24,9 @@ AddType audio/ogg .oga
# Also place auth information into REMOTE_USER for sites running
# in CGI mode.
RewriteCond %{REQUEST_URI} ^/\.well\-known/.*
RewriteRule ^(.*)$ index.php?q=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]

View file

@ -650,7 +650,6 @@ class App {
private $perms = null; // observer permissions
private $widgets = array(); // widgets for this page
public $groups;
public $language;
public $module_loaded = false;
@ -2167,7 +2166,8 @@ function construct_page(&$a) {
if($a->get_scheme() === 'https' && $a->config['system']['transport_security_header'])
header("Strict-Transport-Security: max-age=31536000");
header("Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'");
if($a->config['system']['content_security_policy'])
header("Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'");
if($a->config['system']['x_security_headers']) {
header("X-Frame-Options: SAMEORIGIN");
@ -2394,3 +2394,9 @@ function get_site_icon() {
return z_root() . '/images/hz-32.png';
}
function get_server_role() {
if(UNO)
return 'basic';
return 'advanced';
}

View file

@ -484,7 +484,7 @@ function identity_basic_export($channel_id, $items = false) {
// use constants here as otherwise we will have no idea if we can import from a site
// with a non-standard platform and version.
$ret['compatibility'] = array('project' => PLATFORM_NAME, 'version' => RED_VERSION, 'database' => DB_UPDATE_VERSION, 'server_role' => UNO );
$ret['compatibility'] = array('project' => PLATFORM_NAME, 'version' => RED_VERSION, 'database' => DB_UPDATE_VERSION, 'server_role' => get_server_role());
$r = q("select * from channel where channel_id = %d limit 1",
intval($channel_id)
@ -913,7 +913,7 @@ function profile_load(&$a, $nickname, $profile = '') {
* @return HTML string suitable for sidebar inclusion
* Exceptions: Returns empty string if passed $profile is wrong type or not populated
*/
function profile_sidebar($profile, $block = 0, $show_connect = true) {
function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = false) {
$a = get_app();
@ -1050,14 +1050,18 @@ function profile_sidebar($profile, $block = 0, $show_connect = true) {
$channel_menu .= comanche_block($menublock);
}
$tpl = get_markup_template('profile_vcard.tpl');
if($zcard)
$tpl = get_markup_template('profile_vcard_short.tpl');
else
$tpl = get_markup_template('profile_vcard.tpl');
require_once('include/widgets.php');
if(! feature_enabled($profile['uid'],'hide_rating'))
$z = widget_rating(array('target' => $profile['channel_hash']));
$o .= replace_macros($tpl, array(
'$zcard' => $zcard,
'$profile' => $profile,
'$connect' => $connect,
'$connect_url' => $connect_url,
@ -1796,8 +1800,8 @@ function get_zcard($channel,$observer_hash = '',$args = array()) {
$cover_size = PHOTO_RES_COVER_425;
$pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 80 , 'height' => 80, 'href' => $channel['xchan_photo_m']);
}
elseif($maxwidth <= 850) {
$width = 850;
elseif($maxwidth <= 900) {
$width = 900;
$size = 'hz_medium';
$cover_size = PHOTO_RES_COVER_850;
$pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 160 , 'height' => 160, 'href' => $channel['xchan_photo_l']);
@ -1832,6 +1836,7 @@ function get_zcard($channel,$observer_hash = '',$args = array()) {
}
$o .= replace_macros(get_markup_template('zcard.tpl'),array(
'$maxwidth' => $maxwidth,
'$scale' => $scale,
'$translate' => $translate,
'$size' => $size,

View file

@ -1805,6 +1805,7 @@ function get_site_info() {
$data = Array(
'version' => $version,
'version_tag' => $tag,
'server_role' => get_server_role(),
'commit' => $commit,
'url' => z_root(),
'plugins' => $visible_plugins,

View file

@ -8,7 +8,7 @@
require_once('include/dir_fns.php');
require_once('include/contact_widgets.php');
require_once('include/attach.php');
require_once('include/Contact.php');
function widget_profile($args) {
$a = get_app();
@ -16,6 +16,16 @@ function widget_profile($args) {
return profile_sidebar($a->profile, $block, true);
}
function widget_zcard($args) {
$a = get_app();
$block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
$channel = channelx_by_n($a->profile_uid);
return get_zcard($channel,get_observer_hash(),array('width' => 875));
}
// FIXME The problem with the next widget is that we don't have a search function for webpages that we can send the links to.
// Then we should also provide an option to search webpages and conversations.
@ -369,6 +379,17 @@ function widget_fullprofile($arr) {
return profile_sidebar($a->profile, $block);
}
function widget_shortprofile($arr) {
$a = get_app();
if(! $a->profile['profile_uid'])
return;
$block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
return profile_sidebar($a->profile, $block, true, true);
}
function widget_categories($arr) {
$a = get_app();

View file

@ -46,6 +46,15 @@ $a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = 'if the auto install failed, put a unique random string here';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

View file

@ -49,19 +49,12 @@ function _well_known_init(&$a){
break;
default:
// look in $WEBROOT/well_known for the requested file in case it is
// something a site requires and for which we do not have a module
// @fixme - we may need to determine the content-type and stick it in the header
// for now this can be done with a php script masquerading as the requested file
$wk_file = str_replace('.well-known','well_known',$a->cmd);
if(file_exists($wk_file)) {
echo file_get_contents($wk_file);
if(file_exists($a->cmd)) {
echo file_get_contents($a->cmd);
killme();
}
elseif(file_exists($wk_file . '.php'))
require_once($wk_file . '.php');
elseif(file_exists($a->cmd . '.php'))
require_once($a->cmd . '.php');
break;
}

View file

@ -120,7 +120,7 @@ function import_account(&$a, $account_id) {
notice($t);
}
if(array_key_exists('server_role',$data['compatibility'])
&& $data['compatibility']['server_role'] != UNO) {
&& $data['compatibility']['server_role'] != get_server_role()) {
notice( t('Server platform is not compatible. Operation not permitted.') . EOL);
return;
}

View file

@ -146,7 +146,7 @@ function register_post(&$a) {
$new_channel = false;
if(get_config('system','auto_channel_create')) {
if(get_config('system','auto_channel_create') || UNO) {
$new_channel = auto_channel_create($result['account']['account_id']);
if($new_channel['success']) {
$channel_id = $new_channel['channel']['channel_id'];

View file

@ -1013,6 +1013,7 @@ function settings_content(&$a) {
$permissions_role = 'custom';
$permissions_set = (($permissions_role != 'custom') ? true : false);
$vnotify = get_pconfig(local_channel(),'system','vnotify');
$always_show_in_notices = get_pconfig(local_channel(),'system','always_show_in_notices');
if($vnotify === false)
@ -1037,6 +1038,7 @@ function settings_content(&$a) {
'$h_prv' => t('Security and Privacy Settings'),
'$permissions_set' => $permissions_set,
'$server_role' => get_server_role(),
'$perms_set_msg' => t('Your permissions are already configured. Click to view/adjust'),
'$hide_presence' => array('hide_presence', t('Hide my online presence'),$hide_presence, t('Prevents displaying in your profile that you are online'), $yes_no),

View file

@ -1 +1 @@
2016-02-05.1300H
2016-02-07.1302H

View file

@ -36,6 +36,15 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -37,6 +37,15 @@ $a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -37,6 +37,15 @@ $a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -36,6 +36,13 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting

View file

@ -36,6 +36,13 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting

View file

@ -36,6 +36,15 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -37,6 +37,15 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Vos choix sont REGISTER_OPEN, REGISTER_APPROVE, ou REGISTER_CLOSED.
// Soyez certains de créer votre compte personnel avant de déclarer
// votre site REGISTER_CLOSED. 'register_text' (si vous décider de l'utiliser)

View file

@ -36,6 +36,15 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -641,7 +641,7 @@ function collapseHeight() {
if(orgHeight > divmore_height) {
if(! $(this).hasClass('divmore')) {
var trigger = $(window).scrollTop() + ($(window).height() - divmore_height) < $(this).offset().top ? true : false;
var trigger = $(window).scrollTop() < $(this).offset().top ? true : false;
if(trigger) {
$(this).readmore({
@ -653,7 +653,7 @@ function collapseHeight() {
beforeToggle: function(trigger, element, expanded) {
if(expanded) {
if((($(element).offset().top + divmore_height) - $(window).scrollTop()) < 65 ) {
$('html, body').animate( { scrollTop: $(window).scrollTop() - (orgHeight - divmore_height) }, {duration: 0 } );
$(window).scrollTop($(window).scrollTop() - (orgHeight - divmore_height));
}
}
}

View file

@ -36,6 +36,15 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -36,6 +36,15 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Hubzilla";
$a->config['system']['location_hash'] = '{{$site_id}}';
// These lines set additional security headers to be sent with all responses
// You may wish to set transport_security_header to 0 if your server already sends
// this header. content_security_policy may need to be disabled if you wish to
// run the piwik analytics plugin or include other offsite resources on a page
$a->config['system']['transport_security_header'] = 1;
$a->config['system']['content_security_policy'] = 1;
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on

View file

@ -40,7 +40,6 @@ if(! $a->install) {
$nav_min_opacity=get_pconfig($uid,'redbasic','nav_min_opacity');
$top_photo=get_pconfig($uid,'redbasic','top_photo');
$reply_photo=get_pconfig($uid,'redbasic','reply_photo');
}
// Now load the scheme. If a value is changed above, we'll keep the settings

View file

@ -68,7 +68,6 @@
{{include file="field_input.tpl" field=$maximagesize}}
<h3>{{$corporate}}</h3>
{{include file="field_checkbox.tpl" field=$block_public}}
{{include file="field_checkbox.tpl" field=$verify_email}}
{{include file="field_checkbox.tpl" field=$feed_contacts}}
{{include file="field_checkbox.tpl" field=$force_publish}}

View file

@ -1,6 +1,15 @@
<h3>{{$title}}</h3>
<div id="mood-desc">{{$desc}}</div>
<div id="mood-content" class="generic-content-wrapper">
<div class="section-title-wrapper">
<h2>{{$title}}</h2>
</div>
<div class="section-content-wrapper">
<div id="mood-desc">{{$desc}}</div>
<br />
<br />
<form action="mood" method="get">
<br />
@ -8,11 +17,13 @@
<input id="mood-parent" type="hidden" value="{{$parent}}" name="parent" />
<select name="verb" id="mood-verb-select" >
{{foreach $verbs as $v}}
<option value="{{$v.0}}">{{$v.1}}</option>
{{/foreach}}
</select>
<div class="form-group field custom">
<select name="verb" id="mood-verb-select" class="form-control" >
{{foreach $verbs as $v}}
<option value="{{$v.0}}">{{$v.1}}</option>
{{/foreach}}
</select>
</div>
<br />
<br />
<input type="submit" name="submit" value="{{$submit}}" />

View file

@ -1,8 +1,11 @@
<div class="vcard">
{{if ! $zcard}}
<div id="profile-photo-wrapper"><img class="photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
{{/if}}
{{if $connect}}
<div class="connect-btn-wrapper"><a href="{{$connect_url}}" class="btn btn-block btn-success btn-sm"><i class="icon-plus"></i> {{$connect}}</a></div>
{{/if}}
{{if ! $zcard}}
{{if $profile.edit}}
<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>
@ -17,9 +20,12 @@
</ul>
</div>
{{/if}}
{{/if}}
{{if ! $zcard}}
<div class="fn">{{$profile.name}}{{if $profile.online}} <i class="icon-asterisk online-now" title="{{$profile.online}}"></i>{{/if}}</div>
{{if $reddress}}<div class="reddress" oncopy="return false;">{{$profile.reddress}}</div>{{/if}}
{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}

View file

@ -0,0 +1,42 @@
{{$contact_block}}
{{if $connect}}
<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}}
{{$rating}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt>
<dd class="adr">
{{if $profile.address}}<div class="street-address">{{$profile.address}}</div>{{/if}}
<span class="city-state-zip">
<span class="locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region">{{$profile.region}}</span>
<span class="postal-code">{{$profile.postal_code}}</span>
</span>
{{if $profile.country_name}}<span class="country-name">{{$profile.country_name}}</span>{{/if}}
</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 $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url">{{$profile.homepage}}</dd></dl>{{/if}}
{{if $diaspora}}
{{include file="diaspora_vcard.tpl"}}
{{/if}}
<div id="clear"></div>
{{$chanmenu}}

View file

@ -42,8 +42,12 @@
</div>
<div id="privacy-settings-collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="privacy-settings">
<div class="section-content-tools-wrapper">
{{if $server_role != 'basic'}}
{{include file="field_select_grouped.tpl" field=$role}}
<div id="advanced-perm" style="display:{{if $permissions_set}}none{{else}}block{{/if}};">
{{/if}}
<div id="advanced-perm" style="display:{{if $permissions_set && $server_role != 'basic' }}none{{else}}block{{/if}};">
{{if $server_role != 'basic'}}
<div class="form-group">
<button type="button" class="btn btn-default" data-toggle="modal" data-target="#apsModal">{{$lbl_p2macro}}</button>
</div>
@ -65,6 +69,7 @@
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
{{/if}}
<div id="settings-default-perms" class="form-group" >
<button type="button" class="btn btn-default" data-toggle="modal" data-target="#aclModal"><i id="jot-perms-icon"></i>&nbsp;{{$permissions}}</button>
{{$aclselect}}

View file

@ -41,41 +41,50 @@
}
{{elseif $size == 'hz_medium'}}
.hz_card {
-moz-transform: translate(-{{$translate}}%, -{{$translate}}%) scale({{$scale}}, {{$scale}});
transform: translate(-{{$translate}}%, -{{$translate}}%) scale({{$scale}}, {{$scale}});
/* -moz-transform: translate(-{{$translate}}%, -{{$translate}}%) scale({{$scale}}, {{$scale}});
transform: translate(-{{$translate}}%, -{{$translate}}%) scale({{$scale}}, {{$scale}}); */
font-family: sans-serif, arial, freesans;
width: 100%;
overflow: hidden;
height: 390px;
}
.hz_cover_photo {
max-width: 100%;
.hz_cover_photo img {
width: {{$maxwidth}}px;
/* max-width: 100%; */
}
.hz_profile_photo {
position: relative;
top: -300px;
top: -165px;
left: 30px;
width: 150px;
height: 150px;
}
.hz_profile_photo img {
background-color: white;
border: 1px solid #ddd;
border-radius: 5px;
-moz-border-radius: 5px;
padding: 10px;
width: 320px;
height: 320px;
padding: 5px;
width: 150px;
height: 150px;
}
.hz_name {
position: relative;
top: -100px;
left: 400px;
left: 210px;
color: #fff;
font-size: 48px;
font-size: 32px;
text-rendering: optimizelegibility;
text-shadow: 0 0 3px rgba(0, 0, 0, 0.8);
}
.hz_addr {
position: relative;
top: -110px;
left: 400px;
top: -100px;
left: 210px;
color: #fff;
font-size: 24px;
font-size: 18px;
text-rendering: optimizelegibility;
text-shadow: 0 0 3px rgba(0, 0, 0, 0.8);
}
@ -130,6 +139,6 @@
<div class="hz_name">{{$zcard.chan.xchan_name}}</div>
<div class="hz_addr">{{$zcard.chan.channel_addr}}</div>
</div>
<div class="hz_profile_photo"><img style="width: {{$pphoto.width}}px; height: {{$pphoto.height}}px;" src="{{$pphoto.href}}" alt="{{$zcard.chan.xchan_name}}" /></div>
<div class="hz_profile_photo"><img src="{{$pphoto.href}}" alt="{{$zcard.chan.xchan_name}}" /></div>
</div>