diff options
| author | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
| commit | a61e7cb0c80ae773cab9753bd8a4e7e888bbf415 (patch) | |
| tree | 019a235869a5e087055700895d4584c80e2f9afb /addons | |
| parent | 5ed0ac2614b9430e61dae472d657a21c037d6ee9 (diff) | |
| parent | 180e6e41d81e28df43b41e3cb6131225d4169a28 (diff) | |
[MERGE] forward port of branch saas-1 up to revid 4887 chs@openerp.com-20130612153934-qyp6pb3bc4za4taf
bzr revid: chs@openerp.com-20130613172414-dln3g4j0ykcwaa02
bzr revid: chs@openerp.com-20130613173900-xl7rh321nnw2b04b
Diffstat (limited to 'addons')
238 files changed, 814 insertions, 588 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 8683ef177bc..1bcdb7f54a9 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -32,6 +32,7 @@ except ImportError: import openerp import openerp.modules.registry from openerp.tools.translate import _ +from openerp.tools import config from .. import http openerpweb = http @@ -86,9 +87,9 @@ def rjsmin(script): ).strip() return result -def db_list(): +def db_list(force=False): proxy = req.session.proxy("db") - dbs = proxy.list() + dbs = proxy.list(force) h = req.httprequest.environ['HTTP_HOST'].split(':')[0] d = h.split('.')[0] r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d) @@ -104,25 +105,21 @@ def db_monodb_redirect(): if db_url: return (db_url, False) - try: - dbs = db_list() - except Exception: - # ignore access denied - dbs = [] + dbs = db_list(True) # 2 use the database from the cookie if it's listable and still listed cookie_db = req.httprequest.cookies.get('last_used_database') if cookie_db in dbs: db = cookie_db - # 3 use the first db - if dbs and not db: + # 3 use the first db if user can list databases + if dbs and not db and (config['list_db'] or len(dbs) == 1): db = dbs[0] # redirect to the chosen db if multiple are available if db and len(dbs) > 1: query = dict(urlparse.parse_qsl(req.httprequest.query_string, keep_blank_values=True)) - query.update({ 'db': db }) + query.update({'db': db}) redirect = req.httprequest.path + '?' + urllib.urlencode(query) return (db, redirect) @@ -283,8 +280,9 @@ def concat_files(file_list, reader=None, intersperse=""): if reader is None: def reader(f): - with open(f, 'rb') as fp: - return fp.read() + import codecs + with codecs.open(f, 'rb', "utf-8-sig") as fp: + return fp.read().encode("utf-8") files_content = [] for fname in file_list: @@ -766,7 +764,14 @@ class Database(openerpweb.Controller): @openerpweb.jsonrequest def get_list(self): - return db_list() + # TODO change js to avoid calling this method if in monodb mode + try: + return db_list() + except openerp.exceptions.AccessDenied: + monodb = db_monodb(req) + if monodb: + return [monodb] + raise @openerpweb.jsonrequest def create(self, fields): @@ -781,20 +786,11 @@ class Database(openerpweb.Controller): @openerpweb.jsonrequest def duplicate(self, fields): params = dict(map(operator.itemgetter('name', 'value'), fields)) - return req.session.proxy("db").duplicate_database( - params['super_admin_pwd'], - params['db_original_name'], - params['db_name']) - - @openerpweb.jsonrequest - def duplicate(self, fields): - params = dict(map(operator.itemgetter('name', 'value'), fields)) duplicate_attrs = ( params['super_admin_pwd'], params['db_original_name'], params['db_name'], ) - return req.session.proxy("db").duplicate_database(*duplicate_attrs) @openerpweb.jsonrequest @@ -802,9 +798,9 @@ class Database(openerpweb.Controller): password, db = operator.itemgetter( 'drop_pwd', 'drop_db')( dict(map(operator.itemgetter('name', 'value'), fields))) - + try: - return req.session.proxy("db").drop(password, db) + if req.session.proxy("db").drop(password, db):return True except openerp.exceptions.AccessDenied: return {'error': 'AccessDenied', 'title': 'Drop Database'} except Exception: @@ -1380,7 +1376,7 @@ class Binary(openerpweb.Controller): else: try: # create an empty registry - registry = openerp.modules.registry.Registry(dbname.lower()) + registry = openerp.modules.registry.Registry(dbname) with registry.cursor() as cr: cr.execute("""SELECT c.logo_web FROM res_users u @@ -1490,6 +1486,8 @@ class Export(openerpweb.Controller): if all(dict(attrs).get('readonly', True) for attrs in field.get('states', {}).values()): continue + if not field.get('exportable', True): + continue id = prefix + (prefix and '/'or '') + field_name name = parent_name + (parent_name and '/' or '') + field['string'] diff --git a/addons/web/doc/_static/openerp.png b/addons/web/doc/_static/openerp.png Binary files differindex d6dbd9d83d1..caa1b21d8d7 100644 --- a/addons/web/doc/_static/openerp.png +++ b/addons/web/doc/_static/openerp.png diff --git a/addons/web/http.py b/addons/web/http.py index 2dc41c8cad9..5872e80685b 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -537,9 +537,13 @@ class DisableCacheMiddleware(object): def session_path(): try: - username = getpass.getuser() - except Exception: - username = "unknown" + import pwd + username = pwd.getpwuid(os.geteuid()).pw_name + except ImportError: + try: + username = getpass.getuser() + except Exception: + username = "unknown" path = os.path.join(tempfile.gettempdir(), "oe-sessions-" + username) try: os.mkdir(path, 0700) diff --git a/addons/web/session.py b/addons/web/session.py index 13c3bc7cb94..65f5fdc2a62 100644 --- a/addons/web/session.py +++ b/addons/web/session.py @@ -1,4 +1,3 @@ -#!/usr/bin/python import datetime import babel import dateutil.relativedelta diff --git a/addons/web/static/lib/cleditor/jquery.cleditor.js b/addons/web/static/lib/cleditor/jquery.cleditor.js index e3446991daf..3de9089443d 100644 --- a/addons/web/static/lib/cleditor/jquery.cleditor.js +++ b/addons/web/static/lib/cleditor/jquery.cleditor.js @@ -296,6 +296,11 @@ // Bind the window resize event when the width or height is auto or %
if (/auto|%/.test("" + options.width + options.height))
$(window).resize(function() {
+ //Forcefully blurred iframe contentWindow, chrome, IE, safari doesn't trigger blur on window resize and due to which text disappears
+ var contentWindow = editor.$frame[0].contentWindow;
+ if(!$.browser.mozilla && contentWindow){
+ $(contentWindow).trigger('blur');
+ }
// CHM Note MonkeyPatch: if the DOM is not remove, refresh the cleditor
if(editor.$main.parent().parent().size()) {
refresh(editor);
diff --git a/addons/web/static/lib/datejs/date.js b/addons/web/static/lib/datejs/date.js index eda450113bb..96b96924da4 100644 --- a/addons/web/static/lib/datejs/date.js +++ b/addons/web/static/lib/datejs/date.js @@ -7,7 +7,7 @@ * date.js // English (United States)
* date-en-US.js // English (United States)
* date-de-DE.js // Deutsch (Deutschland)
- * date-es-MX.js // français (France)
+ * date-es-MX.js // français (France)
*/
alert(
@@ -17,5 +17,5 @@ alert( " date.js // English (United States)\n" +
" date-en-US.js // English (United States)\n" +
" date-de-DE.js // Deutsch (Deutschland)\n" +
- " date-es-MX.js // français (France)\n"
+ " date-es-MX.js // français (France)\n"
);
\ No newline at end of file diff --git a/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js b/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js index d8051fa269d..d8051fa269d 100755..100644 --- a/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js +++ b/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png Binary files differindex 5b5dab2ab7b..e425e6e46eb 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png Binary files differindex ad3d6346e00..3b2914a2db9 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png Binary files differindex 42ccba269b6..e7d01fac6a7 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png Binary files differindex 5a46b47cb16..22641ccb51c 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png Binary files differindex 86c2baa655e..c0911d8cd44 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png Binary files differindex e65ca1297c7..d45b4160fa9 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary files differindex 7c9fa6c6edc..3cd467e18ef 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png Binary files differindex 0e05810fffe..06a6708da17 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png Binary files differindex b273ff111d2..e913bce11f7 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png Binary files differindex 09d1cdc856c..34e38d1146e 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png Binary files differindex 59bd45b907c..1486b0cfc2e 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png Binary files differindex 6d02426c114..ae855c08a0e 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png Binary files differindex 2ab019b73ec..9e8939e38f8 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png Binary files differindex c9869351a73..68d801e2563 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png Binary files differindex 5b5dab2ab7b..e425e6e46eb 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png Binary files differindex ac8b229af95..72d4757363c 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png Binary files differindex b39a6fb27ff..e3fcd7c9898 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png Binary files differindex 42ccba269b6..e7d01fac6a7 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png Binary files differindex 5a46b47cb16..22641ccb51c 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png Binary files differindex 86c2baa655e..c0911d8cd44 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png Binary files differindex 4443fdc1a15..5fd6c50c715 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary files differindex 7c9fa6c6edc..3cd467e18ef 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png Binary files differindex b273ff111d2..e913bce11f7 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png Binary files differindex 84defe6e8ab..34e38d1146e 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png Binary files differindex 59bd45b907c..1486b0cfc2e 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png Binary files differindex 6d02426c114..ae855c08a0e 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png Binary files differindex 2ab019b73ec..9e8939e38f8 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png diff --git a/addons/web/static/lib/py.js/.hg_archival.txt b/addons/web/static/lib/py.js/.hg_archival.txt index 1d47dff4445..94f4a9ad6e8 100644 --- a/addons/web/static/lib/py.js/.hg_archival.txt +++ b/addons/web/static/lib/py.js/.hg_archival.txt @@ -1,5 +1,5 @@ repo: 076b192d0d8ab2b92d1dbcfa3da055382f30eaea -node: 142c22b230636674a0cee6bc29e6975f0f1600a5 +node: 7ee0bc7b4e9138f485cdc9ec791961d8ef452f17 branch: default latesttag: 0.7 -latesttagdistance: 9 +latesttagdistance: 11 diff --git a/addons/web/static/lib/py.js/lib/py.js b/addons/web/static/lib/py.js/lib/py.js index 8d6443b7753..2c738dc95d1 100644 --- a/addons/web/static/lib/py.js/lib/py.js +++ b/addons/web/static/lib/py.js/lib/py.js @@ -273,7 +273,7 @@ var py = {}; var Special = '[:;.,`@]'; var Funny = group(Operator, Bracket, Special); - var ContStr = group("[uU]?'([^']*)'", '[uU]?"([^"]*)"'); + var ContStr = group("([uU])?'([^']*)'", '([uU])?"([^"]*)"'); var PseudoToken = Whitespace + group(Number, Funny, ContStr, Name); @@ -311,7 +311,8 @@ var py = {}; } else if (string_pattern.test(token)) { var m = string_pattern.exec(token); tokens.push(create(symbols['(string)'], { - value: (m[2] !== undefined ? m[2] : m[3]) + unicode: !!(m[2] || m[4]), + value: (m[3] !== undefined ? m[3] : m[5]) })); } else if (token in symbols) { var symbol; @@ -393,13 +394,14 @@ var py = {}; switch(val.constructor) { case Object: - var out = py.PY_call(py.object); - for(var k in val) { - if (val.hasOwnProperty(k)) { - out[k] = val[k]; + // TODO: why py.object instead of py.dict? + var o = py.PY_call(py.object); + for (var prop in val) { + if (val.hasOwnProperty(prop)) { + o[prop] = val[prop]; } } - return out; + return o; case Array: return py.list.fromJSON(val); } @@ -521,7 +523,7 @@ var py = {}; } }; py.PY_getAttr = function (o, attr_name) { - return PY_ensurepy(o.__getattribute__(attr_name),attr_name); + return PY_ensurepy(o.__getattribute__(attr_name)); }; py.PY_str = function (o) { var v = o.__str__(); @@ -762,14 +764,7 @@ var py = {}; // Conversion toJSON: function () { - var out = {}; - for(var k in this) { - if (this.hasOwnProperty(k) && !/^__/.test(k)) { - var val = this[k]; - out[k] = val.toJSON ? val.toJSON() : val; - } - } - return out; + throw new Error(this.constructor.name + ' can not be converted to JSON'); } }); var NoneType = py.type('NoneType', null, { @@ -998,7 +993,7 @@ var py = {}; } var t = py.PY_call(py.tuple); for(var i=0; i<ar.length; ++i) { - t._values.push(PY_ensurepy(ar[i],i)); + t._values.push(PY_ensurepy(ar[i])); } return t; } @@ -1032,7 +1027,7 @@ var py = {}; if (!d.hasOwnProperty(k)) { continue; } instance.__setitem__( py.str.fromJSON(k), - PY_ensurepy(d[k],k)); + PY_ensurepy(d[k])); } return instance; }, @@ -1108,6 +1103,114 @@ var py = {}; }); + /** + * Implements the decoding of Python string literals (embedded in + * JS strings) into actual JS strings. This includes the decoding + * of escapes into their corresponding JS + * characters/codepoints/whatever. + * + * The ``unicode`` flags notes whether the literal should be + * decoded as a bytestring literal or a unicode literal, which + * pretty much only impacts decoding (or not) of unicode escapes + * at this point since bytestrings are not technically handled + * (everything is decoded to JS "unicode" strings) + * + * Eventurally, ``str`` could eventually use typed arrays, that'd + * be interesting... + */ + var PY_decode_string_literal = function (str, unicode) { + var out = [], code; + // Directly maps a single escape code to an output + // character + var direct_map = { + '\\': '\\', + '"': '"', + "'": "'", + 'a': '\x07', + 'b': '\x08', + 'f': '\x0c', + 'n': '\n', + 'r': '\r', + 't': '\t', + 'v': '\v' + }; + + for (var i=0; i<str.length; ++i) { + if (str[i] !== '\\') { + out.push(str[i]); + continue; + } + var escape = str[i+1]; + if (escape in direct_map) { + out.push(direct_map[escape]); + ++i; + continue; + } + + switch (escape) { + // Ignored + case '\n': ++i; continue; + // Character named name in the Unicode database (Unicode only) + case 'N': + if (!unicode) { break; } + throw Error("SyntaxError: \\N{} escape not implemented"); + case 'u': + if (!unicode) { break; } + var uni = str.slice(i+2, i+6); + if (!/[0-9a-f]{4}/i.test(uni)) { + throw new Error([ + "SyntaxError: (unicode error) 'unicodeescape' codec", + " can't decode bytes in position ", + i, "-", i+4, + ": truncated \\uXXXX escape" + ].join('')); + } + code = parseInt(uni, 16); + out.push(String.fromCharCode(code)); + // escape + 4 hex digits + i += 5; + continue; + case 'U': + if (!unicode) { break; } + // TODO: String.fromCodePoint + throw Error("SyntaxError: \\U escape not implemented"); + case 'x': + // get 2 hex digits + var hex = str.slice(i+2, i+4); + if (!/[0-9a-f]{2}/i.test(hex)) { + if (!unicode) { + throw new Error('ValueError: invalid \\x escape'); + } + throw new Error([ + "SyntaxError: (unicode error) 'unicodeescape'", + " codec can't decode bytes in position ", + i, '-', i+2, + ": truncated \\xXX escape" + ].join('')) + } + code = parseInt(hex, 16); + out.push(String.fromCharCode(code)); + // skip escape + 2 hex digits + i += 3; + continue; + default: + // Check if octal + if (!/[0-8]/.test(escape)) { break; } + var r = /[0-8]{1,3}/g; + r.lastIndex = i+1; + var m = r.exec(str); + var oct = m[0]; + code = parseInt(oct, 8); + out.push(String.fromCharCode(code)); + // skip matchlength + i += oct.length; + continue; + } + out.push('\\'); + } + + return out.join(''); + }; // All binary operators with fallbacks, so they can be applied generically var PY_operators = { '==': ['eq', 'eq', function (a, b) { return a === b; }], @@ -1217,7 +1320,8 @@ var py = {}; } return PY_ensurepy(val, expr.value); case '(string)': - return py.str.fromJSON(expr.value); + return py.str.fromJSON(PY_decode_string_literal( + expr.value, expr.unicode)); case '(number)': return py.float.fromJSON(expr.value); case '(constant)': diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 863b90a0f38..74e027d3a0b 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -579,6 +579,9 @@ .openerp .oe_tags .text-wrap textarea { width: 100% !important; } +.openerp .oe_tags .text-core { + min-height: 22px; +} .openerp .oe_tags .text-core .text-wrap .text-dropdown .text-list .text-suggestion em { font-style: italic; text-decoration: none; @@ -698,7 +701,6 @@ display: none; position: absolute; top: 26px; - left: 0; z-index: 3; margin: 0; padding: 0; @@ -1695,14 +1697,14 @@ top: 0; right: 18px; width: 15px; - height: 100%; + height: 24px; background: url(../img/search_reset.gif) center center no-repeat; } .openerp .oe_searchview .oe_searchview_unfold_drawer { position: absolute; top: 0; right: 0; - height: 100%; + height: 24px; padding: 0 7px 0 4px; color: #cccccc; cursor: pointer; @@ -1751,7 +1753,7 @@ } .openerp .oe_searchview .oe_searchview_facets { min-height: 22px; - margin-left: 15px; + margin: 0 35px 0 15px; } .openerp .oe_searchview .oe_searchview_facets * { vertical-align: top; @@ -1759,7 +1761,6 @@ line-height: 17px; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { - height: 18px; margin: 1px 0; font-size: 11px; } @@ -1838,6 +1839,7 @@ display: block; } .openerp .oe_searchview .oe_searchview_drawer { + cursor: default; position: absolute; z-index: 2; margin-top: 4px; @@ -1990,7 +1992,6 @@ padding: 0; } .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced li { - cursor: pointer; position: relative; list-style: none; margin: 0; @@ -2147,13 +2148,12 @@ .openerp .oe_form_readonly .oe_form .oe_form_field_date { width: auto; } -.openerp .oe_form_readonly .oe_form_field_boolean .boolean{ +.openerp .oe_form_readonly .oe_form_field_boolean.boolean { position: relative; - top: -14px; + top: -20px; width: 14px; height: 14px; - z-index:10000; - /* IE needs a color in order for the layer to respond to mouse events */ + z-index: 10000; backgroundColor: "#fff"; opacity: 0; } @@ -2395,6 +2395,9 @@ .openerp .oe_form .oe_form_field_selection select { width: 100%; } +.openerp .oe_form .oe_notebook_page .oe_form_field_text textarea { + min-height: 96px; +} .openerp .oe_form .oe_form_field_text.oe_inline, .openerp .oe_form .oe_form_field_text.oe_inline > textarea { width: 500px; } @@ -2509,6 +2512,10 @@ margin-bottom: 32px; text-align: justify; } +.openerp .oe_form .oe_form_field_html .oe_input_icon { + float: right; + margin: 4px 7px; +} .openerp .oe_form_editable .oe_form .oe_form_field_integer input { width: 6em; } @@ -2997,7 +3004,6 @@ position: relative; } .openerp .oe_list_content th.oe_sortable div:after { - float: right; margin-right: 6px; content: ""; margin-top: 7px; @@ -3007,6 +3013,7 @@ visibility: hidden; } .openerp .oe_list_content th.sortup div:after { + float: right; visibility: visible; filter: alpha(opacity=60); opacity: 0.6; @@ -3015,6 +3022,7 @@ min-width: 70px; } .openerp .oe_list_content th.sortdown div:after { + float: right; border-bottom: none; border-left: 4px solid transparent; border-right: 4px solid transparent; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 240dc912206..fc812729cd4 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -511,9 +511,11 @@ $sheet-padding: 16px width: 100% !important textarea width: 100% !important - .text-core .text-wrap .text-dropdown .text-list .text-suggestion em - font-style: italic - text-decoration: none + .text-core + min-height: 22px + .text-wrap .text-dropdown .text-list .text-suggestion em + font-style: italic + text-decoration: none margin-bottom: 1px // }}} // Tooltips {{{ @@ -605,7 +607,6 @@ $sheet-padding: 16px display: none position: absolute top: 26px - left: 0 z-index: 3 margin: 0 padding: 0 @@ -1358,13 +1359,13 @@ $sheet-padding: 16px top: 0 right: 18px width: 15px - height: 100% + height: 24px background: url(../img/search_reset.gif) center center no-repeat .oe_searchview_unfold_drawer position: absolute top: 0 right: 0 - height: 100% + height: 24px padding: 0 7px 0 4px color: #ccc cursor: pointer @@ -1397,13 +1398,12 @@ $sheet-padding: 16px .oe_searchview_facets min-height: 22px - margin-left: 15px + margin: 0 35px 0 15px * vertical-align: top display: inline-block line-height: 17px .oe_searchview_facet - height: 18px margin: 1px 0 font-size: 11px &:focus @@ -1425,7 +1425,7 @@ $sheet-padding: 16px border-color: $tag-border-selected @include box-shadow(0 0 3px 1px $tag-border-selected) .oe_facet_values - background: #f0f0fa + background: $tag-bg-light @include radius(0 3px 3px 0) .oe_facet_category, .oe_facet_value height: 18px @@ -1464,6 +1464,7 @@ $sheet-padding: 16px display: block .oe_searchview_drawer + cursor: default position: absolute z-index: 2 // detach drawer from field slightly @@ -1581,7 +1582,6 @@ $sheet-padding: 16px list-style: none padding: 0 li - cursor: pointer position: relative list-style: none margin: 0 @@ -1904,6 +1904,8 @@ $sheet-padding: 16px .oe_form_field_text textarea, .oe_form_field_selection select width: 100% + .oe_notebook_page .oe_form_field_text textarea + min-height: 96px .oe_form_field_text.oe_inline, .oe_form_field_text.oe_inline > textarea width: 500px h1, h2, h3, h4, h5, h6 @@ -1989,6 +1991,9 @@ $sheet-padding: 16px margin-top: 32px margin-bottom: 32px text-align: justify + .oe_form_field_html .oe_input_icon + float: right + margin: 4px 7px .oe_form_editable .oe_form @@ -2372,7 +2377,6 @@ $sheet-padding: 16px th.oe_sortable div position: relative th.oe_sortable div:after - float: right margin-right: 6px content: "" margin-top: 7px @@ -2381,11 +2385,13 @@ $sheet-padding: 16px border-color: #000 transparent visibility: hidden th.sortup div:after + float: right visibility: visible @include opacity(0.6) .oe_list_header_many2many_tags min-width: 70px th.sortdown div:after + float: right border-bottom: none border-left: 4px solid transparent border-right: 4px solid transparent diff --git a/addons/web/static/src/font/entypo-webfont.svg b/addons/web/static/src/font/entypo-webfont.svg index c24d92adb5f..c24d92adb5f 100755..100644 --- a/addons/web/static/src/font/entypo-webfont.svg +++ b/addons/web/static/src/font/entypo-webfont.svg diff --git a/addons/web/static/src/font/mnmliconsv21-webfont.svg b/addons/web/static/src/font/mnmliconsv21-webfont.svg index 34b20ff992f..34b20ff992f 100755..100644 --- a/addons/web/static/src/font/mnmliconsv21-webfont.svg +++ b/addons/web/static/src/font/mnmliconsv21-webfont.svg diff --git a/addons/web/static/src/img/accessories-archiver.png b/addons/web/static/src/img/accessories-archiver.png Binary files differindex 8bcbe4566bc..0d6c249c652 100644 --- a/addons/web/static/src/img/accessories-archiver.png +++ b/addons/web/static/src/img/accessories-archiver.png diff --git a/addons/web/static/src/img/add-shortcut.png b/addons/web/static/src/img/add-shortcut.png Binary files differindex bcc0a09eb45..07b8ed40207 100644 --- a/addons/web/static/src/img/add-shortcut.png +++ b/addons/web/static/src/img/add-shortcut.png diff --git a/addons/web/static/src/img/attachments-close.png b/addons/web/static/src/img/attachments-close.png Binary files differindex 14d645534b8..2633d7142fe 100644 --- a/addons/web/static/src/img/attachments-close.png +++ b/addons/web/static/src/img/attachments-close.png diff --git a/addons/web/static/src/img/db.png b/addons/web/static/src/img/db.png Binary files differindex 83e42df26b3..d573d1d395b 100644 --- a/addons/web/static/src/img/db.png +++ b/addons/web/static/src/img/db.png diff --git a/addons/web/static/src/img/down-arrow.png b/addons/web/static/src/img/down-arrow.png Binary files differindex b1288e52682..0f473e13e84 100644 --- a/addons/web/static/src/img/down-arrow.png +++ b/addons/web/static/src/img/down-arrow.png diff --git a/addons/web/static/src/img/form_sheetbg.png b/addons/web/static/src/img/form_sheetbg.png Binary files differindex d54b6302d5a..f7eec72b0d6 100644 --- a/addons/web/static/src/img/form_sheetbg.png +++ b/addons/web/static/src/img/form_sheetbg.png diff --git a/addons/web/static/src/img/form_steps.png b/addons/web/static/src/img/form_steps.png Binary files differindex 0485c5977aa..84b1a0a459d 100644 --- a/addons/web/static/src/img/form_steps.png +++ b/addons/web/static/src/img/form_steps.png diff --git a/addons/web/static/src/img/graph_background.png b/addons/web/static/src/img/graph_background.png Binary files differindex 530312b20bb..0c7abf0faef 100644 --- a/addons/web/static/src/img/graph_background.png +++ b/addons/web/static/src/img/graph_background.png diff --git a/addons/web/static/src/img/icons/STOCK_ADD.png b/addons/web/static/src/img/icons/STOCK_ADD.png Binary files differindex 70612c181c6..00a001da01d 100644 --- a/addons/web/static/src/img/icons/STOCK_ADD.png +++ b/addons/web/static/src/img/icons/STOCK_ADD.png diff --git a/addons/web/static/src/img/icons/STOCK_APPLY.png b/addons/web/static/src/img/icons/STOCK_APPLY.png Binary files differindex 116f2e433bb..4859a588742 100644 --- a/addons/web/static/src/img/icons/STOCK_APPLY.png +++ b/addons/web/static/src/img/icons/STOCK_APPLY.png diff --git a/addons/web/static/src/img/icons/STOCK_CLOSE.png b/addons/web/static/src/img/icons/STOCK_CLOSE.png Binary files differindex 4966974e178..9776fd0ecf4 100644 --- a/addons/web/static/src/img/icons/STOCK_CLOSE.png +++ b/addons/web/static/src/img/icons/STOCK_CLOSE.png diff --git a/addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png b/addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png Binary files differindex 232d54f8f3b..3f813c47444 100644 --- a/addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png +++ b/addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png diff --git a/addons/web/static/src/img/icons/STOCK_DIRECTORY_MENU.png b/addons/web/static/src/img/icons/STOCK_DIRECTORY_MENU.png Binary files differindex 07f90537f82..13985d17782 100644 --- a/addons/web/static/src/img/icons/STOCK_DIRECTORY_MENU.png +++ b/addons/web/static/src/img/icons/STOCK_DIRECTORY_MENU.png diff --git a/addons/web/static/src/img/icons/STOCK_DND.png b/addons/web/static/src/img/icons/STOCK_DND.png Binary files differindex bf3b8068397..5f026f625aa 100644 --- a/addons/web/static/src/img/icons/STOCK_DND.png +++ b/addons/web/static/src/img/icons/STOCK_DND.png diff --git a/addons/web/static/src/img/icons/STOCK_FLOPPY.png b/addons/web/static/src/img/icons/STOCK_FLOPPY.png Binary files differindex 7d8209cfb6f..427a762c141 100644 --- a/addons/web/static/src/img/icons/STOCK_FLOPPY.png +++ b/addons/web/static/src/img/icons/STOCK_FLOPPY.png diff --git a/addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png b/addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png Binary files differindex 3d00e36d696..7b9c900ca3a 100644 --- a/addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png +++ b/addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png diff --git a/addons/web/static/src/img/icons/STOCK_GOTO_TOP.png b/addons/web/static/src/img/icons/STOCK_GOTO_TOP.png Binary files differindex 227a91e5157..2812a0f4b90 100644 --- a/addons/web/static/src/img/icons/STOCK_GOTO_TOP.png +++ b/addons/web/static/src/img/icons/STOCK_GOTO_TOP.png diff --git a/addons/web/static/src/img/icons/STOCK_GO_BACK.png b/addons/web/static/src/img/icons/STOCK_GO_BACK.png Binary files differindex 568117dc170..482ca6285f7 100644 --- a/addons/web/static/src/img/icons/STOCK_GO_BACK.png +++ b/addons/web/static/src/img/icons/STOCK_GO_BACK.png diff --git a/addons/web/static/src/img/icons/STOCK_GO_UP.png b/addons/web/static/src/img/icons/STOCK_GO_UP.png Binary files differindex 84f96fdfca2..e2e15b0b3da 100644 --- a/addons/web/static/src/img/icons/STOCK_GO_UP.png +++ b/addons/web/static/src/img/icons/STOCK_GO_UP.png diff --git a/addons/web/static/src/img/icons/STOCK_ITALIC.png b/addons/web/static/src/img/icons/STOCK_ITALIC.png Binary files differindex 26c57226a31..c7900917cea 100644 --- a/addons/web/static/src/img/icons/STOCK_ITALIC.png +++ b/addons/web/static/src/img/icons/STOCK_ITALIC.png diff --git a/addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png b/addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png Binary files differindex 15bc8ab7d7b..027fef93845 100644 --- a/addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png +++ b/addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png diff --git a/addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png b/addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png Binary files differindex e5e198fbb79..8eecedc7d31 100644 --- a/addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png +++ b/addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png diff --git a/addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png Binary files differindex 6721994eb8d..f6194f3a83b 100644 --- a/addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png +++ b/addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png diff --git a/addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png Binary files differindex b0832712c81..b316d2b3bcb 100644 --- a/addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png +++ b/addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png diff --git a/addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png b/addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png Binary files differindex 9c22d9e2778..127d1035b13 100644 --- a/addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png +++ b/addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png diff --git a/addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png b/addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png Binary files differindex 128cc2313ec..1ffe15c070f 100644 --- a/addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png +++ b/addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png diff --git a/addons/web/static/src/img/icons/STOCK_NO.png b/addons/web/static/src/img/icons/STOCK_NO.png Binary files differindex 047ddcd9289..77d48887cde 100644 --- a/addons/web/static/src/img/icons/STOCK_NO.png +++ b/addons/web/static/src/img/icons/STOCK_NO.png diff --git a/addons/web/static/src/img/icons/STOCK_OK.png b/addons/web/static/src/img/icons/STOCK_OK.png Binary files differindex 7755b8769f0..ad4451e3f11 100644 --- a/addons/web/static/src/img/icons/STOCK_OK.png +++ b/addons/web/static/src/img/icons/STOCK_OK.png diff --git a/addons/web/static/src/img/icons/STOCK_QUIT.png b/addons/web/static/src/img/icons/STOCK_QUIT.png Binary files differindex 50b5144660b..7556ae406fc 100644 --- a/addons/web/static/src/img/icons/STOCK_QUIT.png +++ b/addons/web/static/src/img/icons/STOCK_QUIT.png diff --git a/addons/web/static/src/img/icons/STOCK_REDO.png b/addons/web/static/src/img/icons/STOCK_REDO.png Binary files differindex 54055b3966d..da2138bb97b 100644 --- a/addons/web/static/src/img/icons/STOCK_REDO.png +++ b/addons/web/static/src/img/icons/STOCK_REDO.png diff --git a/addons/web/static/src/img/icons/STOCK_REMOVE.png b/addons/web/static/src/img/icons/STOCK_REMOVE.png Binary files differindex c2b6e915f77..fb95ab2361e 100644 --- a/addons/web/static/src/img/icons/STOCK_REMOVE.png +++ b/addons/web/static/src/img/icons/STOCK_REMOVE.png diff --git a/addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png b/addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png Binary files differindex 1c11f214622..a773530cdcb 100644 --- a/addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png +++ b/addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png diff --git a/addons/web/static/src/img/icons/STOCK_UNDERLINE.png b/addons/web/static/src/img/icons/STOCK_UNDERLINE.png Binary files differindex 7dbb5d7e60a..92b8c9ff153 100644 --- a/addons/web/static/src/img/icons/STOCK_UNDERLINE.png +++ b/addons/web/static/src/img/icons/STOCK_UNDERLINE.png diff --git a/addons/web/static/src/img/icons/STOCK_UNDO.png b/addons/web/static/src/img/icons/STOCK_UNDO.png Binary files differindex 7a50de0c61e..26d284e9ac8 100644 --- a/addons/web/static/src/img/icons/STOCK_UNDO.png +++ b/addons/web/static/src/img/icons/STOCK_UNDO.png diff --git a/addons/web/static/src/img/icons/STOCK_YES.png b/addons/web/static/src/img/icons/STOCK_YES.png Binary files differindex 01fb373c251..15e51054233 100644 --- a/addons/web/static/src/img/icons/STOCK_YES.png +++ b/addons/web/static/src/img/icons/STOCK_YES.png diff --git a/addons/web/static/src/img/icons/color-picker.png b/addons/web/static/src/img/icons/color-picker.png Binary files differindex 765294c6bdd..d22c393631e 100644 --- a/addons/web/static/src/img/icons/color-picker.png +++ b/addons/web/static/src/img/icons/color-picker.png diff --git a/addons/web/static/src/img/icons/gtk-add.png b/addons/web/static/src/img/icons/gtk-add.png Binary files differindex 70612c181c6..00a001da01d 100644 --- a/addons/web/static/src/img/icons/gtk-add.png +++ b/addons/web/static/src/img/icons/gtk-add.png diff --git a/addons/web/static/src/img/icons/gtk-apply.png b/addons/web/static/src/img/icons/gtk-apply.png Binary files differindex 116f2e433bb..4859a588742 100644 --- a/addons/web/static/src/img/icons/gtk-apply.png +++ b/addons/web/static/src/img/icons/gtk-apply.png diff --git a/addons/web/static/src/img/icons/gtk-close.png b/addons/web/static/src/img/icons/gtk-close.png Binary files differindex 4966974e178..9776fd0ecf4 100644 --- a/addons/web/static/src/img/icons/gtk-close.png +++ b/addons/web/static/src/img/icons/gtk-close.png diff --git a/addons/web/static/src/img/icons/gtk-color-picker.png b/addons/web/static/src/img/icons/gtk-color-picker.png Binary files differindex 232d54f8f3b..3f813c47444 100644 --- a/addons/web/static/src/img/icons/gtk-color-picker.png +++ b/addons/web/static/src/img/icons/gtk-color-picker.png diff --git a/addons/web/static/src/img/icons/gtk-dnd.png b/addons/web/static/src/img/icons/gtk-dnd.png Binary files differindex bf3b8068397..5f026f625aa 100644 --- a/addons/web/static/src/img/icons/gtk-dnd.png +++ b/addons/web/static/src/img/icons/gtk-dnd.png diff --git a/addons/web/static/src/img/icons/gtk-floppy.png b/addons/web/static/src/img/icons/gtk-floppy.png Binary files differindex 7d8209cfb6f..427a762c141 100644 --- a/addons/web/static/src/img/icons/gtk-floppy.png +++ b/addons/web/static/src/img/icons/gtk-floppy.png diff --git a/addons/web/static/src/img/icons/gtk-go-back.png b/addons/web/static/src/img/icons/gtk-go-back.png Binary files differindex 568117dc170..482ca6285f7 100644 --- a/addons/web/static/src/img/icons/gtk-go-back.png +++ b/addons/web/static/src/img/icons/gtk-go-back.png diff --git a/addons/web/static/src/img/icons/gtk-go-up.png b/addons/web/static/src/img/icons/gtk-go-up.png Binary files differindex 84f96fdfca2..e2e15b0b3da 100644 --- a/addons/web/static/src/img/icons/gtk-go-up.png +++ b/addons/web/static/src/img/icons/gtk-go-up.png diff --git a/addons/web/static/src/img/icons/gtk-goto-first.png b/addons/web/static/src/img/icons/gtk-goto-first.png Binary files differindex 3d00e36d696..7b9c900ca3a 100644 --- a/addons/web/static/src/img/icons/gtk-goto-first.png +++ b/addons/web/static/src/img/icons/gtk-goto-first.png diff --git a/addons/web/static/src/img/icons/gtk-goto-top.png b/addons/web/static/src/img/icons/gtk-goto-top.png Binary files differindex 227a91e5157..2812a0f4b90 100644 --- a/addons/web/static/src/img/icons/gtk-goto-top.png +++ b/addons/web/static/src/img/icons/gtk-goto-top.png diff --git a/addons/web/static/src/img/icons/gtk-italic.png b/addons/web/static/src/img/icons/gtk-italic.png Binary files differindex 26c57226a31..c7900917cea 100644 --- a/addons/web/static/src/img/icons/gtk-italic.png +++ b/addons/web/static/src/img/icons/gtk-italic.png diff --git a/addons/web/static/src/img/icons/gtk-leave-fullscreen.png b/addons/web/static/src/img/icons/gtk-leave-fullscreen.png Binary files differindex 15bc8ab7d7b..027fef93845 100644 --- a/addons/web/static/src/img/icons/gtk-leave-fullscreen.png +++ b/addons/web/static/src/img/icons/gtk-leave-fullscreen.png diff --git a/addons/web/static/src/img/icons/gtk-media-forward.png b/addons/web/static/src/img/icons/gtk-media-forward.png Binary files differindex e5e198fbb79..8eecedc7d31 100644 --- a/addons/web/static/src/img/icons/gtk-media-forward.png +++ b/addons/web/static/src/img/icons/gtk-media-forward.png diff --git a/addons/web/static/src/img/icons/gtk-media-pause.png b/addons/web/static/src/img/icons/gtk-media-pause.png Binary files differindex 6721994eb8d..f6194f3a83b 100644 --- a/addons/web/static/src/img/icons/gtk-media-pause.png +++ b/addons/web/static/src/img/icons/gtk-media-pause.png diff --git a/addons/web/static/src/img/icons/gtk-media-play.png b/addons/web/static/src/img/icons/gtk-media-play.png Binary files differindex b0832712c81..b316d2b3bcb 100644 --- a/addons/web/static/src/img/icons/gtk-media-play.png +++ b/addons/web/static/src/img/icons/gtk-media-play.png diff --git a/addons/web/static/src/img/icons/gtk-media-rewind.png b/addons/web/static/src/img/icons/gtk-media-rewind.png Binary files differindex 9c22d9e2778..127d1035b13 100644 --- a/addons/web/static/src/img/icons/gtk-media-rewind.png +++ b/addons/web/static/src/img/icons/gtk-media-rewind.png diff --git a/addons/web/static/src/img/icons/gtk-media-stop.png b/addons/web/static/src/img/icons/gtk-media-stop.png Binary files differindex 128cc2313ec..1ffe15c070f 100644 --- a/addons/web/static/src/img/icons/gtk-media-stop.png +++ b/addons/web/static/src/img/icons/gtk-media-stop.png diff --git a/addons/web/static/src/img/icons/gtk-no.png b/addons/web/static/src/img/icons/gtk-no.png Binary files differindex 047ddcd9289..77d48887cde 100644 --- a/addons/web/static/src/img/icons/gtk-no.png +++ b/addons/web/static/src/img/icons/gtk-no.png diff --git a/addons/web/static/src/img/icons/gtk-ok.png b/addons/web/static/src/img/icons/gtk-ok.png Binary files differindex 7755b8769f0..ad4451e3f11 100644 --- a/addons/web/static/src/img/icons/gtk-ok.png +++ b/addons/web/static/src/img/icons/gtk-ok.png diff --git a/addons/web/static/src/img/icons/gtk-quit.png b/addons/web/static/src/img/icons/gtk-quit.png Binary files differindex 50b5144660b..7556ae406fc 100644 --- a/addons/web/static/src/img/icons/gtk-quit.png +++ b/addons/web/static/src/img/icons/gtk-quit.png diff --git a/addons/web/static/src/img/icons/gtk-redo.png b/addons/web/static/src/img/icons/gtk-redo.png Binary files differindex 54055b3966d..da2138bb97b 100644 --- a/addons/web/static/src/img/icons/gtk-redo.png +++ b/addons/web/static/src/img/icons/gtk-redo.png diff --git a/addons/web/static/src/img/icons/gtk-remove.png b/addons/web/static/src/img/icons/gtk-remove.png Binary files differindex c2b6e915f77..fb95ab2361e 100644 --- a/addons/web/static/src/img/icons/gtk-remove.png +++ b/addons/web/static/src/img/icons/gtk-remove.png diff --git a/addons/web/static/src/img/icons/gtk-strikethrough.png b/addons/web/static/src/img/icons/gtk-strikethrough.png Binary files differindex 1c11f214622..a773530cdcb 100644 --- a/addons/web/static/src/img/icons/gtk-strikethrough.png +++ b/addons/web/static/src/img/icons/gtk-strikethrough.png diff --git a/addons/web/static/src/img/icons/gtk-underline.png b/addons/web/static/src/img/icons/gtk-underline.png Binary files differindex 7dbb5d7e60a..92b8c9ff153 100644 --- a/addons/web/static/src/img/icons/gtk-underline.png +++ b/addons/web/static/src/img/icons/gtk-underline.png diff --git a/addons/web/static/src/img/icons/gtk-undo.png b/addons/web/static/src/img/icons/gtk-undo.png Binary files differindex 7a50de0c61e..26d284e9ac8 100644 --- a/addons/web/static/src/img/icons/gtk-undo.png +++ b/addons/web/static/src/img/icons/gtk-undo.png diff --git a/addons/web/static/src/img/icons/gtk-yes.png b/addons/web/static/src/img/icons/gtk-yes.png Binary files differindex 01fb373c251..15e51054233 100644 --- a/addons/web/static/src/img/icons/gtk-yes.png +++ b/addons/web/static/src/img/icons/gtk-yes.png diff --git a/addons/web/static/src/img/icons/kanban-apply.png b/addons/web/static/src/img/icons/kanban-apply.png Binary files differindex 02effd5f14c..e5fe4ee5f78 100644 --- a/addons/web/static/src/img/icons/kanban-apply.png +++ b/addons/web/static/src/img/icons/kanban-apply.png diff --git a/addons/web/static/src/img/icons/kanban-pause.png b/addons/web/static/src/img/icons/kanban-pause.png Binary files differindex 9e9544ee178..ce2357ccfef 100644 --- a/addons/web/static/src/img/icons/kanban-pause.png +++ b/addons/web/static/src/img/icons/kanban-pause.png diff --git a/addons/web/static/src/img/icons/kanban-stop.png b/addons/web/static/src/img/icons/kanban-stop.png Binary files differindex e1f98a26b59..da6839f2f8f 100644 --- a/addons/web/static/src/img/icons/kanban-stop.png +++ b/addons/web/static/src/img/icons/kanban-stop.png diff --git a/addons/web/static/src/img/icons/save-document.png b/addons/web/static/src/img/icons/save-document.png Binary files differindex 8933ca0bed9..3e076aa91cb 100644 --- a/addons/web/static/src/img/icons/save-document.png +++ b/addons/web/static/src/img/icons/save-document.png diff --git a/addons/web/static/src/img/icons/star-off.png b/addons/web/static/src/img/icons/star-off.png Binary files differindex 7cd0afd4f03..b999fb2e02f 100644 --- a/addons/web/static/src/img/icons/star-off.png +++ b/addons/web/static/src/img/icons/star-off.png diff --git a/addons/web/static/src/img/icons/star-on.png b/addons/web/static/src/img/icons/star-on.png Binary files differindex 4f2295e1395..f6a9ec830d0 100644 --- a/addons/web/static/src/img/icons/star-on.png +++ b/addons/web/static/src/img/icons/star-on.png diff --git a/addons/web/static/src/img/icons/stock.png b/addons/web/static/src/img/icons/stock.png Binary files differindex ca38181db90..762491f1e71 100644 --- a/addons/web/static/src/img/icons/stock.png +++ b/addons/web/static/src/img/icons/stock.png diff --git a/addons/web/static/src/img/icons/stock_calendar.png b/addons/web/static/src/img/icons/stock_calendar.png Binary files differindex 99a1f3f9ef1..5fdccf561ba 100644 --- a/addons/web/static/src/img/icons/stock_calendar.png +++ b/addons/web/static/src/img/icons/stock_calendar.png diff --git a/addons/web/static/src/img/icons/terp-accessories-archiver+.png b/addons/web/static/src/img/icons/terp-accessories-archiver+.png Binary files differindex 14d6d02536e..899c6e54e83 100644 --- a/addons/web/static/src/img/icons/terp-accessories-archiver+.png +++ b/addons/web/static/src/img/icons/terp-accessories-archiver+.png diff --git a/addons/web/static/src/img/icons/terp-accessories-archiver-minus.png b/addons/web/static/src/img/icons/terp-accessories-archiver-minus.png Binary files differindex 024c8f692d8..173c6208133 100644 --- a/addons/web/static/src/img/icons/terp-accessories-archiver-minus.png +++ b/addons/web/static/src/img/icons/terp-accessories-archiver-minus.png diff --git a/addons/web/static/src/img/icons/terp-accessories-archiver.png b/addons/web/static/src/img/icons/terp-accessories-archiver.png Binary files differindex 8bcbe4566bc..0d6c249c652 100644 --- a/addons/web/static/src/img/icons/terp-accessories-archiver.png +++ b/addons/web/static/src/img/icons/terp-accessories-archiver.png diff --git a/addons/web/static/src/img/icons/terp-account.png b/addons/web/static/src/img/icons/terp-account.png Binary files differindex 30dea82a105..01cc0c4e8b9 100644 --- a/addons/web/static/src/img/icons/terp-account.png +++ b/addons/web/static/src/img/icons/terp-account.png diff --git a/addons/web/static/src/img/icons/terp-administration.png b/addons/web/static/src/img/icons/terp-administration.png Binary files differindex ab129b2e4b3..8ff707ede02 100644 --- a/addons/web/static/src/img/icons/terp-administration.png +++ b/addons/web/static/src/img/icons/terp-administration.png diff --git a/addons/web/static/src/img/icons/terp-calendar.png b/addons/web/static/src/img/icons/terp-calendar.png Binary files differindex 37206565792..222e22c78d1 100644 --- a/addons/web/static/src/img/icons/terp-calendar.png +++ b/addons/web/static/src/img/icons/terp-calendar.png diff --git a/addons/web/static/src/img/icons/terp-call-start.png b/addons/web/static/src/img/icons/terp-call-start.png Binary files differindex 602a1cdd4b8..2128555419e 100644 --- a/addons/web/static/src/img/icons/terp-call-start.png +++ b/addons/web/static/src/img/icons/terp-call-start.png diff --git a/addons/web/static/src/img/icons/terp-camera_test.png b/addons/web/static/src/img/icons/terp-camera_test.png Binary files differindex e97e0416de3..7a127e7d350 100644 --- a/addons/web/static/src/img/icons/terp-camera_test.png +++ b/addons/web/static/src/img/icons/terp-camera_test.png diff --git a/addons/web/static/src/img/icons/terp-crm.png b/addons/web/static/src/img/icons/terp-crm.png Binary files differindex fdac61ca92d..3c86dd3b043 100644 --- a/addons/web/static/src/img/icons/terp-crm.png +++ b/addons/web/static/src/img/icons/terp-crm.png diff --git a/addons/web/static/src/img/icons/terp-dialog-close.png b/addons/web/static/src/img/icons/terp-dialog-close.png Binary files differindex 8f51ec05fd6..c65cb24871f 100644 --- a/addons/web/static/src/img/icons/terp-dialog-close.png +++ b/addons/web/static/src/img/icons/terp-dialog-close.png diff --git a/addons/web/static/src/img/icons/terp-document-new.png b/addons/web/static/src/img/icons/terp-document-new.png Binary files differindex 2815cbb403f..8ad4a78fe93 100644 --- a/addons/web/static/src/img/icons/terp-document-new.png +++ b/addons/web/static/src/img/icons/terp-document-new.png diff --git a/addons/web/static/src/img/icons/terp-dolar.png b/addons/web/static/src/img/icons/terp-dolar.png Binary files differindex bca7021c82f..03b37cfa0ed 100644 --- a/addons/web/static/src/img/icons/terp-dolar.png +++ b/addons/web/static/src/img/icons/terp-dolar.png diff --git a/addons/web/static/src/img/icons/terp-dolar_ok!.png b/addons/web/static/src/img/icons/terp-dolar_ok!.png Binary files differindex b1005aae7b9..e3cb9e17bcb 100644 --- a/addons/web/static/src/img/icons/terp-dolar_ok!.png +++ b/addons/web/static/src/img/icons/terp-dolar_ok!.png diff --git a/addons/web/static/src/img/icons/terp-emblem-important.png b/addons/web/static/src/img/icons/terp-emblem-important.png Binary files differindex a8321066abb..9b75ddb7c2e 100644 --- a/addons/web/static/src/img/icons/terp-emblem-important.png +++ b/addons/web/static/src/img/icons/terp-emblem-important.png diff --git a/addons/web/static/src/img/icons/terp-folder-blue.png b/addons/web/static/src/img/icons/terp-folder-blue.png Binary files differindex addc480d49a..1972448912b 100644 --- a/addons/web/static/src/img/icons/terp-folder-blue.png +++ b/addons/web/static/src/img/icons/terp-folder-blue.png diff --git a/addons/web/static/src/img/icons/terp-folder-green.png b/addons/web/static/src/img/icons/terp-folder-green.png Binary files differindex 206cd39603e..c1630414c78 100644 --- a/addons/web/static/src/img/icons/terp-folder-green.png +++ b/addons/web/static/src/img/icons/terp-folder-green.png diff --git a/addons/web/static/src/img/icons/terp-folder-orange.png b/addons/web/static/src/img/icons/terp-folder-orange.png Binary files differindex 726dbd7f00e..b401de6d04f 100644 --- a/addons/web/static/src/img/icons/terp-folder-orange.png +++ b/addons/web/static/src/img/icons/terp-folder-orange.png diff --git a/addons/web/static/src/img/icons/terp-folder-violet.png b/addons/web/static/src/img/icons/terp-folder-violet.png Binary files differindex c6f5cfb87ff..20e383a9967 100644 --- a/addons/web/static/src/img/icons/terp-folder-violet.png +++ b/addons/web/static/src/img/icons/terp-folder-violet.png diff --git a/addons/web/static/src/img/icons/terp-folder-yellow.png b/addons/web/static/src/img/icons/terp-folder-yellow.png Binary files differindex cd7295dcdd7..7cc7650e680 100644 --- a/addons/web/static/src/img/icons/terp-folder-yellow.png +++ b/addons/web/static/src/img/icons/terp-folder-yellow.png diff --git a/addons/web/static/src/img/icons/terp-go-year.png b/addons/web/static/src/img/icons/terp-go-year.png Binary files differindex f45efc9dd0c..b09bf94500a 100644 --- a/addons/web/static/src/img/icons/terp-go-year.png +++ b/addons/web/static/src/img/icons/terp-go-year.png diff --git a/addons/web/static/src/img/icons/terp-graph.png b/addons/web/static/src/img/icons/terp-graph.png Binary files differindex 30dea82a105..01cc0c4e8b9 100644 --- a/addons/web/static/src/img/icons/terp-graph.png +++ b/addons/web/static/src/img/icons/terp-graph.png diff --git a/addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png b/addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png Binary files differindex a76138d2e0d..b9c77e11f10 100644 --- a/addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png +++ b/addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png diff --git a/addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png b/addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png Binary files differindex 10d10b582fe..8e662b6291d 100644 --- a/addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png +++ b/addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png diff --git a/addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png b/addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png Binary files differindex fa517749d10..4e9092ba03c 100644 --- a/addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png +++ b/addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png diff --git a/addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png b/addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png Binary files differindex 7b5785c4963..3c2db42dfde 100644 --- a/addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png +++ b/addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png diff --git a/addons/web/static/src/img/icons/terp-gtk-media-pause.png b/addons/web/static/src/img/icons/terp-gtk-media-pause.png Binary files differindex 2896ad8e27f..3941af88653 100644 --- a/addons/web/static/src/img/icons/terp-gtk-media-pause.png +++ b/addons/web/static/src/img/icons/terp-gtk-media-pause.png diff --git a/addons/web/static/src/img/icons/terp-gtk-select-all.png b/addons/web/static/src/img/icons/terp-gtk-select-all.png Binary files differindex b71a6493791..d05a295ac62 100644 --- a/addons/web/static/src/img/icons/terp-gtk-select-all.png +++ b/addons/web/static/src/img/icons/terp-gtk-select-all.png diff --git a/addons/web/static/src/img/icons/terp-hr.png b/addons/web/static/src/img/icons/terp-hr.png Binary files differindex ba0241e6362..1e8eede30ca 100644 --- a/addons/web/static/src/img/icons/terp-hr.png +++ b/addons/web/static/src/img/icons/terp-hr.png diff --git a/addons/web/static/src/img/icons/terp-mail-forward.png b/addons/web/static/src/img/icons/terp-mail-forward.png Binary files differindex 3d4e694b6dc..637573d310b 100644 --- a/addons/web/static/src/img/icons/terp-mail-forward.png +++ b/addons/web/static/src/img/icons/terp-mail-forward.png diff --git a/addons/web/static/src/img/icons/terp-mail_delete.png b/addons/web/static/src/img/icons/terp-mail_delete.png Binary files differindex 90fb5239f02..b0b9e4ba691 100644 --- a/addons/web/static/src/img/icons/terp-mail_delete.png +++ b/addons/web/static/src/img/icons/terp-mail_delete.png diff --git a/addons/web/static/src/img/icons/terp-marketing.png b/addons/web/static/src/img/icons/terp-marketing.png Binary files differindex 1b04b599734..e3545242442 100644 --- a/addons/web/static/src/img/icons/terp-marketing.png +++ b/addons/web/static/src/img/icons/terp-marketing.png diff --git a/addons/web/static/src/img/icons/terp-mrp.png b/addons/web/static/src/img/icons/terp-mrp.png Binary files differindex c2b4ea31ec3..cd949c89213 100644 --- a/addons/web/static/src/img/icons/terp-mrp.png +++ b/addons/web/static/src/img/icons/terp-mrp.png diff --git a/addons/web/static/src/img/icons/terp-partner.png b/addons/web/static/src/img/icons/terp-partner.png Binary files differindex aab206a1d42..74b2414739e 100644 --- a/addons/web/static/src/img/icons/terp-partner.png +++ b/addons/web/static/src/img/icons/terp-partner.png diff --git a/addons/web/static/src/img/icons/terp-personal.png b/addons/web/static/src/img/icons/terp-personal.png Binary files differindex 0890c4d0e51..8e13350629b 100644 --- a/addons/web/static/src/img/icons/terp-personal.png +++ b/addons/web/static/src/img/icons/terp-personal.png diff --git a/addons/web/static/src/img/icons/terp-product.png b/addons/web/static/src/img/icons/terp-product.png Binary files differindex 99f58d95a8b..1009191c180 100644 --- a/addons/web/static/src/img/icons/terp-product.png +++ b/addons/web/static/src/img/icons/terp-product.png diff --git a/addons/web/static/src/img/icons/terp-project.png b/addons/web/static/src/img/icons/terp-project.png Binary files differindex cd95ae84e43..2686faba528 100644 --- a/addons/web/static/src/img/icons/terp-project.png +++ b/addons/web/static/src/img/icons/terp-project.png diff --git a/addons/web/static/src/img/icons/terp-purchase.png b/addons/web/static/src/img/icons/terp-purchase.png Binary files differindex 1e801f57485..3d5fcb67f4f 100644 --- a/addons/web/static/src/img/icons/terp-purchase.png +++ b/addons/web/static/src/img/icons/terp-purchase.png diff --git a/addons/web/static/src/img/icons/terp-report.png b/addons/web/static/src/img/icons/terp-report.png Binary files differindex ada36a2de24..6586ffcc501 100644 --- a/addons/web/static/src/img/icons/terp-report.png +++ b/addons/web/static/src/img/icons/terp-report.png diff --git a/addons/web/static/src/img/icons/terp-sale.png b/addons/web/static/src/img/icons/terp-sale.png Binary files differindex ba0241e6362..1e8eede30ca 100644 --- a/addons/web/static/src/img/icons/terp-sale.png +++ b/addons/web/static/src/img/icons/terp-sale.png diff --git a/addons/web/static/src/img/icons/terp-stock.png b/addons/web/static/src/img/icons/terp-stock.png Binary files differindex 0365dfdb8e1..fde0f52f28f 100644 --- a/addons/web/static/src/img/icons/terp-stock.png +++ b/addons/web/static/src/img/icons/terp-stock.png diff --git a/addons/web/static/src/img/icons/terp-stock_align_left_24.png b/addons/web/static/src/img/icons/terp-stock_align_left_24.png Binary files differindex 844367bb1a7..a5623e0873c 100644 --- a/addons/web/static/src/img/icons/terp-stock_align_left_24.png +++ b/addons/web/static/src/img/icons/terp-stock_align_left_24.png diff --git a/addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png b/addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png Binary files differindex 0ffd95a740a..a31c9930bf9 100644 --- a/addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png +++ b/addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png diff --git a/addons/web/static/src/img/icons/terp-stock_format-scientific.png b/addons/web/static/src/img/icons/terp-stock_format-scientific.png Binary files differindex 01f83950804..5b180e871f3 100644 --- a/addons/web/static/src/img/icons/terp-stock_format-scientific.png +++ b/addons/web/static/src/img/icons/terp-stock_format-scientific.png diff --git a/addons/web/static/src/img/icons/terp-stock_symbol-selection.png b/addons/web/static/src/img/icons/terp-stock_symbol-selection.png Binary files differindex 5773be57c9b..56803afdcb6 100644 --- a/addons/web/static/src/img/icons/terp-stock_symbol-selection.png +++ b/addons/web/static/src/img/icons/terp-stock_symbol-selection.png diff --git a/addons/web/static/src/img/icons/terp-stock_zoom.png b/addons/web/static/src/img/icons/terp-stock_zoom.png Binary files differindex e96f05e5905..088c3b379b4 100644 --- a/addons/web/static/src/img/icons/terp-stock_zoom.png +++ b/addons/web/static/src/img/icons/terp-stock_zoom.png diff --git a/addons/web/static/src/img/icons/terp-tools.png b/addons/web/static/src/img/icons/terp-tools.png Binary files differindex 379f7617427..4a44ce58e69 100644 --- a/addons/web/static/src/img/icons/terp-tools.png +++ b/addons/web/static/src/img/icons/terp-tools.png diff --git a/addons/web/static/src/img/iconset-a-help.png b/addons/web/static/src/img/iconset-a-help.png Binary files differindex 4af5ac170d6..a9df2902ed3 100644 --- a/addons/web/static/src/img/iconset-a-help.png +++ b/addons/web/static/src/img/iconset-a-help.png diff --git a/addons/web/static/src/img/iconset-b-remove.png b/addons/web/static/src/img/iconset-b-remove.png Binary files differindex 497f03b4ceb..48eb9670641 100644 --- a/addons/web/static/src/img/iconset-b-remove.png +++ b/addons/web/static/src/img/iconset-b-remove.png diff --git a/addons/web/static/src/img/logo.png b/addons/web/static/src/img/logo.png Binary files differindex 8f1c5c6085f..231cc26379f 100644 --- a/addons/web/static/src/img/logo.png +++ b/addons/web/static/src/img/logo.png diff --git a/addons/web/static/src/img/logo2.png b/addons/web/static/src/img/logo2.png Binary files differindex aca5f4c60d8..6b32937328b 100644 --- a/addons/web/static/src/img/logo2.png +++ b/addons/web/static/src/img/logo2.png diff --git a/addons/web/static/src/img/nologo.png b/addons/web/static/src/img/nologo.png Binary files differindex 711269813a1..36ff0e1d16c 100644 --- a/addons/web/static/src/img/nologo.png +++ b/addons/web/static/src/img/nologo.png diff --git a/addons/web/static/src/img/pager_first.png b/addons/web/static/src/img/pager_first.png Binary files differindex 83074ed696f..8f9005bfe2f 100644 --- a/addons/web/static/src/img/pager_first.png +++ b/addons/web/static/src/img/pager_first.png diff --git a/addons/web/static/src/img/pager_last.png b/addons/web/static/src/img/pager_last.png Binary files differindex dedcede4b62..582eb9620a1 100644 --- a/addons/web/static/src/img/pager_last.png +++ b/addons/web/static/src/img/pager_last.png diff --git a/addons/web/static/src/img/pager_next.png b/addons/web/static/src/img/pager_next.png Binary files differindex 9b5e7090735..068fa1d980d 100644 --- a/addons/web/static/src/img/pager_next.png +++ b/addons/web/static/src/img/pager_next.png diff --git a/addons/web/static/src/img/pager_previous.png b/addons/web/static/src/img/pager_previous.png Binary files differindex 7134186008c..7cd2a0de240 100644 --- a/addons/web/static/src/img/pager_previous.png +++ b/addons/web/static/src/img/pager_previous.png diff --git a/addons/web/static/src/img/partner.png b/addons/web/static/src/img/partner.png Binary files differindex aab206a1d42..74b2414739e 100644 --- a/addons/web/static/src/img/partner.png +++ b/addons/web/static/src/img/partner.png diff --git a/addons/web/static/src/img/placeholder.png b/addons/web/static/src/img/placeholder.png Binary files differindex 25af75ee815..c2e345e82e5 100644 --- a/addons/web/static/src/img/placeholder.png +++ b/addons/web/static/src/img/placeholder.png diff --git a/addons/web/static/src/img/product.png b/addons/web/static/src/img/product.png Binary files differindex 99f58d95a8b..1009191c180 100644 --- a/addons/web/static/src/img/product.png +++ b/addons/web/static/src/img/product.png diff --git a/addons/web/static/src/img/toggle-a-bg.png b/addons/web/static/src/img/toggle-a-bg.png Binary files differindex b9837ab233e..207a348725b 100644 --- a/addons/web/static/src/img/toggle-a-bg.png +++ b/addons/web/static/src/img/toggle-a-bg.png diff --git a/addons/web/static/src/img/ui/field_calendar.png b/addons/web/static/src/img/ui/field_calendar.png Binary files differindex 99a1f3f9ef1..5fdccf561ba 100644 --- a/addons/web/static/src/img/ui/field_calendar.png +++ b/addons/web/static/src/img/ui/field_calendar.png diff --git a/addons/web/static/src/img/ui/group-expanded.png b/addons/web/static/src/img/ui/group-expanded.png Binary files differindex 3f16536e123..ca76157826a 100644 --- a/addons/web/static/src/img/ui/group-expanded.png +++ b/addons/web/static/src/img/ui/group-expanded.png diff --git a/addons/web/static/src/img/ui/group-folded.png b/addons/web/static/src/img/ui/group-folded.png Binary files differindex 2909b0c268f..5fc4e533d1f 100644 --- a/addons/web/static/src/img/ui/group-folded.png +++ b/addons/web/static/src/img/ui/group-folded.png diff --git a/addons/web/static/src/img/user_menu_avatar.png b/addons/web/static/src/img/user_menu_avatar.png Binary files differindex a2c70ea7d49..f78ea0203d9 100644 --- a/addons/web/static/src/img/user_menu_avatar.png +++ b/addons/web/static/src/img/user_menu_avatar.png diff --git a/addons/web/static/src/img/view_empty_arrow.png b/addons/web/static/src/img/view_empty_arrow.png Binary files differindex 99561e3abf3..dc2b88a3c82 100644 --- a/addons/web/static/src/img/view_empty_arrow.png +++ b/addons/web/static/src/img/view_empty_arrow.png diff --git a/addons/web/static/src/img/warning.png b/addons/web/static/src/img/warning.png Binary files differindex cbfb25a89cd..85c1718e877 100644 --- a/addons/web/static/src/img/warning.png +++ b/addons/web/static/src/img/warning.png diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 884dc41a9f9..0c73a9b8a3c 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -430,7 +430,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ var fetch_langs = this.rpc("/web/session/get_lang_list", {}).done(function(result) { self.lang_list = result; }); - return $.when(fetch_db, fetch_langs).done(self.do_render); + return $.when(fetch_db, fetch_langs).always(self.do_render); }, do_render: function() { var self = this; @@ -950,7 +950,7 @@ instance.web.Menu = instance.web.Widget.extend({ }, do_load_needaction: function (menu_ids) { var self = this; - menu_ids = _.reject(menu_ids, _.isEmpty); + menu_ids = _.compact(menu_ids); if (_.isEmpty(menu_ids)) { return $.when(); } @@ -1184,6 +1184,25 @@ instance.web.UserMenu = instance.web.Widget.extend({ }); } }, + on_menu_account: function() { + var self = this; + if (!this.getParent().has_uncommitted_changes()) { + var P = new instance.web.Model('ir.config_parameter'); + P.call('get_param', ['database.uuid']).then(function(dbuuid) { + var state = { + 'd': instance.session.db, + 'u': window.location.protocol + '//' + window.location.host, + }; + var params = { + response_type: 'token', + client_id: dbuuid || '', + state: JSON.stringify(state), + scope: 'userinfo', + }; + instance.web.redirect('https://accounts.openerp.com/oauth2/auth?'+$.param(params)); + }); + } + }, on_menu_about: function() { var self = this; self.rpc("/web/webclient/version_info", {}).done(function(res) { diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index dedb4a49710..6fc837333b6 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -555,19 +555,19 @@ instance.web.qweb.default_dict = { instance.web.qweb.preprocess_node = function() { // Note that 'this' is the Qweb Node switch (this.node.nodeType) { - case 3: - case 4: + case Node.TEXT_NODE: + case Node.CDATA_SECTION_NODE: // Text and CDATAs var translation = this.node.parentNode.attributes['t-translation']; if (translation && translation.value === 'off') { return; } - var match = /^(\s*)(.+?)(\s*)$/.exec(this.node.data); + var match = /^(\s*)([\s\S]+?)(\s*)$/.exec(this.node.data); if (match) { this.node.data = match[1] + instance.web._t(match[2]) + match[3]; } break; - case 1: + case Node.ELEMENT_NODE: // Element var attr, attrs = ['label', 'title', 'alt', 'placeholder']; while (attr = attrs.pop()) { diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index f1b043bacf9..679afe77bcd 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -112,24 +112,27 @@ instance.web.Query = instance.web.Class.extend({ * @returns {jQuery.Deferred<Array<openerp.web.QueryGroup>> | null} */ group_by: function (grouping) { - if (grouping === undefined) { - return null; + var ctx = instance.web.pyeval.eval( + 'context', this._model.context(this._context)); + + // undefined passed in explicitly (!) + if (_.isUndefined(grouping)) { + grouping = []; } if (!(grouping instanceof Array)) { grouping = _.toArray(arguments); } - if (_.isEmpty(grouping)) { return null; } + if (_.isEmpty(grouping) && !ctx['group_by_no_leaf']) { + return null; + } var self = this; - - var ctx = instance.web.pyeval.eval( - 'context', this._model.context(this._context)); return this._model.call('read_group', { groupby: grouping, fields: _.uniq(grouping.concat(this._fields || [])), domain: this._model.domain(this._filter), - context: this._model.context(this._context), + context: ctx, offset: this._offset, limit: this._limit, orderby: instance.web.serialize_sort(this._order_by) || false @@ -325,7 +328,7 @@ instance.web.Model = instance.web.Class.extend({ * Fetches the model's domain, combined with the provided domain if any * * @param {Array} [domain] to combine with the model's internal domain - * @returns The model's internal domain, or the AND-ed union of the model's internal domain and the provided domain + * @returns {instance.web.CompoundDomain} The model's internal domain, or the AND-ed union of the model's internal domain and the provided domain */ domain: function (domain) { if (!domain) { return this._domain; } @@ -337,7 +340,7 @@ instance.web.Model = instance.web.Class.extend({ * combined with the provided context if any * * @param {Object} [context] to combine with the model's internal context - * @returns The union of the user's context and the model's internal context, as well as the provided context if any. In that order. + * @returns {instance.web.CompoundContext} The union of the user's context and the model's internal context, as well as the provided context if any. In that order. */ context: function (context) { return new instance.web.CompoundContext( @@ -487,7 +490,12 @@ instance.web.DataSet = instance.web.Class.extend(instance.web.PropertiesMixin, * @returns {$.Deferred} */ create: function(data, options) { - return this._model.call('create', [data], {context: this.get_context()}); + var self = this; + return this._model.call('create', [data], { + context: this.get_context() + }).done(function () { + self.trigger('dataset_changed', data, options) + }); }, /** * Saves the provided data in an existing db record @@ -502,7 +510,12 @@ instance.web.DataSet = instance.web.Class.extend(instance.web.PropertiesMixin, */ write: function (id, data, options) { options = options || {}; - return this._model.call('write', [[id], data], {context: this.get_context(options.context)}).done(this.trigger('dataset_changed', id, data, options)); + var self = this; + return this._model.call('write', [[id], data], { + context: this.get_context(options.context) + }).done(function () { + self.trigger('dataset_changed', id, data, options) + }); }, /** * Deletes an existing record from the database @@ -510,7 +523,12 @@ instance.web.DataSet = instance.web.Class.extend(instance.web.PropertiesMixin, * @param {Number|String} ids identifier of the record to delete */ unlink: function(ids) { - return this._model.call('unlink', [ids], {context: this.get_context()}).done(this.trigger('dataset_changed', ids)); + var self = this; + return this._model.call('unlink', [ids], { + context: this.get_context() + }).done(function () { + self.trigger('dataset_changed', ids) + }); }, /** * Calls an arbitrary RPC method @@ -604,6 +622,13 @@ instance.web.DataSet = instance.web.Class.extend(instance.web.PropertiesMixin, alter_ids: function(n_ids) { this.ids = n_ids; }, + remove_ids: function (ids) { + this.alter_ids(_(this.ids).difference(ids)); + }, + add_ids: function(ids, at) { + var args = [at, 0].concat(_.difference(ids, this.ids)); + this.ids.splice.apply(this.ids, args); + }, /** * Resequence records. * @@ -701,22 +726,28 @@ instance.web.DataSetSearch = instance.web.DataSet.extend({ get_domain: function (other_domain) { this._model.domain(other_domain); }, + alter_ids: function (ids) { + this._super(ids); + if (this.index !== null && this.index >= this.ids.length) { + this.index = this.ids.length > 0 ? this.ids.length - 1 : 0; + } + }, + remove_ids: function (ids) { + var before = this.ids.length; + this._super(ids); + if (this._length) { + this._length -= (before - this.ids.length); + } + }, unlink: function(ids, callback, error_callback) { var self = this; return this._super(ids).done(function(result) { - self.ids = _(self.ids).difference(ids); - if (self._length) { - self._length -= 1; - } - if (self.index !== null) { - self.index = self.index <= self.ids.length - 1 ? - self.index : (self.ids.length > 0 ? self.ids.length -1 : 0); - } + self.remove_ids( ids); self.trigger("dataset_changed", ids, callback, error_callback); }); }, size: function () { - if (this._length !== undefined) { + if (this._length != null) { return this._length; } return this._super(); diff --git a/addons/web/static/src/js/data_export.js b/addons/web/static/src/js/data_export.js index e38d21d1cd2..fb5e391effd 100644 --- a/addons/web/static/src/js/data_export.js +++ b/addons/web/static/src/js/data_export.js @@ -4,15 +4,34 @@ var QWeb = instance.web.qweb, instance.web.DataExport = instance.web.Dialog.extend({ template: 'ExportTreeView', dialog_title: {toString: function () { return _t("Export Data"); }}, + events: { + 'click #add_field': function () { + var self = this; + this.$('#field-tree-structure tr.ui-selected') + .removeClass('ui-selected') + .find('a').each(function () { + var id = $(this).attr('id').split('-')[1]; + var string = $(this).attr('string'); + self.add_field(id, string); + }); + }, + 'click #remove_field': function () { + this.$('#fields_list option:selected').remove(); + }, + 'click #remove_all_field': function () { + this.$('#fields_list').empty(); + }, + 'click #export_new_list': 'on_show_save_list', + }, init: function(parent, dataset) { var self = this; - options = { - buttons : [ - {text: _t("Close"), click: function() { self.close(); }}, - {text: _t("Export To File"), click: function() { self.on_click_export_data(); }} + var options = { + buttons: [ + {text: _t("Close"), click: function () { self.close(); }}, + {text: _t("Export To File"), click: function () { self.on_click_export_data(); }} ], - close: function(event, ui){ self.close();} - } + close: function () { self.close();} + }; this._super(parent, options); this.records = {}; this.dataset = dataset; @@ -23,24 +42,6 @@ instance.web.DataExport = instance.web.Dialog.extend({ var self = this; this._super.apply(this, arguments); self.$el.removeClass('ui-dialog-content ui-widget-content'); - self.$el.find('#add_field').click(function() { - if ($('#field-tree-structure tr.ui-selected')) { - var fld = self.$el.find('#field-tree-structure tr.ui-selected').find('a'); - for (var i = 0; i < fld.length; i++) { - var id = $(fld[i]).attr('id').split('-')[1]; - var string = $(fld[i]).attr('string'); - self.add_field(id, string); - } - self.$el.find('#field-tree-structure tr').removeClass('ui-selected'); - } - }); - self.$el.find('#remove_field').click(function() { - self.$el.find('#fields_list option:selected').remove(); - }); - self.$el.find('#remove_all_field').click(function() { - self.$el.find('#fields_list').empty(); - }); - this.$el.find('#export_new_list').click(this.on_show_save_list); var got_fields = new $.Deferred(); this.$el.find('#import_compat').change(function() { @@ -49,7 +50,7 @@ instance.web.DataExport = instance.web.Dialog.extend({ var import_comp = self.$el.find("#import_compat").val(); self.rpc("/web/export/get_fields", { model: self.dataset.model, - import_compat: Boolean(import_comp) + import_compat: !!import_comp, }).done(function (records) { got_fields.resolve(); self.on_show_data(records); @@ -79,7 +80,7 @@ instance.web.DataExport = instance.web.Dialog.extend({ var self = this; if (self.$el.find('#saved_export_list').is(':hidden')) { self.$el.find('#ExistsExportList').show(); - return; + return $.when(); } return this.exports.read_slice(['name'], { domain: [['resource', '=', this.dataset.model]] @@ -192,7 +193,6 @@ instance.web.DataExport = instance.web.Dialog.extend({ }, on_show_data: function(result, after) { var self = this; - var imp_cmpt = Boolean(self.$el.find("#import_compat").val()); if (after) { var current_tr = self.$el.find("tr[id='treerow-" + after + "']"); @@ -220,15 +220,16 @@ instance.web.DataExport = instance.web.Dialog.extend({ frst_click = self.$el.find("tr[id^='treerow-']")[self.row_index-1]; $(frst_click).addClass("ui-selected"); } else { + var i; if (this.rowIndex >=self.row_index) { - for (var i = (self.row_index-1); i < this.rowIndex; i++) { + for (i = (self.row_index-1); i < this.rowIndex; i++) { scnd_click = self.$el.find("tr[id^='treerow-']")[i]; if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { $(scnd_click).addClass("ui-selected"); } } } else { - for (var i = (self.row_index-1); i >= (this.rowIndex-1); i--) { + for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { scnd_click = self.$el.find("tr[id^='treerow-']")[i]; if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { $(scnd_click).addClass("ui-selected"); @@ -263,6 +264,7 @@ instance.web.DataExport = instance.web.Dialog.extend({ self.$el.find("tr[id='treerow-" + record.id + "']").keydown(function(e) { var keyCode = e.keyCode || e.which; var arrow = {left: 37, up: 38, right: 39, down: 40 }; + var elem; switch (keyCode) { case arrow.left: if ($(this).hasClass('open')) { @@ -275,7 +277,7 @@ instance.web.DataExport = instance.web.Dialog.extend({ } break; case arrow.up: - var elem = this; + elem = this; $(elem).removeClass("ui-selected"); while (!$(elem).prev().is(":visible")) { elem = $(elem).prev(); @@ -286,7 +288,7 @@ instance.web.DataExport = instance.web.Dialog.extend({ $(elem).prev().find('a').focus(); break; case arrow.down: - var elem = this; + elem = this; $(elem).removeClass("ui-selected"); while(!$(elem).next().is(":visible")) { elem = $(elem).next(); @@ -353,14 +355,13 @@ instance.web.DataExport = instance.web.Dialog.extend({ } }, get_fields: function() { - var export_field = []; - this.$el.find("#fields_list option").each(function() { - export_field.push($(this).val()); - }); - if (!export_field.length) { + var export_fields = this.$("#fields_list option").map(function() { + return $(this).val(); + }).get(); + if (!export_fields.length) { alert(_t("Please select fields to save export list...")); } - return export_field; + return export_fields; }, on_click_export_data: function() { var self = this; @@ -374,21 +375,24 @@ instance.web.DataExport = instance.web.Dialog.extend({ alert(_t("Please select fields to export...")); return; } - exported_fields.unshift({name: 'id', label: 'External ID'}); + var export_format = this.$el.find("#export_format").val(); + var ids_to_export = this.$('#export_selection_only').prop('checked') + ? this.getParent().get_selected_ids() + : this.dataset.ids; + instance.web.blockUI(); this.session.get_file({ url: '/web/export/' + export_format, data: {data: JSON.stringify({ model: this.dataset.model, fields: exported_fields, - ids: this.dataset.ids, + ids: ids_to_export, domain: this.dataset.domain, - import_compat: Boolean( - this.$el.find("#import_compat").val()) + import_compat: !!this.$el.find("#import_compat").val(), })}, - complete: instance.web.unblockUI + complete: instance.web.unblockUI, }); }, close: function() { diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index f5449ed8bba..cef92ccf293 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -131,6 +131,7 @@ my.InputView = instance.web.Widget.extend({ paste: 'onPaste', }, getSelection: function () { + this.el.normalize(); // get Text node var root = this.el.childNodes[0]; if (!root || !root.textContent) { @@ -139,6 +140,16 @@ my.InputView = instance.web.Widget.extend({ return {start: 0, end: 0}; } var range = window.getSelection().getRangeAt(0); + // In Firefox, depending on the way text is selected (drag, double- or + // triple-click) the range may start or end on the parent of the + // selected text node‽ Check for this condition and fixup the range + // note: apparently with C-a this can go even higher? + if (range.startContainer === this.el && range.startOffset === 0) { + range.setStart(root, 0); + } + if (range.endContainer === this.el && range.endOffset === 1) { + range.setEnd(root, root.length) + } assert(range.startContainer === root, "selection should be in the input view"); assert(range.endContainer === root, @@ -149,6 +160,7 @@ my.InputView = instance.web.Widget.extend({ } }, onKeydown: function (e) { + this.el.normalize(); var sel; switch (e.which) { // Do not insert newline, but let it bubble so searchview can use it @@ -186,6 +198,7 @@ my.InputView = instance.web.Widget.extend({ } }, setCursorAtEnd: function () { + this.el.normalize(); var sel = window.getSelection(); sel.removeAllRanges(); var range = document.createRange(); @@ -196,13 +209,14 @@ my.InputView = instance.web.Widget.extend({ // from about half the link to half the text, paste in search box then // hit the left arrow key, getSelection would blow up). // - // Explicitly selecting only the inner text node (only child node at - // this point, though maybe we should assert that) avoiids the issue + // Explicitly selecting only the inner text node (only child node + // since we've normalized the parent) avoids the issue range.selectNode(this.el.childNodes[0]); range.collapse(false); sel.addRange(range); }, onPaste: function () { + this.el.normalize(); // In MSIE and Webkit, it is possible to get various representations of // the clipboard data at this point e.g. // window.clipboardData.getData('Text') and @@ -224,6 +238,7 @@ my.InputView = instance.web.Widget.extend({ var data = this.$el.text(); // paste raw text back in this.$el.empty().text(data); + this.el.normalize(); // Set the cursor at the end of the text, so the cursor is not lost // in some kind of error-spawning limbo. this.setCursorAtEnd(); @@ -326,7 +341,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea } }, 'autocompleteopen': function () { - this.$el.autocomplete('widget').css('z-index', 3); + this.$el.autocomplete('widget').css('z-index', 1004); }, }, /** @@ -449,11 +464,12 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea var autocomplete = this.$el.autocomplete({ source: this.proxy('complete_global_search'), select: this.proxy('select_completion'), + search: function () { self.$el.autocomplete('close'); }, focus: function (e) { e.preventDefault(); }, html: true, autoFocus: true, minLength: 1, - delay: 0 + delay: 0, }).data('autocomplete'); // MonkeyPatch autocomplete instance @@ -526,7 +542,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea var val = this.$el.val(); this.$el.val(''); var complete = this.$el.data('autocomplete'); - if ((val && complete.term === undefined) || complete.previous !== undefined) { + if ((val && complete.term === undefined) || complete.previous) { throw new Error("new jquery.ui version altering implementation" + " details relied on"); } @@ -1039,7 +1055,9 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in facet.values.each(function (v) { var i = _(self.filters).indexOf(v.get('value')); if (i === -1) { return; } - $filters.eq(i).addClass('oe_selected'); + $filters.filter(function () { + return Number($(this).data('index')) === i; + }).addClass('oe_selected'); }); }, /** @@ -1129,7 +1147,7 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in }); }, toggle_filter: function (e) { - this.toggle(this.filters[$(e.target).index()]); + this.toggle(this.filters[Number($(e.target).data('index'))]); }, toggle: function (filter) { this.view.query.toggle(this.make_facet([this.make_value(filter)])); @@ -1337,20 +1355,22 @@ instance.web.search.CharField = instance.web.search.Field.extend( /** @lends ins } }); instance.web.search.NumberField = instance.web.search.Field.extend(/** @lends instance.web.search.NumberField# */{ - value_from: function () { - if (!this.$el.val()) { - return null; - } - var val = this.parse(this.$el.val()), - check = Number(this.$el.val()); - if (isNaN(val) || val !== check) { - this.$el.addClass('error'); - throw new instance.web.search.Invalid( - this.attrs.name, this.$el.val(), this.error_message); - } - this.$el.removeClass('error'); - return val; - } + complete: function (value) { + var val = this.parse(value); + if (isNaN(val)) { return $.when(); } + var label = _.str.sprintf( + _t("Search %(field)s for: %(value)s"), { + field: '<em>' + this.attrs.string + '</em>', + value: '<strong>' + _.str.escapeHTML(value) + '</strong>'}); + return $.when([{ + label: label, + facet: { + category: this.attrs.string, + field: this, + values: [{label: value, value: val}] + } + }]); + }, }); /** * @class @@ -1888,7 +1908,7 @@ instance.web.search.ExtendedSearchProposition = instance.web.Widget.extend(/** @ this._super(parent); this.fields = _(fields).chain() .map(function(val, key) { return _.extend({}, val, {'name': key}); }) - .filter(function (field) { return !field.deprecated; }) + .filter(function (field) { return !field.deprecated && (field.store === void 0 || field.store || field.fnct_search); }) .sortBy(function(field) {return field.string;}) .value(); this.attrs = {_: _, fields: this.fields, selected: null}; diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 32e86d69bed..c87922937a2 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2721,6 +2721,11 @@ instance.web.form.FieldTextHtml = instance.web.form.AbstractField.extend(instanc self.internal_set_value(self.$textarea.val()); } }); + if (this.field.translate) { + var $img = $('<img class="oe_field_translate oe_input_icon" src="/web/static/src/img/icons/terp-translate.png" width="16" height="16" border="0"/>') + .click(this.on_translate); + this.$cleditor.$toolbar.append($img); + } } }, render_value: function() { @@ -3241,6 +3246,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc self.display_value_backup = {}; self.render_value(); self.focus(); + self.view.do_onchange(self); }); }); @@ -4217,7 +4223,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(in ext: { autocomplete: { selectFromDropdown: function() { - $(this).trigger('hideDropdown'); + this.trigger('hideDropdown'); var index = Number(this.selectedSuggestionElement().children().children().data('index')); var data = self.search_result[index]; if (data.id) { @@ -4226,6 +4232,7 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(in ignore_blur = true; data.action(); } + this.trigger('setSuggestions', {result : []}); }, }, tags: { @@ -4960,7 +4967,7 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend this.searchview.hide(); } if (this.view_list) { - this.view_list.$el.hide(); + this.view_list.do_hide(); } this.setup_form_view(); }, diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 840effa9221..4f58b002328 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -503,12 +503,9 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi var reloaded = $.Deferred(); this.$el.find('.oe_list_content').append( this.groups.render(function () { - if (self.dataset.index == null) { - var has_one = false; - self.records.each(function () { has_one = true; }); - if (has_one) { + if (self.dataset.index == null && self.records.length || + self.dataset.index >= self.records.length) { self.dataset.index = 0; - } } self.compute_aggregates(); reloaded.resolve(); @@ -530,12 +527,13 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi return r.tag === 'field'; }), 'name') ).done(function (records) { - if (!records[0]) { + var values = records[0]; + if (!values) { self.records.remove(record); return; } - _(records[0]).each(function (value, key) { - record.set(key, value, {silent: true}); + _(_.keys(values)).each(function(key){ + record.set(key, values[key], {silent: true}); }); record.trigger('change', record); }); @@ -896,7 +894,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. this.record_callbacks = { 'remove': function (event, record) { var id = record.get('id'); - self.dataset.remove_ids([id]) + self.dataset.remove_ids([id]); var $row = self.$current.children('[data-id=' + id + ']'); var index = $row.data('index'); $row.remove(); @@ -909,12 +907,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. throw new Error(_.str.sprintf( _t("Setting 'id' attribute on existing record %s"), JSON.stringify(record.attributes) )); } - if (!_.contains(self.dataset.ids, value)) { - // add record to dataset if not already in (added by - // the form view?) - self.dataset.ids.splice( - self.records.indexOf(record), 0, value); - } + self.dataset.add_ids([value], self.records.indexOf(record)); // Set id on new record $row = self.$current.children('[data-id=false]'); } else { @@ -925,6 +918,8 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. }, 'add': function (ev, records, record, index) { var $new_row = $(self.render_record(record)); + var id = record.get('id'); + if (id) { self.dataset.add_ids([id], index); } if (index === 0) { $new_row.prependTo(self.$current); diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 4e042b60c5d..512fc4ff373 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -429,7 +429,6 @@ openerp.web.list_editable = function (instance) { var index = this.records.indexOf(source_record) + 1; record = this.make_empty_record(id); this.records.add(record, {at: index}); - this.dataset.ids.splice(index, 0, id); } return this.reload_record(record); }, diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index fdb2eeee329..78d733110d8 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1363,8 +1363,8 @@ instance.web.View = instance.web.Widget.extend({ } args.push(context); return dataset.call_button(action_data.name, args).then(handler).then(function () { - if (self.ViewManager.ActionManager) { - self.ViewManager.ActionManager.__parentedParent.menu.do_reload_needaction(); + if (instance.webclient) { + instance.webclient.menu.do_reload_needaction(); } }); } else if (action_data.type=="action") { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 14c7f722ec2..a459486bf05 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -422,6 +422,7 @@ <span class="oe_topbar_name"/> <ul class="oe_dropdown_menu"> <li><a href="#" data-menu="settings">Preferences</a></li> + <li><a href="#" data-menu="account">My OpenERP.com account</a></li> <li><a href="#" data-menu="about">About OpenERP</a></li> <li><a href="#" data-menu="help">Help</a></li> <li><a href="#" data-menu="logout">Log out</a></li> @@ -739,7 +740,7 @@ <td t-foreach="aggregate_columns" t-as="column" class="oe_list_footer oe_number" t-att-data-field="column.id" t-att-title="column.label"> </td> - <td t-if="options.deletable"/> + <td t-if="options.deletable" class="oe_list_record_delete"/> </tr> </tfoot> </table> @@ -1743,6 +1744,9 @@ <label for="export_format">Export Formats</label> <select id="export_format" name="export_format"></select> + + <label for="export_selection_only">Only export selection:</label> + <input type="checkbox" id="export_selection_only"/> </td> </tr> diff --git a/addons/web_calendar/__init__.py b/addons/web_calendar/__init__.py index 013e4b7ec4e..e69de29bb2d 100644 --- a/addons/web_calendar/__init__.py +++ b/addons/web_calendar/__init__.py @@ -1 +0,0 @@ -#!/usr/bin/python diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png Binary files differindex 5036c9c2efb..f4f322f7528 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png Binary files differindex 3bba608beeb..cbe2e940f64 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png Binary files differindex 510dfd0b17f..8cb8a8106ad 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png Binary files differindex 31d6626cdd4..5e13a09f6f6 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png Binary files differindex 8faac638896..24767220be0 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/images.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png Binary files differindex 44045c21c35..011bfafbe12 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/resize_dots.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png Binary files differindex 133dabca745..f0fc5d0e3ba 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_left.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png Binary files differindex ced03e5e4ed..14167035058 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/arrow_right.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png Binary files differindex 4aa5d6620e4..23b826f113c 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/close_icon.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png Binary files differindex f9a99e21fae..c336f88d60f 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/controls.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png Binary files differindex 1b02c11f18a..5d5836930f8 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png Binary files differindex f1875140dbd..0f93ee3bcde 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/databg_now.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png Binary files differindex c26e2a3aaff..8a767c78dac 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resize_dots.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png Binary files differindex 389ca543e0d..0d3953baf24 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_dhx_terrace/resizing.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png Binary files differindex f874fa321f7..7f7a5dd3642 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png Binary files differindex 88e22e1682b..61261dc5dff 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png Binary files differindex 8f789556215..1cf5dbbeddd 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png Binary files differindex 697be65515c..bdd7e6fc320 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png Binary files differindex 24957208fdc..a6c5388c45d 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png Binary files differindex a3bae3e0186..9f92899f488 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png Binary files differindex 31d6626cdd4..5e13a09f6f6 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png Binary files differindex 22d630927f3..847c8e8830b 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png Binary files differindex 287a23bbdcf..cd47de7e0cd 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png Binary files differindex f0314fa6099..0af7c9357f6 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png Binary files differindex 15681b311e0..bd61e3fbd1c 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png Binary files differindex f43a46357b2..af75532c8f8 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png Binary files differindex 8f9a4f6da02..5bee85bbb98 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png Binary files differindex 094b805f609..1606c6d50ca 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png Binary files differindex 7ee92852294..b47770cfa2b 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png Binary files differindex 6e5ffb852f0..dcd1340019b 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/license.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/license.txt index 4a7d08c91e4..f695d8ecb2c 100644 --- a/addons/web_calendar/static/lib/dhtmlxScheduler/license.txt +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/license.txt @@ -1,228 +1,228 @@ -
- GNU GENERAL PUBLIC LICENSE
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-
-of this license document, but changing it is not allowed.
-
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License applies to any program or other work which contains a
-notice placed by the copyright holder saying it may be distributed under
-the terms of this General Public License. The "Program", below, refers
-to any such program or work, and a "work based on the Program" means
-either the Program or any derivative work under copyright law: that is
-to say, a work containing the Program or a portion of it, either
-verbatim or with modifications and/or translated into another language.
-(Hereinafter, translation is included without limitation in the term
-"modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of running
-the Program is not restricted, and the output from the Program is
-covered only if its contents constitute a work based on the Program
-(independent of having been made by running the Program). Whether that
-is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously
-and appropriately publish on each copy an appropriate copyright notice
-and disclaimer of warranty; keep intact all the notices that refer to
-this License and to the absence of any warranty; and give any other
-recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of
-it, thus forming a work based on the Program, and copy and distribute
-such modifications or work under the terms of Section 1 above, provided
-that you also meet all of these conditions:
-
-a) You must cause the modified files to carry prominent notices stating
-that you changed the files and the date of any change.
-
-b) You must cause any work that you distribute or publish, that in whole
-or in part contains or is derived from the Program or any part thereof,
-to be licensed as a whole at no charge to all third parties under the
-terms of this License.
-
-c) If the modified program normally reads commands interactively when
-run, you must cause it, when started running for such interactive use in
-the most ordinary way, to print or display an announcement including an
-appropriate copyright notice and a notice that there is no warranty (or
-else, saying that you provide a warranty) and that users may
-redistribute the program under these conditions, and telling the user
-how to view a copy of this License. (Exception: if the Program itself is
-interactive but does not normally print such an announcement, your work
-based on the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program, and
-can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based on
-the Program, the distribution of the whole must be on the terms of this
-License, whose permissions for other licensees extend to the entire
-whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of a
-storage or distribution medium does not bring the other work under the
-scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections
-1 and 2 above provided that you also do one of the following:
-
-a) Accompany it with the complete corresponding machine-readable source
-code, which must be distributed under the terms of Sections 1 and 2
-above on a medium customarily used for software interchange; or,
-
-b) Accompany it with a written offer, valid for at least three years, to
-give any third party, for a charge no more than your cost of physically
-performing source distribution, a complete machine-readable copy of the
-corresponding source code, to be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-c) Accompany it with the information you received as to the offer to
-distribute corresponding source code. (This alternative is allowed only
-for noncommercial distribution and only if you received the program in
-object code or executable form with such an offer, in accord with
-Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source code
-means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to control
-compilation and installation of the executable. However, as a special
-exception, the source code distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies the
-executable.
-
-If distribution of executable or object code is made by offering access
-to copy from a designated place, then offering equivalent access to copy
-the source code from the same place counts as distribution of the source
-code, even though third parties are not compelled to copy the source
-along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt otherwise
-to copy, modify, sublicense or distribute the Program is void, and will
-automatically terminate your rights under this License. However, parties
-who have received copies, or rights, from you under this License will
-not have their licenses terminated so long as such parties remain in
-full compliance.
-
-5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and all
-its terms and conditions for copying, distributing or modifying the
-Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further restrictions
-on the recipients' exercise of the rights granted herein. You are not
-responsible for enforcing compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot distribute
-so as to satisfy simultaneously your obligations under this License and
-any other pertinent obligations, then as a consequence you may not
-distribute the Program at all. For example, if a patent license would
-not permit royalty-free redistribution of the Program by all those who
-receive copies directly or indirectly through you, then the only way you
-could satisfy both it and this License would be to refrain entirely from
-distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is implemented
-by public license practices. Many people have made generous
-contributions to the wide range of software distributed through that
-system in reliance on consistent application of that system; it is up to
-the author/donor to decide if he or she is willing to distribute
-software through any other system and a licensee cannot impose that choice.
-
-This section is intended to make thoroughly clear what is believed to be
-a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License may
-add an explicit geographical distribution limitation excluding those
-countries, so that distribution is permitted only in or among countries
-not thus excluded. In such case, this License incorporates the
-limitation as if written in the body of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Program does not specify a version
-number of this License, you may choose any version ever published by the
-Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the
-author to ask for permission. For software which is copyrighted by the
-Free Software Foundation, write to the Free Software Foundation; we
-sometimes make exceptions for this. Our decision will be guided by the
-two goals of preserving the free status of all derivatives of our free
-software and of promoting the sharing and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
-ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
-YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
-DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
-DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
-(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
-INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
-THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
-OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
+ + GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies + +of this license document, but changing it is not allowed. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a +notice placed by the copyright holder saying it may be distributed under +the terms of this General Public License. The "Program", below, refers +to any such program or work, and a "work based on the Program" means +either the Program or any derivative work under copyright law: that is +to say, a work containing the Program or a portion of it, either +verbatim or with modifications and/or translated into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of running +the Program is not restricted, and the output from the Program is +covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that +is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice +and disclaimer of warranty; keep intact all the notices that refer to +this License and to the absence of any warranty; and give any other +recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of +it, thus forming a work based on the Program, and copy and distribute +such modifications or work under the terms of Section 1 above, provided +that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating +that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole +or in part contains or is derived from the Program or any part thereof, +to be licensed as a whole at no charge to all third parties under the +terms of this License. + +c) If the modified program normally reads commands interactively when +run, you must cause it, when started running for such interactive use in +the most ordinary way, to print or display an announcement including an +appropriate copyright notice and a notice that there is no warranty (or +else, saying that you provide a warranty) and that users may +redistribute the program under these conditions, and telling the user +how to view a copy of this License. (Exception: if the Program itself is +interactive but does not normally print such an announcement, your work +based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, and +can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based on +the Program, the distribution of the whole must be on the terms of this +License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the +scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections +1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source +code, which must be distributed under the terms of Sections 1 and 2 +above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to +give any third party, for a charge no more than your cost of physically +performing source distribution, a complete machine-readable copy of the +corresponding source code, to be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to +distribute corresponding source code. (This alternative is allowed only +for noncommercial distribution and only if you received the program in +object code or executable form with such an offer, in accord with +Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source code +means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to control +compilation and installation of the executable. However, as a special +exception, the source code distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies the +executable. + +If distribution of executable or object code is made by offering access +to copy from a designated place, then offering equivalent access to copy +the source code from the same place counts as distribution of the source +code, even though third parties are not compelled to copy the source +along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and will +automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will +not have their licenses terminated so long as such parties remain in +full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and all +its terms and conditions for copying, distributing or modifying the +Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further restrictions +on the recipients' exercise of the rights granted herein. You are not +responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot distribute +so as to satisfy simultaneously your obligations under this License and +any other pertinent obligations, then as a consequence you may not +distribute the Program at all. For example, if a patent license would +not permit royalty-free redistribution of the Program by all those who +receive copies directly or indirectly through you, then the only way you +could satisfy both it and this License would be to refrain entirely from +distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is implemented +by public license practices. Many people have made generous +contributions to the wide range of software distributed through that +system in reliance on consistent application of that system; it is up to +the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be +a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License may +add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among countries +not thus excluded. In such case, this License incorporates the +limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a version +number of this License, you may choose any version ever published by the +Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH +YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR +DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF +THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR +OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + diff --git a/addons/web_calendar/static/src/img/cal_left.png b/addons/web_calendar/static/src/img/cal_left.png Binary files differindex b9b66aaeb63..acbc4565b4d 100644 --- a/addons/web_calendar/static/src/img/cal_left.png +++ b/addons/web_calendar/static/src/img/cal_left.png diff --git a/addons/web_calendar/static/src/img/cal_right.png b/addons/web_calendar/static/src/img/cal_right.png Binary files differindex 3c48e521be4..fc8f8a02697 100644 --- a/addons/web_calendar/static/src/img/cal_right.png +++ b/addons/web_calendar/static/src/img/cal_right.png diff --git a/addons/web_calendar/static/src/img/minical_left.png b/addons/web_calendar/static/src/img/minical_left.png Binary files differindex b17118fcc67..5af03c10187 100644 --- a/addons/web_calendar/static/src/img/minical_left.png +++ b/addons/web_calendar/static/src/img/minical_left.png diff --git a/addons/web_calendar/static/src/img/minical_right.png b/addons/web_calendar/static/src/img/minical_right.png Binary files differindex ab660de81f0..fc83ac89bd6 100644 --- a/addons/web_calendar/static/src/img/minical_right.png +++ b/addons/web_calendar/static/src/img/minical_right.png diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index 3c9a8a6fa9d..8da2ad43819 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -4,9 +4,9 @@ (function() { // Monkey patch dhtml scheduler in order to fix a bug. - // It manually implements some kind of dbl click event - // bubbling but fails to do it properly. if (this.scheduler) { + // It manually implements some kind of dbl click event + // bubbling but fails to do it properly. var old_scheduler_dblclick = scheduler._on_dbl_click; scheduler._on_dbl_click = function(e, src) { if (src && !src.className) { @@ -15,6 +15,14 @@ old_scheduler_dblclick.apply(this, arguments); } }; + + // It uses the date+time format, leading to month range being between + // 1/5 08:53 - 1/6 08:52 instead of 1/5 00:00 - 31/5 23:59 + scheduler._click.dhx_cal_today_button = function() { + if (scheduler.callEvent("onBeforeTodayDisplayed", [])) { + scheduler.setCurrentView( scheduler.date.date_part(new Date()) ); + } + }; } }()); @@ -265,6 +273,13 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ //To parse Events we have to convert date Format var res_events = [], sidebar_items = {}; + var selection_label; + if(this.fields[this.color_field].selection) { + selection_label = {}; + _(this.fields[this.color_field].selection).each(function(value){ + selection_label[value[0]] = value[1]; + }); + } for (var e = 0; e < events.length; e++) { var evt = events[e]; if (!evt[this.date_start]) { @@ -274,13 +289,19 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ if (this.color_field) { var filter = evt[this.color_field]; if (filter) { - var filter_value = (typeof filter === 'object') ? filter[0] : filter; + if (typeof filter !== 'object') { + filter = [filter, filter]; + } + if (selection_label) { + filter[1] = selection_label[filter[0]]; + } + var filter_value = filter[0]; if (typeof(fn_filter) === 'function' && !fn_filter(filter_value)) { continue; } var filter_item = { value: filter_value, - label: (typeof filter === 'object') ? filter[1] : filter, + label: filter[1], color: this.get_color(filter_value) }; if (!sidebar_items[filter_value]) { @@ -339,9 +360,13 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ }, get_event_data: function(event_obj) { var data = { - name: event_obj.text + name: event_obj.text || scheduler.locale.labels.new_event }; - data[this.date_start] = instance.web.datetime_to_str(event_obj.start_date); + if (this.fields[this.date_start].type == 'date') { + data[this.date_start] = instance.web.date_to_str(event_obj.start_date) + }else { + data[this.date_start] = instance.web.datetime_to_str(event_obj.start_date) + } if (this.date_stop) { data[this.date_stop] = instance.web.datetime_to_str(event_obj.end_date); } @@ -498,7 +523,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ var self = this; var index = this.dataset.get_id_index(event_id); if (index !== null) { - this.dataset.unlink(event_id); + this.dataset.unlink(this.dataset.ids[index]); } }, }); diff --git a/addons/web_gantt/__init__.py b/addons/web_gantt/__init__.py index 013e4b7ec4e..e69de29bb2d 100644 --- a/addons/web_gantt/__init__.py +++ b/addons/web_gantt/__init__.py @@ -1 +0,0 @@ -#!/usr/bin/python diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png Binary files differindex 9d495780d13..82ef54a0696 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png Binary files differindex 68376a9c70d..035a1f4ca12 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png Binary files differindex 02f41eaf5d8..b98d24f25b6 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png Binary files differindex aa35f7dcf5f..6aa73a252d1 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png Binary files differindex 556058d6b22..60093e8b87f 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png Binary files differindex 1d08f670c44..bfa2300b0ed 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png Binary files differindex 69205da45a8..be13bb1e1a5 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png Binary files differindex 8be117b1ad2..f8b20038b40 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png +++ b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png diff --git a/addons/web_gantt/static/lib/dhtmlxGantt/index.html b/addons/web_gantt/static/lib/dhtmlxGantt/index.html index 5196d426ca6..d35c33ca747 100644 --- a/addons/web_gantt/static/lib/dhtmlxGantt/index.html +++ b/addons/web_gantt/static/lib/dhtmlxGantt/index.html @@ -1,107 +1,107 @@ -<html>
-<head>
- <title>Gantt Chart</title>
- <link type="text/css" rel="stylesheet" href="codebase/dhtmlxgantt.css">
- <script type="text/javascript" language="JavaScript" src="codebase/dhtmlxcommon.js"></script>
- <script type="text/javascript" language="JavaScript" src="codebase/dhtmlxgantt.js"></script>
-
-<script language="JavaScript" type="text/javascript">
- /*<![CDATA[*/
- function createChartControl(htmlDiv1)
- {
- //project 1
- var project1 = new GanttProjectInfo(1, "Applet redesign", new Date(2010, 5, 11));
-
- var parentTask1 = new GanttTaskInfo(1, "Old code review", new Date(2010, 5, 11), 208, 50, "");
- parentTask1.addChildTask(new GanttTaskInfo(2, "Convert to J#", new Date(2010, 5, 11), 100, 40, ""));
- parentTask1.addChildTask(new GanttTaskInfo(13, "Add new functions", new Date(2010, 5, 12), 80, 90, ""));
-
- var parentTask2 = new GanttTaskInfo(3, "Hosted Control", new Date(2010, 6, 7), 190, 80, "1");
- var parentTask5 = new GanttTaskInfo(5, "J# interfaces", new Date(2010, 6, 14), 60, 70, "6");
- var parentTask123 = new GanttTaskInfo(123, "use GUIDs", new Date(2010, 6, 14), 60, 70, "");
- parentTask5.addChildTask(parentTask123);
- parentTask2.addChildTask(parentTask5);
- parentTask2.addChildTask(new GanttTaskInfo(6, "Task D", new Date(2010, 6, 10), 30, 80, "14"));
-
- var parentTask4 = new GanttTaskInfo(7, "Unit testing", new Date(2010, 6, 15), 118, 80, "6");
- var parentTask8 = new GanttTaskInfo(8, "core (com)", new Date(2010, 6, 15), 100, 10, "");
- parentTask8.addChildTask(new GanttTaskInfo(55555, "validate uids", new Date(2010, 6, 20), 60, 10, ""));
- parentTask4.addChildTask(parentTask8);
- parentTask4.addChildTask(new GanttTaskInfo(9, "Stress test", new Date(2010, 6, 15), 80, 50, ""));
- parentTask4.addChildTask(new GanttTaskInfo(10, "User interfaces", new Date(2010, 6, 16), 80, 10, ""));
- parentTask2.addChildTask(parentTask4);
-
- parentTask2.addChildTask(new GanttTaskInfo(11, "Testing, QA", new Date(2010, 6, 21), 60, 100, "6"));
- parentTask2.addChildTask(new GanttTaskInfo(12, "Task B (Jim)", new Date(2010, 6, 8), 110, 1, "14"));
- parentTask2.addChildTask(new GanttTaskInfo(14, "Task A", new Date(2010, 6, 7), 8, 10, ""));
- parentTask2.addChildTask(new GanttTaskInfo(15, "Task C", new Date(2010, 6, 9), 110, 90, "14"));
-
- project1.addTask(parentTask1);
- project1.addTask(parentTask2);
-
- //project 2
- var project2 = new GanttProjectInfo(2, "Web Design", new Date(2010, 5, 17));
-
- var parentTask22 = new GanttTaskInfo(62, "Fill HTML pages", new Date(2010, 5, 17), 157, 50, "");
- parentTask22.addChildTask(new GanttTaskInfo(63, "Cut images", new Date(2010, 5, 22), 78, 40, ""));
- parentTask22.addChildTask(new GanttTaskInfo(64, "Manage CSS", null, 90, 90, ""));
- project2.addTask(parentTask22);
-
- var parentTask70 = new GanttTaskInfo(70, "PHP coding", new Date(2010, 5, 18), 120, 10, "");
- parentTask70.addChildTask(new GanttTaskInfo(71, "Purchase D control", new Date(2010, 5, 18), 50, 0, ""));
- project2.addTask(parentTask70);
-
- var ganttChartControl = new GanttChart();
- ganttChartControl.setImagePath("codebase/imgs/");
- ganttChartControl.setEditable(true);
-
- ganttChartControl.addProject(project1);
- ganttChartControl.addProject(project2);
-
- ganttChartControl.create(htmlDiv1);
- }
- /*]]>*/
-</script>
-
- <style>
- body {font-size:12px}
- .{font-family:arial;font-size:12px}
- h1 {cursor:hand;font-size:16px;margin-left:10px;line-height:10px}
- xmp {color:green;font-size:12px;margin:0px;font-family:courier;background-color:#e6e6fa;padding:2px}
- .hdr{
- background-color:lightgrey;
- margin-bottom:10px;
- padding-left:10px;
- }
- </style>
-
-</head>
-<body onload="createChartControl('GanttDiv');">
-
- <div class="hdr">DHTML Gantt sample</div>
-
- <h1>Initialize object on page</h1>
- <p>You can place this JavaScript Gantt Chart anywhere on your web page, attaching it
- to any div object.<br>
- </p>
-
-
-<XMP>
-<div style="width:950px;height:620px;position:absolute" id="GanttDiv"></div>
-<script>
- var gantt = new GanttChart();
- gantt.setImagePath("codebase/imgs/");
- gantt.setEditable(true);
- ...
- gantt.addProject(project_1);
- ...
- gantt.create("GanttDiv");
-</script>
-</XMP>
-
-<br>
- <div style="width:950px;height:620px;position:absolute;" id="GanttDiv"></div>
-
-</body>
-</html>
-
+<html> +<head> + <title>Gantt Chart</title> + <link type="text/css" rel="stylesheet" href="codebase/dhtmlxgantt.css"> + <script type="text/javascript" language="JavaScript" src="codebase/dhtmlxcommon.js"></script> + <script type="text/javascript" language="JavaScript" src="codebase/dhtmlxgantt.js"></script> + +<script language="JavaScript" type="text/javascript"> + /*<![CDATA[*/ + function createChartControl(htmlDiv1) + { + //project 1 + var project1 = new GanttProjectInfo(1, "Applet redesign", new Date(2010, 5, 11)); + + var parentTask1 = new GanttTaskInfo(1, "Old code review", new Date(2010, 5, 11), 208, 50, ""); + parentTask1.addChildTask(new GanttTaskInfo(2, "Convert to J#", new Date(2010, 5, 11), 100, 40, "")); + parentTask1.addChildTask(new GanttTaskInfo(13, "Add new functions", new Date(2010, 5, 12), 80, 90, "")); + + var parentTask2 = new GanttTaskInfo(3, "Hosted Control", new Date(2010, 6, 7), 190, 80, "1"); + var parentTask5 = new GanttTaskInfo(5, "J# interfaces", new Date(2010, 6, 14), 60, 70, "6"); + var parentTask123 = new GanttTaskInfo(123, "use GUIDs", new Date(2010, 6, 14), 60, 70, ""); + parentTask5.addChildTask(parentTask123); + parentTask2.addChildTask(parentTask5); + parentTask2.addChildTask(new GanttTaskInfo(6, "Task D", new Date(2010, 6, 10), 30, 80, "14")); + + var parentTask4 = new GanttTaskInfo(7, "Unit testing", new Date(2010, 6, 15), 118, 80, "6"); + var parentTask8 = new GanttTaskInfo(8, "core (com)", new Date(2010, 6, 15), 100, 10, ""); + parentTask8.addChildTask(new GanttTaskInfo(55555, "validate uids", new Date(2010, 6, 20), 60, 10, "")); + parentTask4.addChildTask(parentTask8); + parentTask4.addChildTask(new GanttTaskInfo(9, "Stress test", new Date(2010, 6, 15), 80, 50, "")); + parentTask4.addChildTask(new GanttTaskInfo(10, "User interfaces", new Date(2010, 6, 16), 80, 10, "")); + parentTask2.addChildTask(parentTask4); + + parentTask2.addChildTask(new GanttTaskInfo(11, "Testing, QA", new Date(2010, 6, 21), 60, 100, "6")); + parentTask2.addChildTask(new GanttTaskInfo(12, "Task B (Jim)", new Date(2010, 6, 8), 110, 1, "14")); + parentTask2.addChildTask(new GanttTaskInfo(14, "Task A", new Date(2010, 6, 7), 8, 10, "")); + parentTask2.addChildTask(new GanttTaskInfo(15, "Task C", new Date(2010, 6, 9), 110, 90, "14")); + + project1.addTask(parentTask1); + project1.addTask(parentTask2); + + //project 2 + var project2 = new GanttProjectInfo(2, "Web Design", new Date(2010, 5, 17)); + + var parentTask22 = new GanttTaskInfo(62, "Fill HTML pages", new Date(2010, 5, 17), 157, 50, ""); + parentTask22.addChildTask(new GanttTaskInfo(63, "Cut images", new Date(2010, 5, 22), 78, 40, "")); + parentTask22.addChildTask(new GanttTaskInfo(64, "Manage CSS", null, 90, 90, "")); + project2.addTask(parentTask22); + + var parentTask70 = new GanttTaskInfo(70, "PHP coding", new Date(2010, 5, 18), 120, 10, ""); + parentTask70.addChildTask(new GanttTaskInfo(71, "Purchase D control", new Date(2010, 5, 18), 50, 0, "")); + project2.addTask(parentTask70); + + var ganttChartControl = new GanttChart(); + ganttChartControl.setImagePath("codebase/imgs/"); + ganttChartControl.setEditable(true); + + ganttChartControl.addProject(project1); + ganttChartControl.addProject(project2); + + ganttChartControl.create(htmlDiv1); + } + /*]]>*/ +</script> + + <style> + body {font-size:12px} + .{font-family:arial;font-size:12px} + h1 {cursor:hand;font-size:16px;margin-left:10px;line-height:10px} + xmp {color:green;font-size:12px;margin:0px;font-family:courier;background-color:#e6e6fa;padding:2px} + .hdr{ + background-color:lightgrey; + margin-bottom:10px; + padding-left:10px; + } + </style> + +</head> +<body onload="createChartControl('GanttDiv');"> + + <div class="hdr">DHTML Gantt sample</div> + + <h1>Initialize object on page</h1> + <p>You can place this JavaScript Gantt Chart anywhere on your web page, attaching it + to any div object.<br> + </p> + + +<XMP> +<div style="width:950px;height:620px;position:absolute" id="GanttDiv"></div> +<script> + var gantt = new GanttChart(); + gantt.setImagePath("codebase/imgs/"); + gantt.setEditable(true); + ... + gantt.addProject(project_1); + ... + gantt.create("GanttDiv"); +</script> +</XMP> + +<br> + <div style="width:950px;height:620px;position:absolute;" id="GanttDiv"></div> + +</body> +</html> + diff --git a/addons/web_graph/static/lib/flotr2/lib/canvastext.js b/addons/web_graph/static/lib/flotr2/lib/canvastext.js index 3266729f6a6..2df45bae0d8 100644 --- a/addons/web_graph/static/lib/flotr2/lib/canvastext.js +++ b/addons/web_graph/static/lib/flotr2/lib/canvastext.js @@ -1,7 +1,7 @@ /** * This code is released to the public domain by Jim Studt, 2007. * He may keep some sort of up to date copy at http://www.federated.com/~jim/canvastext/ - * It as been modified by Fabien Ménager to handle font style like size, weight, color and rotation. + * It as been modified by Fabien Ménager to handle font style like size, weight, color and rotation. * A partial support for special characters has been added too. */ var CanvasText = { @@ -108,71 +108,71 @@ var CanvasText = { '~': { width: 24, points: [[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],null,[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]] }, // Lower case Latin-1 - 'à': { diacritic: '`', letter: 'a' }, - 'á': { diacritic: '´', letter: 'a' }, - 'â': { diacritic: '^', letter: 'a' }, - 'ä': { diacritic: '¨', letter: 'a' }, - 'ã': { diacritic: '~', letter: 'a' }, + 'à ': { diacritic: '`', letter: 'a' }, + 'á': { diacritic: '´', letter: 'a' }, + 'â': { diacritic: '^', letter: 'a' }, + 'ä': { diacritic: '¨', letter: 'a' }, + 'ã': { diacritic: '~', letter: 'a' }, - 'è': { diacritic: '`', letter: 'e' }, - 'é': { diacritic: '´', letter: 'e' }, - 'ê': { diacritic: '^', letter: 'e' }, - 'ë': { diacritic: '¨', letter: 'e' }, + 'è': { diacritic: '`', letter: 'e' }, + 'é': { diacritic: '´', letter: 'e' }, + 'ê': { diacritic: '^', letter: 'e' }, + 'ë': { diacritic: '¨', letter: 'e' }, - 'ì': { diacritic: '`', letter: 'i' }, - 'í': { diacritic: '´', letter: 'i' }, - 'î': { diacritic: '^', letter: 'i' }, - 'ï': { diacritic: '¨', letter: 'i' }, + 'ì': { diacritic: '`', letter: 'i' }, + 'Ã': { diacritic: '´', letter: 'i' }, + 'î': { diacritic: '^', letter: 'i' }, + 'ï': { diacritic: '¨', letter: 'i' }, - 'ò': { diacritic: '`', letter: 'o' }, - 'ó': { diacritic: '´', letter: 'o' }, - 'ô': { diacritic: '^', letter: 'o' }, - 'ö': { diacritic: '¨', letter: 'o' }, - 'õ': { diacritic: '~', letter: 'o' }, + 'ò': { diacritic: '`', letter: 'o' }, + 'ó': { diacritic: '´', letter: 'o' }, + 'ô': { diacritic: '^', letter: 'o' }, + 'ö': { diacritic: '¨', letter: 'o' }, + 'õ': { diacritic: '~', letter: 'o' }, - 'ù': { diacritic: '`', letter: 'u' }, - 'ú': { diacritic: '´', letter: 'u' }, - 'û': { diacritic: '^', letter: 'u' }, - 'ü': { diacritic: '¨', letter: 'u' }, + 'ù': { diacritic: '`', letter: 'u' }, + 'ú': { diacritic: '´', letter: 'u' }, + 'û': { diacritic: '^', letter: 'u' }, + 'ü': { diacritic: '¨', letter: 'u' }, - 'ý': { diacritic: '´', letter: 'y' }, - 'ÿ': { diacritic: '¨', letter: 'y' }, + 'ý': { diacritic: '´', letter: 'y' }, + 'ÿ': { diacritic: '¨', letter: 'y' }, - 'ç': { diacritic: '¸', letter: 'c' }, - 'ñ': { diacritic: '~', letter: 'n' }, + 'ç': { diacritic: '¸', letter: 'c' }, + 'ñ': { diacritic: '~', letter: 'n' }, // Upper case Latin-1 - 'À': { diacritic: '`', letter: 'A' }, - 'Á': { diacritic: '´', letter: 'A' }, - 'Â': { diacritic: '^', letter: 'A' }, - 'Ä': { diacritic: '¨', letter: 'A' }, - 'Ã': { diacritic: '~', letter: 'A' }, + 'À': { diacritic: '`', letter: 'A' }, + 'Ã�': { diacritic: '´', letter: 'A' }, + 'Â': { diacritic: '^', letter: 'A' }, + 'Ä': { diacritic: '¨', letter: 'A' }, + 'Ã': { diacritic: '~', letter: 'A' }, - 'È': { diacritic: '`', letter: 'E' }, - 'É': { diacritic: '´', letter: 'E' }, - 'Ê': { diacritic: '^', letter: 'E' }, - 'Ë': { diacritic: '¨', letter: 'E' }, + 'È': { diacritic: '`', letter: 'E' }, + 'É': { diacritic: '´', letter: 'E' }, + 'Ê': { diacritic: '^', letter: 'E' }, + 'Ë': { diacritic: '¨', letter: 'E' }, - 'Ì': { diacritic: '`', letter: 'I' }, - 'Í': { diacritic: '´', letter: 'I' }, - 'Î': { diacritic: '^', letter: 'I' }, - 'Ï': { diacritic: '¨', letter: 'I' }, + 'ÃŒ': { diacritic: '`', letter: 'I' }, + 'Ã�': { diacritic: '´', letter: 'I' }, + 'ÃŽ': { diacritic: '^', letter: 'I' }, + 'Ã�': { diacritic: '¨', letter: 'I' }, - 'Ò': { diacritic: '`', letter: 'O' }, - 'Ó': { diacritic: '´', letter: 'O' }, - 'Ô': { diacritic: '^', letter: 'O' }, - 'Ö': { diacritic: '¨', letter: 'O' }, - 'Õ': { diacritic: '~', letter: 'O' }, + 'Ã’': { diacritic: '`', letter: 'O' }, + 'Ó': { diacritic: '´', letter: 'O' }, + 'Ô': { diacritic: '^', letter: 'O' }, + 'Ö': { diacritic: '¨', letter: 'O' }, + 'Õ': { diacritic: '~', letter: 'O' }, - 'Ù': { diacritic: '`', letter: 'U' }, - 'Ú': { diacritic: '´', letter: 'U' }, - 'Û': { diacritic: '^', letter: 'U' }, - 'Ü': { diacritic: '¨', letter: 'U' }, + 'Ù': { diacritic: '`', letter: 'U' }, + 'Ú': { diacritic: '´', letter: 'U' }, + 'Û': { diacritic: '^', letter: 'U' }, + 'Ü': { diacritic: '¨', letter: 'U' }, - 'Ý': { diacritic: '´', letter: 'Y' }, + 'Ã�': { diacritic: '´', letter: 'Y' }, - 'Ç': { diacritic: '¸', letter: 'C' }, - 'Ñ': { diacritic: '~', letter: 'N' } + 'Ç': { diacritic: '¸', letter: 'C' }, + 'Ñ': { diacritic: '~', letter: 'N' } }, specialchars: { @@ -181,11 +181,11 @@ var CanvasText = { /** Diacritics, used to draw accentuated letters */ diacritics: { - '¸': { entity: 'cedil', points: [[6,-4],[4,-6],[2,-7],[1,-7]] }, - '´': { entity: 'acute', points: [[8,19],[13,22]] }, + '¸': { entity: 'cedil', points: [[6,-4],[4,-6],[2,-7],[1,-7]] }, + '´': { entity: 'acute', points: [[8,19],[13,22]] }, '`': { entity: 'grave', points: [[7,22],[12,19]] }, '^': { entity: 'circ', points: [[5.5,19],[9.5,23],[12.5,19]] }, - '¨': { entity: 'trema', points: [[5,21],[6,20],[7,21],[6,22],[5,21],null,[12,21],[13,20],[14,21],[13,22],[12,21]] }, + '¨': { entity: 'trema', points: [[5,21],[6,20],[7,21],[6,22],[5,21],null,[12,21],[13,20],[14,21],[13,22],[12,21]] }, '~': { entity: 'tilde', points: [[4,18],[7,22],[10,18],[13,22]] } }, diff --git a/addons/web_graph/static/lib/flotr2/lib/jasmine/jasmine_favicon.png b/addons/web_graph/static/lib/flotr2/lib/jasmine/jasmine_favicon.png Binary files differindex 218f3b43713..bd147955254 100644 --- a/addons/web_graph/static/lib/flotr2/lib/jasmine/jasmine_favicon.png +++ b/addons/web_graph/static/lib/flotr2/lib/jasmine/jasmine_favicon.png diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 8710b840209..a84bb53fc85 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -5,6 +5,7 @@ openerp.web_graph = function (instance) { var _lt = instance.web._lt; +var _t = instance.web._t; // removed ``undefined`` values var filter_values = function (o) { @@ -343,7 +344,7 @@ instance.web_graph.GraphView = instance.web.View.extend({ var defs = []; _.each(axis, function(x) { var key = x[xaxis[0]] - defs.push(obj.call("read_group", [domain, yaxis.concat(xaxis.slice(1, 2)), xaxis.slice(1, 2)], {context: context}).then(function(res) { + defs.push(obj.call("read_group", [x['__domain'], yaxis.concat(xaxis.slice(1, 2)), xaxis.slice(1, 2)], {context: context}).then(function(res) { return [x, key, res]; })); }); @@ -365,7 +366,7 @@ instance.web_graph.GraphView = instance.web.View.extend({ }).then(function() { var res = { 'data': result, - 'ticks': _.map(ticks, function(el, key) { return [el, key] }) + 'ticks': _.map(ticks, function(el, key) { return [el, key || _t("Undefined")] }) }; return res; })); diff --git a/addons/web_hello/__init__.py b/addons/web_hello/__init__.py index 013e4b7ec4e..e69de29bb2d 100644 --- a/addons/web_hello/__init__.py +++ b/addons/web_hello/__init__.py @@ -1 +0,0 @@ -#!/usr/bin/python diff --git a/addons/web_kanban/static/src/img/minus-icon.png b/addons/web_kanban/static/src/img/minus-icon.png Binary files differindex cb655d1e503..9453bc80e5b 100644 --- a/addons/web_kanban/static/src/img/minus-icon.png +++ b/addons/web_kanban/static/src/img/minus-icon.png diff --git a/addons/web_kanban/static/src/img/plus-icon.png b/addons/web_kanban/static/src/img/plus-icon.png Binary files differindex 7bb9b1be856..c0fc0946cc9 100644 --- a/addons/web_kanban/static/src/img/plus-icon.png +++ b/addons/web_kanban/static/src/img/plus-icon.png |
