Extend sdk

24
Feature SDK / API Presentation By: Kumar Pratik [email protected]

description

This presentation contains description about how to use Developer SDK/API to develop features for langoor.net website builder.

Transcript of Extend sdk

Page 1: Extend sdk

Feature SDK / API

Presentation By:Kumar [email protected]

Page 2: Extend sdk

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

Page 3: Extend sdk

What should you know before coding?

• HTML & CSS• JavaScript (Jquery framework)• PHP 5.3• MySQL • ZendDB

Page 4: Extend sdk

Youtube widget

Page 5: Extend sdk

Creating your first feature (hello world)

Page 6: Extend sdk

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.

Page 7: Extend sdk

Feature Database Access database using phpMyAdmin

Page 8: Extend sdk

Feature Database Access database using phpMyAdmin

Page 9: Extend sdk
Page 10: Extend sdk
Page 11: Extend sdk
Page 12: Extend sdk

// 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 ----------------// }

Page 13: Extend sdk

// 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);} // }

Page 14: Extend sdk
Page 15: Extend sdk
Page 16: Extend sdk
Page 17: Extend sdk
Page 18: Extend sdk

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“);

Page 19: Extend sdk

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“

);

Page 20: Extend sdk

SDK / API - Responsefor opening widget panel (install/getProperty function)

$response = array();$response['done'] = 1;$response['step'] = ++$step;$response['widget_instance_id'] = $this->db->lastInsertId();

Page 21: Extend sdk

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“);

Page 22: Extend sdk

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;

}

Page 23: Extend sdk

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'];

Page 24: Extend sdk

Thank you!

Kumar [email protected]