allow themes to add to and/or completely over-ride the module sidebar

This commit is contained in:
friendica 2012-09-25 21:35:35 -07:00
parent 85f9d89a89
commit ba4fe4ff91
3 changed files with 38 additions and 23 deletions

View File

@ -145,7 +145,10 @@ $a->apps = $arr['app_menu'];
*
* "module"_init
* "module"_post (only called if there are $_POST variables)
* "module"_afterpost
* "module"_aside
* $theme_$module_aside (and $extends_$module_aside) are run first if either exist
* if either of these return false, module_aside is not called
* This allows a theme to over-ride the sidebar layout completely.
* "module"_content - the string return of this function contains our page body
*
* Modules which emit other serialisations besides HTML (XML,JSON, etc.) should do
@ -246,8 +249,8 @@ if($a->module_loaded) {
$func = str_replace('-','_',current_theme()) . '_init';
$func($a);
}
elseif (x($a->theme_info,"extends") && file_exists("view/theme/".$a->theme_info["extends"]."/theme.php")) {
require_once("view/theme/".$a->theme_info["extends"]."/theme.php");
elseif (x($a->theme_info,"extends") && file_exists("view/theme/".$a->theme_info["extends"]."/php/theme.php")) {
require_once("view/theme/".$a->theme_info["extends"]."/php/theme.php");
if(function_exists(str_replace('-','_',$a->theme_info["extends"]) . '_init')) {
$func = str_replace('-','_',$a->theme_info["extends"]) . '_init';
$func($a);
@ -262,10 +265,23 @@ if($a->module_loaded) {
$func($a);
}
if((! $a->error) && (function_exists($a->module . '_afterpost'))) {
call_hooks($a->module . '_mod_afterpost',$placeholder);
$func = $a->module . '_afterpost';
$func($a);
if(! $a->error) {
$aside_default = true;
call_hooks($a->module . '_mod_aside',$placeholder);
if(function_exists(str_replace('-','_',current_theme()) . '_' . $a->module . '_aside')) {
$func = str_replace('-','_',current_theme()) . '_' . $a->module . '_aside';
$aside_default = $func($a);
}
elseif(x($a->theme_info,"extends") && $aside_default
&& (function_exists(str_replace('-','_',$a->theme_info["extends"]) . '_' . $a->module . '_aside'))) {
$func = str_replace('-','_',$a->theme_info["extends"]) . '_' . $a->module . '_aside';
$aside_default = $func($a);
}
elseif(function_exists($a->module . '_aside') && $aside_default) {
$func = $a->module . '_aside';
$func($a);
}
}
if((! $a->error) && (function_exists($a->module . '_content'))) {

View File

@ -2,23 +2,27 @@
function profile_init(&$a) {
$a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
}
function profile_aside(&$a) {
require_once('include/contact_widgets.php');
require_once('include/items.php');
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$blocked = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false);
if(argc() > 1)
$which = argv(1);
else {
logger('profile error: mod_profile ' . $a->query_string, LOGGER_DEBUG);
notice( t('Requested profile is not available.') . EOL );
$a->error = 404;
return;
}
$profile = 0;
$channel = $a->get_channel();
@ -27,9 +31,12 @@ function profile_init(&$a) {
$profile = argv(1);
}
$cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat']) : '');
profile_load($a,$which,$profile);
$a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
$a->page['aside'] .= posted_date_widget($a->get_baseurl(true) . '/profile/' . $a->profile['nickname'],$a->profile['profile_uid'],true);
$a->page['aside'] .= categories_widget($a->get_baseurl(true) . '/profile/' . $a->profile['nickname'],$cat);
}
@ -46,17 +53,11 @@ function profile_content(&$a, $update = 0) {
else
$datequery = escape_tags(argv($x));
}
else
$category = argv($x);
}
}
if(! x($category)) {
$category = ((x($_GET,'category')) ? $_GET['category'] : '');
}
if(get_config('system','block_public') && (! get_account_id()) && (! remote_user())) {
return login();
return login();
}
require_once("include/bbcode.php");
@ -146,8 +147,6 @@ function profile_content(&$a, $update = 0) {
$celeb = ((($a->profile['page-flags'] == PAGE_SOAPBOX) || ($a->profile['page-flags'] == PAGE_COMMUNITY)) ? true : false);
$a->page['aside'] .= posted_date_widget($a->get_baseurl(true) . '/profile/' . $a->profile['nickname'],$a->profile['profile_uid'],true);
$a->page['aside'] .= categories_widget($a->get_baseurl(true) . '/profile/' . $a->profile['nickname'],(x($category) ? xmlify($category) : ''));
if(can_write_wall($a,$a->profile['profile_uid'])) {

View File

@ -1,11 +1,11 @@
<div id="categories-sidebar" class="widget">
<h3>$title</h3>
<div id="nets-desc">$desc</div>
<div id="categories-sidebar-desc">$desc</div>
<ul class="categories-ul">
<li class="tool"><a href="$base" class="categories-link categories-all{{ if $sel_all }} categories-selected{{ endif }}">$all</a></li>
{{ for $terms as $term }}
<li class="tool"><a href="$base?f=&category=$term.name" class="categories-link{{ if $term.selected }} categories-selected{{ endif }}">$term.name</a></li>
<li class="tool"><a href="$base?f=&cat=$term.name" class="categories-link{{ if $term.selected }} categories-selected{{ endif }}">$term.name</a></li>
{{ endfor }}
</ul>