diff options
Diffstat (limited to 'mod/dashboard')
-rw-r--r-- | mod/dashboard/languages/en.php | 14 | ||||
-rw-r--r-- | mod/dashboard/manifest.xml | 15 | ||||
-rw-r--r-- | mod/dashboard/start.php | 83 | ||||
-rw-r--r-- | mod/dashboard/views/default/dashboard/blurb.php | 17 | ||||
-rw-r--r-- | mod/dashboard/views/default/dashboard/css.php | 10 | ||||
-rw-r--r-- | mod/dashboard/views/default/widgets/group_activity/content.php | 36 | ||||
-rw-r--r-- | mod/dashboard/views/default/widgets/group_activity/edit.php | 45 |
7 files changed, 220 insertions, 0 deletions
diff --git a/mod/dashboard/languages/en.php b/mod/dashboard/languages/en.php new file mode 100644 index 000000000..e1378f2f1 --- /dev/null +++ b/mod/dashboard/languages/en.php @@ -0,0 +1,14 @@ +<?php +/** + * User dashboard languages + */ + +$english = array( + 'dashboard:widget:group:title' => 'Group activity', + 'dashboard:widget:group:desc' => 'View the activity in one of your groups', + 'dashboard:widget:group:select' => 'Select a group', + 'dashboard:widget:group:noactivity' => 'There is no activity in this group', + 'dashboard:widget:group:noselect' => 'Edit this widget to select a group', +); + +add_translation("en", $english); diff --git a/mod/dashboard/manifest.xml b/mod/dashboard/manifest.xml new file mode 100644 index 000000000..cbbc1044c --- /dev/null +++ b/mod/dashboard/manifest.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8"> + <name>User Dashboard</name> + <author>Core developers</author> + <version>1.8</version> + <category>bundled</category> + <description>A widget-based dashboard for your users</description> + <website>http://www.elgg.org/</website> + <copyright>See COPYRIGHT.txt</copyright> + <license>GNU General Public License version 2</license> + <requires> + <type>elgg_release</type> + <version>1.8</version> + </requires> +</plugin_manifest> diff --git a/mod/dashboard/start.php b/mod/dashboard/start.php new file mode 100644 index 000000000..65007d1a8 --- /dev/null +++ b/mod/dashboard/start.php @@ -0,0 +1,83 @@ +<?php +/** + * A user dashboard + */ + +elgg_register_event_handler('init', 'system', 'dashboard_init'); + +function dashboard_init() { + elgg_register_page_handler('dashboard', 'dashboard_page_handler'); + + elgg_extend_view('css/elgg', 'dashboard/css'); + + elgg_register_menu_item('topbar', array( + 'name' => 'dashboard', + 'href' => 'dashboard', + 'text' => elgg_view_icon('home') . elgg_echo('dashboard'), + 'priority' => 450, + 'section' => 'alt', + )); + + elgg_register_widget_type( + 'group_activity', + elgg_echo('dashboard:widget:group:title'), + elgg_echo('dashboard:widget:group:desc'), + 'dashboard', + true + ); + + elgg_register_plugin_hook_handler('get_list', 'default_widgets', 'dashboard_default_widgets'); +} + +/** + * Dashboard page handler + * @return bool + */ +function dashboard_page_handler() { + // Ensure that only logged-in users can see this page + gatekeeper(); + + // Set context and title + elgg_set_context('dashboard'); + elgg_set_page_owner_guid(elgg_get_logged_in_user_guid()); + $title = elgg_echo('dashboard'); + + // wrap intro message in a div + $intro_message = elgg_view('dashboard/blurb'); + + $params = array( + 'content' => $intro_message, + 'num_columns' => 3, + 'show_access' => false, + ); + $widgets = elgg_view_layout('widgets', $params); + + $body = elgg_view_layout('one_column', array('content' => $widgets)); + + echo elgg_view_page($title, $body); + return true; +} + + +/** + * Register user dashboard with default widgets + * + * @param unknown_type $hook + * @param unknown_type $type + * @param unknown_type $return + * @param unknown_type $params + * @return array + */ +function dashboard_default_widgets($hook, $type, $return, $params) { + $return[] = array( + 'name' => elgg_echo('dashboard'), + 'widget_context' => 'dashboard', + 'widget_columns' => 3, + + 'event' => 'create', + 'entity_type' => 'user', + 'entity_subtype' => ELGG_ENTITIES_ANY_VALUE, + ); + + return $return; +}
\ No newline at end of file diff --git a/mod/dashboard/views/default/dashboard/blurb.php b/mod/dashboard/views/default/dashboard/blurb.php new file mode 100644 index 000000000..9293e513a --- /dev/null +++ b/mod/dashboard/views/default/dashboard/blurb.php @@ -0,0 +1,17 @@ +<?php +/** + * Elgg dashboard blurb + * + */ +?> + +<div class="elgg-col elgg-col-2of3"> +<?php + echo elgg_view('output/longtext', array( + 'id' => 'dashboard-info', + 'class' => 'elgg-inner pam mhs mtn', + 'value' => elgg_echo("dashboard:nowidgets"), + )); + +?> +</div>
\ No newline at end of file diff --git a/mod/dashboard/views/default/dashboard/css.php b/mod/dashboard/views/default/dashboard/css.php new file mode 100644 index 000000000..f49293293 --- /dev/null +++ b/mod/dashboard/views/default/dashboard/css.php @@ -0,0 +1,10 @@ +<?php +/** + * User dashboard CSS + */ +?> + +#dashboard-info { + border: 2px solid #dedede; + margin-bottom: 15px; +} diff --git a/mod/dashboard/views/default/widgets/group_activity/content.php b/mod/dashboard/views/default/widgets/group_activity/content.php new file mode 100644 index 000000000..60a9b352c --- /dev/null +++ b/mod/dashboard/views/default/widgets/group_activity/content.php @@ -0,0 +1,36 @@ +<?php +/** + * Group activity widget + */ + +$num = (int) $vars['entity']->num_display; +$guid = $vars['entity']->group_guid; + +$content = ''; + +if ($guid) { + $title = get_entity($guid)->name; + $content = "<h3>$title</h3>"; + + elgg_push_context('widgets'); + $db_prefix = elgg_get_config('dbprefix'); + $activity = elgg_list_river(array( + 'limit' => $num, + 'pagination' => false, + 'joins' => array("JOIN {$db_prefix}entities e1 ON e1.guid = rv.object_guid"), + 'wheres' => array("(e1.container_guid = $guid)"), + )); + if (!$activity) { + $activity = '<p>' . elgg_echo('dashboard:widget:group:noactivity') . '</p>'; + } + elgg_pop_context(); + + $content .= $activity; +} else { + // no group selected yet + if ($vars['entity']->canEdit()) { + $content = '<p>' . elgg_echo('dashboard:widget:group:noselect') . '</p>'; + } +} + +echo $content; diff --git a/mod/dashboard/views/default/widgets/group_activity/edit.php b/mod/dashboard/views/default/widgets/group_activity/edit.php new file mode 100644 index 000000000..4e10f6ad4 --- /dev/null +++ b/mod/dashboard/views/default/widgets/group_activity/edit.php @@ -0,0 +1,45 @@ +<?php +/** + * Group activity widget settings + */ + +// once autocomplete is working use that +$groups = elgg_get_logged_in_user_entity()->getGroups("", 0); +$mygroups = array(); +if (!$vars['entity']->group_guid) { + $mygroups[0] = ''; +} +foreach ($groups as $group) { + $mygroups[$group->guid] = $group->name; +} +$params = array( + 'name' => 'params[group_guid]', + 'value' => $vars['entity']->group_guid, + 'options_values' => $mygroups, +); +$group_dropdown = elgg_view('input/dropdown', $params); +?> +<div> + <?php echo elgg_echo('dashboard:widget:group:select'); ?>: + <?php echo $group_dropdown; ?> +</div> +<?php + +// set default value for number to display +if (!isset($vars['entity']->num_display)) { + $vars['entity']->num_display = 8; +} + +$params = array( + 'name' => 'params[num_display]', + 'value' => $vars['entity']->num_display, + 'options' => array(5, 8, 10, 12, 15, 20), +); +$num_dropdown = elgg_view('input/dropdown', $params); + +?> +<div> + <?php echo elgg_echo('widget:numbertodisplay'); ?>: + <?php echo $num_dropdown; ?> +</div> + |