mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 20:15:16 +00:00
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge
This commit is contained in:
commit
5cc6c6c1e9
68 changed files with 575 additions and 80 deletions
|
@ -222,7 +222,7 @@ class Apps {
|
|||
$apps = array(
|
||||
'Apps' => t('Apps'),
|
||||
'Cards' => t('Cards'),
|
||||
'Site Admin' => t('Site Admin'),
|
||||
'Admin' => t('Site Admin'),
|
||||
'Report Bug' => t('Report Bug'),
|
||||
'View Bookmarks' => t('View Bookmarks'),
|
||||
'My Chatrooms' => t('My Chatrooms'),
|
||||
|
|
|
@ -130,6 +130,8 @@ class Enotify {
|
|||
if ($params['type'] == NOTIFY_COMMENT) {
|
||||
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
|
||||
|
||||
$moderated = (($params['item']['item_blocked'] == ITEM_MODERATED) ? true : false);
|
||||
|
||||
$itemlink = $params['link'];
|
||||
|
||||
// ignore like/unlike activity on posts - they probably require a separate notification preference
|
||||
|
@ -170,8 +172,6 @@ class Enotify {
|
|||
|
||||
xchan_query($p);
|
||||
|
||||
$moderated = (($p[0]['item_blocked'] == ITEM_MODERATED) ? true : false);
|
||||
|
||||
$item_post_type = item_post_type($p[0]);
|
||||
// $private = $p[0]['item_private'];
|
||||
$parent_id = $p[0]['id'];
|
||||
|
|
38
Zotlabs/Lib/JSalmon.php
Normal file
38
Zotlabs/Lib/JSalmon.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Zotlabs\Lib;
|
||||
|
||||
|
||||
class JSalmon {
|
||||
|
||||
static function sign($data,$key_id,$key) {
|
||||
|
||||
$arr = $data;
|
||||
$data = json_encode($data,JSON_UNESCAPED_SLASHES);
|
||||
$data = base64url_encode($data, false); // do not strip padding
|
||||
$data_type = 'application/x-zot+json';
|
||||
$encoding = 'base64url';
|
||||
$algorithm = 'RSA-SHA256';
|
||||
|
||||
$data = preg_replace('/\s+/','',$data);
|
||||
|
||||
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
|
||||
|
||||
$precomputed = '.' . base64url_encode($data_type,false) . '.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
|
||||
|
||||
$signature = base64url_encode(rsa_sign($data . $precomputed, $key), false);
|
||||
|
||||
return ([
|
||||
'signed' => true,
|
||||
'data' => $data,
|
||||
'data_type' => $data_type,
|
||||
'encoding' => $encoding,
|
||||
'alg' => $algorithm,
|
||||
'sigs' => [
|
||||
'value' => $signature,
|
||||
'key_id' => base64url_encode($key_id)
|
||||
]
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
|
@ -758,7 +758,7 @@ class ThreadItem {
|
|||
'$cipher' => $conv->get_cipher(),
|
||||
'$sourceapp' => \App::$sourcename,
|
||||
'$observer' => get_observer_hash(),
|
||||
'$anoncomments' => (($conv->get_mode() === 'channel' && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false),
|
||||
'$anoncomments' => ((($conv->get_mode() === 'channel' || $conv->get_mode() === 'display') && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false),
|
||||
'$anonname' => [ 'anonname', t('Your full name (required)') ],
|
||||
'$anonmail' => [ 'anonmail', t('Your email address (required)') ],
|
||||
'$anonurl' => [ 'anonurl', t('Your website URL (optional)') ]
|
||||
|
|
|
@ -19,6 +19,7 @@ class Ping extends \Zotlabs\Web\Controller {
|
|||
* @result JSON
|
||||
*/
|
||||
function init() {
|
||||
|
||||
$result = array();
|
||||
$notifs = array();
|
||||
|
||||
|
@ -139,8 +140,8 @@ class Ping extends \Zotlabs\Web\Controller {
|
|||
db_utcnow(), db_quoteinterval('3 MINUTE')
|
||||
);
|
||||
|
||||
$disable_discover_tab = get_config('system','disable_discover_tab') || get_config('system','disable_discover_tab') === false;
|
||||
$notify_pubs = ((local_channel()) ? ($vnotify & VNOTIFY_PUBS) && !$disable_discover_tab : !$disable_discover_tab);
|
||||
$discover_tab_on = ((get_config('system','disable_discover_tab') != 1) ? true : false);
|
||||
$notify_pubs = ((local_channel()) ? ($vnotify & VNOTIFY_PUBS) && $discover_tab_on : $discover_tab_on);
|
||||
|
||||
if($notify_pubs) {
|
||||
$sys = get_sys_channel();
|
||||
|
@ -161,6 +162,37 @@ class Ping extends \Zotlabs\Web\Controller {
|
|||
$result['pubs'] = intval($pubs[0]['total']);
|
||||
}
|
||||
|
||||
if((argc() > 1) && (argv(1) === 'pubs') && ($notify_pubs)) {
|
||||
$sys = get_sys_channel();
|
||||
$result = array();
|
||||
|
||||
$r = q("SELECT * FROM item
|
||||
WHERE uid = %d
|
||||
AND author_xchan != '%s'
|
||||
AND obj_type != '%s'
|
||||
AND item_unseen = 1
|
||||
AND created > '" . datetime_convert('UTC','UTC',$_SESSION['static_loadtime']) . "'
|
||||
$item_normal
|
||||
ORDER BY created DESC
|
||||
LIMIT 300",
|
||||
intval($sys['channel_id']),
|
||||
dbesc(get_observer_hash()),
|
||||
dbesc(ACTIVITY_OBJ_FILE)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
xchan_query($r);
|
||||
foreach($r as $rr) {
|
||||
$rr['llink'] = str_replace('display/', 'pubstream/?f=&mid=', $rr['llink']);
|
||||
$result[] = \Zotlabs\Lib\Enotify::format($rr);
|
||||
}
|
||||
}
|
||||
|
||||
// logger('ping (network||home): ' . print_r($result, true), LOGGER_DATA);
|
||||
echo json_encode(array('notify' => $result));
|
||||
killme();
|
||||
}
|
||||
|
||||
$t1 = dba_timer();
|
||||
|
||||
if((! local_channel()) || ($result['invalid'])) {
|
||||
|
@ -206,6 +238,9 @@ class Ping extends \Zotlabs\Web\Controller {
|
|||
intval(local_channel())
|
||||
);
|
||||
break;
|
||||
case 'pubs':
|
||||
unset($_SESSION['static_loadtime']);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -20,16 +20,24 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
if($disable_discover_tab)
|
||||
return;
|
||||
|
||||
$mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
|
||||
|
||||
if(strpos($mid,'b64.') === 0)
|
||||
$decoded = @base64url_decode(substr($mid,4));
|
||||
if($decoded)
|
||||
$mid = $decoded;
|
||||
|
||||
$item_normal = item_normal();
|
||||
$item_normal_update = item_normal_update();
|
||||
|
||||
$static = ((array_key_exists('static',$_REQUEST)) ? intval($_REQUEST['static']) : 0);
|
||||
|
||||
|
||||
if(! $update) {
|
||||
if(! $update && !$load) {
|
||||
|
||||
nav_set_selected(t('Public Stream'));
|
||||
|
||||
if(!$mid)
|
||||
$_SESSION['static_loadtime'] = datetime_convert();
|
||||
|
||||
$static = ((local_channel()) ? channel_manual_conv_update(local_channel()) : 1);
|
||||
|
@ -43,6 +51,10 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
. "; var profile_page = " . \App::$pager['page']
|
||||
. "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
|
||||
|
||||
//if we got a decoded hash we must encode it again before handing to javascript
|
||||
if($decoded)
|
||||
$mid = 'b64.' . base64url_encode($mid);
|
||||
|
||||
\App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
|
||||
'$baseurl' => z_root(),
|
||||
'$pgtype' => 'pubstream',
|
||||
|
@ -68,7 +80,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
'$cats' => '',
|
||||
'$tags' => '',
|
||||
'$dend' => '',
|
||||
'$mid' => '',
|
||||
'$mid' => $mid,
|
||||
'$verb' => '',
|
||||
'$dbegin' => ''
|
||||
));
|
||||
|
@ -119,9 +131,17 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
$ordering = "commented";
|
||||
|
||||
if($load) {
|
||||
|
||||
if($mid) {
|
||||
$r = q("SELECT parent AS item_id FROM item
|
||||
left join abook on item.author_xchan = abook.abook_xchan
|
||||
WHERE mid like '%s' $uids $item_normal
|
||||
and (abook.abook_blocked = 0 or abook.abook_flags is null)
|
||||
$sql_extra3 $sql_extra $sql_nets LIMIT 1",
|
||||
dbesc($mid . '%')
|
||||
);
|
||||
}
|
||||
else {
|
||||
// Fetch a page full of parent items for this page
|
||||
|
||||
$r = q("SELECT distinct item.id AS item_id, $ordering FROM item
|
||||
left join abook on item.author_xchan = abook.abook_xchan
|
||||
WHERE true $uids $item_normal
|
||||
|
@ -130,11 +150,19 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
$sql_extra3 $sql_extra $sql_nets
|
||||
ORDER BY $ordering DESC $pager_sql "
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
elseif($update) {
|
||||
|
||||
if($mid) {
|
||||
$r = q("SELECT parent AS item_id FROM item
|
||||
left join abook on item.author_xchan = abook.abook_xchan
|
||||
WHERE mid like '%s' $uids $item_normal_update $simple_update
|
||||
and (abook.abook_blocked = 0 or abook.abook_flags is null)
|
||||
$sql_extra3 $sql_extra $sql_nets LIMIT 1",
|
||||
dbesc($mid . '%')
|
||||
);
|
||||
}
|
||||
else {
|
||||
$r = q("SELECT distinct item.id AS item_id, $ordering FROM item
|
||||
left join abook on item.author_xchan = abook.abook_xchan
|
||||
WHERE true $uids $item_normal_update
|
||||
|
@ -142,6 +170,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
and (abook.abook_blocked = 0 or abook.abook_flags is null)
|
||||
$sql_extra3 $sql_extra $sql_nets"
|
||||
);
|
||||
}
|
||||
$_SESSION['loadtime'] = datetime_convert();
|
||||
}
|
||||
// Then fetch all the children of the parents that are on this page
|
||||
|
@ -174,6 +203,9 @@ class Pubstream extends \Zotlabs\Web\Controller {
|
|||
|
||||
$o .= conversation($items,$mode,$update,$page_mode);
|
||||
|
||||
if($mid)
|
||||
$o .= '<div id="content-complete"></div>';
|
||||
|
||||
if(($items) && (! $update))
|
||||
$o .= alt_pager($a,count($items));
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ class WebServer {
|
|||
check_config();
|
||||
}
|
||||
|
||||
nav_set_selected('nothing');
|
||||
//nav_set_selected('nothing');
|
||||
|
||||
$Router = new Router($a);
|
||||
|
||||
|
|
152
Zotlabs/Widget/Notifications.php
Normal file
152
Zotlabs/Widget/Notifications.php
Normal file
|
@ -0,0 +1,152 @@
|
|||
<?php
|
||||
|
||||
namespace Zotlabs\Widget;
|
||||
|
||||
class Notifications {
|
||||
|
||||
function widget($arr) {
|
||||
|
||||
if(! get_pconfig(local_channel(), 'system', 'experimental_notif'))
|
||||
return;
|
||||
|
||||
$channel = \App::get_channel();
|
||||
|
||||
if(local_channel()) {
|
||||
$notifications[] = [
|
||||
'type' => 'network',
|
||||
'icon' => 'th',
|
||||
'severity' => 'secondary',
|
||||
'label' => t('Activity'),
|
||||
'title' => t('Network Activity Notifications'),
|
||||
'viewall' => [
|
||||
'url' => 'network',
|
||||
'label' => t('View your network activity')
|
||||
],
|
||||
'markall' => [
|
||||
'url' => '#',
|
||||
'label' => t('Mark all notifications seen')
|
||||
]
|
||||
];
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'home',
|
||||
'icon' => 'home',
|
||||
'severity' => 'danger',
|
||||
'label' => t('Home'),
|
||||
'title' => t('Channel Home Notifications'),
|
||||
'viewall' => [
|
||||
'url' => 'channel/' . $channel['channel_address'],
|
||||
'label' => t('View your home activity')
|
||||
],
|
||||
'markall' => [
|
||||
'url' => '#',
|
||||
'label' => t('Mark all notifications seen')
|
||||
]
|
||||
];
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'messages',
|
||||
'icon' => 'envelope',
|
||||
'severity' => 'danger',
|
||||
'label' => t('Mail'),
|
||||
'title' => t('Private mail'),
|
||||
'viewall' => [
|
||||
'url' => 'mail/combined',
|
||||
'label' => t('View your private mails')
|
||||
],
|
||||
'markall' => [
|
||||
'url' => '#',
|
||||
'label' => t('Mark all messages seen')
|
||||
]
|
||||
];
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'all_events',
|
||||
'icon' => 'calendar',
|
||||
'severity' => 'secondary',
|
||||
'label' => t('Events'),
|
||||
'title' => t('Event Calendar'),
|
||||
'viewall' => [
|
||||
'url' => 'mail/combined',
|
||||
'label' => t('View events')
|
||||
],
|
||||
'markall' => [
|
||||
'url' => '#',
|
||||
'label' => t('Mark all events seen')
|
||||
]
|
||||
];
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'intros',
|
||||
'icon' => 'users',
|
||||
'severity' => 'danger',
|
||||
'label' => t('New Connections'),
|
||||
'title' => t('New Connections'),
|
||||
'viewall' => [
|
||||
'url' => 'connections',
|
||||
'label' => t('View all connections')
|
||||
]
|
||||
];
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'files',
|
||||
'icon' => 'folder',
|
||||
'severity' => 'danger',
|
||||
'label' => t('New Files'),
|
||||
'title' => t('New files shared with me'),
|
||||
];
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'notify',
|
||||
'icon' => 'exclamation',
|
||||
'severity' => 'danger',
|
||||
'label' => t('Notices'),
|
||||
'title' => t('Notices'),
|
||||
'viewall' => [
|
||||
'url' => 'notifications/system',
|
||||
'label' => t('View all notices')
|
||||
],
|
||||
'markall' => [
|
||||
'url' => '#',
|
||||
'label' => t('Mark all notices seen')
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
if(local_channel() && is_site_admin()) {
|
||||
$notifications[] = [
|
||||
'type' => 'register',
|
||||
'icon' => 'user-o',
|
||||
'severity' => 'danger',
|
||||
'label' => t('New Registrations'),
|
||||
'title' => t('New Registrations'),
|
||||
];
|
||||
}
|
||||
|
||||
$notifications[] = [
|
||||
'type' => 'pubs',
|
||||
'icon' => 'globe',
|
||||
'severity' => 'secondary',
|
||||
'label' => t('Public Stream'),
|
||||
'title' => t('Public Stream Notifications'),
|
||||
'viewall' => [
|
||||
'url' => 'pubstream',
|
||||
'label' => t('View the public stream')
|
||||
],
|
||||
'markall' => [
|
||||
'url' => '#',
|
||||
'label' => t('Mark all notifications seen')
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
$o = replace_macros(get_markup_template('notifications_widget.tpl'), array(
|
||||
'$notifications' => $notifications,
|
||||
'$loading' => t('Loading...')
|
||||
));
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
}
|
||||
|
6
app/admin.apd
Normal file
6
app/admin.apd
Normal file
|
@ -0,0 +1,6 @@
|
|||
version: 1
|
||||
url: $baseurl/admin
|
||||
requires: admin
|
||||
name: Admin
|
||||
photo: icon:wrench
|
||||
categories: nav_featured_app
|
|
@ -1373,7 +1373,6 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
|
|||
? trim(substr($profile['channel_name'],0,strpos($profile['channel_name'],' '))) : $profile['channel_name']);
|
||||
$lastname = (($firstname === $profile['channel_name']) ? '' : trim(substr($profile['channel_name'],strlen($firstname))));
|
||||
|
||||
// @fixme move this to the diaspora plugin itself
|
||||
|
||||
$contact_block = contact_block();
|
||||
|
||||
|
|
|
@ -148,6 +148,7 @@ function other_encapsulate($data,$pubkey,$alg) {
|
|||
// compromised by state actors and evidence is mounting that this has
|
||||
// already happened.
|
||||
|
||||
$result = [ 'encrypted' => true ];
|
||||
$key = openssl_random_pseudo_bytes(256);
|
||||
$iv = openssl_random_pseudo_bytes(256);
|
||||
$result['data'] = base64url_encode($fn($data,$key,$iv),true);
|
||||
|
@ -200,6 +201,9 @@ function aes_encapsulate($data,$pubkey) {
|
|||
logger('aes_encapsulate: no key. data: ' . $data);
|
||||
$key = openssl_random_pseudo_bytes(32);
|
||||
$iv = openssl_random_pseudo_bytes(16);
|
||||
|
||||
$result = [ 'encrypted' => true ];
|
||||
|
||||
$result['data'] = base64url_encode(AES256CBC_encrypt($data,$key,$iv),true);
|
||||
// log the offending call so we can track it down
|
||||
if(! openssl_public_encrypt($key,$k,$pubkey)) {
|
||||
|
|
|
@ -62,10 +62,12 @@ EOT;
|
|||
if($banner === false)
|
||||
$banner = get_config('system','sitename');
|
||||
|
||||
if(! get_pconfig(local_channel(), 'system', 'experimental_notif')) {
|
||||
//the notifications template is in hdr.tpl
|
||||
App::$page['header'] .= replace_macros(get_markup_template('hdr.tpl'), array(
|
||||
//we could additionally use this to display important system notifications e.g. for updates
|
||||
));
|
||||
}
|
||||
|
||||
$techlevel = get_account_techlevel();
|
||||
|
||||
|
@ -211,7 +213,9 @@ EOT;
|
|||
}
|
||||
|
||||
if(! get_config('system', 'disable_discover_tab')) {
|
||||
$nav['pubs'] = array('pubstream', t('Public stream'), "", t('Public stream activities'),'pubs_nav_btn');
|
||||
$nav['pubs'] = array('pubstream', t('Public stream'), "", t('Public stream activity'),'pubs_nav_btn');
|
||||
$nav['pubs']['all'] = [ 'pubstream', t('View public stream'), '','' ];
|
||||
$nav['pubs']['mark'] = array('', t('Mark all public stream items seen'), '','');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -267,6 +271,7 @@ EOT;
|
|||
|
||||
App::$page['nav'] .= replace_macros($tpl, array(
|
||||
'$baseurl' => z_root(),
|
||||
'$experimental_notif' => get_pconfig(local_channel(), 'system', 'experimental_notif'),
|
||||
'$fulldocs' => t('Help'),
|
||||
'$sitelocation' => $sitelocation,
|
||||
'$nav' => $x['nav'],
|
||||
|
@ -280,10 +285,13 @@ EOT;
|
|||
'$help' => t('@name, #tag, ?doc, content'),
|
||||
'$pleasewait' => t('Please wait...'),
|
||||
'$nav_apps' => $nav_apps,
|
||||
'$channel_menu' => get_config('system','channel_menu'),
|
||||
'$channel_thumb' => ((App::$profile) ? App::$profile['thumb'] : ''),
|
||||
'$channel_apps' => $channel_apps,
|
||||
'$addapps' => t('Add Apps'),
|
||||
'$orderapps' => t('Arrange Apps'),
|
||||
'$sysapps_toggle' => t('Toggle System Apps')
|
||||
'$sysapps_toggle' => t('Toggle System Apps'),
|
||||
'$loc' => $myident
|
||||
));
|
||||
|
||||
if(x($_SESSION, 'reload_avatar') && $observer) {
|
||||
|
@ -481,7 +489,8 @@ function channel_apps($is_owner = false, $nickname = null) {
|
|||
[
|
||||
'$tabs' => $arr['tabs'],
|
||||
'$name' => App::$profile['channel_name'],
|
||||
'$thumb' => App::$profile['thumb']
|
||||
'$thumb' => App::$profile['thumb'],
|
||||
'$channel_menu' => get_config('system','channel_menu')
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -992,7 +992,7 @@ function notify_popup_loader(notifyType) {
|
|||
html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass);
|
||||
$("#nav-" + notifyType + "-menu").append(html);
|
||||
});
|
||||
$(".dropdown-menu img[data-src]").each(function(i, el){
|
||||
$(".dropdown-menu img[data-src], .dropdown-item img[data-src]").each(function(i, el){
|
||||
// Replace data-src attribute with src attribute for every image
|
||||
$(el).attr('src', $(el).data("src"));
|
||||
$(el).removeAttr("data-src");
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$(document).ready(function() {
|
||||
// $("#id_permissions_role").sSelect();
|
||||
$("#id_name").blur(function() {
|
||||
$("#name-spinner").spin('small');
|
||||
$("#name-spinner").show();
|
||||
var zreg_name = $("#id_name").val();
|
||||
$.get("new_channel/autofill.json?f=&name=" + encodeURIComponent(zreg_name),function(data) {
|
||||
$("#id_nickname").val(data);
|
||||
|
@ -9,12 +9,12 @@
|
|||
$("#help_name").html("");
|
||||
zFormError("#help_name",data.error);
|
||||
}
|
||||
$("#name-spinner").spin(false);
|
||||
$("#name-spinner").hide();
|
||||
});
|
||||
});
|
||||
|
||||
$("#id_nickname").blur(function() {
|
||||
$("#nick-spinner").spin('small');
|
||||
$("#nick-spinner").show();
|
||||
var zreg_nick = $("#id_nickname").val();
|
||||
$.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) {
|
||||
$("#id_nickname").val(data);
|
||||
|
@ -22,7 +22,7 @@
|
|||
$("#help_nickname").html("");
|
||||
zFormError("#help_nickname",data.error);
|
||||
}
|
||||
$("#nick-spinner").spin(false);
|
||||
$("#nick-spinner").hide();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
$("#id_name").blur(function() {
|
||||
$("#name-spinner").spin('small');
|
||||
$("#name-spinner").show();
|
||||
var zreg_name = $("#id_name").val();
|
||||
$.get("new_channel/autofill.json?f=&name=" + encodeURIComponent(zreg_name),function(data) {
|
||||
$("#id_nickname").val(data);
|
||||
|
@ -36,12 +36,12 @@ $(document).ready(function() {
|
|||
$("#help_name").html("");
|
||||
zFormError("#help_name",data.error);
|
||||
}
|
||||
$("#name-spinner").spin(false);
|
||||
$("#name-spinner").hide();
|
||||
});
|
||||
});
|
||||
|
||||
$("#id_nickname").blur(function() {
|
||||
$("#nick-spinner").spin('small');
|
||||
$("#nick-spinner").show();
|
||||
var zreg_nick = $("#id_nickname").val();
|
||||
$.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) {
|
||||
$("#id_nickname").val(data);
|
||||
|
@ -49,7 +49,7 @@ $(document).ready(function() {
|
|||
$("#help_nickname").html("");
|
||||
zFormError("#help_nickname",data.error);
|
||||
}
|
||||
$("#nick-spinner").spin(false);
|
||||
$("#nick-spinner").hide();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=admin][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=appcategories][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=appcategories][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=design_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -3,3 +3,6 @@
|
|||
[widget=tasklist][/widget]
|
||||
[widget=notes][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=cdav][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -8,4 +8,6 @@
|
|||
[widget=categories][/widget]
|
||||
[widget=tagcloud_wall][var=limit]24[/var][/widget]
|
||||
[/region]
|
||||
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=vcard][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
[widget=suggestedchats][/widget]
|
||||
[widget=chatroom_members][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=vcard][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=profile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -4,3 +4,6 @@
|
|||
[widget=suggestions][/widget]
|
||||
[widget=findpeople][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -4,3 +4,6 @@
|
|||
[widget=suggestions][/widget]
|
||||
[widget=findpeople][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -4,3 +4,6 @@
|
|||
[widget=dirtags][/widget]
|
||||
[widget=suggestions][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=design_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=design_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=design_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=eventstools][/widget]
|
||||
[widget=tasklist][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=collections][var=mode]groups[/var][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=helpindex][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=design_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=settings_menu][/widget]
|
||||
[/region]
|
||||
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=mailmenu][/widget]
|
||||
[widget=conversations][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=design_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=mailmenu][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=design_tools][/widget]
|
||||
[widget=menu_preview][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -14,3 +14,6 @@
|
|||
$content
|
||||
[/region]
|
||||
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=vcard][/widget]
|
||||
[widget=photo_albums][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=vcard][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -5,3 +5,6 @@
|
|||
[widget=suggestions][/widget]
|
||||
[widget=findpeople][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[comment][widget=sitesearch][/widget][/comment]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=settings_menu][/widget]
|
||||
[/region]
|
||||
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=follow][/widget]
|
||||
[widget=findpeople][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=settings_menu][/widget]
|
||||
[/region]
|
||||
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[region=aside]
|
||||
[widget=fullprofile][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=design_tools][/widget]
|
||||
[widget=website_portation_tools][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[widget=vcard][/widget]
|
||||
[widget=wiki_pages][/widget]
|
||||
[/region]
|
||||
[region=right_aside]
|
||||
[widget=notifications][/widget]
|
||||
[/region]
|
||||
|
|
|
@ -64,6 +64,13 @@ $(document).ready(function() {
|
|||
}
|
||||
});
|
||||
|
||||
$('#notifications-btn-1').click(function() {
|
||||
$('#region_3').toggleClass('fs');
|
||||
if($('#navbar-collapse-2').hasClass('show')){
|
||||
$('#navbar-collapse-2').removeClass('show');
|
||||
}
|
||||
});
|
||||
|
||||
$("input[data-role=cat-tagsinput]").tagsinput({
|
||||
tagClass: 'badge badge-pill badge-warning text-dark'
|
||||
});
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<td><a href="{{$item.fullPath}}">{{$item.displayName}}</a></td>
|
||||
{{if $item.is_owner}}
|
||||
<td class="cloud-index-tool">{{$item.attachIcon}}</td>
|
||||
<td id="file-edit-{{$item.attachId}}" class="cloud-index-tool"></td>
|
||||
<td class="cloud-index-tool"><div id="file-edit-{{$item.attachId}}" class="spinner-wrapper"><div class="spinner s"></div></div></td>
|
||||
<td class="cloud-index-tool"><i class="fakelink fa fa-pencil" onclick="filestorage(event, '{{$nick}}', {{$item.attachId}});"></i></td>
|
||||
<td class="cloud-index-tool"><a href="#" title="{{$delete}}" onclick="dropItem('{{$item.fileStorageUrl}}/{{$item.attachId}}/delete', '#cloud-index-{{$item.attachId}},#cloud-tools-{{$item.attachId}}'); return false;"><i class="fa fa-trash-o drop-icons"></i></a></td>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div id="main-slider" class="slider" ><input id="main-range" type="text" name="cminmax" value="{{$val}}" /></div>
|
||||
<div id="profile-jot-text-loading" style="display:none;"></div>
|
||||
<div id="profile-jot-text-loading" class="spinner-wrapper"><div class="spinner m"></div></div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var old_cmin = 0;
|
||||
|
@ -27,7 +27,7 @@ $(document).ready(function() {
|
|||
return;
|
||||
if((bParam_cmin == old_cmin) && (bParam_cmax == old_cmax))
|
||||
return;
|
||||
setTimeout(function() { $("#profile-jot-text-loading").spin('small'); }, 1000 );
|
||||
|
||||
slideTimer = setTimeout(networkTimerRefresh,2000);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,16 +63,25 @@
|
|||
<button id="expand-aside" type="button" class="navbar-toggler border-0" data-toggle="offcanvas" data-target="#region_1">
|
||||
<i class="fa fa-arrow-circle-right" id="expand-aside-icon"></i>
|
||||
</button>
|
||||
{{if ! $experimental_notif}}
|
||||
{{if $localuser || $nav.pubs}}
|
||||
<button id="notifications-btn" type="button" class="navbar-toggler border-0 text-white" data-toggle="collapse" data-target="#navbar-collapse-1">
|
||||
<i class="fa fa-exclamation-circle"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{if $localuser || $nav.pubs}}
|
||||
<button id="notifications-btn-1" type="button" class="navbar-toggler border-0 text-white">
|
||||
<i class="fa fa-exclamation-circle"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<button id="menu-btn" class="navbar-toggler border-0" type="button" data-toggle="collapse" data-target="#navbar-collapse-2">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar-collapse-1">
|
||||
{{if ! $experimental_notif}}
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{{if $nav.network}}
|
||||
<li class="nav-item dropdown network-button" style="display: none;">
|
||||
|
@ -188,17 +197,25 @@
|
|||
<a class="nav-link" href="{{$nav.alogout.0}}" title="{{$nav.alogout.3}}" id="{{$nav.alogout.4}}">{{$nav.alogout.1}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $nav.pubs}}
|
||||
<li class="nav-item dropdown pubs-button" style="display: none;">
|
||||
<a class="nav-link" href="{{$nav.pubs.0}}" title="{{$nav.pubs.3}}" id="{{$nav.pubs.4}}" rel="#nav-pubs-menu">
|
||||
<a class="nav-link" href="#" title="{{$nav.pubs.3}}" id="{{$nav.pubs.4}}" data-toggle="dropdown" rel="#nav-pubs-menu">
|
||||
<i class="fa fa-fw fa-globe"></i>
|
||||
<span class="badge badge-pill badge-primary pubs-update"></span>
|
||||
<span class="badge badge-pill badge-secondary pubs-update"></span>
|
||||
</a>
|
||||
<div id="nav-pubs-menu" class="dropdown-menu" rel="pubs">
|
||||
<a class="dropdown-item" id="nav-pubs-see-all" href="{{$nav.pubs.all.0}}">{{$nav.pubs.all.1}}</a>
|
||||
<a class="dropdown-item" id="nav-pubs-mark-all" href="#" onclick="markRead('pubs'); return false;">{{$nav.pubs.mark.1}}</a>
|
||||
{{$emptynotifications}}
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
{{else}}
|
||||
<div class="navbar-nav mr-auto">
|
||||
<div class="text-white">{{$sel.active}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div id="banner" class="navbar-text d-none d-md-flex">{{$banner}}</div>
|
||||
|
||||
<ul id="nav-right" class="navbar-nav ml-auto d-none d-md-flex">
|
||||
|
@ -218,10 +235,20 @@
|
|||
<a class="nav-link {{$nav.help.2}}" target="hubzilla-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" id="{{$nav.help.4}}" onclick="contextualHelp(); return false;"><i class="fa fa-fw fa-question-circle"></i></a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{if $channel_menu && $channel_apps.0}}
|
||||
<li class="nav-item dropdown" id="channel-menu">
|
||||
<a class="nav-link" href="#" data-toggle="dropdown"><img src="{{$channel_thumb}}" style="height:14px; width:14px;position:relative; top:-2px;" /></a>
|
||||
<div id="dropdown-menu" class="dropdown-menu dropdown-menu-right">
|
||||
{{foreach $channel_apps as $channel_app}}
|
||||
{{$channel_app}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
<li class="nav-item dropdown" id="app-menu">
|
||||
<a class="nav-link" href="#" data-toggle="dropdown"><i class="fa fa-fw fa-bars"></i></a>
|
||||
<div id="dropdown-menu" class="dropdown-menu dropdown-menu-right">
|
||||
{{if $channel_apps.0}}
|
||||
{{if $channel_apps.0 && ! $channel_menu}}
|
||||
{{foreach $channel_apps as $channel_app}}
|
||||
{{$channel_app}}
|
||||
{{/foreach}}
|
||||
|
@ -233,7 +260,7 @@
|
|||
{{foreach $nav_apps as $nav_app}}
|
||||
{{$nav_app}}
|
||||
{{/foreach}}
|
||||
{{if $channel_apps.0}}
|
||||
{{if $channel_apps.0 && ! $channel_menu}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if $is_owner}}
|
||||
|
|
|
@ -19,10 +19,10 @@
|
|||
{{/if}}
|
||||
|
||||
{{include file="field_input.tpl" field=$name}}
|
||||
<div id="name-spinner"></div>
|
||||
<div id="name-spinner" class="spinner-wrapper"><div class="spinner m"></div></div>
|
||||
|
||||
{{include file="field_input.tpl" field=$nickname}}
|
||||
<div id="nick-spinner"></div>
|
||||
<div id="nick-spinner" class="spinner-wrapper"><div class="spinner m"></div></div>
|
||||
|
||||
<button class="btn btn-primary" type="submit" name="submit" id="newchannel-submit-button" value="{{$submit}}">{{$submit}}</button>
|
||||
<div id="newchannel-submit-end" class="clear"></div>
|
||||
|
|
57
view/tpl/notifications_widget.tpl
Normal file
57
view/tpl/notifications_widget.tpl
Normal file
|
@ -0,0 +1,57 @@
|
|||
<style>
|
||||
#notifications {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
max-height: 50vh;
|
||||
overflow: auto;
|
||||
border-left: 0.2rem solid #eee;
|
||||
}
|
||||
|
||||
.fs {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
display: block !important;
|
||||
background-color: white;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
height: 100vh;
|
||||
z-index: 1020;
|
||||
}
|
||||
|
||||
.fs #notifications {
|
||||
position: relative !important;
|
||||
width: 100% !important;
|
||||
top: 0px !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="nav-notifications-template" rel="template">
|
||||
<a class="dropdown-item clearfix dropdown-notification {5}" href="{0}" title="{2} {3}">
|
||||
<img class="menu-img-3" data-src="{1}">
|
||||
<span class="contactname">{2}</span>
|
||||
<span class="dropdown-sub-text">{3}<br>{4}</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<ul id="notifications" class="navbar-nav" style="position: fixed; width: 280px; top: 64px;" data-children=".nav-item">
|
||||
{{foreach $notifications as $notification}}
|
||||
<li class="nav-item {{$notification.type}}-button" style="display: none;">
|
||||
<a class="nav-link" href="#nav-{{$notification.type}}-menu" title="{{$notification.title}}" data-toggle="collapse" data-parent="#notifications" rel="#nav-{{$notification.type}}-menu">
|
||||
<i class="fa fa-fw fa-{{$notification.icon}}"></i> {{$notification.label}}
|
||||
<span class="float-right badge badge-{{$notification.severity}} {{$notification.type}}-update"></span>
|
||||
</a>
|
||||
<div id="nav-{{$notification.type}}-menu" class="collapse notification-content" rel="{{$notification.type}}">
|
||||
{{if $notification.viewall}}
|
||||
<a class="dropdown-item" id="nav-{{$notification.type}}-see-all" href="{{$notification.viewall.url}}">{{$notification.viewall.label}}</a>
|
||||
{{/if}}
|
||||
{{if $notification.markall}}
|
||||
<a class="dropdown-item" id="nav-{{$notification.type}}-mark-all" href="{{$notification.markall.url}}" onclick="markRead('{{$notification.type}}'); return false;">{{$notification.markall.label}}</a>
|
||||
{{/if}}
|
||||
{{$loading}}
|
||||
</div>
|
||||
</li>
|
||||
{{/foreach}}
|
||||
</ul>
|
|
@ -1,5 +1,7 @@
|
|||
<div class="dropdown-header"><img src="{{$thumb}}" class="menu-img-1">{{$name}}:</div>
|
||||
<div class="dropdown-header"><img src="{{$thumb}}" class="menu-img-1">{{$name}}</div>
|
||||
{{foreach $tabs as $tab}}
|
||||
<a class="dropdown-item{{if $tab.sel}} {{$tab.sel}}{{/if}}" href="{{$tab.url}}"{{if $tab.title}} title="{{$tab.title}}"{{/if}}><i class="fa fa-fw fa-{{$tab.icon}} generic-icons-nav"></i>{{$tab.label}}</a>
|
||||
{{/foreach}}
|
||||
{{if ! $channel_menu}}
|
||||
<div class="dropdown-divider"></div>
|
||||
{{/if}}
|
|
@ -39,10 +39,10 @@
|
|||
{{/if}}
|
||||
|
||||
{{include file="field_input.tpl" field=$name}}
|
||||
<div id="name-spinner"></div>
|
||||
<div id="name-spinner" class="spinner-wrapper"><div class="spinner m"></div></div>
|
||||
|
||||
{{include file="field_input.tpl" field=$nickname}}
|
||||
<div id="nick-spinner"></div>
|
||||
<div id="nick-spinner" class="spinner-wrapper"><div class="spinner m"></div></div>
|
||||
{{/if}}
|
||||
|
||||
{{if $enable_tos}}
|
||||
|
|
Loading…
Reference in a new issue