[MERGE] mobile branch fixes login

bzr revid: al@openerp.com-20111230105756-xyoyyue3471fnqt5
This commit is contained in:
Antony Lesuisse
2011-12-30 11:57:56 +01:00
7 changed files with 72 additions and 26 deletions
+1 -1
View File
@@ -448,7 +448,7 @@ class Root(object):
params = urllib.urlencode(request.args)
return werkzeug.utils.redirect(self.root + '?' + params, 301)(
environ, start_response)
elif request.path == '/mobile' or ('#' in request.path):
elif request.path == '/mobile':
return werkzeug.utils.redirect(
'/web_mobile/static/src/web_mobile.html', 301)(environ, start_response)
@@ -22,3 +22,8 @@
.login_valid .login_error_message {
display: none;
}
.desc{
margin:0em 0 0em;
font-size:11px;
font-weight:normal;
}
@@ -17,14 +17,17 @@ openerp.web_mobile.MobileWebClient = openerp.web.Widget.extend({
init: function(element_id) {
this._super(null, element_id);
openerp.web.qweb.add_template("xml/web_mobile.xml");
var params = {};
this.$element.html(this.render());
this.crashmanager = new openerp.web.CrashManager(this);
this.login = new openerp.web_mobile.Login(this, "oe_login");
},
start: function() {
this.login.start();
this._super.apply(this, arguments);
var self = this;
this.session.bind().then(function() {
openerp.web.qweb.add_template("xml/web_mobile.xml");
self.$element.html(self.render());
self.login.start();
});
}
});
@@ -45,7 +48,8 @@ openerp.web_mobile.Login = openerp.web.Widget.extend({
jQuery("#oe_header").children().remove();
this.rpc("/web/database/get_list", {}, function(result) {
self.db_list = result.db_list;
self.$element.html(self.render(self));
$('#'+self.element_id).html(self.render(self));
self.$element = $('#'+self.element_id);
if(self.session.db!=""){
self.$element.find("#database").val(self.session.db);
}
@@ -64,7 +68,7 @@ openerp.web_mobile.Login = openerp.web.Widget.extend({
var password = $e.find("div input[name=password]").val();
//$e.hide();
// Should hide then call callback
this.session.login(db, login, password, function() {
this.session.session_authenticate(db, login, password).then(function() {
if(self.session.session_is_valid()) {
if (self.has_local_storage) {
if(self.remember_creditentials) {
@@ -78,9 +82,13 @@ openerp.web_mobile.Login = openerp.web.Widget.extend({
}
}
self.on_login_valid();
} else {
}
});
this.session.on_session_invalid.add({
callback: function () {
self.on_login_invalid();
}
},
unique: true
});
},
on_login_invalid: function() {
@@ -185,6 +193,7 @@ openerp.web_mobile.Menu = openerp.web.Widget.extend({
this.menu = false;
},
start: function() {
this._super.apply(this, arguments);
this.rpc("/web/menu/load", {}, this.on_loaded);
},
on_loaded: function(data) {
+16 -2
View File
@@ -47,6 +47,7 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
var notebooks = view_fields[j];
}
}
self.hidden_fields(get_fields,fields);
self.$element.html(self.render({'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : values ,'temp_flag':'1'}));
self.$element.find("[data-role=header]").find('h1').html(self.head_title);
self.$element.find("[data-role=header]").find('#home').click(function(){
@@ -56,11 +57,12 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
for (var k = 0; k < notebooks.children.length; k++) {
if (notebooks.children[k].attrs.string == $(this).attr('id')) {
get_fields_notebook = self.get_fields(notebooks.children[k].children);
self.hidden_fields(get_fields_notebook,fields);
$(this).find('div#page_content').html(self.render({'get_fields': get_fields_notebook,'fields' : fields, 'values' : values}));
}
}
});
self.$element.find('#o2m_m2m').click(function(ev) {
self.$element.find('#o2m_m2m').click(function(ev) {
ev.preventDefault();
ev.stopPropagation();
var relational = $(this).attr('for');
@@ -68,12 +70,16 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
var rel_ids = values[relational];
var head = rel_field.string;
if (rel_ids) {
var list_ids = [];
var datasearch = new openerp.web.DataSetSearch(self, rel_field.relation, rel_field.context);
datasearch.domain=[['id', 'in', rel_ids]];
datasearch.read_slice(['name'], {context:rel_field.context, domain: datasearch.domain, limit:80}, function(listrec){
_.each(listrec, function(i) {
list_ids.push(i.id);
});
_.extend(rel_field.context,{"html_name_get" : true});
var dataset = new openerp.web.DataSet(self, rel_field.relation,rel_field.context);
dataset.name_get(listrec,function(res){
dataset.name_get(list_ids,function(res){
var additional = "";
if(res['html_name_get']){
additional = res['display'];
@@ -99,6 +105,7 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
}
});
$.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true);
$('[id^="oe_list_'+relational+'_'+self.element_id+'"]').find("a#list-id").find('span').addClass('desc');
}else{
$.mobile.changePage("#oe_list_"+relational+"_"+self.element_id, "slide", false, true);
}
@@ -195,6 +202,13 @@ openerp.web_mobile.FormView = openerp.web.Widget.extend({
});
});
}
},
hidden_fields: function(get_fields, fields) {
for(var i=0;i<get_fields.length;i++){
if(get_fields[i].attrs.invisible){
fields[get_fields[i].attrs.name].type='hidden';
}
}
}
});
@@ -30,12 +30,16 @@ openerp.web_mobile.ListView = openerp.web.Widget.extend({
},
on_search_data: function(ev){
var self = this;
var list_ids = [];
var datasearch = new openerp.web.DataSetSearch(self, self.action.res_model,self.action.context);
datasearch.domain = self.action.domain;
datasearch.read_slice(['name'], {context:datasearch.context, domain: datasearch.domain, limit:80}, function(listresult){
_.each(listresult, function(i) {
list_ids.push(i.id);
});
_.extend(self.action.context,{"html_name_get" : true});
var dataset = new openerp.web.DataSet(self, datasearch.model,datasearch.context);
dataset.name_get(listresult,function(res){
dataset.name_get(list_ids,function(res){
var additional = "";
if(res['html_name_get']){
additional = res['display'];
@@ -47,6 +51,7 @@ openerp.web_mobile.ListView = openerp.web.Widget.extend({
});
self.$element.find("a#list-id").click(self.on_list_click);
$.mobile.changePage("#"+self.element_id, "slide", false, true);
self.$element.find("a#list-id").find('span').addClass('desc');
});
});
},
+18 -4
View File
@@ -13,6 +13,7 @@
<script type="text/javascript" src="/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js"></script>
<script type="text/javascript" src="/web/static/lib/underscore/underscore.js"></script>
<script type="text/javascript" src="/web/static/lib/underscore/underscore.string.js"></script>
<script type="text/javascript" src="/web/static/lib/py.parse/lib/py.js"></script>
<script type="text/javascript" src="/web_mobile/static/lib/jquery_mobile/js/jquery.mobile-1.0a4.1.js"></script>
<script type="text/javascript" src="/web/static/lib/datejs/globalization/en-US.js"></script>
@@ -26,10 +27,20 @@
<script type="text/javascript" src="/web/static/lib/qweb/qweb2.js"></script>
<script type="text/javascript" src="/web/static/src/js/boot.js"></script>
<script type="text/javascript" src="/web/static/src/js/core.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome.js"></script>
<script type="text/javascript" src="/web/static/src/js/data.js"></script>
<script type="text/javascript" src="/web/static/src/js/formats.js"></script>
<script type="text/javascript" src="/web/static/src/js/dates.js"></script>
<script type="text/javascript" src="/web/static/src/js/formats.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome.js"></script>
<script type="text/javascript" src="/web/static/src/js/views.js"></script>
<script type="text/javascript" src="/web/static/src/js/data.js"></script>
<script type="text/javascript" src="/web/static/src/js/data_export.js"></script>
<script type="text/javascript" src="/web/static/src/js/data_import.js"></script>
<script type="text/javascript" src="/web/static/src/js/search.js"></script>
<script type="text/javascript" src="/web/static/src/js/view_form.js"></script>
<script type="text/javascript" src="/web/static/src/js/view_page.js"></script>
<script type="text/javascript" src="/web/static/src/js/view_list.js"></script>
<script type="text/javascript" src="/web/static/src/js/view_list_editable.js"></script>
<script type="text/javascript" src="/web/static/src/js/view_tree.js"></script>
<script type="text/javascript" src="/web/static/src/js/view_editor.js"></script>
<script type="text/javascript" src="/web_mobile/static/src/js/web_mobile.js"></script>
<script type="text/javascript" src="/web_mobile/static/src/js/chrome_mobile.js"></script>
@@ -38,7 +49,10 @@
<script type="text/javascript">
var QWeb;
$(function() {
$(function() {
if(document.URL!="http://"+window.location.host+"/web_mobile/static/src/web_mobile.html"){
window.location.replace('/mobile');
}
var oe = openerp.init();
openerp.web_mobile(oe);
oe.web_mobile.mobilewebclient("moe");
@@ -132,23 +132,22 @@
<t t-if="!(records.length>0)">
There are no records to show.
</t>
<t t-if="records.length>0">
<ul data-role="listview" data-inset="true" data-theme="d" data-filter="true">
<li data-theme="c" t-foreach="records" t-as="record">
<t t-foreach="record[1].split(',')" t-as="data1">
<t t-if="record[1].split(',')[0]==data1">
<a id="list-id" t-att-data-id="record[0]" href="#">
<t t-esc="data1" />
</a>
</t>
</t>
<p>
<a id="list-id" t-att-data-id="record[0]" href="#">
<t t-foreach="record[1].split(',')" t-as="data1">
<t t-if="record[1].split(',')[0]==data1">
<t t-esc="data1" /><br/>
</t>
<t t-if="record[1].split(',')[0]!=data1">
<t t-esc="data1" />
<span>
<t t-esc="data1" />
</span>
</t>
</t>
</p>
</a>
<t t-foreach="data" t-as="data1">
<t t-esc="data1[0]" />
</t>