aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2013-08-29 20:54:42 -0700
committerfriendica <info@friendica.com>2013-08-29 20:54:42 -0700
commit74582630177b104f35113cee77d2c7ac5f74f412 (patch)
tree031770083dc6e2462e6190b59e6c59c6ea5c0624
parent85e291f5357bc28b108378816af97b545aacca3f (diff)
downloadvolse-hubzilla-74582630177b104f35113cee77d2c7ac5f74f412.tar.gz
volse-hubzilla-74582630177b104f35113cee77d2c7ac5f74f412.tar.bz2
volse-hubzilla-74582630177b104f35113cee77d2c7ac5f74f412.zip
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.
-rwxr-xr-xboot.php17
-rw-r--r--include/comanche.php27
-rw-r--r--mod/page.php15
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 '<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) {
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;