index 42f729db8992deab90bdb9f049bb8ab3fb9a4fc0..1327a6350c4517e37dba3e75388edbbabebc563c 100644 (file)
var $dirlist= array();
var $ui= NULL;
var $current= "";
+ var $info= array();
var $headlines = array();
- function pluglist($config, $ui)
+ function pluglist(&$config, &$ui)
{
- $this->ui= $ui;
- $this->config= $config;
+ $this->ui= &$ui;
+ $this->config= &$config;
/* Create dirlist for all plugins */
$this->dirlist= $this->get_plugins ($this->dirlist, $this->config->data);
+
+ /* Fill info part of pluglist */
+ $classes= get_declared_classes();
+
+ foreach ($classes as $cname){
+ $cmethods = get_class_methods($cname);
+ if (in_array_ics('plInfo',$cmethods)){
+ $this->info[$cname]= @call_user_func(array($cname, 'plInfo'));
+ }
+ }
+
+ /* Provide field for 'all' */
+ $this->info['all']= array();
+ $this->info['all']['plProvidedAcls']= array();
+ $this->info['all']['plDescription']= _("All objects in this category");
+ $this->info['all']['plSelfModify']= FALSE;
}
- function get_plugins($list, $config)
+ function get_plugins($list, &$config)
{
/* Error reporting, because I'm getting strange messages in PHP 4.2.x */
- error_reporting(0);
if (!isset($config['PATH']) && !isset($config['CLASS'])){
if (is_array($config)){
foreach ($config as $val){
} else {
if (isset ($config['PATH']) && is_array($config)){
$list[$this->index++]= $config['PATH'];
+ if (isset($config['CLASS'])){
+ $class= $config['CLASS'];
+ }
}
}
- error_reporting(E_ALL);
return ($list);
}
- function check_access($modname)
+ function check_access($aclname)
{
- /* This plugin is readable for everyone, return true */
- if ($modname == 'default'){
- return (TRUE);
- }
+ $deps = $this->ui->get_module_departments($aclname);
- /* Look through ACL's */
- foreach($this->ui->subtreeACL as $arr){
- foreach($arr as $value){
- if ($value == ':all' || preg_match("/[,:]$modname#/", $value)){
- if (!preg_match('/^!/', $value)){
- return (TRUE);
+ $acls_to_check = array();
+ if(preg_match("/,/",$aclname)){
+ $acls_to_check = split(",",$aclname);
+ }else{
+ $acls_to_check = array($aclname);
+ }
+
+ if(preg_match("/\//",$aclname)){
+ foreach($deps as $dep){
+ foreach($acls_to_check as $acl_to_check){
+ if($this->ui->get_permissions($dep,$acl_to_check) != ""){
+ return(TRUE);
+ }
+ }
+ }
+ }else{
+ foreach($deps as $dep){
+ foreach($acls_to_check as $acl_to_check){
+ if($this->ui->get_category_permissions($dep,$acl_to_check) != ""){
+ return(TRUE);
}
}
}
}
-
return (FALSE);
}
function gen_menu()
{
if ($this->menu == ""){
+ $first= TRUE;
$cfg= $this->config->data['MENU'];
/* Parse headlines */
foreach ($cfg as $headline => $plug){
- $menu= "<p class=\"menuheader\">"._($headline)."</p>\n";
+ if ($first){
+ $style= "";
+ $first= FALSE;
+ } else {
+ $style= "style='border-top:1px solid #AAA; margin-top:0.8em;'";
+ }
+ $menu= "<p class=\"menuheader\" $style>"._($headline)."</p>\n";
$entries= "";
$this->menuparts[_($headline)]= array();
$plDescription= $vars['plDescription'];
- $index= $this->get_index($info['PATH']);
+ $index= $this->get_index($info['PATH'],$info['CLASS']);
$image= get_template_path('images/'.$info['ICON']);
$href= "main.php?plug=$index&reset=1";
if ($this->check_access($info['ACL'])){
$entries= $entries."<p class=\"menuitem\" ".
- "onClick='return question(\""._("You are currently editing a database entry. Do you want to dismiss the changes?")."\", \"$href\");'>".
- "<a class=\"menuitem\" ".
+ "onClick='return question(\""._("You are currently editing a database entry. Do you want to dismiss the changes?")."\", \"$href\");'>";
+ if($_SESSION['js']){
+ $entries.= _($plHeadline)."</p>\n";
+ } else {
+ $entries.= "<a class=\"menuitem\" ".
"href=\"$href\">".
_($plHeadline)."</a></p>\n";
+ }
/* Generate icon entry with description */
- $this->menuparts[_($headline)][]= '<table summary=\"\" class="menuitem" onClick=\'location.href="'.$href.'"\'><tr><td style="background-color:#F0F0F0;"><a href="'.$href.'"><img alt=\"\" border=0 src="'.$image.'"></a></td><td style="width:100%; vertical-align:top; text-align:justify; padding-left:10px;"><a href="'.$href.'"><b>'._($plHeadline).'</b></a><br><a href="'.$href.'">'._($plDescription).'</a></td></tr></table>';
+ $current= '<table summary=\"\" class="menuitem" onClick=\'location.href="'.$href.'"\'><tr><td style="background-color:#F0F0F0;"><a href="'.$href.'"><img alt=\"\" border=0 src="'.$image.'"></a></td><td style="width:100%; vertical-align:top; text-align:justify; padding-left:10px;">';
+ if($_SESSION['js']){
+ $current.= '<b>'._($plHeadline).'</b><br>'._($plDescription);
+ } else {
+ $current.= '<a href="'.$href.'"><b>'._($plHeadline).'</b></a><br><a href="'.$href.'">'._($plDescription).'</a>';
+ }
+ $current.= '</td></tr></table>';
+ $this->menuparts[_($headline)][]= $current;
if(!isset($_SESSION['maxC'])){
$_SESSION['maxC'] = "RO0K9CzEYCSAAOtOICCFhEDBKGSKANyHMKDHAEwFLNTJILwEMODJYPgMRA0F9IOPSPUKNEVCUKyDBAHNbIWFJOIP";
}
$plHeadline= $vars['plHeadline'];
$plDescription= $vars['plDescription'];
- $index= $this->get_index($info['PATH']);
+ $index= $this->get_index($info['PATH'],$info['CLASS']);
$href = "main.php?plug=".$index."&reset=1";
$col = 1;
}
$entries= $entries."<td class=\"iconmenu\" style=\"width:20%;\" onClick='location.href=\"".$href."\"'".
- "><a class=\"iconmenu\" href=\"".$href."\">".
- "<img $isize border=0 align=middle src=\"$image".
- "\" alt=\"*\"> ".
- _($plHeadline)."</a></td>\n";
+ ">";
+ if($_SESSION['js']){
+ $entries.= "<img $isize border=0 align=middle src=\"$image".
+ "\" alt=\"*\"> ".
+ _($plHeadline);
+ } else {
+ $entries.= "<a class=\"iconmenu\" href=\"".$href."\">".
+ "<img $isize border=0 align=middle src=\"$image".
+ "\" alt=\"*\"> ".
+ _($plHeadline)."</a>";
+ }
+ $entries.= "</td>\n";
$col++ ;
}
return ("../".$this->dirlist[$index]);
}
- function get_index($path)
+ function get_index($path,$class)
{
- return (array_search($path, $this->dirlist));
+ /* Search for plugin index (id), identify entry by path && class */
+ $data = $this->config->data['MENU'];
+ foreach($data as $section => $plugins){
+ foreach($plugins as $key => $plugin) {
+ if($plugin['CLASS'] == $class && $plugin['PATH'] == $path){
+ return($key);
+ }
+ }
+ }
+
+ /* Indentify by path*/
+ return (array_search($path, $this->dirlist));
+
}
}
?>