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.
This commit is contained in:
parent
85e291f535
commit
7458263017
17
boot.php
17
boot.php
@ -2386,6 +2386,7 @@ function get_custom_nav(&$a,$navname) {
|
|||||||
|
|
||||||
function construct_page(&$a) {
|
function construct_page(&$a) {
|
||||||
|
|
||||||
|
require_once('include/comanche.php');
|
||||||
|
|
||||||
$comanche = ((count($a->layout)) ? true : false);
|
$comanche = ((count($a->layout)) ? true : false);
|
||||||
|
|
||||||
@ -2434,9 +2435,23 @@ function construct_page(&$a) {
|
|||||||
$a->page[$x['location']] .= $x['html'];
|
$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 '<content>' element instead of a '<section>'.
|
||||||
|
|
||||||
|
// 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) {
|
if($comanche) {
|
||||||
foreach($a->layout as $k => $v) {
|
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;
|
$a->data[substr($k,0,7)] = $v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,11 +75,21 @@ function comanche_menu($name) {
|
|||||||
return render_menu($m);
|
return render_menu($m);
|
||||||
}
|
}
|
||||||
|
|
||||||
function comanche_widget($name) {
|
function comanche_replace_region($match) {
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
// placeholder for now
|
if(array_key_exists($match[1],$a->page))
|
||||||
$m = menu_fetch($name,$a->profile['profile_uid'],get_observer_hash());
|
return $a->page[$match[1]];
|
||||||
return render_menu($m);
|
}
|
||||||
|
|
||||||
|
// 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;
|
return $s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
15
mod/page.php
15
mod/page.php
@ -9,15 +9,11 @@ function page_init(&$a) {
|
|||||||
|
|
||||||
$which = argv(1);
|
$which = argv(1);
|
||||||
$profile = 0;
|
$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);
|
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;
|
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']) {
|
if ($perms['write_pages']) {
|
||||||
$chan = $a->channel['channel_id'];
|
$chan = $a->channel['channel_id'];
|
||||||
$who = $channel_address;
|
$who = $channel_address;
|
||||||
@ -75,7 +72,7 @@ function page_content(&$a) {
|
|||||||
|
|
||||||
xchan_query($r);
|
xchan_query($r);
|
||||||
$r = fetch_post_tags($r,true);
|
$r = fetch_post_tags($r,true);
|
||||||
$a->profile = array('profile_uid' => $u[0]['channel_id']);
|
|
||||||
$o .= prepare_page($r[0]);
|
$o .= prepare_page($r[0]);
|
||||||
return $o;
|
return $o;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user