diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/main.js | 58 | ||||
-rw-r--r-- | include/nav.php | 42 | ||||
-rw-r--r-- | include/template_processor.php | 16 |
3 files changed, 91 insertions, 25 deletions
diff --git a/include/main.js b/include/main.js index d59c99223..83dcc720c 100644 --- a/include/main.js +++ b/include/main.js @@ -34,6 +34,9 @@ msie = $.browser.msie ; + /* setup navbar menus */ + + /* setup onoff widgets */ $(".onoff input").each(function(){ @@ -55,34 +58,51 @@ /* setup field_richtext */ setupFieldRichtext(); - - /* load tinyMCE if needed and setup field_richtext */ - /*if(typeof tinyMCE == "undefined") { - window.tinyMCEPreInit = { - suffix:"", - base: baseurl+"/library/tinymce/jscripts/tiny_mce/", - query:"", - }; - $.getScript(baseurl +"/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js", setupFieldRichtext); - } else { - }*/ + + /* popup menus */ + $('a[rel^=#]').click(function(e){ + menu = $( $(this).attr('rel') ); + e.stopPropagation(); + if (menu.attr('popup')=="false") return false; + $(this).parent().toggleClass("selected"); + menu.toggle(); + return false; + }); + + /* notifications template */ + var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); + var notifications_empty = unescape($("#nav-notifications-menu").html()); /* nav update event */ $('nav').bind('nav-update', function(e,data){; var net = $(data).find('net').text(); - if(net == 0) { net = ''; $('#net-update').hide() } else { $('#net-update').show() } + if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') } $('#net-update').html(net); + var home = $(data).find('home').text(); - if(home == 0) { home = ''; $('#home-update').hide() } else { $('#home-update').show() } + if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } $('#home-update').html(home); - var mail = $(data).find('mail').text(); - if(mail == 0) { mail = ''; $('#mail-update').hide() } else { $('#mail-update').show() } - $('#mail-update').html(mail); - var intro = $(data).find('intro').text(); - if(intro == 0) { intro = ''; $('#notify-update').hide() } else { $('#notify-update').show() } - $('#notify-update').html(intro); + + var eNotif = $(data).find('notif') + notif = eNotif.attr('count'); + if (notif>0){ + nnm = $("#nav-notifications-menu"); + nnm.html(""); + nnm.attr('popup','true'); + eNotif.children("note").each(function(){ + e = $(this); + text = e.text().format("<span class='contactname'>"+e.attr('name')+"</span>"); + html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date')); + nnm.append(html); + }); + } else { + $("#nav-notifications-menu").html(notifications_empty); + } + if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } + $('#notify-update').html(notif); + }); diff --git a/include/nav.php b/include/nav.php index 895c321e6..f9e72bda7 100644 --- a/include/nav.php +++ b/include/nav.php @@ -37,11 +37,29 @@ function nav(&$a) { * Display login or logout */ + $nav['usermenu']=array(); + $userinfo = null; + if(local_user()) { $nav['logout'] = Array('logout',t('Logout'), "", t('End this session')); + + // user menu + $nav['usermenu'][] = Array('profile/' . $a->user['nickname'], t('Status'), "", t('Your posts and conversations')); + $nav['usermenu'][] = Array('profile/' . $a->user['nickname']. '?tab=profile', t('Profile'), "", t('Your profile page')); + $nav['usermenu'][] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); + $nav['usermenu'][] = Array('events/', t('Events'), "", t('Your events')); + $nav['usermenu'][] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); + + // user info + $r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid'])); + $userinfo = array( + 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"), + 'name' => $a->user['username'], + ); + } else { - $nav['login'] = Array('login',t('Login'), ($a->module == 'login'?'nav-selected':''), t('Sign in')); + $nav['login'] = Array('login',t('Login'), ($a->module == 'login'?'selected':''), t('Sign in')); } @@ -137,8 +155,30 @@ function nav(&$a) { '$sitelocation' => $sitelocation, '$nav' => $nav, '$banner' => $banner, + '$emptynotifications' => t('Nothing new here'), + '$userinfo' => $userinfo, + '$sel' => $a->nav_sel, )); call_hooks('page_header', $a->page['nav']); +} +/* + * Set a menu item in navbar as selected + * + */ +function nav_set_selected($item){ + $a = get_app(); + $a->nav_sel = array( + 'community' => null, + 'network' => null, + 'home' => null, + 'profiles' => null, + 'notifications' => null, + 'messages' => null, + 'directyory' => null, + 'settings' => null, + 'contacts' => null, + ); + $a->nav_sel[$item] = 'selected'; } diff --git a/include/template_processor.php b/include/template_processor.php index 83f680f02..11769bbd0 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -11,15 +11,18 @@ private function _preg_error(){ switch(preg_last_error()){ - case PREG_INTERNAL_ERROR: die('PREG_INTERNAL_ERROR'); break; - case PREG_BACKTRACK_LIMIT_ERROR: die('PREG_BACKTRACK_LIMIT_ERROR'); break; - case PREG_RECURSION_LIMIT_ERROR: die('PREG_RECURSION_LIMIT_ERROR'); break; - case PREG_BAD_UTF8_ERROR: die('PREG_BAD_UTF8_ERROR'); break; - case PREG_BAD_UTF8_OFFSET_ERROR: die('PREG_BAD_UTF8_OFFSET_ERROR'); break; + case PREG_INTERNAL_ERROR: echo('PREG_INTERNAL_ERROR'); break; + case PREG_BACKTRACK_LIMIT_ERROR: echo('PREG_BACKTRACK_LIMIT_ERROR'); break; + case PREG_RECURSION_LIMIT_ERROR: echo('PREG_RECURSION_LIMIT_ERROR'); break; + case PREG_BAD_UTF8_ERROR: echo('PREG_BAD_UTF8_ERROR'); break; + case PREG_BAD_UTF8_OFFSET_ERROR: echo('PREG_BAD_UTF8_OFFSET_ERROR'); break; default: //die("Unknown preg error."); return; } + echo "<hr><pre>"; + debug_print_backtrace(); + die(); } private function _build_replace($r, $prefix){ @@ -166,6 +169,9 @@ $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); if ($s==Null) $this->_preg_error(); + // remove comments block + $s = preg_replace('/{#[^#]*#}/', "" , $s); + // replace strings recursively (limit to 10 loops) $os = ""; $count=0; while($os!=$s && $count<10){ |