aboutsummaryrefslogtreecommitdiff
path: root/mod/dashboard
diff options
context:
space:
mode:
Diffstat (limited to 'mod/dashboard')
-rw-r--r--mod/dashboard/languages/en.php14
-rw-r--r--mod/dashboard/manifest.xml15
-rw-r--r--mod/dashboard/start.php83
-rw-r--r--mod/dashboard/views/default/dashboard/blurb.php17
-rw-r--r--mod/dashboard/views/default/dashboard/css.php10
-rw-r--r--mod/dashboard/views/default/widgets/group_activity/content.php36
-rw-r--r--mod/dashboard/views/default/widgets/group_activity/edit.php45
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>
+