Create widget – Socialengine

I am currently trying to learn the open source social engine  and would like to share  my finding with youall . Here I will explain how we can develop a widget that will display a text on a page .

1) Create a folder with a meaningful name in “application/widgets”. here I use “phpcodez”  .
Type the following commands from socialengine installation directory

cd  application

mkdir   phpcodez

2)  Then create 3 files “Controller.php” ,”index.tpl” and ”manifest.php” in the new folder “phpcodez”

gedit Controller.php
gedit index.tpl
gedit manifest.php

As you know the socialengine follows MVC structure . So controller lies in “Controller.php”
and view lies in “index.tpl” . The file “manifest.php“ ,will tell the system that a new widget has been added .

3) Paste the below given code in “Controller.php”

<?php
class Widget_phpcodezController extends Engine_Content_Widget_Abstract {
public function indexAction()  {
$this->view->title=’PHPCodez’;
}
}

?>

The “indexAction()” function will be invoked when the widget called .

So we must prepare the data to be passed to the view . Here variable are  declared and initialized as follows

$this->view->VARIABLE_NAME .

4) Paste the below given code in “index.tpl”

<?php
echo $this->title;
?>

We can print the values of the variable as shown above .

5) Paste the below given code in “manifest.php”

<?php

return array(
‘package’ => array(
‘type’ => ‘widget’,
‘name’ => ‘phpcodez’,
‘version’ => ‘4.0.0’,
‘revision’ => ‘$Revision: 8822 $’,
‘path’ => ‘application/widgets/phpcodez’,
‘repository’ => ‘socialengine.net’,
‘title’ => ‘PHPCodez’,
‘description’ => ‘Displays a “powered by PHPCodez” link.’,
‘author’ => ‘Webligo Developments’,
‘directories’ => array(
‘application/widgets/phpcodez’,
),
),

// Backwards compatibility
‘type’ => ‘widget’,
‘name’ => ‘phpcodez’,
‘version’ => ‘4.0.0’,
‘revision’ => ‘$PHPCodez: 8822 $’,
‘title’ => ‘phpcodez’,
‘description’ => ‘Displays a “powered by PHPCodez” link.’,
‘author’ => ‘Webligo Developments’,
‘category’ => ‘Widgets’,
)

?>

It tells the system that a new widget has been added .

NOTE : If any database operation is required , create a model and let the controller interact with it .