Merge branch 'develop' of https://github.com/friendica/friendica into develop

This commit is contained in:
Tobias Diekershoff 2015-11-10 20:10:20 +01:00
commit 76adcdc031
20 changed files with 1710 additions and 1489 deletions

View file

@ -156,9 +156,11 @@ function group_add_member($uid,$name,$member,$gid = 0) {
function group_get_members($gid) { function group_get_members($gid) {
$ret = array(); $ret = array();
if(intval($gid)) { if(intval($gid)) {
$r = q("SELECT `group_member`.`contact-id`, `contact`.* FROM `group_member` $r = q("SELECT `group_member`.`contact-id`, `contact`.* FROM `group_member`
INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id`
WHERE `gid` = %d AND `group_member`.`uid` = %d ORDER BY `contact`.`name` ASC ", WHERE `gid` = %d AND `group_member`.`uid` = %d AND
NOT `contact`.`self` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`
ORDER BY `contact`.`name` ASC ",
intval($gid), intval($gid),
intval(local_user()) intval(local_user())
); );
@ -171,14 +173,14 @@ function group_get_members($gid) {
function group_public_members($gid) { function group_public_members($gid) {
$ret = 0; $ret = 0;
if(intval($gid)) { if(intval($gid)) {
$r = q("SELECT `contact`.`id` AS `contact-id` FROM `group_member` $r = q("SELECT `contact`.`id` AS `contact-id` FROM `group_member`
INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` INNER JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id`
WHERE `gid` = %d AND `group_member`.`uid` = %d WHERE `gid` = %d AND `group_member`.`uid` = %d
AND `contact`.`network` = '%s' AND `contact`.`notify` != '' ", AND `contact`.`network` = '%s' AND `contact`.`notify` != '' ",
intval($gid), intval($gid),
intval(local_user()), intval(local_user()),
dbesc(NETWORK_OSTATUS) dbesc(NETWORK_OSTATUS)
); );
if(count($r)) if(count($r))
$ret = count($r); $ret = count($r);
} }
@ -187,7 +189,7 @@ function group_public_members($gid) {
function mini_group_select($uid,$gid = 0) { function mini_group_select($uid,$gid = 0) {
$grps = array(); $grps = array();
$o = ''; $o = '';
@ -205,7 +207,7 @@ function mini_group_select($uid,$gid = 0) {
$o = replace_macros(get_markup_template('group_selection.tpl'), array( $o = replace_macros(get_markup_template('group_selection.tpl'), array(
'$label' => t('Default privacy group for new contacts'), '$label' => t('Default privacy group for new contacts'),
'$groups' => $grps '$groups' => $grps
)); ));
return $o; return $o;
} }

View file

@ -153,7 +153,7 @@
var notifications_empty = unescape($("#nav-notifications-menu").html()); var notifications_empty = unescape($("#nav-notifications-menu").html());
/* nav update event */ /* nav update event */
$('nav').bind('nav-update', function(e,data){; $('nav').bind('nav-update', function(e,data){
var invalid = $(data).find('invalid').text(); var invalid = $(data).find('invalid').text();
if(invalid == 1) { window.location.href=window.location.href } if(invalid == 1) { window.location.href=window.location.href }
@ -203,6 +203,13 @@
var birthdaystoday = $(data).find('birthdays-today').text(); var birthdaystoday = $(data).find('birthdays-today').text();
if(birthdaystoday == 0) { $('#birthdays-update').removeClass('notif-birthdays-today') } else { $('#birthdays-update').addClass('notif-birthdays-today') } if(birthdaystoday == 0) { $('#birthdays-update').removeClass('notif-birthdays-today') } else { $('#birthdays-update').addClass('notif-birthdays-today') }
$(".sidebar-group-li .notify").removeClass("show");
$(data).find("group").each(function() {
var gid = this.id;
var gcount = this.innerHTML;
$(".group-"+gid+" .notify").addClass("show").text(gcount);
});
var eNotif = $(data).find('notif') var eNotif = $(data).find('notif')

View file

@ -615,58 +615,60 @@ function admin_page_site(&$a) {
$theme_choices = array(); $theme_choices = array();
$theme_choices_mobile = array(); $theme_choices_mobile = array();
$theme_choices_mobile["---"] = t("No special theme for mobile devices"); $theme_choices_mobile["---"] = t("No special theme for mobile devices");
$files = glob('view/theme/*'); $files = glob('view/theme/*'); /**/
if($files) { if($files) {
foreach($files as $file) { foreach($files as $file) {
if (intval(file_exists($file . '/unsupported')))
continue;
$f = basename($file); $f = basename($file);
$theme_name = ((file_exists($file . '/experimental')) ? sprintf("%s - \x28Experimental\x29", $f) : $f); $theme_name = ((file_exists($file . '/experimental')) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
if (file_exists($file . '/mobile')) { if (file_exists($file . '/mobile')) {
$theme_choices_mobile[$f] = $theme_name; $theme_choices_mobile[$f] = $theme_name;
} } else {
else {
$theme_choices[$f] = $theme_name; $theme_choices[$f] = $theme_name;
} }
} }
} }
/* Community page style */ /* Community page style */
$community_page_style_choices = array( $community_page_style_choices = array(
CP_NO_COMMUNITY_PAGE => t("No community page"), CP_NO_COMMUNITY_PAGE => t("No community page"),
CP_USERS_ON_SERVER => t("Public postings from users of this site"), CP_USERS_ON_SERVER => t("Public postings from users of this site"),
CP_GLOBAL_COMMUNITY => t("Global community page") CP_GLOBAL_COMMUNITY => t("Global community page")
); );
/* OStatus conversation poll choices */ /* OStatus conversation poll choices */
$ostatus_poll_choices = array( $ostatus_poll_choices = array(
"-2" => t("Never"), "-2" => t("Never"),
"-1" => t("At post arrival"), "-1" => t("At post arrival"),
"0" => t("Frequently"), "0" => t("Frequently"),
"60" => t("Hourly"), "60" => t("Hourly"),
"720" => t("Twice daily"), "720" => t("Twice daily"),
"1440" => t("Daily") "1440" => t("Daily")
); );
$poco_discovery_choices = array( $poco_discovery_choices = array(
"0" => t("Disabled"), "0" => t("Disabled"),
"1" => t("Users"), "1" => t("Users"),
"2" => t("Users, Global Contacts"), "2" => t("Users, Global Contacts"),
"3" => t("Users, Global Contacts/fallback"), "3" => t("Users, Global Contacts/fallback"),
); );
$poco_discovery_since_choices = array( $poco_discovery_since_choices = array(
"30" => t("One month"), "30" => t("One month"),
"91" => t("Three months"), "91" => t("Three months"),
"182" => t("Half a year"), "182" => t("Half a year"),
"365" => t("One year"), "365" => t("One year"),
); );
/* get user names to make the install a personal install of X */ /* get user names to make the install a personal install of X */
$user_names = array(); $user_names = array();
$user_names['---'] = t('Multi user instance'); $user_names['---'] = t('Multi user instance');
$users = q("SELECT username, nickname FROM `user`"); $users = q("SELECT username, nickname FROM `user`");
foreach ($users as $user) { foreach ($users as $user) {
$user_names[$user['nickname']] = $user['username']; $user_names[$user['nickname']] = $user['username'];
} }
/* Banner */ /* Banner */
$banner = get_config('system','banner'); $banner = get_config('system','banner');

View file

@ -62,12 +62,12 @@ function group_post(&$a) {
$a->page['aside'] = group_side(); $a->page['aside'] = group_side();
} }
return; return;
} }
function group_content(&$a) { function group_content(&$a) {
$change = false; $change = false;
if(! local_user()) { if(! local_user()) {
notice( t('Permission denied') . EOL); notice( t('Permission denied') . EOL);
return; return;
@ -172,7 +172,7 @@ function group_content(&$a) {
'$form_security_token' => get_form_security_token("group_drop"), '$form_security_token' => get_form_security_token("group_drop"),
)); ));
$context = $context + array( $context = $context + array(
'$title' => t('Group Editor'), '$title' => t('Group Editor'),
'$gname' => array('groupname',t('Group Name: '),$group['name'], ''), '$gname' => array('groupname',t('Group Name: '),$group['name'], ''),
@ -192,7 +192,7 @@ function group_content(&$a) {
'label_contacts' => t('All Contacts'), 'label_contacts' => t('All Contacts'),
'contacts' => array(), 'contacts' => array(),
); );
$sec_token = addslashes(get_form_security_token('group_member_change')); $sec_token = addslashes(get_form_security_token('group_member_change'));
$textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false);
foreach($members as $member) { foreach($members as $member) {
@ -226,8 +226,7 @@ function group_content(&$a) {
echo replace_macros($tpl, $context); echo replace_macros($tpl, $context);
killme(); killme();
} }
return replace_macros($tpl, $context); return replace_macros($tpl, $context);
} }

View file

@ -203,8 +203,8 @@ function ping_init(&$a) {
if ($a->is_friendica_app() OR !$regularnotifications) if ($a->is_friendica_app() OR !$regularnotifications)
$n['message'] = str_replace("{0}", $n['name'], $n['message']); $n['message'] = str_replace("{0}", $n['name'], $n['message']);
$local_time = datetime_convert('UTC',date_default_timezone_get(),$n['date']); $local_time = datetime_convert('UTC',date_default_timezone_get(),$n['date']);
call_hooks('ping_xmlize', $n); call_hooks('ping_xmlize', $n);
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s" seen="%s" timestamp="%s" >%s</note>'."\n"; $notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s" seen="%s" timestamp="%s" >%s</note>'."\n";
return sprintf ( $notsxml, return sprintf ( $notsxml,
@ -250,41 +250,41 @@ function ping_init(&$a) {
$n = array( $n = array(
'href' => $a->get_baseurl().'/notifications/intros/'.$i['id'], 'href' => $a->get_baseurl().'/notifications/intros/'.$i['id'],
'name' => $i['name'], 'name' => $i['name'],
'url' => $i['url'], 'url' => $i['url'],
'photo' => $i['photo'], 'photo' => $i['photo'],
'date' => $i['datetime'], 'date' => $i['datetime'],
'seen' => false, 'seen' => false,
'message' => t("{0} wants to be your friend"), 'message' => t("{0} wants to be your friend"),
); );
$notifs[] = $n; $notifs[] = $n;
} }
} }
if ($mail>0){ if ($mail>0){
foreach ($mails as $i) { foreach ($mails as $i) {
$n = array( $n = array(
'href' => $a->get_baseurl().'/message/'.$i['id'], 'href' => $a->get_baseurl().'/message/'.$i['id'],
'name' => $i['from-name'], 'name' => $i['from-name'],
'url' => $i['from-url'], 'url' => $i['from-url'],
'photo' => $i['from-photo'], 'photo' => $i['from-photo'],
'date' => $i['created'], 'date' => $i['created'],
'seen' => false, 'seen' => false,
'message' => t("{0} sent you a message"), 'message' => t("{0} sent you a message"),
); );
$notifs[] = $n; $notifs[] = $n;
} }
} }
if ($register>0){ if ($register>0){
foreach ($regs as $i) { foreach ($regs as $i) {
$n = array( $n = array(
'href' => $a->get_baseurl().'/admin/users/', 'href' => $a->get_baseurl().'/admin/users/',
'name' => $i['name'], 'name' => $i['name'],
'url' => $i['url'], 'url' => $i['url'],
'photo' => $i['micro'], 'photo' => $i['micro'],
'date' => $i['created'], 'date' => $i['created'],
'seen' => false, 'seen' => false,
'message' => t("{0} requested registration"), 'message' => t("{0} requested registration"),
); );
$notifs[] = $n; $notifs[] = $n;
} }
@ -363,7 +363,7 @@ function ping_get_notifications($uid) {
$quit = true; $quit = true;
else else
$offset += 50; $offset += 50;
foreach ($r AS $notification) { foreach ($r AS $notification) {
if (is_null($notification["visible"])) if (is_null($notification["visible"]))
@ -386,7 +386,7 @@ function ping_get_notifications($uid) {
$notification["message"] = substr_replace($notification["message"],"{0}",$pos,strlen($notification["name"])); $notification["message"] = substr_replace($notification["message"],"{0}",$pos,strlen($notification["name"]));
$notification['href'] = $a->get_baseurl() . '/notify/view/' . $notification['id']; $notification['href'] = $a->get_baseurl() . '/notify/view/' . $notification['id'];
if ($notification["visible"] AND !$notification["spam"] AND if ($notification["visible"] AND !$notification["spam"] AND
!$notification["deleted"] AND !is_array($result[$notification["parent"]])) { !$notification["deleted"] AND !is_array($result[$notification["parent"]])) {
$result[$notification["parent"]] = $notification; $result[$notification["parent"]] = $notification;
@ -395,6 +395,6 @@ function ping_get_notifications($uid) {
} while ((count($result) < 50) AND !$quit); } while ((count($result) < 50) AND !$quit);
return($result); return($result);
} }

File diff suppressed because it is too large Load diff

View file

@ -4,18 +4,19 @@
<div id="sidebar-group-list"> <div id="sidebar-group-list">
<ul role="menu" id="sidebar-group-ul"> <ul role="menu" id="sidebar-group-ul">
{{foreach $groups as $group}} {{foreach $groups as $group}}
<li role="menuitem" class="sidebar-group-li"> <li role="menuitem" class="sidebar-group-li group-{{$group.id}}">
{{if $group.cid}} {{if $group.cid}}
<input type="checkbox" <input type="checkbox"
class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action" class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
{{if $group.ismember}}checked="checked"{{/if}} {{if $group.ismember}}checked="checked"{{/if}}
/> />
{{/if}} {{/if}}
{{if $group.edit}} {{if $group.edit}}
<a class="groupsideedit" href="{{$group.edit.href}}" title="{{$edittext}}"><span id="edit-sidebar-group-element-{{$group.id}}" class="group-edit-icon iconspacer small-pencil"><span class="sr-only">{{$edittext}}</span></span></a> <a class="groupsideedit" href="{{$group.edit.href}}" title="{{$edittext}}"><span id="edit-sidebar-group-element-{{$group.id}}" class="group-edit-icon iconspacer small-pencil"><span class="sr-only">{{$edittext}}</span></span></a>
{{/if}} {{/if}}
<a id="sidebar-group-element-{{$group.id}}" class="sidebar-group-element {{if $group.selected}}group-selected{{/if}}" href="{{$group.href}}">{{$group.text}}</a> <a id="sidebar-group-element-{{$group.id}}" class="sidebar-group-element {{if $group.selected}}group-selected{{/if}}" href="{{$group.href}}">{{$group.text}}</a>
<span class="notify"></span>
</li> </li>
{{/foreach}} {{/foreach}}
</ul> </ul>

View file

@ -2039,6 +2039,17 @@ a.mail-list-link {
#sidebar-group-list ul { #sidebar-group-list ul {
list-style-type: none; list-style-type: none;
} }
.sidebar-group-li .notify {
display: none;
font-size: 9px;
border: 1px solid rgb(221, 221, 221);
padding: 2px;
float: right;
background-color: #BABDB6;
}
.sidebar-group-li .notify.show {
display: block;
}
#sidebar-group-list .icon, #sidebar-group-list .iconspacer { #sidebar-group-list .icon, #sidebar-group-list .iconspacer {
display: inline-block; display: inline-block;

View file

@ -463,7 +463,7 @@ a:hover {
text-decoration: underline; text-decoration: underline;
} }
blockquote { blockquote {
background: #ffffff; background: #FFFFFF;
padding: 1em; padding: 1em;
margin-left: 1em; margin-left: 1em;
border-left: 1em solid #e6e6e6; border-left: 1em solid #e6e6e6;
@ -1013,6 +1013,21 @@ aside .posted-date-selector-months {
.widget .tool.selected { .widget .tool.selected {
background: url('../../../images/selected.png') no-repeat left center; background: url('../../../images/selected.png') no-repeat left center;
} }
.widget .notify {
display: none;
background-color: #19AEFF;
border-radius: 5px;
font-size: 10px;
padding: 1px 3px;
min-width: 15px;
text-align: right;
float: right;
color: #ffffff;
margin-right: 10px;
}
.widget .notify.on {
display: block;
}
/* widget: search */ /* widget: search */
#add-search-popup { #add-search-popup {
width: 200px; width: 200px;

View file

@ -463,7 +463,7 @@ a:hover {
text-decoration: underline; text-decoration: underline;
} }
blockquote { blockquote {
background: #ffffff; background: #FFFFFF;
padding: 1em; padding: 1em;
margin-left: 1em; margin-left: 1em;
border-left: 1em solid #e6e6e6; border-left: 1em solid #e6e6e6;
@ -1013,6 +1013,21 @@ aside .posted-date-selector-months {
.widget .tool.selected { .widget .tool.selected {
background: url('../../../images/selected.png') no-repeat left center; background: url('../../../images/selected.png') no-repeat left center;
} }
.widget .notify {
display: none;
background-color: #19AEFF;
border-radius: 5px;
font-size: 10px;
padding: 1px 3px;
min-width: 15px;
text-align: right;
float: right;
color: #ffffff;
margin-right: 10px;
}
.widget .notify.on {
display: block;
}
/* widget: search */ /* widget: search */
#add-search-popup { #add-search-popup {
width: 200px; width: 200px;

View file

@ -0,0 +1,143 @@
$(document).ready(function(){
$('nav').bind('nav-update', function(e,data){
var notifCount = $(data).find('notif').attr('count');
var intro = $(data).find('intro').text();
var mail = $(data).find('mail').text();
$(".tool .notify").removeClass("on");
$(data).find("group").each(function() {
var gid = this.id;
var gcount = this.innerHTML;
$(".group-"+gid+" .notify").addClass("on").text(gcount);
});
console.log(intro,mail);
if (notifCount > 0 ) {
Tinycon.setBubble(notifCount);
} else {
Tinycon.setBubble('');
}
if (intro>0){
$("#nav-introductions-link").addClass("on");
} else {
$("#nav-introductions-link").removeClass("on");
}
if (mail>0){
$("#nav-messages-link").addClass("on");
} else {
$("#nav-messages-link").removeClass("on");
}
});
/*
* show and hide contact action buttons in
* contacts page on contacts' checkbox selection
*/
$('.contact-select').bind('click', function(e) {
var y = e.clientY;
var elm = $("#contacts-actions");
y=y-40;
if (y<0) y=0;
if (y+elm.height() > $("html").height()) y=$("html").height()-elm.height();
elm.css('top', y+"px");
if ($(".contact-select:checked").length > 0) {
elm.show();
} else {
elm.hide();
}
});
});
function insertFormatting(comment,BBcode,id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) {
tmpStr = "";
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
$("#comment-edit-text-" + id).val(tmpStr);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url"){
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url"){
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function showThread(id) {
$("#collapsed-comments-" + id).show()
$("#collapsed-comments-" + id + " .collapsed-comments").show()
}
function hideThread(id) {
$("#collapsed-comments-" + id).hide()
$("#collapsed-comments-" + id + " .collapsed-comments").hide()
}
function cmtBbOpen(id) {
$("#comment-edit-bb-" + id).show();
}
function cmtBbClose(id) {
$("#comment-edit-bb-" + id).hide();
}
$(document).ready(function() {
$('html').click(function() { $("#nav-notifications-menu" ).hide(); });
$('.group-edit-icon').hover(
function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.sidebar-group-element').hover(
function() {
id = $(this).attr('id');
$('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');}
);
$('.savedsearchdrop').hover(
function() {
$(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.savedsearchterm').hover(
function() {
id = $(this).attr('id');
$('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');}
);
});

View file

@ -420,7 +420,7 @@
body { body {
font-family: Liberation Sans, helvetica, arial, clean, sans-serif; font-family: Liberation Sans, helvetica, arial, clean, sans-serif;
font-size: 11px; font-size: 11px;
background-color: #f6ecf9; background-color: #F6ECF9;
color: #2d2d2d; color: #2d2d2d;
margin: 50px 0px 0px 0px; margin: 50px 0px 0px 0px;
display: table; display: table;
@ -463,7 +463,7 @@ a:hover {
text-decoration: underline; text-decoration: underline;
} }
blockquote { blockquote {
background: #ffffff; background: #FFFFFF;
padding: 1em; padding: 1em;
margin-left: 1em; margin-left: 1em;
border-left: 1em solid #e6e6e6; border-left: 1em solid #e6e6e6;
@ -1013,6 +1013,21 @@ aside .posted-date-selector-months {
.widget .tool.selected { .widget .tool.selected {
background: url('../../../images/selected.png') no-repeat left center; background: url('../../../images/selected.png') no-repeat left center;
} }
.widget .notify {
display: none;
background-color: #19AEFF;
border-radius: 5px;
font-size: 10px;
padding: 1px 3px;
min-width: 15px;
text-align: right;
float: right;
color: #ffffff;
margin-right: 10px;
}
.widget .notify.on {
display: block;
}
/* widget: search */ /* widget: search */
#add-search-popup { #add-search-popup {
width: 200px; width: 200px;
@ -1689,7 +1704,7 @@ span[id^="showmore-wrap"] {
height: 20px; height: 20px;
width: 500px; width: 500px;
font-weight: bold; font-weight: bold;
border: 1px solid #f6ecf9; border: 1px solid #F6ECF9;
} }
#jot #jot-title:-webkit-input-placeholder { #jot #jot-title:-webkit-input-placeholder {
font-weight: normal; font-weight: normal;
@ -1716,7 +1731,7 @@ span[id^="showmore-wrap"] {
margin: 0px; margin: 0px;
height: 20px; height: 20px;
width: 200px; width: 200px;
border: 1px solid #f6ecf9; border: 1px solid #F6ECF9;
} }
#jot #jot-category:hover { #jot #jot-category:hover {
border: 1px solid #999999; border: 1px solid #999999;

View file

@ -442,6 +442,20 @@ aside {
/*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;}
.action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/
.notify {
display: none;
background-color: #19AEFF;
border-radius: 5px;
font-size: 10px;
padding: 1px 3px;
min-width: 15px;
text-align: right;
float: right;
color: rgb(255, 255, 255);
margin-right: 10px;
&.on { display: block; }
}
} }
/* widget: search */ /* widget: search */

View file

@ -1,11 +1,11 @@
<div class="widget"> <div class="widget">
{{if $title}}<h3>{{$title}}</h3>{{/if}} {{if $title}}<h3>{{$title}}</h3>{{/if}}
{{if $desc}}<div class="desc">{{$desc}}</div>{{/if}} {{if $desc}}<div class="desc">{{$desc}}</div>{{/if}}
<ul role="menu"> <ul role="menu">
{{foreach $items as $item}} {{foreach $items as $item}}
<li role="menuitem" class="tool {{if $item.selected}}selected{{/if}}"><a href="{{$item.url}}" {{if $item.accesskey}}accesskey="{{$item.accesskey}}"{{/if}} class="link">{{$item.label}}</a></li> <li role="menuitem" class="tool {{if $item.selected}}selected{{/if}}"><a href="{{$item.url}}" {{if $item.accesskey}}accesskey="{{$item.accesskey}}"{{/if}} class="link">{{$item.label}}</a></li>
{{/foreach}} {{/foreach}}
</ul> </ul>
</div> </div>

View file

@ -7,7 +7,7 @@
<div id="sidebar-group-list"> <div id="sidebar-group-list">
<ul> <ul>
{{foreach $groups as $group}} {{foreach $groups as $group}}
<li class="tool {{if $group.selected}}selected{{/if}}"> <li class="tool {{if $group.selected}}selected{{/if}} group-{{$group.id}}">
<a href="{{$group.href}}" class="label"> <a href="{{$group.href}}" class="label">
{{$group.text}} {{$group.text}}
</a> </a>
@ -15,15 +15,16 @@
<a href="{{$group.edit.href}}" class="action"><span class="icon text s10 edit">{{$group.edit.title}}</span></a> <a href="{{$group.edit.href}}" class="action"><span class="icon text s10 edit">{{$group.edit.title}}</span></a>
{{/if}} {{/if}}
{{if $group.cid}} {{if $group.cid}}
<input type="checkbox" <input type="checkbox"
class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action" class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
{{if $group.ismember}}checked="checked"{{/if}} {{if $group.ismember}}checked="checked"{{/if}}
/> />
{{/if}} {{/if}}
<span class="notify"></span>
</li> </li>
{{/foreach}} {{/foreach}}
</ul> </ul>
</div> </div>
</div> </div>

View file

@ -6,151 +6,10 @@
* Maintainer: Fabio <http://kirgroup.com/profile/fabrixxm> * Maintainer: Fabio <http://kirgroup.com/profile/fabrixxm>
* Maintainer: Tobias <https://diekershoff.homeunix.net/friendica/profile/tobias> * Maintainer: Tobias <https://diekershoff.homeunix.net/friendica/profile/tobias>
*/ */
function quattro_init(&$a) { function quattro_init(&$a) {
$a->theme_info = array(); $a->theme_info = array();
set_template_engine($a, 'smarty3');
$a->page['htmlhead'] .= '<script src="'.$a->get_baseurl().'/view/theme/quattro/tinycon.min.js"></script>';
$a->page['htmlhead'] .= '<script src="'.$a->get_baseurl().'/view/theme/quattro/tinycon.min.js"></script>'; $a->page['htmlhead'] .= '<script src="'.$a->get_baseurl().'/view/theme/quattro/js/quattro.js"></script>';;
$a->page['htmlhead'] .= <<< EOT
<script>
$(document).ready(function(){
$('nav').bind('nav-update', function(e,data){
var notifCount = $(data).find('notif').attr('count');
var intro = $(data).find('intro').text();
var mail = $(data).find('mail').text();
console.log(intro,mail);
if (notifCount > 0 ) {
Tinycon.setBubble(notifCount);
} else {
Tinycon.setBubble('');
}
if (intro>0){
$("#nav-introductions-link").addClass("on");
} else {
$("#nav-introductions-link").removeClass("on");
}
if (mail>0){
$("#nav-messages-link").addClass("on");
} else {
$("#nav-messages-link").removeClass("on");
}
});
/*
* show and hide contact action buttons in
* contacts page on contacts' checkbox selection
*/
$('.contact-select').bind('click', function(e) {
var y = e.clientY;
var elm = $("#contacts-actions");
y=y-40;
if (y<0) y=0;
if (y+elm.height() > $("html").height()) y=$("html").height()-elm.height();
elm.css('top', y+"px");
if ($(".contact-select:checked").length > 0) {
elm.show();
} else {
elm.hide();
}
});
});
function insertFormatting(comment,BBcode,id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == comment) {
tmpStr = "";
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
$("#comment-edit-text-" + id).val(tmpStr);
}
textarea = document.getElementById("comment-edit-text-" +id);
if (document.selection) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url"){
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
} else
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url"){
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}
return true;
}
function showThread(id) {
$("#collapsed-comments-" + id).show()
$("#collapsed-comments-" + id + " .collapsed-comments").show()
}
function hideThread(id) {
$("#collapsed-comments-" + id).hide()
$("#collapsed-comments-" + id + " .collapsed-comments").hide()
}
function cmtBbOpen(id) {
$("#comment-edit-bb-" + id).show();
}
function cmtBbClose(id) {
$("#comment-edit-bb-" + id).hide();
}
$(document).ready(function() {
$('html').click(function() { $("#nav-notifications-menu" ).hide(); });
$('.group-edit-icon').hover(
function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.sidebar-group-element').hover(
function() {
id = $(this).attr('id');
$('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');}
);
$('.savedsearchdrop').hover(
function() {
$(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.savedsearchterm').hover(
function() {
id = $(this).attr('id');
$('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');}
);
});
</script>
EOT;
} }

View file

@ -24,7 +24,7 @@ body, section, nav .nav-menu, div.pager, ul.tabs {
} }
nav { nav {
min-width: 480px; min-width: 100%;
} }
.wall-item-container .wall-item-content { .wall-item-container .wall-item-content {
@ -88,3 +88,29 @@ nav ul {
.wall-item-container.thread_level_7 .wall-item-content { .wall-item-container.thread_level_7 .wall-item-content {
max-width: 100%; max-width: 100%;
} }
/* aside in/out */
.mobile-aside-toggle {
display: block !important;
}
.mobile-aside-toggle a {
line-height: 35px;
padding: 0 10px;
}
.mobile-aside-toggle a i {
font-size: 22px;
color: #CCC;
}
aside {
display: block;
position: absolute;
max-width: 400px;
width: 80%;
left: -100%;
transition: left 0.5s;
}
aside.show {
left: 0;
}

View file

@ -269,7 +269,7 @@ div.pager {
/* global */ /* global */
body { body {
/* font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; */ /* font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; */
font-family: system, -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", sans-serif; font-family: system,-apple-system,".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Helvetica,Arial,sans-serif;
font-size: 14px; font-size: 14px;
/* font-size: 13px; /* font-size: 13px;
line-height: 19.5px; */ line-height: 19.5px; */
@ -366,6 +366,17 @@ code {
#sidebar-group-list .tool:hover { #sidebar-group-list .tool:hover {
background: #EEE; background: #EEE;
} }
#sidebar-group-list .notify {
min-width: 10px;
text-align: center;
color: #FFF;
background-color: #CB4437;
font: bold 10px Arial;
padding: 3px;
border-radius: 10px;
display: none;
}
#sidebar-group-list .notify.show { display: inline-block; }
.tool .label { .tool .label {
/* float: left; */ /* float: left; */
} }
@ -1360,12 +1371,12 @@ section.minimal {
width: 100%; width: 100%;
margin-bottom: 0.3em; margin-bottom: 0.3em;
} }
.wall-item-container .wall-item-actions-social, .wall-item-container .wall-item-actions-social,
.wall-item-container .wall-item-actions-isevent { .wall-item-container .wall-item-actions-isevent {
float: left; float: left;
margin-bottom: 1px; margin-bottom: 1px;
} }
.wall-item-container .wall-item-actions-social a, .wall-item-container .wall-item-actions-social a,
.wall-item-container .wall-item-actions-isevent a { .wall-item-container .wall-item-actions-isevent a {
float: left; float: left;
margin-right: 1em; margin-right: 1em;
@ -2287,7 +2298,7 @@ aside #id_password {
width: 120px; width: 120px;
height: 130px; height: 130px;
float: left; float: left;
overflow: hidden; overflow: hidden;
margin-left: 5px; margin-left: 5px;
}*/ }*/

View file

@ -7,6 +7,11 @@
</header> </header>
<nav role="menubar"> <nav role="menubar">
<ul> <ul>
<li class="mobile-aside-toggle" style="display:none;">
<a href="#">
<i class="icons icon-list"></i>
</a>
</li>
{{if $nav.home}} {{if $nav.home}}
<li role="menuitem" id="nav-home-link" class="nav-menu {{$sel.home}}"> <li role="menuitem" id="nav-home-link" class="nav-menu {{$sel.home}}">
<a accesskey="p" class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >{{$nav.home.1}}</a> <a accesskey="p" class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >{{$nav.home.1}}</a>
@ -29,7 +34,7 @@
<a accesskey="c" class="{{$nav.community.2}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}" >{{$nav.community.1}}</a> <a accesskey="c" class="{{$nav.community.2}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}" >{{$nav.community.1}}</a>
</li> </li>
{{/if}} {{/if}}
<li role="menu" aria-haspopup="true" id="nav-site-linkmenu" class="nav-menu-icon"><a><span class="icon s22 icon-question"><span class="sr-only">{{$nav.help.3}}</span></span></a> <li role="menu" aria-haspopup="true" id="nav-site-linkmenu" class="nav-menu-icon"><a><span class="icon s22 icon-question"><span class="sr-only">{{$nav.help.3}}</span></span></a>
<ul id="nav-site-menu" class="menu-popup"> <ul id="nav-site-menu" class="menu-popup">
{{if $nav.help}} <li role="menuitem"><a class="{{$nav.help.2}}" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a></li>{{/if}} {{if $nav.help}} <li role="menuitem"><a class="{{$nav.help.2}}" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a></li>{{/if}}
@ -48,7 +53,7 @@
</ul> </ul>
</li> </li>
{{/if}} {{/if}}
{{if $userinfo}} {{if $userinfo}}
<li role="menu" aria-haspopup="true" id="nav-user-linkmenu" class="nav-menu"> <li role="menu" aria-haspopup="true" id="nav-user-linkmenu" class="nav-menu">
<a accesskey="u" title="{{$sitelocation}}"><img src="{{$userinfo.icon}}" alt="{{$userinfo.name}}"><span id="nav-user-linklabel">{{$userinfo.name}}</span><span id="intro-update" class="nav-notify"></span></a> <a accesskey="u" title="{{$sitelocation}}"><img src="{{$userinfo.icon}}" alt="{{$userinfo.name}}"><span id="nav-user-linklabel">{{$userinfo.name}}</span><span id="intro-update" class="nav-notify"></span></a>
@ -56,7 +61,7 @@
{{if $nav.introductions}}<li role="menuitem"><a class="{{$nav.introductions.2}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a><span id="intro-update-li" class="nav-notify"></span></li>{{/if}} {{if $nav.introductions}}<li role="menuitem"><a class="{{$nav.introductions.2}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a><span id="intro-update-li" class="nav-notify"></span></li>{{/if}}
{{if $nav.contacts}}<li role="menuitem"><a class="{{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a></li>{{/if}} {{if $nav.contacts}}<li role="menuitem"><a class="{{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a></li>{{/if}}
{{if $nav.messages}}<li role="menuitem"><a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}}</a><span id="mail-update" class="nav-notify"></span></a></li>{{/if}} {{if $nav.messages}}<li role="menuitem"><a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}}</a><span id="mail-update" class="nav-notify"></span></a></li>{{/if}}
{{if $nav.manage}}<li role="menuitem"><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}} {{if $nav.manage}}<li role="menuitem"><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}}
{{if $nav.usermenu.1}}<li role="menuitem"><a class="{{$nav.usermenu.1.2}}" href="{{$nav.usermenu.1.0}}" title="{{$nav.usermenu.1.3}}">{{$nav.usermenu.1.1}}</a></li>{{/if}} {{if $nav.usermenu.1}}<li role="menuitem"><a class="{{$nav.usermenu.1.2}}" href="{{$nav.usermenu.1.0}}" title="{{$nav.usermenu.1.3}}">{{$nav.usermenu.1.1}}</a></li>{{/if}}
{{if $nav.settings}}<li role="menuitem"><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}} {{if $nav.settings}}<li role="menuitem"><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}}
{{if $nav.logout}}<li role="menuitem"><a class="menu-sep {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" >{{$nav.logout.1}}</a></li>{{/if}} {{if $nav.logout}}<li role="menuitem"><a class="menu-sep {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" >{{$nav.logout.1}}</a></li>{{/if}}
@ -69,7 +74,7 @@
<a class="{{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}" >{{$nav.login.1}}</a> <a class="{{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}" >{{$nav.login.1}}</a>
</li> </li>
{{/if}} {{/if}}
{{if $nav.search}} {{if $nav.search}}
<li role="search" id="search-box"> <li role="search" id="search-box">
<form method="get" action="{{$nav.search.0}}"> <form method="get" action="{{$nav.search.0}}">
@ -89,7 +94,7 @@
<a accesskey="a" class="{{$nav.admin.2}} icon-sliders" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" ><span class="sr-only">{{$nav.admin.3}}</span></a> <a accesskey="a" class="{{$nav.admin.2}} icon-sliders" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" ><span class="sr-only">{{$nav.admin.3}}</span></a>
</li> </li>
{{/if}} {{/if}}
{{if $nav.apps}} {{if $nav.apps}}
<li role="menu" aria-haspopup="true" id="nav-apps-link" class="nav-menu {{$sel.apps}}"> <li role="menu" aria-haspopup="true" id="nav-apps-link" class="nav-menu {{$sel.apps}}">
<a class=" {{$nav.apps.2}}" title="{{$nav.apps.3}}" >{{$nav.apps.1}}</a> <a class=" {{$nav.apps.2}}" title="{{$nav.apps.3}}" >{{$nav.apps.1}}</a>

View file

@ -86,6 +86,14 @@ function cmtBbOpen(id) {
function cmtBbClose(id) { function cmtBbClose(id) {
$("#comment-edit-bb-" + id).hide(); $("#comment-edit-bb-" + id).hide();
} }
$(document).ready(function() {
$(".mobile-aside-toggle a").click(function(e){
e.preventDefault();
$("aside").toggleClass("show");
});
});
</script> </script>
EOT; EOT;