- Add more complicated actions

- Some other UI changes
This commit is contained in:
Nathan Gray 2011-06-08 02:27:42 +00:00
parent a70b03614f
commit e9d33a174d
4 changed files with 69 additions and 13 deletions

View File

@ -117,7 +117,7 @@ class resources_bo
return $nr; return $nr;
} }
foreach((array)$rows as $num => $resource) foreach($rows as $num => &$resource)
{ {
if (!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_EDIT)) if (!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_EDIT))
{ {
@ -126,23 +126,29 @@ class resources_bo
if (!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_DELETE)) if (!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_DELETE))
{ {
$readonlys["delete[$resource[res_id]]"] = true; $readonlys["delete[$resource[res_id]]"] = true;
$resource['class'] .= 'no_delete ';
} }
if ((!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_ADD)) || $accessory_of != -1) if ((!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_ADD)) || $accessory_of != -1)
{ {
$readonlys["new_acc[$resource[res_id]]"] = true; $readonlys["new_acc[$resource[res_id]]"] = true;
$resource['class'] .= 'no_new_accessory ';
} }
if (!$resource['bookable']) if (!$resource['bookable'])
{ {
$readonlys["bookable[$resource[res_id]]"] = true; $readonlys["bookable[$resource[res_id]]"] = true;
$readonlys["calendar[$resource[res_id]]"] = true; $readonlys["calendar[$resource[res_id]]"] = true;
$resource['class'] .= 'no_book ';
$resource['class'] .= 'no_view_calendar ';
} }
if(!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_CALREAD)) if(!$this->acl->is_permitted($resource['cat_id'],EGW_ACL_CALREAD))
{ {
$readonlys["calendar[$resource[res_id]]"] = true; $readonlys["calendar[$resource[res_id]]"] = true;
$resource['class'] .= 'no_view_calendar ';
} }
if (!$resource['buyable']) if (!$resource['buyable'])
{ {
$readonlys["buyable[$resource[res_id]]"] = true; $readonlys["buyable[$resource[res_id]]"] = true;
$resource['class'] .= 'no_buy ';
} }
$readonlys["view_acc[$resource[res_id]]"] = true; $readonlys["view_acc[$resource[res_id]]"] = true;
$links = egw_link::get_links('resources',$resource['res_id']); $links = egw_link::get_links('resources',$resource['res_id']);

View File

@ -115,6 +115,7 @@ class resources_ui
$content['msg'] = $msg; $content['msg'] = $msg;
$content['nm']['header_left'] = 'resources.resource_select.header'; $content['nm']['header_left'] = 'resources.resource_select.header';
$content['nm']['header_right'] = 'resources.show.nm_right';
$content['nm']['get_rows'] = 'resources.resources_bo.get_rows'; $content['nm']['get_rows'] = 'resources.resources_bo.get_rows';
$content['nm']['no_filter'] = False; $content['nm']['no_filter'] = False;
$content['nm']['filter_label'] = lang('Category'); $content['nm']['filter_label'] = lang('Category');
@ -174,6 +175,8 @@ class resources_ui
} }
</script>"; </script>";
egw_framework::validate_file('.','resources','resources');
if($content['nm']['view_accs_of']) if($content['nm']['view_accs_of'])
{ {
$master = $this->bo->so->read(array('res_id' => $content['nm']['view_accs_of'])); $master = $this->bo->so->read(array('res_id' => $content['nm']['view_accs_of']));
@ -188,6 +191,7 @@ class resources_ui
($master['short_description'] ? ' [' . $master['short_description'] . ']' : ''); ($master['short_description'] ? ' [' . $master['short_description'] . ']' : '');
} }
$preserv = $content; $preserv = $content;
$GLOBALS['egw']->session->appsession('session_data','resources_index_nm',$content['nm']); $GLOBALS['egw']->session->appsession('session_data','resources_index_nm',$content['nm']);
$this->tmpl->read('resources.show'); $this->tmpl->read('resources.show');
return $this->tmpl->exec('resources.resources_ui.index',$content,$sel_options,$no_button,$preserv); return $this->tmpl->exec('resources.resources_ui.index',$content,$sel_options,$no_button,$preserv);
@ -201,28 +205,55 @@ class resources_ui
protected function get_actions() protected function get_actions()
{ {
$actions = array( $actions = array(
'view' => array(
'caption' => 'View',
'allowOnMultiple' => false,
'url' => 'menuaction=resources.resources_ui.show&res_id=$id',
'popup' => egw_link::get_registry('resources', 'view_popup'),
'group' => $group=1,
),
'edit' => array( 'edit' => array(
'default' => true, 'default' => true,
'caption' => 'Edit', 'caption' => 'open',
'allowOnMultiple' => false, 'allowOnMultiple' => false,
'url' => 'menuaction=resources.resources_ui.edit&res_id=$id', 'url' => 'menuaction=resources.resources_ui.edit&res_id=$id',
'popup' => egw_link::get_registry('resources', 'add_popup'), 'popup' => egw_link::get_registry('resources', 'add_popup'),
'group' => $group, 'group' => $group,
'disableClass' => 'rowNoEdit', 'disableClass' => 'rowNoEdit',
), ),
'view' => array(
'caption' => 'View',
'allowOnMultiple' => false,
'url' => 'menuaction=resources.resources_ui.show&res_id=$id',
'popup' => egw_link::get_registry('resources', 'view_popup'),
'group' => $group,
),
'add' => array( 'add' => array(
'caption' => 'Add', 'caption' => 'Add',
'url' => 'menuaction=resources.resources_ui.edit', 'url' => 'menuaction=resources.resources_ui.edit',
'popup' => egw_link::get_registry('resources', 'add_popup'), 'popup' => egw_link::get_registry('resources', 'add_popup'),
'group' => $group, 'group' => $group,
), ),
'view_calendar' => array(
'caption' => 'View calendar',
'icon' => 'calendar/planner',
'group' => ++$group,
'allowOnMultiple' => true,
'onExecute' => 'javaScript:view_calendar',
'url' => 'menuaction=calendar.calendar_uiviews.planner&sortby=user&owner=0',
'nm_action' => 'location',
'disableClass' => 'no_view_calendar',
),
'book' => array(
'caption' => 'Book resource',
'icon' => 'navbar',
'group' => $group,
'allowOnMultiple' => true,
'onExecute' => 'javaScript:view_calendar',
'url' => 'menuaction=calendar.calendar_uiforms.edit&participants=',
'popup' => egw_link::get_registry('calendar', 'add_popup'),
'disableClass' => 'no_book',
),
'new_accessory' => array(
'caption' => 'New accessory',
'group' => $group,
'url' => 'menuaction=resources.resources_ui.edit&res_id=0&accessory_of=$id',
'popup' => egw_link::get_registry('resources', 'add_popup'),
'disableClass' => 'no_new_accessory',
),
'select_all' => array( 'select_all' => array(
'caption' => 'Whole query', 'caption' => 'Whole query',
'checkbox' => true, 'checkbox' => true,
@ -241,7 +272,7 @@ class resources_ui
'confirm' => 'Delete this entry', 'confirm' => 'Delete this entry',
'confirm_multiple' => 'Delete these entries', 'confirm_multiple' => 'Delete these entries',
'group' => ++$group, 'group' => ++$group,
'disableClass' => 'rowNoDelete', 'disableClass' => 'no_delete',
), ),
); );
return $actions; return $actions;

14
resources/js/resources.js Normal file
View File

@ -0,0 +1,14 @@
/**
* Javascript for resources app
*/
/**
* Calendar needs to have resource IDs prefixed with 'r' so it can tell them apart
* from calendar entries.
*/
function view_calendar(action, senders) {
for(var i = 0; i < senders.length; i++) {
action.data.url += ',r'+senders[i].id;
}
nm_action(action, senders);
}

File diff suppressed because one or more lines are too long