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/start.php | 256 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 mod/defaultwidgets/start.php (limited to 'mod/defaultwidgets/start.php') 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" ); -- cgit v1.2.3