Enhancements to group handling

This commit is contained in:
Deon George
2011-09-24 23:13:38 +10:00
parent 7180e01dcf
commit cea949a2c4
6 changed files with 70 additions and 96 deletions

View File

@@ -81,9 +81,9 @@ $(function () {
* The incoming ID is either a Branch B_x or a Node N_x
* Where X is actually the module.
*
* @param id
* @param array $data Tree data passed in by inherited methods
*/
public function action_json($id=null,array $data=array()) {
public function action_json(array $data=array()) {
if ($this->_auth_required() AND ! Auth::instance()->logged_in()) {
$this->output = array('attr'=>array('id'=>'a_login'),
'data'=>array('title'=>_('Please Login').'...','attr'=>array('id'=>'N_login','href'=>URL::site('/login'))));

View File

@@ -19,52 +19,57 @@ class Controller_Tree extends Controller_lnApp_Tree {
* The incoming ID is either a Branch B_x or a Node N_x
* Where X is actually the module.
*
* @param id
* @param array $data Tree data passed in by inherited methods
*/
public function action_json($id=NULL,array $data=array()) {
public function action_json(array $data=array()) {
// Get the user details
$id = (is_null($id) AND isset($_REQUEST['id'])) ? substr($_REQUEST['id'],2) : $id;
$id = (is_null($this->request->param('id')) AND isset($_REQUEST['id'])) ? substr($_REQUEST['id'],2) : $this->request->param('id');
$user = Auth::instance()->get_user();
if ($user) {
if (! $id) {
$modules = array();
foreach ($user->groups() as $go)
$modules = array_merge($modules,Module_Method::groupmodules($go->id));
foreach ($go->list_parentgrps(TRUE) as $cgo)
foreach ($cgo->module_method->find_all() as $mmo)
if ($mmo->menu_display AND empty($modules[$mmo->module_id]))
$modules[$mmo->module_id] = $mmo->module;
ksort($modules);
Sort::masort($modules,'name');
$data = array();
foreach ($modules as $module => $details)
if (! $details['parent_id'])
array_push($data,
array('id'=>$details['id'],'name'=>$module,'state'=>'closed')
);
foreach ($modules as $id => $mo)
if (! $mo->parent_id)
array_push($data,array('id'=>$id,'name'=>$mo->name,'state'=>'closed'));
} else {
$module = preg_replace('/^N_/','',$id);
$mo = ORM::factory('module',$id);
$methods = array();
foreach ($user->groups() as $go)
$methods = array_merge($methods,Module_Method::groupmethods($go->id,$module));
if ($mo->loaded()) {
foreach ($mo->module_method->find_all() as $mmo)
if ($mmo->menu_display)
foreach ($mmo->group->find_all() as $gmo)
if ($user->has_any('group',$gmo->list_childgrps(TRUE)))
$methods[$mmo->id] = $mmo;
ksort($methods);
Sort::masort($modules,'name');
$data = array();
foreach ($methods as $method => $details) {
if (preg_match('/_/',$method)) {
list($mode,$action) = explode('_',$method);
$url = URL::site(sprintf('/%s/%s/%s',$mode,$details['module'],$action));
} else {
$url = URL::site(sprintf('/%s/%s',$details['module'],$method));
foreach ($methods as $id => $mmo) {
if (preg_match('/_/',$mmo->name)) {
list($mode,$action) = explode('_',$mmo->name);
$url = URL::site(sprintf('/%s/%s/%s',$mode,$mmo->module->name,$action));
} else {
$url = URL::site(sprintf('/%s/%s',$mmo->module->name,$mmo->name));
}
array_push($data,array(
'id'=>sprintf('%s_%s',$mmo->module_id,$id),
'name'=>$mmo->name,
'state'=>'none',
'attr_id'=>sprintf('%s_%s',$mmo->module->name,$id),
'attr_href'=>(empty($details['page']) ? $url : $details['page'])
));
}
array_push($data,array(
'id'=>sprintf('%s_%s',$module,$details['id']),
'name'=>$method,
'state'=>'none',
'attr_id'=>sprintf('%s_%s',$module,$details['id']),
'attr_href'=>(empty($details['page']) ? $url : $details['page'])
));
}
}
}
@@ -81,7 +86,7 @@ class Controller_Tree extends Controller_lnApp_Tree {
);
}
return parent::action_json($id,$data);
return parent::action_json($data);
}
}
?>