init
This commit is contained in:
101
service/example/Rest_Proxy.php
Normal file
101
service/example/Rest_Proxy.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* SugarCRM is a customer relationship management program developed by
|
||||
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License version 3 as published by the
|
||||
* Free Software Foundation with the addition of the following permission added
|
||||
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
||||
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
|
||||
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along with
|
||||
* this program; if not, see http://www.gnu.org/licenses or write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA.
|
||||
*
|
||||
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
|
||||
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "Powered by
|
||||
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
|
||||
* technical reasons, the Appropriate Legal Notices must display the words
|
||||
* "Powered by SugarCRM".
|
||||
********************************************************************************/
|
||||
|
||||
ob_start();
|
||||
$fp = fopen('proxy.log', 'a');
|
||||
define('PROXY_SERVER', 'http://localhost/service/v2/rest.php');
|
||||
$headers = (function_exists('getallheaders'))?getallheaders(): array();
|
||||
$_headers = array();
|
||||
foreach($headers as $k=>$v){
|
||||
$_headers[strtolower($k)] = $v;
|
||||
}
|
||||
$url = parse_url(PROXY_SERVER);
|
||||
if(!empty($_headers['referer']))$curl_headers['referer'] = 'Referer: ' . $_headers['referer'];
|
||||
if(!empty($_headers['user-agent']))$curl_headers['user-agent'] = 'User-Agent: ' . $_headers['user-agent'];
|
||||
if(!empty($_headers['accept']))$curl_headers['accept'] = 'Accept: ' . $_headers['accept'];
|
||||
if(!empty($_headers['accept-language']))$curl_headers['accept-Language'] = 'Accept-Language: ' . $_headers['accept-language'];
|
||||
if(!empty($_headers['accept-encoding']))$curl_headers['accept-encoding:'] = 'Accept-Encoding: ' .$_headers['accept-encoding'];
|
||||
if(!empty($_headers['accept-charset']))$curl_headers['accept-charset:'] = 'Accept-Charset: ' .$_headers['accept-charset'];
|
||||
|
||||
// create a new cURL resource
|
||||
$ch = curl_init();
|
||||
// set URL and other appropriate options
|
||||
curl_setopt($ch, CURLOPT_URL, PROXY_SERVER);
|
||||
curl_setopt ($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_headers);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 1);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
|
||||
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
|
||||
$post_data = '';
|
||||
if(!empty($_POST)){
|
||||
foreach($_POST as $k=>$v){
|
||||
if(get_magic_quotes_gpc())$v = stripslashes($v);
|
||||
if(!empty($post_data))$post_data .= '&';
|
||||
$post_data .= "$k=" . $v;
|
||||
}
|
||||
}
|
||||
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_data);
|
||||
// grab URL and pass it to the browser
|
||||
fwrite($fp, 'client headers:' . var_export($headers, true) . "\n");
|
||||
fwrite($fp, 'starting curl request' . "\n");
|
||||
fwrite($fp, $post_data . "\n");
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
fwrite($fp, 'finished curl request' . "\n");
|
||||
fwrite($fp, 'response:' . var_export($result, true) . "\n");
|
||||
//we only handle 1 response no redirects
|
||||
$result = explode("\r\n\r\n", $result, 2);
|
||||
//we neeed to split up the ehaders
|
||||
$result_headers = explode("\r\n", $result[0]);
|
||||
//now echo out the same headers the server passed to us
|
||||
fwrite($fp, "setting headers\n");
|
||||
foreach($result_headers as &$header){
|
||||
if(substr_count($header, 'Set-Cookie:') ==0)
|
||||
header($header);
|
||||
}
|
||||
header('Content-Length: ' . strlen($result[1]));
|
||||
header('Connection: close');
|
||||
// now echo out the body
|
||||
fwrite($fp, "sending body\n");
|
||||
echo $result[1];
|
||||
ob_end_flush();
|
||||
fwrite($fp, "done\n");
|
||||
die();
|
||||
// close cURL resource, and free up system resources
|
||||
|
||||
?>
|
||||
337
service/example/example.html
Normal file
337
service/example/example.html
Normal file
@@ -0,0 +1,337 @@
|
||||
<!--
|
||||
/*********************************************************************************
|
||||
* SugarCRM is a customer relationship management program developed by
|
||||
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License version 3 as published by the
|
||||
* Free Software Foundation with the addition of the following permission added
|
||||
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
||||
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
|
||||
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along with
|
||||
* this program; if not, see http://www.gnu.org/licenses or write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA.
|
||||
*
|
||||
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
|
||||
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "Powered by
|
||||
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
|
||||
* technical reasons, the Appropriate Legal Notices must display the words
|
||||
* "Powered by SugarCRM".
|
||||
********************************************************************************/
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<title>Sugar Rest Example</title>
|
||||
<!-- Dependency -->
|
||||
|
||||
<!--CSS file (default YUI Sam Skin) -->
|
||||
<link type="text/css" rel="stylesheet" href="http://yui.yahooapis.com/2.6.0/build/datatable/assets/skins/sam/datatable.css">
|
||||
|
||||
<!-- Dependencies -->
|
||||
|
||||
<script src="http://yui.yahooapis.com/2.6.0/build/yahoo/yahoo-min.js"></script>
|
||||
|
||||
<!-- Used for Custom Events and event listener bindings -->
|
||||
<script src="http://yui.yahooapis.com/2.6.0/build/event/event-min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/element/element-beta-min.js"></script>
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/datasource/datasource-min.js"></script>
|
||||
|
||||
<!-- OPTIONAL: JSON Utility (for DataSource) -->
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/json/json-min.js"></script>
|
||||
|
||||
<!-- OPTIONAL: Connection Manager (enables XHR for DataSource) -->
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/connection/connection-min.js"></script>
|
||||
|
||||
<!-- OPTIONAL: Get Utility (enables dynamic script nodes for DataSource) -->
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/get/get-min.js"></script>
|
||||
|
||||
<!-- OPTIONAL: Drag Drop (enables resizeable or reorderable columns) -->
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/dragdrop/dragdrop-min.js"></script>
|
||||
|
||||
<!-- OPTIONAL: Calendar (enables calendar editors) -->
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/calendar/calendar-min.js"></script>
|
||||
|
||||
<!-- Source files -->
|
||||
<script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/datatable/datatable-min.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
var SugarRest = function(){}
|
||||
SugarRest.proxy_url = 'Rest_Proxy.php';
|
||||
SugarRest.server_url = 'http://localhost/[Sugar Path]/service/v2/rest.php'
|
||||
SugarRest.leadFields = [ 'id','do_not_call', 'first_name', 'last_name', 'status', 'phone_work', 'lead_source', 'salutation', 'primary_address_country', 'primary_address_city','primary_address_state', 'primary_address_postalcode', 'department', 'title', 'account_name'];
|
||||
SugarRest.moduleFields = {};
|
||||
SugarRest.logResponse = function(o){
|
||||
data = YAHOO.lang.JSON.parse(o.responseText);
|
||||
//console.log(data);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
SugarRest.call = function(fun, args, callback, params){
|
||||
//console.log(args);
|
||||
query = SugarRest.getQuery(fun, args);
|
||||
YAHOO.util.Connect.asyncRequest('POST', SugarRest.proxy_url , {success:callback, failure:callback, argument:params}, query);
|
||||
}
|
||||
|
||||
SugarRest.getQuery = function(fun, args){
|
||||
query = 'method=' + fun + '&input_type=json&response_type=json';
|
||||
if(args != null){
|
||||
m = YAHOO.lang.JSON.stringify(args);
|
||||
query += '&rest_data=' + m;
|
||||
}
|
||||
return query;
|
||||
}
|
||||
|
||||
SugarRest.getServerInfo = function(){
|
||||
//console.log('Getting Server Info');
|
||||
SugarRest.call('get_server_info', '', SugarRest.test);
|
||||
}
|
||||
|
||||
SugarRest.login = function(name, password, application){
|
||||
//console.log(name);
|
||||
SugarRest.call('md5', password, SugarRest.performLogin, {name:name ,application:application});
|
||||
|
||||
}
|
||||
|
||||
SugarRest.performLogin = function(o){
|
||||
|
||||
//console.log('Logging In');
|
||||
var loginData = [{
|
||||
user_name: o.argument.name,
|
||||
password:YAHOO.lang.JSON.parse(o.responseText)
|
||||
},o.argument.application];
|
||||
SugarRest.call('login', loginData, SugarRest.getUserId);
|
||||
}
|
||||
|
||||
SugarRest.getUserId = function(o){
|
||||
data = YAHOO.lang.JSON.parse(o.responseText);
|
||||
SugarRest.session = data.id;
|
||||
SugarRest.call('get_user_id', SugarRest.session, SugarRest.setUserId);
|
||||
}
|
||||
|
||||
SugarRest.setUserId = function(o){
|
||||
SugarRest.user_id =YAHOO.lang.JSON.parse(o.responseText);
|
||||
SugarRest.getModuleFields('Leads', SugarRest.leadFields);
|
||||
}
|
||||
SugarRest.getModuleFields = function(module, fields){
|
||||
SugarRest.call('get_module_fields', [SugarRest.session, module, fields], SugarRest.setModuleFields);
|
||||
}
|
||||
|
||||
SugarRest.setModuleFields = function(o){
|
||||
data = SugarRest.logResponse(o);
|
||||
console.log(data.module_fields);
|
||||
SugarRest.moduleFields[data.module_name] = data.module_fields;
|
||||
SugarRest.InlineCellEditing();
|
||||
}
|
||||
SugarRest.getLeadsQuery = function(){
|
||||
var data = [SugarRest.session, 'Leads', " leads.do_not_call = 0 AND leads.status != 'Converted' AND leads.status != 'Dead' AND leads.assigned_user_id = '" + SugarRest.user_id + "' ", '', 0, SugarRest.leadFields, [{
|
||||
'name': 'email_addresses',
|
||||
'value': ['id', 'email_address', 'opt_out', 'primary_address',]
|
||||
}], 500, 0];
|
||||
q = SugarRest.getQuery('get_entry_list', data, SugarRest.test);
|
||||
console.log(q);
|
||||
return q;
|
||||
}
|
||||
|
||||
SugarRest.getFeeds = function(){
|
||||
var data = [SugarRest.session, 'SugarFeed', "", '', 0, ['id', 'name', 'description', 'link_url', 'link_type', 'created_by', 'date_entered', 'related_id', 'related_module'], [], 500, 0];
|
||||
SugarRest.call('get_entry_list', data, SugarRest.test);
|
||||
|
||||
}
|
||||
|
||||
|
||||
SugarRest.getLeads = function(){
|
||||
q = SugarRest.getLeadsQuery();
|
||||
var myCallback = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
};
|
||||
SugarRest.myDataSource.sendRequest(q,
|
||||
{
|
||||
success : myCallback,
|
||||
failure : myCallback,
|
||||
scope : SugarRest.myDataTable
|
||||
});
|
||||
}
|
||||
|
||||
SugarRest.saveChange = function(callback, newValue){
|
||||
var r = this.getRecord();
|
||||
var column = this.getColumn();
|
||||
var id = r._oData['name_value_list.id'];
|
||||
name = column.key.replace('name_value_list.', '');
|
||||
name = name.replace('.value','');
|
||||
|
||||
if(name == 'do_not_call'){
|
||||
newValue = (newValue == 'Do Not Call')? 1: 0;
|
||||
}
|
||||
//console.log("New Value:" + newValue);
|
||||
if(name == 'status' && newValue == 'Converted'){
|
||||
SugarRest.window = window.open('');
|
||||
callback();
|
||||
SugarRest.seamless_login_url = 'module=Leads&action=ConvertLead&record=' + id;
|
||||
SugarRest.call('seamless_login', SugarRest.session, SugarRest.seamless, 'module=Leads&action=ConvertLead&record=' + id );
|
||||
return;
|
||||
}
|
||||
fields = {};
|
||||
fields['id'] = id;
|
||||
fields[name] = newValue;
|
||||
|
||||
data = [SugarRest.session, 'Leads',fields ];
|
||||
SugarRest.call('set_entry', data, SugarRest.savedChanges, {
|
||||
callback: callback,
|
||||
newValue: newValue
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
SugarRest.savedChanges = function(o){
|
||||
//console.log(o);
|
||||
callback = o.argument.callback;
|
||||
var r = YAHOO.lang.JSON.parse(o.responseText);
|
||||
if (r.id) {
|
||||
callback(true, o.argument.newValue);
|
||||
} else {
|
||||
//console.log('save failed');
|
||||
callback();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SugarRest.editRecord = function(module, id){
|
||||
query = 'module=' + module +'&record=' + id + '&action=EditView';
|
||||
SugarRest.seamless_login_url = query;
|
||||
SugarRest.call('seamless_login', SugarRest.session, SugarRest.seamless, query);
|
||||
|
||||
}
|
||||
|
||||
SugarRest.seamless = function(o){
|
||||
if (o.responseText == 1) {
|
||||
surl = SugarRest.server_url +'/index.php?' + SugarRest.seamless_login_url + '&MSID=' +SugarRest.session;
|
||||
//console.log('opening:' + surl);
|
||||
SugarRest.window.location.href = surl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
SugarRest.buildColumnDefs = function(){
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
SugarRest.InlineCellEditing = function(){
|
||||
var statusOptions = [];
|
||||
for(i in SugarRest.moduleFields.Leads.status.options){
|
||||
statusOptions[statusOptions.length] = {'label': SugarRest.moduleFields.Leads.status.options[i].name, 'value':SugarRest.moduleFields.Leads.status.options[i].value};
|
||||
}
|
||||
var salutationOptions = [];
|
||||
for(i in SugarRest.moduleFields.Leads.salutation.options){
|
||||
salutationOptions[salutationOptions.length] = {'label': SugarRest.moduleFields.Leads.salutation.options[i].name, 'value':SugarRest.moduleFields.Leads.salutation.options[i].value};
|
||||
}
|
||||
SugarRest.myColumnDefs = [
|
||||
{key:"name_value_list.id",formatter:SugarRest.editLink, label:'Edit'},
|
||||
// {key:"name_value_list.salutation.value",sortable:true, label:SugarRest.moduleFields.Leads.salutation.label, editor: new YAHOO.widget.DropdownCellEditor({asyncSubmitter:SugarRest.saveChange, dropdownOptions:salutationOptions})},
|
||||
{key:"name_value_list.first_name.value",sortable:true, label:SugarRest.moduleFields.Leads.first_name.label, editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
{key:"name_value_list.last_name.value",sortable:true, label:SugarRest.moduleFields.Leads.last_name.label ,editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
{key:"name_value_list.phone_work.value", formatter:SugarRest.callLink, label:SugarRest.moduleFields.Leads.phone_work.label},
|
||||
{key:"name_value_list.status.value",sortable:true, label:SugarRest.moduleFields.Leads.status.label, editor: new YAHOO.widget.DropdownCellEditor({asyncSubmitter:SugarRest.saveChange, dropdownOptions:statusOptions})},
|
||||
{key:"name_value_list.account_name.value",sortable:true, label:SugarRest.moduleFields.Leads.account_name.label, editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
//{key:"name_value_list.department.value",sortable:true, label:SugarRest.moduleFields.Leads.department.label, editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
{key:"name_value_list.title.value",sortable:true, label:SugarRest.moduleFields.Leads.title.label, editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
{key:"name_value_list.primary_address_city.value",sortable:true, label:'City', editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
{key:"name_value_list.primary_address_state.value",sortable:true, label:'State', editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
//{key:"name_value_list.primary_address_country.value",sortable:true, label:'Country', editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
{key:"name_value_list.primary_address_postalcode.value",sortable:true, label:'Postal', editor: new YAHOO.widget.TextboxCellEditor({asyncSubmitter:SugarRest.saveChange})},
|
||||
//{key:"name_value_list.lead_source.value", label:SugarRest.moduleFields.Leads.lead_source.label},
|
||||
{key:"name_value_list.do_not_call.value",formatter:SugarRest.checkboxField, label:SugarRest.moduleFields.Leads.do_not_call.label, editor: new YAHOO.widget.DropdownCellEditor({asyncSubmitter:SugarRest.saveChange, dropdownOptions:['Call', 'Do Not Call']})},
|
||||
];
|
||||
|
||||
SugarRest.myDataSource = new YAHOO.util.DataSource(SugarRest.proxy_url );
|
||||
SugarRest.myDataSource.connMethodPost = true;
|
||||
SugarRest.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
|
||||
SugarRest.myDataSource.connXhrMode = "queueRequests";
|
||||
|
||||
SugarRest.myDataSource.responseSchema = {
|
||||
resultsList : "entry_list", // String pointer to result data
|
||||
};
|
||||
SugarRest.myDataSource.responseSchema['fields'] = SugarRest.myColumnDefs;
|
||||
|
||||
|
||||
|
||||
SugarRest.myDataTable = new YAHOO.widget.DataTable("cellediting", SugarRest.myColumnDefs,
|
||||
|
||||
SugarRest.myDataSource, {initialRequest:SugarRest.getLeadsQuery()});
|
||||
// Set up editing flow
|
||||
var highlightEditableCell = function(oArgs) {
|
||||
var elCell = oArgs.target;
|
||||
if(YAHOO.util.Dom.hasClass(elCell, "yui-dt-editable")) {
|
||||
this.highlightCell(elCell);
|
||||
}
|
||||
};
|
||||
SugarRest.myDataTable.subscribe("cellMouseoverEvent", highlightEditableCell);
|
||||
SugarRest.myDataTable.subscribe("cellMouseoutEvent", SugarRest.myDataTable.onEventUnhighlightCell);
|
||||
SugarRest.myDataTable.subscribe("cellClickEvent", SugarRest.myDataTable.onEventShowCellEditor);
|
||||
|
||||
}
|
||||
// Custom formatter for "address" column to preserve line breaks
|
||||
SugarRest.formatAddress = function(elCell, oRecord, oColumn, oData) {
|
||||
elCell.innerHTML = "<pre class=\"address\">" + oData + "</pre>";
|
||||
};
|
||||
|
||||
SugarRest.editLink = function(elCell, oRecord, oColumn, oData) {
|
||||
elCell.innerHTML = "<input type='button' onclick='SugarRest.window = window.open(); SugarRest.editRecord(\"Leads\", \"" + oData + "\");' value='Edit'>";
|
||||
};
|
||||
|
||||
SugarRest.callLink = function(elCell, oRecord, oColumn, oData) {
|
||||
elCell.innerHTML = "<a href='callto://" + oData+ "'>"+ oData+ "</a>";
|
||||
};
|
||||
|
||||
SugarRest.checkboxField = function(elCell, oRecord, oColumn, oData) {
|
||||
checked = (oData == '1')? ' CHECKED ': '';
|
||||
elCell.innerHTML = "<input type='checkbox' " + checked + ">";
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body class="yui-skin-sam">
|
||||
<div id="dialog1">
|
||||
<div class="hd">Please Login <span id="error"></span></div>
|
||||
<div class="bd">
|
||||
<label for="username">User Name:</label><input id='username' type="text" name="username" value="will"/>
|
||||
<label for="password">Password:</label><input id='password' type="password" name="password" value="will"/>
|
||||
<input type="button" value="Login" onclick='SugarRest.login(document.getElementById("username").value,document.getElementById("password").value , "Sugar Rest Demo")'>
|
||||
</div></div>
|
||||
|
||||
|
||||
<div id="cellediting"></div>
|
||||
</body>
|
||||
</html>
|
||||
323
service/example/test.html
Normal file
323
service/example/test.html
Normal file
@@ -0,0 +1,323 @@
|
||||
/*********************************************************************************
|
||||
* SugarCRM is a customer relationship management program developed by
|
||||
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License version 3 as published by the
|
||||
* Free Software Foundation with the addition of the following permission added
|
||||
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
||||
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
|
||||
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along with
|
||||
* this program; if not, see http://www.gnu.org/licenses or write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA.
|
||||
*
|
||||
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
|
||||
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "Powered by
|
||||
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
|
||||
* technical reasons, the Appropriate Legal Notices must display the words
|
||||
* "Powered by SugarCRM".
|
||||
********************************************************************************/
|
||||
<!-- Dependency -->
|
||||
<script src="http://yui.yahooapis.com/2.6.0/build/yahoo/yahoo-min.js"></script>
|
||||
<!-- Used for Custom Events and event listener bindings -->
|
||||
<script src="http://yui.yahooapis.com/2.6.0/build/event/event-min.js"></script>
|
||||
<!-- Source file -->
|
||||
<script src="http://yui.yahooapis.com/2.6.0/build/connection/connection-min.js"></script>
|
||||
<script src="http://yui.yahooapis.com/2.6.0/build/json/json-min.js"></script>
|
||||
<script>
|
||||
var SugarRest = function(){}
|
||||
|
||||
SugarRest.callCount = -1;
|
||||
SugarRest.startTest = function(name, password){
|
||||
SugarRest.callCount = 1;
|
||||
SugarRest.login(name, password, 'JAVASCRIPT TEST');
|
||||
}
|
||||
SugarRest.test = function(o){
|
||||
data = SugarRest.logResponse(o);
|
||||
switch(SugarRest.callCount){
|
||||
case 1:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getServerInfo();
|
||||
SugarRest.session = data['id'];
|
||||
break;
|
||||
case 2:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getUserId();
|
||||
break;
|
||||
case 3:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getEntry('Contacts', '17700cb1-9da0-f511-f9d7-490b635b9ead');
|
||||
break;
|
||||
case 4:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getEntryList('Contacts');
|
||||
break;
|
||||
case 5:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getModuleFields('Contacts', []);
|
||||
break;
|
||||
case 6:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getEntries('Contacts', ['17700cb1-9da0-f511-f9d7-490b635b9ead', '177cf935-e488-04c3-7af3-490b632b4ab0']);
|
||||
break;
|
||||
case 7:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.setRelationship('Accounts', 'mastd368-c7er-cof8-16pu-47d57b16pets', 'contacts', ['2f043319-7cb0-6bfa-75d3-490b63fa6c08', 'c57d7598-42e6-cca8-a302-490b63118b48']);
|
||||
break;
|
||||
case 8:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.setRelationships(['Accounts', 'Contacts'], ['mastd368-c7er-cof8-16pu-47d57b16pets', '2f043319-7cb0-6bfa-75d3-490b63fa6c08'], ['contacts', 'opportunities'], [['2f043319-7cb0-6bfa-75d3-490b63fa6c08'], ['52acdc25-6a6e-a574-6936-490b63fbc1df']]);
|
||||
break;
|
||||
case 9:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getRelationships('Accounts', 'mastd368-c7er-cof8-16pu-47d57b16pets', 'contacts', '', ['first_name', 'last_name', 'primary_address_city'], [{'name' : 'opportunities', 'value' : ['name', 'type', 'lead_source']}, {'name' : 'email_addresses', 'value' : ['id', 'email_address', 'opt_out', 'primary_address']}], 0);
|
||||
break;
|
||||
case 10:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.setEntry('Accounts', [{'name' : 'city', 'value' : 'SFO'},
|
||||
{'name' : 'name', 'value' : 'DCE Puppet Master111'}]);
|
||||
break;
|
||||
case 11:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.setEntries('Accounts', [[{'name' : 'city', 'value' : 'SFO'},
|
||||
{'name' : 'name', 'value' : 'Acc1'}], [{'name' : 'city', 'value' : 'SFO'},
|
||||
{'name' : 'name', 'value' : 'Acc2'}]]);
|
||||
break;
|
||||
case 12:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.seamlessLogin();
|
||||
break;
|
||||
case 13:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.setNoteAttachment({'id' : 'bb79c0f3-78e1-c6fc-2c41-490b636653c0', 'related_module_id' : '3d921d14-047f-cc7d-1988-490b63592ae8', 'related_module_name' : 'Accounts'});
|
||||
break;
|
||||
case 14:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getNoteAttachment('bb79c0f3-78e1-c6fc-2c41-490b636653c0');
|
||||
break;
|
||||
case 15:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.getDocumentRevision('ab18578e-17f5-5fc0-96ba-4925a9baaa20');
|
||||
break;
|
||||
case 16:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.search('admin', '21232f297a57a5a743894a0e4a801fc3', 'a', ['Accounts', 'Contacts'], 0, 5);
|
||||
break;
|
||||
/*
|
||||
case 17:
|
||||
SugarRest.callCount++;
|
||||
SugarRest.setDocumentRevision({'id' : '8d7f0917-19d3-9f88-80d7-49121ddb62e2','document_name' : 'test doc',
|
||||
'revision' : 'D',
|
||||
'filename' : 'code1.txt',
|
||||
'file' : 'JHFzID0gJyc7DQppZiAoaXNzZXQoJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKSkgew0KCSRxcyA9ICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXTsNCn0gZWxzZWlmIChpc3NldCgkSFRUUF9TRVJWRVJfVkFSU1snUVVFUllfU1RSSU5HJ10pKSB7DQoJJHFzID0gJEhUVFBfU0VSVkVSX1ZBUlNbJ1FVRVJZX1NUUklORyddOw0KfSBlbHNlIHsNCgkkcXMgPSAnJzsNCn0NCg0KJHQxID0gc3RydG90aW1lKCJub3ciKTsNCg0KaWYgKGVyZWcoJ3dzZGwnLCAkcXMpICl7DQoJZ2xvYmFsICRzdWdhcl9jb25maWc7DQoJJHVwbG9hZERpciA9ICRzdWdhcl9jb25maWdbJ3VwbG9hZF9kaXInXTsNCgkkd3NkbFVSTCA9ICRzdWdhcl9jb25maWdbJ3NpdGVfdXJsJ10uJy9zb2FwLnBocD93c2RsJzsNCgkkd3NkbENhY2hlRmlsZSA9ICR1cGxvYWREaXIuJy93c2RsY2FjaGUtJyAuIG1kNSgkd3NkbFVSTCk7DQoJaWYoZmlsZV9leGlzdHMoJHdzZGxDYWNoZUZpbGUpKSB7CQ0KCSAgICBpZigkZmggPSBAc3VnYXJfZm9wZW4oJHdzZGxDYWNoZUZpbGUsICJyIikpIHsNCgkgICAgCSRjb250ZW50cyA9IGZyZWFkKCRmaCwgZmlsZXNpemUoJHdzZGxDYWNoZUZpbGUpKTsNCgkgICAgCWZjbG9zZSgkZmgpOw0KCQkJaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PUlTTy04ODU5LTFcclxuIik7DQoJCQlwcmludCAkY29udGVudHM7CSAgICAJDQoJICAgIH0gLy8gaWYJCQ0KCX0gZWxzZSB7DQoJCSRzZXJ2ZXItPnNlcnZpY2UoJEhUVFBfUkFXX1BPU1RfREFUQSk7DQoJICAgIGlmKCRmaCA9IEBzdWdhcl9mb3Blbigkd3NkbENhY2hlRmlsZSwgInciKSkgew0KCSAgICAJZnB1dHMoJGZoLCBvYl9nZXRfY29udGVudHMoKSk7DQoJICAgIAlmY2xvc2UoJGZoKTsNCgkgICAgfSAvLyBpZg0KCX0NCn0gZWxzZSB7DQoJJEdMT0JBTFNbJ2xvZyddLT5kZWJ1ZygiZGF0YSA9ICIgLiAkSFRUUF9SQVdfUE9TVF9EQVRBKTsNCgkkc2VydmVyLT5zZXJ2aWNlKCRIVFRQX1JBV19QT1NUX0RBVEEpOw0KfQ0KDQoNCg0KDQoJCQlpZiAoaXNzZXQoJHRoaXMtPm1ldGhvZHBhcmFtcykgJiYgaXNzZXQoJHRoaXMtPm1ldGhvZHBhcmFtc1snc2Vzc2lvbiddKSkgew0KCQkJCSRHTE9CQUxTWydsb2cnXS0+ZGVidWcoIkluIHNlcnZpY2UsIGRhdGEgPSAiIC4gJHRoaXMtPm1ldGhvZHBhcmFtc1snc2Vzc2lvbiddKTsNCgkJCX0NCg=='});
|
||||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
console = false;
|
||||
if(!console){
|
||||
console = {};
|
||||
console.log = function(){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SugarRest.getRequestData = function(method_name, data) {
|
||||
var returndata = 'method=' + method_name + '&input_type=json&response_type=json';
|
||||
if (data != '') {
|
||||
returndata = returndata + '&rest_data=' + data;
|
||||
}
|
||||
return returndata
|
||||
}
|
||||
SugarRest.logResponse = function(o){
|
||||
|
||||
data = YAHOO.lang.JSON.parse(o.responseText);
|
||||
console.log(data);
|
||||
return data;
|
||||
}
|
||||
|
||||
SugarRest.getServerInfo = function(){
|
||||
console.log('Getting Server Info');
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php' , {success:SugarRest.test, failure:SugarRest.test}, SugarRest.getRequestData('get_server_info'));
|
||||
}
|
||||
|
||||
SugarRest.getModuleFields = function(module, fields){
|
||||
console.log('Getting Server Info');
|
||||
var data = [SugarRest.session, module, fields];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php' , {success:SugarRest.test, failure:SugarRest.test}, SugarRest.getRequestData('get_module_fields', m));
|
||||
}
|
||||
|
||||
SugarRest.login = function(name, password, application){
|
||||
console.log('Logging In');
|
||||
var loginData = [{
|
||||
user_name: 'admin',
|
||||
password: '21232f297a57a5a743894a0e4a801fc3'
|
||||
},'javascriptTest'];
|
||||
m = YAHOO.lang.JSON.stringify(loginData);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php' , {success:SugarRest.test, failure:SugarRest.test}, SugarRest.getRequestData('login', m));
|
||||
}
|
||||
|
||||
SugarRest.getUserId = function(){
|
||||
console.log('Getting User Id ');
|
||||
m = YAHOO.lang.JSON.stringify(SugarRest.session);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php' , {success:SugarRest.test, failure:SugarRest.test}, SugarRest.getRequestData('get_user_id', m));
|
||||
}
|
||||
|
||||
|
||||
SugarRest.getEntryList = function(module){
|
||||
var data = [SugarRest.session, module, "", '', 0, [], [{
|
||||
'name': 'email_addresses',
|
||||
'value': ['id', 'email_address', 'opt_out', 'primary_address',]
|
||||
}], 10, 0];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('get_entry_list', m));
|
||||
}
|
||||
|
||||
|
||||
SugarRest.getEntry = function(module, id){
|
||||
var data = [SugarRest.session, module, id, ['last_name', 'email1', 'date_modified','description'], [{
|
||||
'name': 'email_addresses',
|
||||
'value': ['id', 'email_address', 'opt_out', 'primary_address',]
|
||||
}]];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('get_entry', m));
|
||||
}
|
||||
|
||||
SugarRest.getEntries = function(module, ids){
|
||||
var data = [SugarRest.session, module, ids, ['last_name', 'email1', 'date_modified','description'], [{
|
||||
'name': 'email_addresses',
|
||||
'value': ['id', 'email_address', 'opt_out', 'primary_address',]
|
||||
}]];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('get_entries', m));
|
||||
}
|
||||
|
||||
SugarRest.setRelationship = function(module, module_id, link_field_name, related_ids){
|
||||
var data = [SugarRest.session, module, module_id, link_field_name, related_ids];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('set_relationship', m));
|
||||
}
|
||||
|
||||
SugarRest.setRelationships = function(modules, module_ids, link_field_names, related_ids){
|
||||
var data = [SugarRest.session, modules, module_ids, link_field_names, related_ids];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('set_relationships', m));
|
||||
}
|
||||
|
||||
SugarRest.getRelationships = function(module, module_id, link_field_name, related_module_query, related_fields, related_module_link_name_to_fields_array, deleted){
|
||||
var data = [SugarRest.session, module, module_id, link_field_name, related_module_query, related_fields, related_module_link_name_to_fields_array, deleted];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('get_relationships', m));
|
||||
}
|
||||
|
||||
SugarRest.setEntry = function(module, name_value_list){
|
||||
var data = [SugarRest.session, module, name_value_list];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('set_entry', m));
|
||||
}
|
||||
|
||||
SugarRest.setEntries = function(module, name_value_lists){
|
||||
var data = [SugarRest.session, module, name_value_lists];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('set_entries', m));
|
||||
}
|
||||
|
||||
SugarRest.seamlessLogin = function(){
|
||||
var data = [SugarRest.session];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('seamless_login', m));
|
||||
}
|
||||
|
||||
SugarRest.setNoteAttachment = function(noteObject){
|
||||
var data = [SugarRest.session, noteObject];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('set_note_attachment', m));
|
||||
}
|
||||
|
||||
SugarRest.getNoteAttachment = function(noteId){
|
||||
var data = [SugarRest.session, noteId];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('get_note_attachment', m));
|
||||
}
|
||||
|
||||
SugarRest.setDocumentRevision = function(revisionObject){
|
||||
var data = [SugarRest.session, revisionObject];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('set_document_revision', m));
|
||||
}
|
||||
|
||||
SugarRest.getDocumentRevision = function(docRevId){
|
||||
var data = [SugarRest.session, docRevId];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('get_document_revision', m));
|
||||
}
|
||||
|
||||
SugarRest.search = function(username, password, search_string, modules_to_search, offset, maxresults){
|
||||
var data = [username, password, search_string, modules_to_search, offset, maxresults];
|
||||
m = YAHOO.lang.JSON.stringify(data);
|
||||
YAHOO.util.Connect.asyncRequest('POST', 'v2/rest.php', {
|
||||
success: SugarRest.test,
|
||||
failure: SugarRest.test
|
||||
}, SugarRest.getRequestData('search_by_module', m));
|
||||
}
|
||||
SugarRest.startTest();
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user