mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-19 21:35:13 +00:00
Widget manager....
/* * Use a theme or app specific widget ordering list to determine what widgets should be included * for each module and in what order and optionally what region of the page to place them. * For example: * view/wgl/mod_connections.wgl: * ----------------------------- * vcard aside * follow aside * findpeople rightside * collections aside * * If your widgetlist does not include a widget that is destined for the page, it will not be rendered. * You can also use this to change the order of presentation, as they will be presented in the order you specify. * */
This commit is contained in:
parent
62d08029d8
commit
ae91347dcd
2 changed files with 55 additions and 11 deletions
64
boot.php
64
boot.php
|
@ -448,19 +448,19 @@ if(! class_exists('App')) {
|
|||
class App {
|
||||
|
||||
|
||||
public $account = null; // account record
|
||||
public $channel = null; // channel record
|
||||
public $observer = null; // xchan record
|
||||
|
||||
private $perms = null; // observer permissions
|
||||
private $widgets = array(); // widgets for this page
|
||||
public $account = null; // account record
|
||||
public $channel = null; // channel record
|
||||
public $observer = null; // xchan record
|
||||
|
||||
private $perms = null; // observer permissions
|
||||
private $widgets = array(); // widgets for this page
|
||||
private $widgetlist = null; // widget ordering and inclusion directives
|
||||
|
||||
public $groups;
|
||||
public $language;
|
||||
public $module_loaded = false;
|
||||
public $query_string;
|
||||
public $config; // config cache
|
||||
public $config; // config cache
|
||||
public $page;
|
||||
public $profile;
|
||||
public $user;
|
||||
|
@ -759,8 +759,45 @@ if(! class_exists('App')) {
|
|||
return $this->groups;
|
||||
}
|
||||
|
||||
/*
|
||||
* Use a theme or app specific widget ordering list to determine what widgets should be included
|
||||
* for each module and in what order and optionally what region of the page to place them.
|
||||
* For example:
|
||||
* view/wgl/mod_connections.wgl:
|
||||
* -----------------------------
|
||||
* vcard aside
|
||||
* follow aside
|
||||
* findpeople rightside
|
||||
* collections aside
|
||||
*
|
||||
* If your widgetlist does not include a widget that is destined for the page, it will not be rendered.
|
||||
* You can also use this to change the order of presentation, as they will be presented in the order you specify.
|
||||
*
|
||||
*/
|
||||
|
||||
function set_widget($title,$html, $location = 'aside') {
|
||||
$this->widgets[] = array('title' => $title, 'html' => $html, 'location' => $location);
|
||||
$widgetlist_file = 'mod_' . $this->module . '.wgl';
|
||||
if(! $this->widgetlist) {
|
||||
if($this->module && (($f = theme_include($widgetlist_file)) !== '')) {
|
||||
$s = file($f, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||
if(is_array($s)) {
|
||||
foreach($s as $x) {
|
||||
$this->widgetlist[] = explode(' ', $x);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->widgets[] = array('title' => $title, 'html' => $html, 'location' => $location);
|
||||
}
|
||||
}
|
||||
if($this->widgetlist) {
|
||||
foreach($this->widgetlist as $k => $v) {
|
||||
if($v[0] && $v[0] === $title) {
|
||||
$this->widgets[$k] = array('title' => $title, 'html' => $html, 'location' => (($v[1]) ? $v[1] : $location));
|
||||
}
|
||||
}
|
||||
}
|
||||
logger('widgets: ' . print_r($this->widgets,true));
|
||||
}
|
||||
|
||||
function get_widgets($location = '') {
|
||||
|
@ -769,9 +806,14 @@ if(! class_exists('App')) {
|
|||
foreach($widgets as $w)
|
||||
if($w['location'] == $location)
|
||||
$ret[] = $w;
|
||||
return $ret;
|
||||
$arr = array('location' => $location, 'widgets' => $ret);
|
||||
call_hooks('get_widgets', $arr);
|
||||
return $arr['widgets'];
|
||||
}
|
||||
return $this->widgets;
|
||||
|
||||
$arr = array('location' => $location, 'widgets' => $this->widgets);
|
||||
call_hooks('get_widgets', $arr);
|
||||
return $arr['widgets'];
|
||||
}
|
||||
|
||||
function set_pager_total($n) {
|
||||
|
@ -2038,6 +2080,8 @@ function construct_page(&$a) {
|
|||
$a->build_pagehead();
|
||||
|
||||
$arr = $a->get_widgets();
|
||||
ksort($arr,SORT_NUMERIC);
|
||||
logger('get_widgets: ' . print_r($arr,true));
|
||||
if(count($arr)) {
|
||||
foreach($arr as $x) {
|
||||
if(! array_key_exists($x['location'],$a->page))
|
||||
|
|
|
@ -1 +1 @@
|
|||
2013-01-28.214
|
||||
2013-01-29.215
|
||||
|
|
Loading…
Reference in a new issue