Skip to content
Snippets Groups Projects
Commit dcbdf2f8 authored by Seth Meranda's avatar Seth Meranda
Browse files

Testing a new plugin to put widgets on a profile page by default

parent 3104d3b9
No related branches found
No related tags found
No related merge requests found
<?php
/**
* Elgg default_widgets plugin.
*
* @package DefaultWidgets
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU
* @author Milan Magudia
* @copyright HedgeHogs.net
* @link http://www.hedgehogs.net
*
**/
// validate user is an admin
admin_gatekeeper ();
// validate action
action_gatekeeper ();
// get parameters
$context = get_input ( 'context' );
$leftbar = str_replace('::0', '', get_input ( 'debugField1' ));
$middlebar = str_replace('::0', '', get_input ( 'debugField2' ));
$rightbar = str_replace('::0', '', get_input ( 'debugField3' ));
// make sure enough parameters are set
if ($context && isset($leftbar) && isset($middlebar) && isset($rightbar)) {
// join widgets into a single string
$widgets = $leftbar.'%%'.$middlebar.'%%'.$rightbar;
// get the elgg object that contains our settings
$entities = get_entities ( "object", "moddefaultwidgets", 0, "", 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 );
}
?>
\ No newline at end of file
<?php
/**
* Elgg default_widgets plugin.
*
* @package DefaultWidgets
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU
* @author Milan Magudia
* @copyright HedgeHogs.net
* @link http://www.hedgehogs.net
*
**/
require_once (dirname ( dirname ( dirname ( __FILE__ ) ) ) . "/engine/start.php");
// make sure only admins can view this
admin_gatekeeper ();
set_context ( 'admin' );
// Set admin user for user block
set_page_owner ( $_SESSION ['guid'] );
// vars required for action gatekeeper
$ts = time ();
$token = generate_action_token ( $ts );
$context = 'dashboard';
// create the view
$content = elgg_view ( "defaultwidgets/editor", array ('token' => $token, 'ts' => $ts, 'context' => $context) );
// Display main admin menu
page_draw ( 'Default dashboard widgets for new users', $content );
?>
\ No newline at end of file
<?php
/**
* Elgg default widget layout
*
* @package Elgg
* @subpackage Core
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
* @author Curverider Ltd
* @copyright Curverider Ltd 2008
* @link http://elgg.org/
*
* Edited version of the widget editor to be used to set default widgets
* @author Milan Magudia
* @copyright HedgeHogs.net
* @link http://www.hedgehogs.net
*
**/
// set some defaults
$owner = page_owner_entity();
$context = $vars['context'];
$area1widgets = false;
$area2widgets = false;
$area3widgets = false;
// get available widget types
set_context ( $context );
$widgettypes = get_widget_types();
set_context ( 'admin' );
// get the entities for the module
$entities = get_entities("object", "moddefaultwidgets", 0, "", 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;
}
?>
<script type="text/javascript">
$(document).ready(function () {
$('div#customise_editpanel').slideToggle("fast");
});
</script>
<div id="customise_editpanel" style="visibility:visible;">
<div id="customise_editpanel_rhs">
<h2><?php echo elgg_echo("widgets:gallery"); ?></h2>
<div id="widget_picker_gallery">
<?php
foreach($widgettypes as $handler => $widget) {
?>
<table class="draggable_widget" cellspacing="0"><tr><td>
<h3>
<?php echo $widget->name; ?>
<input type="hidden" name="multiple" value="<?php if ((isset($widget->handler)) && (isset($widgettypes[$widget->handler]->multiple))) echo $widgettypes[$widget->handler]->multiple; ?>" />
<input type="hidden" name="side" value="<?php if ((isset($widget->handler)) && (isset($widgettypes[$widget->handler])) && (is_array($widgettypes[$widget->handler]->positions))) echo in_array('side',$widgettypes[$widget->handler]->positions); ?>" />
<input type="hidden" name="main" value="<?php if ((isset($widget->handler)) && (isset($widgettypes[$widget->handler])) && (is_array($widgettypes[$widget->handler]->positions))) echo in_array('main',$widgettypes[$widget->handler]->positions); ?>" />
<input type="hidden" name="handler" value="<?php echo htmlentities($handler); ?>" />
<input type="hidden" name="description" value="<?php echo htmlentities($widget->description, null, 'UTF-8'); ?>" />
<input type="hidden" name="guid" value="0" />
</h3>
</td>
<td width="17px" align="right"></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="14px" height="14px" class="more_info" /></a></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="15px" height="15px" class="drag_handle" /></a></td>
</tr></table>
<?php
}
?>
<br /><!-- bit of space at the bottom of the widget gallery -->
</div><!-- /#customise_editpanel_rhs -->
</div><!-- /#widget_picker_gallery -->
<div class="customise_editpanel_instructions">
<h2><?php echo elgg_echo('defaultwidgets:'.$context.':title'); ?></h2>
<?php echo autop(elgg_echo('widgets:add:description')); ?>
</div>
<div id="customise_page_view">
<table cellspacing="0">
<tr>
<td colspan="2" align="left" valign="top">
<?php
if(get_context() == "profile"){
?>
<h2 class="profile_box"><?php echo elgg_echo("widgets:profilebox"); ?></h2>
<div id="profile_box_widgets">
<p><small><?php echo elgg_echo('widgets:position:fixed'); ?></small></p>
</div>
<?php
}
?>
</td>
<td rowspan="2" align="left" valign="top">
<h2><?php echo elgg_echo("widgets:rightcolumn"); ?></h2>
<div id="rightcolumn_widgets" <?php if(get_context() == "profile")echo "class=\"long\""; ?>>
<?php
$rightcolumn_widgets = "";
if (is_array($area3widgets) && sizeof($area3widgets) > 0) {
foreach($area3widgets as $widget) {
if (!empty($rightcolumn_widgets)) {
$rightcolumn_widgets .= "::";
}
$rightcolumn_widgets .= "{$widget}::0";
?>
<table class="draggable_widget" cellspacing="0"><tr><td width="149px">
<h3>
<?php echo $widgettypes[$widget]->name; ?>
<input type="hidden" name="handler" value="<?php
echo $widget;
?>" />
<input type="hidden" name="multiple" value="<?php echo $widgettypes[$widget]->multiple; ?>" />
<input type="hidden" name="side" value="<?php echo in_array('side',$widgettypes[$widget]->positions); ?>" />
<input type="hidden" name="main" value="<?php echo in_array('main',$widgettypes[$widget]->positions); ?>" />
<input type="hidden" name="description" value="<?php echo htmlentities($widgettypes[$widget]->description); ?>" />
<input type="hidden" name="guid" value="0" />
</h3>
</td>
<td width="17px" align="right"></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="14px" height="14px" class="more_info" /></a></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="15px" height="15px" class="drag_handle" /></a></td>
</tr></table>
<?php
}
}
?>
</div>
</td><!-- /rightcolumn td -->
</tr>
<tr>
<td>
<h2><?php echo elgg_echo("widgets:leftcolumn"); ?></h2>
<div id="leftcolumn_widgets">
<?php
$leftcolumn_widgets = "";
if (is_array($area1widgets) && sizeof($area1widgets) > 0) {
foreach($area1widgets as $widget) {
if (!empty($leftcolumn_widgets)) {
$leftcolumn_widgets .= "::";
}
$leftcolumn_widgets .= "{$widget}::0";
?>
<table class="draggable_widget" cellspacing="0"><tr><td width="149px">
<h3>
<?php echo $widgettypes[$widget]->name; ?>
<input type="hidden" name="handler" value="<?php
echo $widget;
?>" />
<input type="hidden" name="multiple" value="<?php echo $widgettypes[$widget]->multiple; ?>" />
<input type="hidden" name="side" value="<?php echo in_array('side',$widgettypes[$widget]->positions); ?>" />
<input type="hidden" name="main" value="<?php echo in_array('main',$widgettypes[$widget]->positions); ?>" />
<input type="hidden" name="description" value="<?php echo htmlentities($widgettypes[$widget]->description); ?>" />
<input type="hidden" name="guid" value="0" />
</h3>
</td>
<td width="17px" align="right"></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="14px" height="14px" class="more_info" /></a></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="15px" height="15px" class="drag_handle" /></a></td>
</tr></table>
<?php
}
}
?>
</div>
</td>
<td>
<h2><?php echo elgg_echo("widgets:middlecolumn"); ?></h2>
<div id="middlecolumn_widgets">
<?php
$middlecolumn_widgets = "";
if (is_array($area2widgets) && sizeof($area2widgets) > 0) {
foreach($area2widgets as $widget) {
if (!empty($middlecolumn_widgets)) {
$middlecolumn_widgets .= "::";
}
$middlecolumn_widgets .= "{$widget}::0";
?>
<table class="draggable_widget" cellspacing="0"><tr><td width="149px">
<h3>
<?php echo $widgettypes[$widget]->name; ?>
<input type="hidden" name="handler" value="<?php
echo $widget;
?>" />
<input type="hidden" name="multiple" value="<?php echo $widgettypes[$widget]->multiple; ?>" />
<input type="hidden" name="side" value="<?php echo in_array('side',$widgettypes[$widget]->positions); ?>" />
<input type="hidden" name="main" value="<?php echo in_array('main',$widgettypes[$widget]->positions); ?>" />
<input type="hidden" name="description" value="<?php echo htmlentities($widgettypes[$widget]->description); ?>" />
<input type="hidden" name="guid" value="0" />
</h3>
</td>
<td width="17px" align="right"></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="14px" height="14px" class="more_info" /></a></td>
<td width="17px" align="right"><a href="#"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" width="15px" height="15px" class="drag_handle" /></a></td>
</tr></table>
<?php
}
}
?>
</div>
</td>
</tr>
</table>
</div><!-- /#customise_page_view -->
<form action="<?php echo $vars['url']; ?>action/defaultwidgets/update" method="post">
<textarea type="textarea" value="Left widgets" style="display:none" name="debugField1" id="debugField1" /><?php echo $leftcolumn_widgets; ?></textarea>
<textarea type="textarea" value="Middle widgets" style="display:none" name="debugField2" id="debugField2" /><?php echo $middlecolumn_widgets; ?></textarea>
<textarea type="textarea" value="Right widgets" style="display:none" name="debugField3" id="debugField3" /><?php echo $rightcolumn_widgets; ?></textarea>
<?php
echo elgg_view('input/hidden',array('internalname' => '__elgg_token', 'value' => $vars['token']));
echo elgg_view('input/hidden',array('internalname' => '__elgg_ts', 'value' => $vars['ts']));
?>
<input type="hidden" name="context" value="<?php echo $context; ?>" />
<input type="hidden" name="owner" value="<?php echo page_owner(); ?>" />
<input type="submit" value="<?php echo elgg_echo('save'); ?>" class="submit_button" />
</form>
</div><!-- /customise_editpanel -->
<?php
$english = array (
'item:object:moddefaultwidgets' => '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 );
?>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<plugin_manifest>
<field key="author" value="Milan Magudia" />
<field key="version" value="2.02" />
<field key="description" value="This plugin enables an administrator to define a default set of widgets for new users" />
<field key="website" value="http://www.hedgehogs.net" />
<field key="copyright" value="HedgeHogs" />
</plugin_manifest>
<?php
/**
* Elgg default_widgets plugin.
*
* @package DefaultWidgets
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU
* @author Milan Magudia
* @copyright HedgeHogs.net
* @link http://www.hedgehogs.net
*
**/
require_once (dirname ( dirname ( dirname ( __FILE__ ) ) ) . "/engine/start.php");
// make sure only admins can view this
admin_gatekeeper ();
set_context ( 'admin' );
// Set admin user for user block
set_page_owner ( $_SESSION ['guid'] );
// vars required for action gatekeeper
$ts = time ();
$token = generate_action_token ( $ts );
$context = 'profile';
// create the view
$content = elgg_view ( "defaultwidgets/editor", array ('token' => $token, 'ts' => $ts, 'context' => $context) );
// Display main admin menu
page_draw ( 'Default profile widgets for new users', $content );
?>
\ No newline at end of file
<?php
/**
* Elgg default_widgets plugin.
*
* @package DefaultWidgets
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU
* @author Milan Magudia
* @copyright HedgeHogs.net
* @link http://www.hedgehogs.net
*
* Code based on the work of:
* @author Jade Dominguez, Chad Sowald
* @copyright tastyseed, 2008
* @copyright Chad Sowald, 2008
* @link http://www.tastyseed.com
* @link http://www.chadsowald.com
* @author Diego Ramirez
* @links http://www.somosmas.org
*
*/
global $CONFIG;
function defaultwidgets_init() {
// Load system configuration
register_page_handler ( 'defaultwidgets', 'defaultwidgets_page_handler' );
// register create user event hook
register_elgg_event_handler ( 'create', 'user', 'defaultwidgets_newusers' );
}
function defaultwidgets_newusers($event, $object_type, $object) {
$guid = $object->guid;
// if an admin creates a user we need to store their credentials so they so they can be logged back
if (isadminloggedin ()) {
$user_orig = $_SESSION ['user'];
} else {
$user_orig = false;
}
/*
the add_widgets function only executes if the user has permissions to add widgets to his profile/dashboard.
Since there is no user yet logged in, we need to artificially login the new user
*/
$log_user_in = login ( $object );
if ($log_user_in) {
if (! empty ( $guid )) {
if ($user = get_entity ( $guid )) {
if ($user->canEdit ()) {
$contexts = array ('profile', 'dashboard' );
// get the entities for the module
$entities = get_entities ( "object", "moddefaultwidgets", 0, "", 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
foreach ( $area1widgets as $i => $widget ) {
//if (is_plugin_enabled($widget)) {
add_widget ( $guid, $widget, $context, ($i + 1), 1 );
//}
}
// generate middle column widgets for a new user
foreach ( $area2widgets as $i => $widget ) {
//if (is_plugin_enabled($widget)) {
add_widget ( $guid, $widget, $context, ($i + 1), 2 );
//}
}
// generate right column widgets for a new user
foreach ( $area3widgets as $i => $widget ) {
//if (is_plugin_enabled($widget)) {
add_widget ( $guid, $widget, $context, ($i + 1), 3 );
//}
}
}
}
}
}
}
}
// if an admin created this user, log the new user out, log the admin back in
if (! empty ( $user_orig )) {
if(! login ( $user_orig )) {
// if there something goes wrong with logging back in then warn the administrator
register_error(elgg_echo('defaultwidgets:admin:loginfailure'));
}
}
}
// simple page handler
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;
}
// function to add a submenu 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_action ( "defaultwidgets/update", false, $CONFIG->pluginspath . "defaultwidgets/actions/update.php" );
?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment