From 4766f36a4d74924f21ff329c4318ce4e069ffa04 Mon Sep 17 00:00:00 2001 From: brettp Date: Wed, 3 Mar 2010 17:53:05 +0000 Subject: Pulled in the interface changes. git-svn-id: http://code.elgg.org/elgg/trunk@5257 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/defaultwidgets/actions/update.php | 61 +++++ mod/defaultwidgets/dashboard.php | 31 +++ mod/defaultwidgets/languages/en.php | 28 +++ mod/defaultwidgets/manifest.xml | 9 + mod/defaultwidgets/profile.php | 31 +++ mod/defaultwidgets/start.php | 256 +++++++++++++++++++ .../views/default/defaultwidgets/editor.php | 274 +++++++++++++++++++++ 7 files changed, 690 insertions(+) create mode 100644 mod/defaultwidgets/actions/update.php create mode 100644 mod/defaultwidgets/dashboard.php create mode 100644 mod/defaultwidgets/languages/en.php create mode 100644 mod/defaultwidgets/manifest.xml create mode 100644 mod/defaultwidgets/profile.php create mode 100644 mod/defaultwidgets/start.php create mode 100644 mod/defaultwidgets/views/default/defaultwidgets/editor.php (limited to 'mod/defaultwidgets') diff --git a/mod/defaultwidgets/actions/update.php b/mod/defaultwidgets/actions/update.php new file mode 100644 index 000000000..aaf03430d --- /dev/null +++ b/mod/defaultwidgets/actions/update.php @@ -0,0 +1,61 @@ + 'object', 'subtype' => 'moddefaultwidgets', 'limit' => 9999)); + + // create new object unless one already exists + if (! isset ( $entities [0] )) { + $entity = new ElggObject ( ); + $entity->subtype = 'moddefaultwidgets'; + $entity->owner_guid = $_SESSION ['user']->getGUID (); + } else { + $entity = $entities [0]; + } + + // store the default widgets for each context + $entity->$context = $widgets; + + // make sure this object is public. + $entity->access_id = 2; + + // save the object or report error + if ($entity->save ()) { + system_message ( elgg_echo ( 'defaultwidgets:update:success' ) ); + $entity->state = "active"; + forward ( 'pg/admin' ); + } else { + register_error ( elgg_echo ( 'defaultwidgets:update:failed' ) ); + forward ( 'pg/defaultwidgets/' . $context ); + } + +} else { + + // report incorrect parameters error + register_error ( elgg_echo ( 'defaultwidgets:update:noparams' ) ); + forward ( 'pg/defaultwidgets/' . $context ); + +} diff --git a/mod/defaultwidgets/dashboard.php b/mod/defaultwidgets/dashboard.php new file mode 100644 index 000000000..889bc8121 --- /dev/null +++ b/mod/defaultwidgets/dashboard.php @@ -0,0 +1,31 @@ + $token, 'ts' => $ts, 'context' => $context ) ); + +// Display main admin menu +page_draw ( 'Default dashboard widgets for new users', $content ); diff --git a/mod/defaultwidgets/languages/en.php b/mod/defaultwidgets/languages/en.php new file mode 100644 index 000000000..d6da12ba5 --- /dev/null +++ b/mod/defaultwidgets/languages/en.php @@ -0,0 +1,28 @@ + 'DefaultWidgets settings', + + /** + * Menu items + */ + 'defaultwidgets:menu:profile' => 'Default profile widgets', + 'defaultwidgets:menu:dashboard' => 'Default dashboard widgets', + + 'defaultwidgets:admin:error' => 'Error: You are not logged in as an administrator', + 'defaultwidgets:admin:notfound' => 'Error: Page not found', + 'defaultwidgets:admin:loginfailure' => 'Warning: You are not currently logged is as an administrator', + + 'defaultwidgets:update:success' => 'Your widget settings have been saved', + 'defaultwidgets:update:failed' => 'Error: settings have not been saved', + 'defaultwidgets:update:noparams' => 'Error: incorrect form parameters', + + 'defaultwidgets:profile:title' => 'Set default widgets for new user profile pages', + 'defaultwidgets:dashboard:title' => 'Set default widgets for new user dashboard pages', +); + +add_translation ( "en", $english ); diff --git a/mod/defaultwidgets/manifest.xml b/mod/defaultwidgets/manifest.xml new file mode 100644 index 000000000..8388e5803 --- /dev/null +++ b/mod/defaultwidgets/manifest.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/mod/defaultwidgets/profile.php b/mod/defaultwidgets/profile.php new file mode 100644 index 000000000..68bf7a492 --- /dev/null +++ b/mod/defaultwidgets/profile.php @@ -0,0 +1,31 @@ + $token, 'ts' => $ts, 'context' => $context ) ); + +// Display main admin menu +page_draw ( 'Default profile widgets for new users', $content ); diff --git a/mod/defaultwidgets/start.php b/mod/defaultwidgets/start.php new file mode 100644 index 000000000..e76e16e26 --- /dev/null +++ b/mod/defaultwidgets/start.php @@ -0,0 +1,256 @@ +guid; + + if (isadminloggedin()) { + // this is an admin-created user + // no permissions problems, so set proper access now + // use system default access (not the admin's default access!, because that could be a personal access level) + $widget_access = $CONFIG->default_access; + } else { + // this is a regular registration + // set widget access to public for now and reset it properly during the validate event + // to avoid Elgg permissions problems + $widget_access = ACCESS_PUBLIC; + } + + // check if it's set + if (! empty ( $guid )) { + + // get the user entity + if ($user = get_entity ( $guid )) { + + // can this user edit + if ($user->canEdit ()) { + + // each of the contexts to add widgets for + $contexts = array ('profile', 'dashboard' ); + + // get the entities for the module + $entities = elgg_get_entities (array('type' => 'object', 'subtype' => 'moddefaultwidgets', 'limit' => 9999)); + + // check if the entity exists + if (isset ( $entities [0] )) { + + // get the widgets for the context + $entity = $entities [0]; + + foreach ( $contexts as $context ) { + $current_widgets = $entity->$context; + list ( $left, $middle, $right ) = split ( '%%', $current_widgets ); + + // split columns into seperate widgets + $area1widgets = split ( '::', $left ); + $area2widgets = split ( '::', $middle ); + $area3widgets = split ( '::', $right ); + + // clear out variables if no widgets are available + if ($area1widgets [0] == "") + $area1widgets = false; + if ($area2widgets [0] == "") + $area2widgets = false; + if ($area3widgets [0] == "") + $area3widgets = false; + + // generate left column widgets for a new user + if ($area1widgets) { + foreach ( $area1widgets as $i => $widget ) { + add_widget ( $guid, $widget, $context, ($i + 1), 1, $widget_access ); + } + } + + // generate middle column widgets for a new user + if ($area2widgets) { + foreach ( $area2widgets as $i => $widget ) { + add_widget ( $guid, $widget, $context, ($i + 1), 2, $widget_access ); + } + } + + // generate right column widgets for a new user + if ($area3widgets) { + foreach ( $area3widgets as $i => $widget ) { + add_widget ( $guid, $widget, $context, ($i + 1), 3, $widget_access ); + } + } + } + } + } + } + } + + // turn off permissions override + $defaultwidget_access = false; +} + +function defaultwidgets_reset_access($event, $object_type, $object) { + + global $defaultwidget_access; + + // turn on permissions override + $defaultwidget_access = true; + + // the widgets are disabled, so turn on the ability to see disabled entities + + $access_status = access_get_show_hidden_status(); + access_show_hidden_entities(true); + + $widgets = elgg_get_entities(array('type' => 'object', 'subtype' => 'widget', 'owner_guid' => $object->getGUID())); + + if ($widgets) { + foreach($widgets as $widget) { + $widget->access_id = get_default_access(); + $widget->save(); + } + } + + access_show_hidden_entities($access_status); + + // turn off permissions override + $defaultwidget_access = false; + + return true; +} + +/** + * Default widgets page handler; allows the use of fancy URLs + * + * @param array $page From the page_handler function + * @return true|false Depending on success + */ +function defaultwidgets_page_handler($page) { + global $CONFIG; + + if (isset ( $page [0] )) { + + switch ($page [0]) { + case "profile" : + include (dirname ( __FILE__ ) . "/profile.php"); + break; + case "dashboard" : + include (dirname ( __FILE__ ) . "/dashboard.php"); + break; + } + } else { + register_error ( elgg_echo ( "defaultwidgets:admin:notfound" ) ); + forward ( $CONFIG->wwwroot ); + } + return true; +} + +/** + * Page setup. Adds admin controls to the admin panel. + * + */ +function defaultwidgets_pagesetup() { + if (get_context () == 'admin' && isadminloggedin ()) { + global $CONFIG; + add_submenu_item ( elgg_echo ( 'defaultwidgets:menu:profile' ), $CONFIG->wwwroot . 'pg/defaultwidgets/profile' ); + add_submenu_item ( elgg_echo ( 'defaultwidgets:menu:dashboard' ), $CONFIG->wwwroot . 'pg/defaultwidgets/dashboard' ); + } +} + +// Make sure the status initialisation function is called on initialisation +register_elgg_event_handler ( 'init', 'system', 'defaultwidgets_init' ); +register_elgg_event_handler ( 'pagesetup', 'system', 'defaultwidgets_pagesetup' ); + +register_plugin_hook ( 'permissions_check', 'user', 'defaultwidgets_can_edit' ); +register_plugin_hook ( 'permissions_check', 'object', 'defaultwidgets_can_edit' ); +register_plugin_hook ( 'container_permissions_check', 'user', 'defaultwidgets_can_edit_container' ); + +register_action ( "defaultwidgets/update", false, $CONFIG->pluginspath . "defaultwidgets/actions/update.php" ); diff --git a/mod/defaultwidgets/views/default/defaultwidgets/editor.php b/mod/defaultwidgets/views/default/defaultwidgets/editor.php new file mode 100644 index 000000000..2241dd264 --- /dev/null +++ b/mod/defaultwidgets/views/default/defaultwidgets/editor.php @@ -0,0 +1,274 @@ + 'object', 'subtype' => 'moddefaultwidgets', 'limit' => 9999)); + + // check if the entity exists + if(isset($entities[0])) { + + // get the widgets for the context + $entity = $entities[0]; + $current_widgets = $entity->$context; + list($left, $middle, $right) = split('%%',$current_widgets); + + // split columns into seperate widgets + $area1widgets = split('::',$left); + $area2widgets = split('::',$middle); + $area3widgets = split('::',$right); + + // clear out variables if no widgets are available + if ($area1widgets[0] == "") $area1widgets = false; + if ($area2widgets[0] == "") $area2widgets = false; + if ($area3widgets[0] == "") $area3widgets = false; + } + +?> + + +
+ +
+

+ +
+ + +
+

+ elgg_echo('widgets:add:description'))); ?> +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + +

+
+

+
+ + +
+

+
> + 0) { + foreach($area3widgets as $widget) { + if (!empty($rightcolumn_widgets)) { + $rightcolumn_widgets .= "::"; + } + $rightcolumn_widgets .= "{$widget}::0"; + ?> + + + + + +
+

+ name; ?> + + + + + + +

+
+ + + +
+
+

+
+ + 0) { + foreach($area1widgets as $widget) { + if (!empty($leftcolumn_widgets)) { + $leftcolumn_widgets .= "::"; + } + $leftcolumn_widgets .= "{$widget}::0"; +?> + + + + + +
+

+ name; ?> + + + + + + +

+
+ + +
+
+ +

+
+ + 0) { + foreach($area2widgets as $widget) { + if (!empty($middlecolumn_widgets)) { + $middlecolumn_widgets .= "::"; + } + $middlecolumn_widgets .= "{$widget}::0"; +?> + + + + + +
+

+ name; ?> + + + + + + +

+
+ + + +
+
+ +
+ +
+ + + + '__elgg_token', 'value' => $vars['token'])); + echo elgg_view('input/hidden',array('internalname' => '__elgg_ts', 'value' => $vars['ts'])); +?> + + + + +
+
-- cgit v1.2.3