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.xml9
-rw-r--r--mod/dashboard/start.php41
-rw-r--r--mod/dashboard/views/default/dashboard/blurb.php2
-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, 151 insertions, 6 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
index b5e9cff2e..cbbc1044c 100644
--- a/mod/dashboard/manifest.xml
+++ b/mod/dashboard/manifest.xml
@@ -7,10 +7,9 @@
<description>A widget-based dashboard for your users</description>
<website>http://www.elgg.org/</website>
<copyright>See COPYRIGHT.txt</copyright>
- <license>GNU Public License version 2</license>
+ <license>GNU General Public License version 2</license>
<requires>
- <type>elgg_version</type>
- <version>2010030101</version>
+ <type>elgg_release</type>
+ <version>1.8</version>
</requires>
- <admin_interface>advanced</admin_interface>
-</plugin_manifest> \ No newline at end of file
+</plugin_manifest>
diff --git a/mod/dashboard/start.php b/mod/dashboard/start.php
index 4fa048b3d..65007d1a8 100644
--- a/mod/dashboard/start.php
+++ b/mod/dashboard/start.php
@@ -8,6 +8,8 @@ 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',
@@ -15,8 +17,22 @@ function dashboard_init() {
'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();
@@ -39,4 +55,29 @@ function dashboard_page_handler() {
$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
index 202be1dc5..9293e513a 100644
--- a/mod/dashboard/views/default/dashboard/blurb.php
+++ b/mod/dashboard/views/default/dashboard/blurb.php
@@ -9,7 +9,7 @@
<?php
echo elgg_view('output/longtext', array(
'id' => 'dashboard-info',
- 'class' => 'elgg-inner elgg-border-plain pam mhs mbl mtn',
+ 'class' => 'elgg-inner pam mhs mtn',
'value' => elgg_echo("dashboard:nowidgets"),
));
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>
+