Mark strings to be translated.
Maybe some missed, but most of them marked. bzr revid: tsabi-20121129002200-20tppzvh0ap5tfwe
This commit is contained in:
parent
93091dad79
commit
92e87f7e6f
|
@ -28,6 +28,7 @@ except ImportError:
|
||||||
xlwt = None
|
xlwt = None
|
||||||
|
|
||||||
import openerp
|
import openerp
|
||||||
|
from openerp.tools.translate import _
|
||||||
|
|
||||||
from .. import http
|
from .. import http
|
||||||
from .. import nonliterals
|
from .. import nonliterals
|
||||||
|
@ -821,7 +822,7 @@ class Database(openerpweb.Controller):
|
||||||
except xmlrpclib.Fault, e:
|
except xmlrpclib.Fault, e:
|
||||||
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
|
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
|
||||||
return {'error': e.faultCode, 'title': 'Drop Database'}
|
return {'error': e.faultCode, 'title': 'Drop Database'}
|
||||||
return {'error': 'Could not drop database !', 'title': 'Drop Database'}
|
return {'error': _('Could not drop database !'), 'title': _('Drop Database')}
|
||||||
|
|
||||||
@openerpweb.httprequest
|
@openerpweb.httprequest
|
||||||
def backup(self, req, backup_db, backup_pwd, token):
|
def backup(self, req, backup_db, backup_pwd, token):
|
||||||
|
@ -839,7 +840,7 @@ class Database(openerpweb.Controller):
|
||||||
{'fileToken': int(token)}
|
{'fileToken': int(token)}
|
||||||
)
|
)
|
||||||
except xmlrpclib.Fault, e:
|
except xmlrpclib.Fault, e:
|
||||||
return simplejson.dumps([[],[{'error': e.faultCode, 'title': 'backup Database'}]])
|
return simplejson.dumps([[],[{'error': e.faultCode, 'title': _('Backup Database')}]])
|
||||||
|
|
||||||
@openerpweb.httprequest
|
@openerpweb.httprequest
|
||||||
def restore(self, req, db_file, restore_pwd, new_db):
|
def restore(self, req, db_file, restore_pwd, new_db):
|
||||||
|
@ -860,8 +861,8 @@ class Database(openerpweb.Controller):
|
||||||
return req.session.proxy("db").change_admin_password(old_password, new_password)
|
return req.session.proxy("db").change_admin_password(old_password, new_password)
|
||||||
except xmlrpclib.Fault, e:
|
except xmlrpclib.Fault, e:
|
||||||
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
|
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
|
||||||
return {'error': e.faultCode, 'title': 'Change Password'}
|
return {'error': e.faultCode, 'title': _('Change Password')}
|
||||||
return {'error': 'Error, password not changed !', 'title': 'Change Password'}
|
return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
|
||||||
|
|
||||||
class Session(openerpweb.Controller):
|
class Session(openerpweb.Controller):
|
||||||
_cp_path = "/web/session"
|
_cp_path = "/web/session"
|
||||||
|
@ -897,16 +898,16 @@ class Session(openerpweb.Controller):
|
||||||
old_password, new_password,confirm_password = operator.itemgetter('old_pwd', 'new_password','confirm_pwd')(
|
old_password, new_password,confirm_password = operator.itemgetter('old_pwd', 'new_password','confirm_pwd')(
|
||||||
dict(map(operator.itemgetter('name', 'value'), fields)))
|
dict(map(operator.itemgetter('name', 'value'), fields)))
|
||||||
if not (old_password.strip() and new_password.strip() and confirm_password.strip()):
|
if not (old_password.strip() and new_password.strip() and confirm_password.strip()):
|
||||||
return {'error':'You cannot leave any password empty.','title': 'Change Password'}
|
return {'error':_('You cannot leave any password empty.'),'title': _('Change Password')}
|
||||||
if new_password != confirm_password:
|
if new_password != confirm_password:
|
||||||
return {'error': 'The new password and its confirmation must be identical.','title': 'Change Password'}
|
return {'error': _('The new password and its confirmation must be identical.'),'title': _('Change Password')}
|
||||||
try:
|
try:
|
||||||
if req.session.model('res.users').change_password(
|
if req.session.model('res.users').change_password(
|
||||||
old_password, new_password):
|
old_password, new_password):
|
||||||
return {'new_password':new_password}
|
return {'new_password':new_password}
|
||||||
except Exception:
|
except Exception:
|
||||||
return {'error': 'The old password you provided is incorrect, your password was not changed.', 'title': 'Change Password'}
|
return {'error': _('The old password you provided is incorrect, your password was not changed.'), 'title': _('Change Password')}
|
||||||
return {'error': 'Error, password not changed !', 'title': 'Change Password'}
|
return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def sc_list(self, req):
|
def sc_list(self, req):
|
||||||
|
@ -918,7 +919,7 @@ class Session(openerpweb.Controller):
|
||||||
try:
|
try:
|
||||||
return req.session.proxy("db").list_lang() or []
|
return req.session.proxy("db").list_lang() or []
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
return {"error": e, "title": "Languages"}
|
return {"error": e, "title": _("Languages")}
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerpweb.jsonrequest
|
||||||
def modules(self, req):
|
def modules(self, req):
|
||||||
|
@ -1450,7 +1451,7 @@ class SearchView(View):
|
||||||
if not isinstance(parsed_domain, nonliterals.BaseDomain)
|
if not isinstance(parsed_domain, nonliterals.BaseDomain)
|
||||||
else req.session.eval_domain(parsed_domain))
|
else req.session.eval_domain(parsed_domain))
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("Failed to parse custom filter %s in %s",
|
logger.exception(_("Failed to parse custom filter %s in %s"),
|
||||||
filter['name'], model)
|
filter['name'], model)
|
||||||
filter['disabled'] = True
|
filter['disabled'] = True
|
||||||
del filter['context']
|
del filter['context']
|
||||||
|
@ -1571,7 +1572,7 @@ class Binary(openerpweb.Controller):
|
||||||
res = Model.default_get(fields, context)
|
res = Model.default_get(fields, context)
|
||||||
filecontent = base64.b64decode(res.get(field, ''))
|
filecontent = base64.b64decode(res.get(field, ''))
|
||||||
if not filecontent:
|
if not filecontent:
|
||||||
raise ValueError("No content found for field '%s' on '%s:%s'" %
|
raise ValueError(_("No content found for field '%s' on '%s:%s'") %
|
||||||
(field, model, id))
|
(field, model, id))
|
||||||
else:
|
else:
|
||||||
filename = '%s_%s' % (model.replace('.', '_'), id)
|
filename = '%s_%s' % (model.replace('.', '_'), id)
|
||||||
|
|
|
@ -289,7 +289,7 @@ instance.web.CrashManager = instance.web.Class.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
instance.web.Loading = instance.web.Widget.extend({
|
instance.web.Loading = instance.web.Widget.extend({
|
||||||
template: 'Loading',
|
template: _t("Loading"),
|
||||||
init: function(parent) {
|
init: function(parent) {
|
||||||
this._super(parent);
|
this._super(parent);
|
||||||
this.count = 0;
|
this.count = 0;
|
||||||
|
@ -390,11 +390,11 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
self.$el.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore });
|
self.$el.find("form[name=restore_db_form]").validate({ submitHandler: self.do_restore });
|
||||||
self.$el.find("form[name=change_pwd_form]").validate({
|
self.$el.find("form[name=change_pwd_form]").validate({
|
||||||
messages: {
|
messages: {
|
||||||
old_pwd: "Please enter your previous password",
|
old_pwd: _t("Please enter your previous password"),
|
||||||
new_pwd: "Please enter your new password",
|
new_pwd: _t("Please enter your new password"),
|
||||||
confirm_pwd: {
|
confirm_pwd: {
|
||||||
required: "Please confirm your new password",
|
required: _t("Please confirm your new password"),
|
||||||
equalTo: "The confirmation does not match the password"
|
equalTo: _t("The confirmation does not match the password")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
submitHandler: self.do_change_password
|
submitHandler: self.do_change_password
|
||||||
|
@ -478,7 +478,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
self.display_error(result);
|
self.display_error(result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.do_notify("Duplicating database", "The database has been duplicated.");
|
self.do_notify(_t("Duplicating database"), _t("The database has been duplicated."));
|
||||||
self.start();
|
self.start();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -488,7 +488,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
fields = $form.serializeArray(),
|
fields = $form.serializeArray(),
|
||||||
$db_list = $form.find('[name=drop_db]'),
|
$db_list = $form.find('[name=drop_db]'),
|
||||||
db = $db_list.val();
|
db = $db_list.val();
|
||||||
if (!db || !confirm("Do you really want to delete the database: " + db + " ?")) {
|
if (!db || !confirm(_.str.sprintf(_t("Do you really want to delete the database: %s ?"), db))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.rpc("/web/database/drop", {'fields': fields}).done(function(result) {
|
self.rpc("/web/database/drop", {'fields': fields}).done(function(result) {
|
||||||
|
@ -496,7 +496,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
self.display_error(result);
|
self.display_error(result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.do_notify("Dropping database", "The database '" + db + "' has been dropped");
|
self.do_notify(_t("Dropping database"), _.str.sprintf(_t("The database %s has been dropped"), db));
|
||||||
self.start();
|
self.start();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -511,7 +511,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
error: function(error){
|
error: function(error){
|
||||||
if(error){
|
if(error){
|
||||||
self.display_error({
|
self.display_error({
|
||||||
title: 'Backup Database',
|
title: _t("Backup Database"),
|
||||||
error: 'AccessDenied'
|
error: 'AccessDenied'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -534,13 +534,13 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
|
|
||||||
if (body.indexOf('403 Forbidden') !== -1) {
|
if (body.indexOf('403 Forbidden') !== -1) {
|
||||||
self.display_error({
|
self.display_error({
|
||||||
title: 'Access Denied',
|
title: _t("Access Denied"),
|
||||||
error: 'Incorrect super-administrator password'
|
error: _t("Incorrect super-administrator password")
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
self.display_error({
|
self.display_error({
|
||||||
title: 'Restore Database',
|
title: _t("Restore Database"),
|
||||||
error: 'Could not restore the database'
|
error: _t("Could not restore the database")
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -560,7 +560,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.unblockUI();
|
self.unblockUI();
|
||||||
self.do_notify("Changed Password", "Password has been changed successfully");
|
self.do_notify(_t("Changed Password"), _t("Password has been changed successfully"));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
do_exit: function () {
|
do_exit: function () {
|
||||||
|
@ -642,7 +642,7 @@ instance.web.Login = instance.web.Widget.extend({
|
||||||
}
|
}
|
||||||
var db = this.$("form [name=db]").val();
|
var db = this.$("form [name=db]").val();
|
||||||
if (!db) {
|
if (!db) {
|
||||||
this.do_warn("Login", "No database selected !");
|
this.do_warn(_t("Login"), _t("No database selected !"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var login = this.$("form input[name=login]").val();
|
var login = this.$("form input[name=login]").val();
|
||||||
|
@ -678,7 +678,7 @@ instance.web.Login = instance.web.Widget.extend({
|
||||||
self.trigger('login_successful');
|
self.trigger('login_successful');
|
||||||
}, function () {
|
}, function () {
|
||||||
self.$(".oe_login_pane").fadeIn("fast", function() {
|
self.$(".oe_login_pane").fadeIn("fast", function() {
|
||||||
self.show_error("Invalid username or password");
|
self.show_error(_t("Invalid username or password"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -765,7 +765,7 @@ instance.web.ChangePassword = instance.web.Widget.extend({
|
||||||
template: "ChangePassword",
|
template: "ChangePassword",
|
||||||
start: function() {
|
start: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.getParent().dialog_title = "Change Password";
|
this.getParent().dialog_title = _t("Change Password");
|
||||||
var $button = self.$el.find('.oe_form_button');
|
var $button = self.$el.find('.oe_form_button');
|
||||||
$button.appendTo(this.getParent().$buttons);
|
$button.appendTo(this.getParent().$buttons);
|
||||||
$button.eq(2).click(function(){
|
$button.eq(2).click(function(){
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
|
||||||
openerp.web.dates = function(instance) {
|
openerp.web.dates = function(instance) {
|
||||||
|
var _t = instance.web._t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a string to a Date javascript object using OpenERP's
|
* Converts a string to a Date javascript object using OpenERP's
|
||||||
|
@ -18,11 +19,11 @@ instance.web.str_to_datetime = function(str) {
|
||||||
var regex = /^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(?:\.\d+)?$/;
|
var regex = /^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(?:\.\d+)?$/;
|
||||||
var res = regex.exec(str);
|
var res = regex.exec(str);
|
||||||
if ( !res ) {
|
if ( !res ) {
|
||||||
throw new Error("'" + str + "' is not a valid datetime");
|
throw new Error(_.str.sprintf(_t("'%s' is not a valid datetime"), str));
|
||||||
}
|
}
|
||||||
var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz');
|
var obj = Date.parseExact(res[1] + " UTC", 'yyyy-MM-dd HH:mm:ss zzz');
|
||||||
if (! obj) {
|
if (! obj) {
|
||||||
throw new Error("'" + str + "' is not a valid datetime");
|
throw new Error(_.str.sprintf(_t("'%s' is not a valid datetime"), str));
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
};
|
};
|
||||||
|
@ -45,11 +46,11 @@ instance.web.str_to_date = function(str) {
|
||||||
var regex = /^\d\d\d\d-\d\d-\d\d$/;
|
var regex = /^\d\d\d\d-\d\d-\d\d$/;
|
||||||
var res = regex.exec(str);
|
var res = regex.exec(str);
|
||||||
if ( !res ) {
|
if ( !res ) {
|
||||||
throw new Error("'" + str + "' is not a valid date");
|
throw new Error(_.str.sprintf(_t("'%s' is not a valid date"), str));
|
||||||
}
|
}
|
||||||
var obj = Date.parseExact(str, 'yyyy-MM-dd');
|
var obj = Date.parseExact(str, 'yyyy-MM-dd');
|
||||||
if (! obj) {
|
if (! obj) {
|
||||||
throw new Error("'" + str + "' is not a valid date");
|
throw new Error(_.str.sprintf(_t("'%s' is not a valid date"), str));
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
};
|
};
|
||||||
|
@ -72,11 +73,11 @@ instance.web.str_to_time = function(str) {
|
||||||
var regex = /^(\d\d:\d\d:\d\d)(?:\.\d+)?$/;
|
var regex = /^(\d\d:\d\d:\d\d)(?:\.\d+)?$/;
|
||||||
var res = regex.exec(str);
|
var res = regex.exec(str);
|
||||||
if ( !res ) {
|
if ( !res ) {
|
||||||
throw new Error("'" + str + "' is not a valid time");
|
throw new Error(_.str.sprintf(_t("'%s' is not a valid time"), str));
|
||||||
}
|
}
|
||||||
var obj = Date.parseExact("1970-01-01 " + res[1], 'yyyy-MM-dd HH:mm:ss');
|
var obj = Date.parseExact("1970-01-01 " + res[1], 'yyyy-MM-dd HH:mm:ss');
|
||||||
if (! obj) {
|
if (! obj) {
|
||||||
throw new Error("'" + str + "' is not a valid time");
|
throw new Error(_.str.sprintf(_t("'%s' is not a valid time"), str));
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
};
|
};
|
||||||
|
|
|
@ -224,7 +224,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
|
||||||
} while(tmp !== value);
|
} while(tmp !== value);
|
||||||
tmp = Number(value);
|
tmp = Number(value);
|
||||||
if (isNaN(tmp))
|
if (isNaN(tmp))
|
||||||
throw new Error(value + " is not a correct integer");
|
throw new Error(_.str.sprintf(_t("'%s' is not a correct integer"), value));
|
||||||
return tmp;
|
return tmp;
|
||||||
case 'float':
|
case 'float':
|
||||||
var tmp = Number(value);
|
var tmp = Number(value);
|
||||||
|
@ -239,7 +239,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
|
||||||
var reformatted_value = tmp.replace(instance.web._t.database.parameters.decimal_point, ".");
|
var reformatted_value = tmp.replace(instance.web._t.database.parameters.decimal_point, ".");
|
||||||
var parsed = Number(reformatted_value);
|
var parsed = Number(reformatted_value);
|
||||||
if (isNaN(parsed))
|
if (isNaN(parsed))
|
||||||
throw new Error(value + " is not a correct float");
|
throw new Error(_.str.sprintf(_t("'%s' is not a correct float"), value));
|
||||||
return parsed;
|
return parsed;
|
||||||
case 'float_time':
|
case 'float_time':
|
||||||
var factor = 1;
|
var factor = 1;
|
||||||
|
@ -263,7 +263,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
|
||||||
datetime = Date.parse(value);
|
datetime = Date.parse(value);
|
||||||
if (datetime !== null)
|
if (datetime !== null)
|
||||||
return instance.web.datetime_to_str(datetime);
|
return instance.web.datetime_to_str(datetime);
|
||||||
throw new Error(value + " is not a valid datetime");
|
throw new Error(_.str.sprintf(_t("'%s' is not a correct datetime"), value));
|
||||||
case 'date':
|
case 'date':
|
||||||
var date = Date.parseExact(value, date_pattern);
|
var date = Date.parseExact(value, date_pattern);
|
||||||
if (date !== null)
|
if (date !== null)
|
||||||
|
@ -271,7 +271,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
|
||||||
date = Date.parse(value);
|
date = Date.parse(value);
|
||||||
if (date !== null)
|
if (date !== null)
|
||||||
return instance.web.date_to_str(date);
|
return instance.web.date_to_str(date);
|
||||||
throw new Error(value + " is not a valid date");
|
throw new Error(_.str.sprintf(_t("'%s' is not a correct date"), value));
|
||||||
case 'time':
|
case 'time':
|
||||||
var time = Date.parseExact(value, time_pattern);
|
var time = Date.parseExact(value, time_pattern);
|
||||||
if (time !== null)
|
if (time !== null)
|
||||||
|
@ -279,7 +279,7 @@ instance.web.parse_value = function (value, descriptor, value_if_empty) {
|
||||||
time = Date.parse(value);
|
time = Date.parse(value);
|
||||||
if (time !== null)
|
if (time !== null)
|
||||||
return instance.web.time_to_str(time);
|
return instance.web.time_to_str(time);
|
||||||
throw new Error(value + " is not a valid time");
|
throw new Error(_.str.sprintf(_t("'%s' is not a correct time"), value));
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
@ -294,7 +294,7 @@ instance.web.auto_str_to_date = function(value, type) {
|
||||||
try {
|
try {
|
||||||
return instance.web.str_to_time(value);
|
return instance.web.str_to_time(value);
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
throw new Error("'" + value + "' is not a valid date, datetime nor time");
|
throw new Error(_.str.sprintf(_t("'%s' is not a correct date, datetime nor time"), value));
|
||||||
};
|
};
|
||||||
|
|
||||||
instance.web.auto_date_to_str = function(value, type) {
|
instance.web.auto_date_to_str = function(value, type) {
|
||||||
|
@ -306,7 +306,7 @@ instance.web.auto_date_to_str = function(value, type) {
|
||||||
case 'time':
|
case 'time':
|
||||||
return instance.web.time_to_str(value);
|
return instance.web.time_to_str(value);
|
||||||
default:
|
default:
|
||||||
throw new Error(type + " is not convertible to date, datetime nor time");
|
throw new Error(_.str.sprintf(_t("'%s' is not convertible to date, datetime nor time"), type));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||||
load_form: function(data) {
|
load_form: function(data) {
|
||||||
var self = this;
|
var self = this;
|
||||||
if (!data) {
|
if (!data) {
|
||||||
throw new Error("No data provided.");
|
throw new Error(_t("No data provided."));
|
||||||
}
|
}
|
||||||
if (this.arch) {
|
if (this.arch) {
|
||||||
throw "Form view does not support multiple calls to load_form";
|
throw "Form view does not support multiple calls to load_form";
|
||||||
|
@ -316,12 +316,12 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||||
var self = this, set_values = [];
|
var self = this, set_values = [];
|
||||||
if (!record) {
|
if (!record) {
|
||||||
this.set({ 'title' : undefined });
|
this.set({ 'title' : undefined });
|
||||||
this.do_warn("Form", "The record could not be found in the database.", true);
|
this.do_warn(_t("Form"), _t("The record could not be found in the database."), true);
|
||||||
return $.Deferred().reject();
|
return $.Deferred().reject();
|
||||||
}
|
}
|
||||||
this.datarecord = record;
|
this.datarecord = record;
|
||||||
this._actualize_mode();
|
this._actualize_mode();
|
||||||
this.set({ 'title' : record.id ? record.display_name : "New" });
|
this.set({ 'title' : record.id ? record.display_name : _t("New") });
|
||||||
|
|
||||||
_(this.fields).each(function (field, f) {
|
_(this.fields).each(function (field, f) {
|
||||||
field._dirty_flag = false;
|
field._dirty_flag = false;
|
||||||
|
@ -431,7 +431,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||||
var onchange = _.str.trim(on_change);
|
var onchange = _.str.trim(on_change);
|
||||||
var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
|
var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
|
||||||
if (!call) {
|
if (!call) {
|
||||||
throw new Error("Wrong on change format: " + onchange);
|
throw new Error(_.str.sprintf( _t("Wrong on change format: %s"), onchange ));
|
||||||
}
|
}
|
||||||
|
|
||||||
var method = call[1];
|
var method = call[1];
|
||||||
|
@ -872,7 +872,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||||
}).value();
|
}).value();
|
||||||
warnings.unshift('<ul>');
|
warnings.unshift('<ul>');
|
||||||
warnings.push('</ul>');
|
warnings.push('</ul>');
|
||||||
this.do_warn("The following fields are invalid :", warnings.join(''));
|
this.do_warn(_t("The following fields are invalid:", warnings.join(''));
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Reload the form after saving
|
* Reload the form after saving
|
||||||
|
@ -1241,11 +1241,11 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
|
||||||
_.each(this.fields_to_init, function($elem) {
|
_.each(this.fields_to_init, function($elem) {
|
||||||
var name = $elem.attr("name");
|
var name = $elem.attr("name");
|
||||||
if (!self.fvg.fields[name]) {
|
if (!self.fvg.fields[name]) {
|
||||||
throw new Error("Field '" + name + "' specified in view could not be found.");
|
throw new Error(_.str.sprintf(_t("Field '%s' specified in view could not be found."), name));
|
||||||
}
|
}
|
||||||
var obj = self.fields_registry.get_any([$elem.attr('widget'), self.fvg.fields[name].type]);
|
var obj = self.fields_registry.get_any([$elem.attr('widget'), self.fvg.fields[name].type]);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
throw new Error("Widget type '"+ $elem.attr('widget') + "' is not implemented");
|
throw new Error(_.str.sprintf(_t("Widget type '%s' is not implemented"), $elem.attr('widget')));
|
||||||
}
|
}
|
||||||
var w = new (obj)(self.view, instance.web.xml_to_json($elem[0]));
|
var w = new (obj)(self.view, instance.web.xml_to_json($elem[0]));
|
||||||
var $label = self.labels[$elem.attr("name")];
|
var $label = self.labels[$elem.attr("name")];
|
||||||
|
@ -2319,7 +2319,7 @@ instance.web.form.FieldEmail = instance.web.form.FieldChar.extend({
|
||||||
},
|
},
|
||||||
on_button_clicked: function() {
|
on_button_clicked: function() {
|
||||||
if (!this.get('value') || !this.is_syntax_valid()) {
|
if (!this.get('value') || !this.is_syntax_valid()) {
|
||||||
this.do_warn("E-mail error", "Can't send email to invalid e-mail address");
|
this.do_warn(_t("E-mail error"), _t("Can't send email to invalid e-mail address"));
|
||||||
} else {
|
} else {
|
||||||
location.href = 'mailto:' + this.get('value');
|
location.href = 'mailto:' + this.get('value');
|
||||||
}
|
}
|
||||||
|
@ -2348,7 +2348,7 @@ instance.web.form.FieldUrl = instance.web.form.FieldChar.extend({
|
||||||
},
|
},
|
||||||
on_button_clicked: function() {
|
on_button_clicked: function() {
|
||||||
if (!this.get('value')) {
|
if (!this.get('value')) {
|
||||||
this.do_warn("Resource error", "This resource is empty");
|
this.do_warn(_t("Resource error"), _t("This resource is empty"));
|
||||||
} else {
|
} else {
|
||||||
var url = $.trim(this.get('value'));
|
var url = $.trim(this.get('value'));
|
||||||
if(/^www\./i.test(url))
|
if(/^www\./i.test(url))
|
||||||
|
@ -3385,7 +3385,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
||||||
var views = [];
|
var views = [];
|
||||||
_.each(modes, function(mode) {
|
_.each(modes, function(mode) {
|
||||||
if (! _.include(["list", "tree", "graph", "kanban"], mode)) {
|
if (! _.include(["list", "tree", "graph", "kanban"], mode)) {
|
||||||
throw new Error(_.str.sprintf("View type '%s' is not supported in One2Many.", mode));
|
throw new Error(_.str.sprintf(_t("View type '%s' is not supported in One2Many."), mode));
|
||||||
}
|
}
|
||||||
var view = {
|
var view = {
|
||||||
view_id: false,
|
view_id: false,
|
||||||
|
@ -4840,7 +4840,7 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
|
||||||
},
|
},
|
||||||
on_file_uploaded: function(size, name, content_type, file_base64) {
|
on_file_uploaded: function(size, name, content_type, file_base64) {
|
||||||
if (size === false) {
|
if (size === false) {
|
||||||
this.do_warn("File Upload", "There was a problem while uploading your file");
|
this.do_warn(_t("File Upload"), _t("There was a problem while uploading your file"));
|
||||||
// TODO: use openerp web crashmanager
|
// TODO: use openerp web crashmanager
|
||||||
console.warn("Error while uploading file : ", name);
|
console.warn("Error while uploading file : ", name);
|
||||||
} else {
|
} else {
|
||||||
|
@ -5009,7 +5009,7 @@ instance.web.form.FieldMany2ManyBinaryMultiFiles = instance.web.form.AbstractFie
|
||||||
this.field_manager = field_manager;
|
this.field_manager = field_manager;
|
||||||
this.node = node;
|
this.node = node;
|
||||||
if(this.field.type != "many2many" || this.field.relation != 'ir.attachment') {
|
if(this.field.type != "many2many" || this.field.relation != 'ir.attachment') {
|
||||||
throw "The type of the field '"+this.field.string+"' must be a many2many field with a relation to 'ir.attachment' model.";
|
throw _.str.sprintf(_t("The type of the field '%s' must be a many2many field with a relation to 'ir.attachment' model."), this.field.string);
|
||||||
}
|
}
|
||||||
this.ds_file = new instance.web.DataSetSearch(this, 'ir.attachment');
|
this.ds_file = new instance.web.DataSetSearch(this, 'ir.attachment');
|
||||||
this.fileupload_id = _.uniqueId('oe_fileupload_temp');
|
this.fileupload_id = _.uniqueId('oe_fileupload_temp');
|
||||||
|
|
|
@ -389,7 +389,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
|
||||||
if (range_stop > total) {
|
if (range_stop > total) {
|
||||||
range_stop = total;
|
range_stop = total;
|
||||||
}
|
}
|
||||||
spager = _.str.sprintf('%d-%d of %d', range_start, range_stop, total);
|
spager = _.str.sprintf(_t("%d-%d of %d"), range_start, range_stop, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$pager.find('.oe_list_pager_state').text(spager);
|
this.$pager.find('.oe_list_pager_state').text(spager);
|
||||||
|
@ -887,8 +887,8 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
|
||||||
var $row;
|
var $row;
|
||||||
if (attribute === 'id') {
|
if (attribute === 'id') {
|
||||||
if (old_value) {
|
if (old_value) {
|
||||||
throw new Error("Setting 'id' attribute on existing record "
|
throw new Error(_.str.sprintf( _t("Setting 'id' attribute on existing record %s"),
|
||||||
+ JSON.stringify(record.attributes));
|
JSON.stringify(record.attributes) ));
|
||||||
}
|
}
|
||||||
if (!_.contains(self.dataset.ids, value)) {
|
if (!_.contains(self.dataset.ids, value)) {
|
||||||
// add record to dataset if not already in (added by
|
// add record to dataset if not already in (added by
|
||||||
|
@ -956,7 +956,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
|
||||||
if (row_id) {
|
if (row_id) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
if (!self.dataset.select_id(row_id)) {
|
if (!self.dataset.select_id(row_id)) {
|
||||||
throw new Error("Could not find id in dataset");
|
throw new Error(_t("Could not find id in dataset"));
|
||||||
}
|
}
|
||||||
self.row_clicked(e);
|
self.row_clicked(e);
|
||||||
}
|
}
|
||||||
|
@ -1016,7 +1016,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
|
||||||
var command = value[0];
|
var command = value[0];
|
||||||
// 1. an array of m2m commands (usually (6, false, ids))
|
// 1. an array of m2m commands (usually (6, false, ids))
|
||||||
if (command[0] !== 6) {
|
if (command[0] !== 6) {
|
||||||
throw new Error(_t("Unknown m2m command ") + command[0]);
|
throw new Error(_.str.sprintf( _t("Unknown m2m command %s"), command[0]));
|
||||||
}
|
}
|
||||||
ids = command[2];
|
ids = command[2];
|
||||||
} else {
|
} else {
|
||||||
|
@ -1324,7 +1324,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
|
||||||
}
|
}
|
||||||
// group_label is html-clean (through format or explicit
|
// group_label is html-clean (through format or explicit
|
||||||
// escaping if format failed), can inject straight into HTML
|
// escaping if format failed), can inject straight into HTML
|
||||||
$group_column.html(_.str.sprintf("%s (%d)",
|
$group_column.html(_.str.sprintf(_t("%s (%d)"),
|
||||||
group_label, group.length));
|
group_label, group.length));
|
||||||
|
|
||||||
if (group.length && group.openable) {
|
if (group.length && group.openable) {
|
||||||
|
@ -1743,7 +1743,7 @@ var Record = instance.web.Class.extend(/** @lends Record# */{
|
||||||
} else if (val instanceof Array) {
|
} else if (val instanceof Array) {
|
||||||
output[k] = val[0];
|
output[k] = val[0];
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Can't convert value " + val + " to context");
|
throw new Error(_.str.sprintf(_t("Can't convert value %s to context"), val));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
|
|
|
@ -3,7 +3,9 @@
|
||||||
* @namespace
|
* @namespace
|
||||||
*/
|
*/
|
||||||
openerp.web.list_editable = function (instance) {
|
openerp.web.list_editable = function (instance) {
|
||||||
// editability status of list rows
|
var _t = instance.web._t;
|
||||||
|
|
||||||
|
// editability status of list rows
|
||||||
instance.web.ListView.prototype.defaults.editable = null;
|
instance.web.ListView.prototype.defaults.editable = null;
|
||||||
|
|
||||||
// TODO: not sure second @lends on existing item is correct, to check
|
// TODO: not sure second @lends on existing item is correct, to check
|
||||||
|
@ -775,7 +777,7 @@ openerp.web.list_editable = function (instance) {
|
||||||
cancel: function (force) {
|
cancel: function (force) {
|
||||||
if (!(force || this.form.can_be_discarded())) {
|
if (!(force || this.form.can_be_discarded())) {
|
||||||
return $.Deferred().reject({
|
return $.Deferred().reject({
|
||||||
message: "The form's data can not be discarded"}).promise();
|
message: _t("The form's data can not be discarded")}).promise();
|
||||||
}
|
}
|
||||||
var record = this.record;
|
var record = this.record;
|
||||||
this.record = null;
|
this.record = null;
|
||||||
|
|
|
@ -786,7 +786,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
|
||||||
break;
|
break;
|
||||||
case 'tests':
|
case 'tests':
|
||||||
this.do_action({
|
this.do_action({
|
||||||
name: "JS Tests",
|
name: _t("JS Tests"),
|
||||||
target: 'new',
|
target: 'new',
|
||||||
type : 'ir.actions.act_url',
|
type : 'ir.actions.act_url',
|
||||||
url: '/web/tests?mod=*'
|
url: '/web/tests?mod=*'
|
||||||
|
@ -814,7 +814,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
|
||||||
break;
|
break;
|
||||||
case 'translate':
|
case 'translate':
|
||||||
this.do_action({
|
this.do_action({
|
||||||
name: "Technical Translation",
|
name: _t("Technical Translation"),
|
||||||
res_model : 'ir.translation',
|
res_model : 'ir.translation',
|
||||||
domain : [['type', '!=', 'object'], '|', ['name', '=', this.dataset.model], ['name', 'ilike', this.dataset.model + ',']],
|
domain : [['type', '!=', 'object'], '|', ['name', '=', this.dataset.model], ['name', 'ilike', this.dataset.model + ',']],
|
||||||
views: [[false, 'list'], [false, 'form']],
|
views: [[false, 'list'], [false, 'form']],
|
||||||
|
@ -1395,7 +1395,7 @@ instance.web.json_node_to_xml = function(node, human_readable, indent) {
|
||||||
return sindent + node;
|
return sindent + node;
|
||||||
} else if (typeof(node.tag) !== 'string' || !node.children instanceof Array || !node.attrs instanceof Object) {
|
} else if (typeof(node.tag) !== 'string' || !node.children instanceof Array || !node.attrs instanceof Object) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
_.str.sprintf("Node [%s] is not a JSONified XML node",
|
_.str.sprintf(_t("Node [%s] is not a JSONified XML node"),
|
||||||
JSON.stringify(node)));
|
JSON.stringify(node)));
|
||||||
}
|
}
|
||||||
for (var attr in node.attrs) {
|
for (var attr in node.attrs) {
|
||||||
|
@ -1429,7 +1429,7 @@ instance.web.xml_to_str = function(node) {
|
||||||
} else if (window.ActiveXObject) {
|
} else if (window.ActiveXObject) {
|
||||||
return node.xml;
|
return node.xml;
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Could not serialize XML");
|
throw new Error(_t("Could not serialize XML"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
instance.web.str_to_xml = function(s) {
|
instance.web.str_to_xml = function(s) {
|
||||||
|
@ -1437,7 +1437,7 @@ instance.web.str_to_xml = function(s) {
|
||||||
var dp = new DOMParser();
|
var dp = new DOMParser();
|
||||||
var r = dp.parseFromString(s, "text/xml");
|
var r = dp.parseFromString(s, "text/xml");
|
||||||
if (r.body && r.body.firstChild && r.body.firstChild.nodeName == 'parsererror') {
|
if (r.body && r.body.firstChild && r.body.firstChild.nodeName == 'parsererror') {
|
||||||
throw new Error("Could not parse string to xml");
|
throw new Error(_t("Could not parse string to xml"));
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -1445,7 +1445,7 @@ instance.web.str_to_xml = function(s) {
|
||||||
try {
|
try {
|
||||||
xDoc = new ActiveXObject("MSXML2.DOMDocument");
|
xDoc = new ActiveXObject("MSXML2.DOMDocument");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("Could not find a DOM Parser: " + e.message);
|
throw new Error(_.str.sprintf( _t("Could not find a DOM Parser: %s"), e.message));
|
||||||
}
|
}
|
||||||
xDoc.async = false;
|
xDoc.async = false;
|
||||||
xDoc.preserveWhiteSpace = true;
|
xDoc.preserveWhiteSpace = true;
|
||||||
|
|
|
@ -88,7 +88,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
|
||||||
this.fields = this.fields_view.fields;
|
this.fields = this.fields_view.fields;
|
||||||
|
|
||||||
if (!this.date_start) {
|
if (!this.date_start) {
|
||||||
throw new Error("Calendar view has not defined 'date_start' attribute.");
|
throw new Error(_t("Calendar view has not defined 'date_start' attribute."));
|
||||||
}
|
}
|
||||||
|
|
||||||
//* Calendar Fields *
|
//* Calendar Fields *
|
||||||
|
@ -96,7 +96,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
|
||||||
|
|
||||||
if (this.date_delay) {
|
if (this.date_delay) {
|
||||||
if (this.fields[this.date_delay].type != 'float') {
|
if (this.fields[this.date_delay].type != 'float') {
|
||||||
throw new Error("Calendar view has a 'date_delay' type != float");
|
throw new Error(_t("Calendar view has a 'date_delay' type != float"));
|
||||||
}
|
}
|
||||||
this.calendar_fields.date_delay = {'name': this.date_delay, 'kind': this.fields[this.date_delay].type};
|
this.calendar_fields.date_delay = {'name': this.date_delay, 'kind': this.fields[this.date_delay].type};
|
||||||
}
|
}
|
||||||
|
|
|
@ -409,7 +409,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
|
||||||
new_group.do_save_sequences();
|
new_group.do_save_sequences();
|
||||||
}).fail(function(error, evt) {
|
}).fail(function(error, evt) {
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
alert("An error has occured while moving the record to this group.");
|
alert(_t("An error has occured while moving the record to this group."));
|
||||||
self.do_reload(); // TODO: use draggable + sortable in order to cancel the dragging when the rcp fails
|
self.do_reload(); // TODO: use draggable + sortable in order to cancel the dragging when the rcp fails
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
msg += "</ul>";
|
msg += "</ul>";
|
||||||
this.do_warn("The following fields are invalid :", msg);
|
this.do_warn(_t("The following fields are invalid :"), msg);
|
||||||
},
|
},
|
||||||
add_node_name : function(node) {
|
add_node_name : function(node) {
|
||||||
if(node.tagName.toLowerCase() == "button" || node.tagName.toLowerCase() == "field"){
|
if(node.tagName.toLowerCase() == "button" || node.tagName.toLowerCase() == "field"){
|
||||||
|
@ -260,7 +260,7 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
|
||||||
"arch": view_arch_list});
|
"arch": view_arch_list});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
self.do_warn("Please select view in list :");
|
self.do_warn(_t("Please select view in list :"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -387,10 +387,10 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
|
||||||
self.inherited_view(selected_row);
|
self.inherited_view(selected_row);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
alert("Can't Update View");
|
alert(_t("Can't Update View"));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
alert("Select an element");
|
alert(_t("Select an element"));
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
{text: _t("Preview"), click: function() {
|
{text: _t("Preview"), click: function() {
|
||||||
|
@ -983,7 +983,7 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
|
||||||
} else {
|
} else {
|
||||||
table_selector.append('<td align="right">' + node.string + '</td>' + type_widget.render() );
|
table_selector.append('<td align="right">' + node.string + '</td>' + type_widget.render() );
|
||||||
if (node.name == "field_value") {
|
if (node.name == "field_value") {
|
||||||
table_selector.append('<td id="new_field" align="right" width="100px"> <button>New Field</button></td>');
|
table_selector.append('<td id="new_field" align="right" width="100px"> <button>' + _t("New Field") + '</button></td>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
type_widget.start();
|
type_widget.start();
|
||||||
|
|
Loading…
Reference in New Issue