Nov 18, 2014
Feature SDK / API
Presentation By:Kumar [email protected]
Overview: Feature Development
• What a developer should know before coding?• How widgets work on editor?• How to create your own feature?
– Creating your first feature ( Hello World! )– Adding components (widget) to your feature
• SDK / API – Quick Overview– Response from feature/widgets to editor & website
• Form • Html
– Code framework functions• Install• setProperty• getProperty• hasProperty• Zend DB API
What should you know before coding?
• HTML & CSS• JavaScript (Jquery framework)• PHP 5.3• MySQL • ZendDB
Youtube widget
Creating your first feature (hello world)
Feature Database
• Every feature has its own database
• When a feature is installed on a domain, it creates a
new database (copying from the feature master
database)
• Developer can access the database using phpMyAdmin
• A feature can have multiple widgets in it, and all the
widgets will use the same database for accessing its
data.
Feature Database Access database using phpMyAdmin
Feature Database Access database using phpMyAdmin
// feature.php - Feature Main Installer Class// Class pratikHelloWorld extends baseFeature {
private $key = ‘d21a868268f8a43b268ee4937a1d8161';var $db;var $instance_id;
public function __construct($db, $instance_id = -1){$this->db = $db;$this->instance_id = $instance_id;
}public function setInstanceId($instance_id){
$this->instance_id = $instance_id;}public function install($data = array()){ if(LFeature::setupComplete($this->key,$this->instance_id)){
$response['done'] = 1;$response['action'] = "openWidgetPopup";$response['new_widgets'] = LWidget::getWidgetIdsByFeatureKey($this->key);
}else{ throw new Exception('Unable to Complete setup'); }return $response;}
//---------------- Developer Code ----------------// }
// pratikHelloWorldView/widget.php - Feature Main Installer Class// Class pratikHelloWorldView extends baseWidget {//---------------- Developer Code ----------------var $id;public function __construct($id, $params=array(), $db){
$this->db = $db;$this->id = $id;
}public function getId() { return $this->id; }public function hasProperty() { return 0; }public function delete() { }private function get() { }public function getData() { }
public static function install($params = array()){$response['done'] = 1;$response['widget_instance_id'] = -1;return $response;
}
public function getHtml($extra_class=array(),$extra_in_line_style=''){ $html = '<div style="width:100%; padding-bottom:10px;">'; $html .= "Hello world!"; $html .= '</div>'; return $html;}
public function getEditorHtml($extra_class=array(),$extra_in_line_style=''){ return $this->getHtml($extra_class,$extra_in_line_style);} // }
SDK / API - Response formatcreating a form response (install/getProperty function)
$response = array();$response['done'] = 0;$response['action'] = "openDialog";$response['dialogContent'] = array( "title"=>'User Comment Widget', "contentType"=>'form', "formaction"=>'install',"content" => array( "fields" => array( array(
"label" => 'Name', "name" => 'name', "value" => '', "inputType" => 'input', "class" => 'required' // jQuery Validators ) )
), "buttonLabel"=>"Install", "type" => "centered“);
SDK / API - Responsecreating a html response (install/getProperty function)
$response = array();$response['done'] = 0;$response['action'] = "openDialog";$response['dialogContent'] = array(
"title"=>'User Comment Widget',"contentType"=>‘html',
"content" => “<h2>html content</h2><br /> This is a test content”,"buttonLabel"=>"Install", "type" => "centered“
);
SDK / API - Responsefor opening widget panel (install/getProperty function)
$response = array();$response['done'] = 1;$response['step'] = ++$step;$response['widget_instance_id'] = $this->db->lastInsertId();
SDK / API - Responsecreating a html response with form (install/getProperty
function)$html = “<h2>html content</h2><br /> This is a test content <form action=“addcomment”><table>
<tr> <td>Name</td><td><input type = “text” name=“name”></td>
</tr><tr><td>Age</td><td><input type = “text” name=“age” class=“required
number”></td></tr>
</table></form>“;
$response = array();$response['done'] = 0;$response['action'] = "openDialog";$response['dialogContent'] = array(
"title"=>'User Comment Widget',"contentType"=>‘html',
"content“ => $html,"buttonLabel"=>“Add Entry",
"type" => "centered“);
Creating a form handler for widget
// widget.php
Public function addcomment($params){$params = $params[0];$name = $params['name'];$age= $params[‘age'];
$sql = "insert into `l_w_pratikHelloWorld_entry` (`name`, `age`) values (?,?)";
$res = $this->db->query($sql,array($name,$age));return true;
}
Zend DB Sample Query
$stmt = $db->query( 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?', array('goofy', 'FIXED') );
$stmt = $db->query('SELECT * FROM bugs'); while ($row = $stmt->fetch()) { echo $row['bug_description'];}
$stmt = $db->query('SELECT * FROM bugs'); $rows = $stmt->fetchAll(); echo $rows[0]['bug_description'];
Thank you!
Kumar [email protected]