/** * Initialize the plugin * * @return void */ function todos_init() { elgg_extend_view('css/elgg', 'css/todos'); elgg_extend_view('js/elgg', 'js/todos'); elgg_register_page_handler('todos', 'todos_page_handler'); elgg_register_event_handler('pagesetup', 'system', 'todos_pagesetup'); $actions_path = dirname(__FILE__) . '/actions/'; elgg_register_action('todos/todolist/edit', $actions_path . 'todolist/edit.php'); elgg_register_action('todos/todolist/delete', $actions_path . 'todolist/delete.php'); elgg_register_action('todos/todoitem/edit', $actions_path . 'todoitem/edit.php'); elgg_register_action('todos/todoitem/delete', $actions_path . 'todoitem/delete.php'); elgg_register_action('todos/todoitem/toggle', $actions_path . 'todoitem/toggle.php'); elgg_register_action('todos/todoitem/delete_attachment', $actions_path . 'todoitem/delete_attachment.php'); elgg_register_action('todos/todoitem/attach', $actions_path . 'todoitem/attach.php'); elgg_register_action('todos/todo/move', $actions_path . 'todo/move.php'); elgg_register_ajax_view('todos/todolist/form'); elgg_register_ajax_view('todos/todoitem/form'); elgg_register_ajax_view('todos/todoitem/attach'); elgg_register_plugin_hook_handler('register', 'menu:todoitem', 'todos_todoitem_menu_register'); elgg_register_plugin_hook_handler('register', 'menu:todolist', 'todos_todolist_menu_register'); elgg_register_plugin_hook_handler('register', 'menu:filter', 'todos_filter_menu_register'); elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'todos_group_owner_block_menu_register'); elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'todos_user_owner_block_menu_register'); elgg_register_plugin_hook_handler('cron', 'daily', 'todos_cron_handler'); elgg_register_plugin_hook_handler('permissions_check:comment', 'object', 'todos_todoitem_can_comment'); elgg_register_plugin_hook_handler('permissions_check', 'object', 'todos_todolist_can_edit'); // groups if (todos_group_enabled()) { add_group_tool_option('todos', elgg_echo('todos:group:tool_option'), false); } // widgets elgg_register_plugin_hook_handler("widget_url", "widget_manager", "todos_widget_title_url"); elgg_register_widget_type('todos_assigned', elgg_echo('todos:widget:assigned:title'), elgg_echo('todos:widget:assigned:description'), 'dashboard'); elgg_register_widget_type('todos_closed', elgg_echo('todos:widget:closed:title'), elgg_echo('todos:widget:closed:description'), 'index,groups'); elgg_register_widget_type('todos_due', elgg_echo('todos:widget:due:title'), elgg_echo('todos:widget:due:description'), 'index,groups'); elgg_register_widget_type('todos_created', elgg_echo('todos:widget:created:title'), elgg_echo('todos:widget:created:description'), 'index,groups'); elgg_register_widget_type('todos_list', elgg_echo('todos:widget:list:title'), elgg_echo('todos:widget:list:description'), 'dashboard,groups', true); }
/** * Adds the menu items to the owner_block of a group * * @param string $hook name of the hook * @param string $type type of the hook * @param ElggMenuItem[] $return return value * @param array $params hook parameters * * @return ElggMenuItem[] */ function todos_group_owner_block_menu_register($hook, $type, $return, $params) { if (empty($params) || !is_array($params)) { return $return; } $entity = elgg_extract('entity', $params); if (empty($entity) || !elgg_instanceof($entity, 'group')) { return $return; } if (!todos_group_enabled($entity)) { return $return; } $return[] = ElggMenuItem::factory(array('name' => 'todos', 'text' => elgg_echo('todos:owner_block:group'), 'href' => "todos/group/{$entity->getGUID()}/all")); return $return; }
/** * Wrapper function to check if todos is enabled to user/group * * @param ElggEntity $container the user/group to check * * @return bool */ function todos_enabled_for_container(ElggEntity $container) { if (empty($container) || !elgg_instanceof($container)) { return false; } if (elgg_instanceof($container, 'group')) { return todos_group_enabled($container); } return todos_personal_enabled(); }