From 74582630177b104f35113cee77d2c7ac5f74f412 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 29 Aug 2013 20:54:42 -0700 Subject: I've got a pretty good idea of how to bootstrap, parse and render Comanche now. This does not mean it's close to being presentable - far from it. --- boot.php | 17 ++++++++++++++++- include/comanche.php | 27 ++++++++++++++++++++++----- mod/page.php | 15 ++++++--------- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/boot.php b/boot.php index a5ff7ea0b..5e8b52d0d 100755 --- a/boot.php +++ b/boot.php @@ -2386,6 +2386,7 @@ function get_custom_nav(&$a,$navname) { function construct_page(&$a) { + require_once('include/comanche.php'); $comanche = ((count($a->layout)) ? true : false); @@ -2434,9 +2435,23 @@ function construct_page(&$a) { $a->page[$x['location']] .= $x['html']; } } + + // Let's say we have a comanche declaration '[region_nav][/region_nav][region_content]$region_nav $region_section[/region_content]'. + // The text 'region_' identifies a section of the layout by that name (without the 'region_' text). + // So what we want to do here is leave $a->page['nav'] empty and put the default content from $a->page['nav'] and $a->page['section'] + // into a new region called $a->data['content']. It is presumed that the chosen layout file for this comanche page + // has a '' element instead of a '
'. + + // This way the Comanche layout can include any existing content, alter the layout by adding stuff around it or changing the + // layout completely with a new layout definition, or replace/remove existing content. + if($comanche) { foreach($a->layout as $k => $v) { - if(strpos($k,'region_') === 0) { + if((strpos($k,'region_') === 0) && strlen($v)) { + if(strpos($v,'$region_') !== false) { + $v = preg_replace_callback('/\$region_([a-zA-Z0-9]*?)/ism','comanche_replace_region',$v); + + } $a->data[substr($k,0,7)] = $v; } } diff --git a/include/comanche.php b/include/comanche.php index 21182175e..cf7ecd7c5 100644 --- a/include/comanche.php +++ b/include/comanche.php @@ -75,11 +75,21 @@ function comanche_menu($name) { return render_menu($m); } -function comanche_widget($name) { +function comanche_replace_region($match) { $a = get_app(); - // placeholder for now - $m = menu_fetch($name,$a->profile['profile_uid'],get_observer_hash()); - return render_menu($m); + if(array_key_exists($match[1],$a->page)) + return $a->page[$match[1]]; +} + +// Widgets will have to get any operational arguments from the session, +// the global app environment, or config storage until we implement argument passing + + +function comanche_widget($name,$args = null) { + $a = get_app(); + $func = 'widget_' . trim($name); + if(function_exists($func)) + return $func($args); } @@ -103,4 +113,11 @@ function comanche_region(&$a,$s) { } return $s; -} \ No newline at end of file +} + + +function widget_profile($args) { + $a = get_app(); + $block = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false); + return profile_sidebar($a->profile, $block, true); +} diff --git a/mod/page.php b/mod/page.php index 110d9699c..c63932b5e 100644 --- a/mod/page.php +++ b/mod/page.php @@ -9,15 +9,11 @@ function page_init(&$a) { $which = argv(1); $profile = 0; - $channel = $a->get_channel(); - - if((local_user()) && (argc() > 2) && (argv(2) === 'view')) { - $which = $channel['channel_address']; - $profile = argv(1); - } - profile_load($a,$which,$profile); + if($a->profile['profile_uid']) + head_set_icon($a->profile['thumb']); + } @@ -65,7 +61,8 @@ function page_content(&$a) { return; } -// Use of widgets should be determined by Comanchie, but we don't have it yet, so... + // Use of widgets should be determined by Comanche, but we don't have it yet, so... + if ($perms['write_pages']) { $chan = $a->channel['channel_id']; $who = $channel_address; @@ -75,7 +72,7 @@ function page_content(&$a) { xchan_query($r); $r = fetch_post_tags($r,true); - $a->profile = array('profile_uid' => $u[0]['channel_id']); + $o .= prepare_page($r[0]); return $o; -- cgit v1.2.3