[ADD] Added open with option from drive, Added Documentation for Drive Integration, Added Discription In Google Docs Detail

bzr revid: pga@tinyerp.com-20130517101931-ep3fmv5tdtcuddtx
This commit is contained in:
Parth Gajjar (Open ERP) 2013-05-17 15:49:31 +05:30
parent 482fb99ffd
commit d1dc5368ed
1 changed files with 47 additions and 13 deletions

View File

@ -1,7 +1,7 @@
openerp.google_docs = function (instance, m) {
var _t = instance.web._t,
QWeb = instance.web.qweb;
instance.web.Sidebar.include({
start: function () {
var self = this;
@ -9,6 +9,7 @@ openerp.google_docs = function (instance, m) {
this._super.apply(this, arguments);
var view = self.getParent();
var result;
this.check_url();
if (view.fields_view.type == "form") {
ids = []
view.on("load_record", self, function (r) {
@ -17,7 +18,36 @@ openerp.google_docs = function (instance, m) {
});
}
},
check_url: function () {
/* This function check URL and if there is 'state' object (dictionary) sent by google,
* it will fetch file 'exportIds' from 'state' object and redirect to corresponding record in openerp
*/
self = this;
var state = this.getUrlVars();
if (state) {
file_obj = JSON.parse(state);
var loaded = self.fetch('ir.attachment', ['res_model', 'res_id', 'url', 'name'], [['url', 'ilike', '%' + file_obj.exportIds[0] + '%']])
.then(function (att) {
console.log(att);
if (att.length != 0) {
url = window.location.href.replace(/(\&)(.*)/, "");
url = url + "#id=" + att[0].res_id + "&model=" + att[0].res_model;
$('body').hide();
window.open(url, '_self');
}
});
}
},
getUrlVars: function () {
var parts=unescape(window.location.href);
var n=parts.match(/(state=)(.*})/);
if(n && n.length>2){
return n[2];
}
else{
return false
}
},
add_gdoc_items: function (view, res_id) {
var self = this;
var gdoc_item = _.indexOf(_.pluck(self.items.other, 'classname'), 'oe_share_gdoc');
@ -49,11 +79,11 @@ openerp.google_docs = function (instance, m) {
});
}
},
fetch: function (model, fields, domain, ctx) {
return new instance.web.Model(model).query(fields).filter(domain).context(ctx).all()
},
on_google_doc: function (doc_item) {
var self = this;
self.config = doc_item;
@ -64,7 +94,7 @@ openerp.google_docs = function (instance, m) {
if (!_.isEmpty(r)) {
self.OAUTHURL = 'https://accounts.google.com/o/oauth2/auth?';
self.VALIDURL = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=';
self.SCOPES = 'https://www.googleapis.com/auth/drive';
self.SCOPES = 'https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.install';
self.CLIENT_ID = configs[0].google_client_id;
self.GDOC_NAME = r[doc_item.config_id]['name'];
self.GDOCS_TEMPLATE_ID = configs[0].gdocs_resource_id;
@ -74,14 +104,14 @@ openerp.google_docs = function (instance, m) {
});
});
},
handleClientLoad: function () {
var self = this;
window.setTimeout(function () {
self.checkAuth(self)
}, 1);
},
checkAuth: function (self) {
gapi.auth.authorize({
'client_id': self.CLIENT_ID,
@ -91,9 +121,9 @@ openerp.google_docs = function (instance, m) {
self.handleAuthResult(self, authResult)
});
},
handleAuthResult: function (self, authResult) {
if (authResult && !authResult.error) {
self.clientLoad(self);
} else {
@ -101,12 +131,12 @@ openerp.google_docs = function (instance, m) {
'client_id': self.CLIENT_ID,
'scope': self.SCOPES,
'immediate': false
},function (authResult) {
}, function (authResult) {
self.handleAuthResult(self, authResult)
});
}
},
clientLoad: function (self) {
gapi.client.load('drive', 'v2', function () {
if (self.GDOC_URL == false) {
@ -116,10 +146,14 @@ openerp.google_docs = function (instance, m) {
}
});
},
copyFile: function (config, originFileId, copyTitle) {
discription = window.location.href;
discription = discription.replace(/(\&)?menu_id(.*)/, "");
discription = discription.replace(/(\&)?action(.*)/, "");
var body = {
'title': copyTitle
'title': copyTitle,
"description": 'Click Below link for open record in OpenERP\n' + discription,
};
var request = gapi.client.drive.files.copy({
'fileId': originFileId,