[MERGE] latest trunk
bzr revid: ged@openerp.com-20131212085948-ntl7j40yl6815sye
This commit is contained in:
commit
edbc4d8927
|
@ -20,7 +20,6 @@ This module provides the core of the OpenERP Web Client.
|
|||
"static/lib/datejs/sugarpak.js",
|
||||
"static/lib/datejs/extras.js",
|
||||
"static/lib/jquery/jquery.js",
|
||||
"static/lib/jquery.MD5/jquery.md5.js",
|
||||
"static/lib/jquery.form/jquery.form.js",
|
||||
"static/lib/jquery.validate/jquery.validate.js",
|
||||
"static/lib/jquery.ba-bbq/jquery.ba-bbq.js",
|
||||
|
@ -66,6 +65,7 @@ This module provides the core of the OpenERP Web Client.
|
|||
"static/lib/jquery.tipsy/tipsy.css",
|
||||
"static/lib/jquery.textext/jquery.textext.css",
|
||||
"static/lib/fontawesome/css/font-awesome.css",
|
||||
"static/lib/bootstrap/css/bootstrap.css",
|
||||
"static/src/css/base.css",
|
||||
"static/src/css/data_export.css",
|
||||
"static/lib/cleditor/jquery.cleditor.css",
|
||||
|
@ -89,5 +89,4 @@ This module provides the core of the OpenERP Web Client.
|
|||
"static/test/list-editable.js",
|
||||
"static/test/mutex.js"
|
||||
],
|
||||
'bootstrap': True,
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import ast
|
||||
import base64
|
||||
import csv
|
||||
import functools
|
||||
import glob
|
||||
import itertools
|
||||
import logging
|
||||
|
@ -35,7 +36,9 @@ from openerp.tools.translate import _
|
|||
from openerp.tools import config
|
||||
from openerp import http
|
||||
|
||||
from openerp.http import request
|
||||
from openerp.http import request, serialize_exception as _serialize_exception
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
#----------------------------------------------------------
|
||||
# OpenERP Web helpers
|
||||
|
@ -89,17 +92,29 @@ db_list = http.db_list
|
|||
|
||||
db_monodb = http.db_monodb
|
||||
|
||||
def redirect_with_hash(url, code=303):
|
||||
redirect_code = "<html><head><script>window.location = '%s' + location.hash;</script></head></html>" % url
|
||||
if request.httprequest.user_agent.browser == 'msie':
|
||||
def serialize_exception(f):
|
||||
@functools.wraps(f)
|
||||
def wrap(*args, **kwargs):
|
||||
try:
|
||||
version = float(request.httprequest.user_agent.version)
|
||||
if version < 10:
|
||||
return redirect_code
|
||||
except Exception:
|
||||
pass
|
||||
elif request.httprequest.user_agent.browser == 'safari':
|
||||
return redirect_code
|
||||
return f(*args, **kwargs)
|
||||
except Exception, e:
|
||||
_logger.exception("An exception occured during an http request")
|
||||
se = _serialize_exception(e)
|
||||
error = {
|
||||
'code': 200,
|
||||
'message': "OpenERP Server Error",
|
||||
'data': se
|
||||
}
|
||||
return werkzeug.exceptions.InternalServerError(simplejson.dumps(error))
|
||||
return wrap
|
||||
|
||||
def redirect_with_hash(url, code=303):
|
||||
if request.httprequest.user_agent.browser in ('msie', 'safari'):
|
||||
# Most IE and Safari versions decided not to preserve location.hash upon
|
||||
# redirect. And even if IE10 pretends to support it, it still fails
|
||||
# inexplicably in case of multiple redirects (and we do have some).
|
||||
# See extensive test page at http://greenbytes.de/tech/tc/httpredirects/
|
||||
return "<html><head><script>window.location = '%s' + location.hash;</script></head></html>" % url
|
||||
return werkzeug.utils.redirect(url, code)
|
||||
|
||||
def module_topological_sort(modules):
|
||||
|
@ -546,14 +561,14 @@ class Home(http.Controller):
|
|||
|
||||
def redirect(db):
|
||||
query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
|
||||
query.update({'db': db})
|
||||
query['db'] = db
|
||||
redirect = request.httprequest.path + '?' + urllib.urlencode(query)
|
||||
return redirect_with_hash(redirect)
|
||||
|
||||
if db is None and guessed_db is not None:
|
||||
return redirect(guessed_db)
|
||||
|
||||
if db is not None and db != guessed_db:
|
||||
if db is not None and db != request.session.db:
|
||||
request.session.logout()
|
||||
request.session.db = db
|
||||
guessed_db = db
|
||||
|
@ -1224,6 +1239,7 @@ class Binary(http.Controller):
|
|||
return open(os.path.join(addons_path, 'web', 'static', 'src', 'img', image), 'rb').read()
|
||||
|
||||
@http.route('/web/binary/saveas', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def saveas(self, model, field, id=None, filename_field=None, **kw):
|
||||
""" Download link for files stored as binary fields.
|
||||
|
||||
|
@ -1257,6 +1273,7 @@ class Binary(http.Controller):
|
|||
('Content-Disposition', content_disposition(filename))])
|
||||
|
||||
@http.route('/web/binary/saveas_ajax', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def saveas_ajax(self, data, token):
|
||||
jdata = simplejson.loads(data)
|
||||
model = jdata['model']
|
||||
|
@ -1290,6 +1307,7 @@ class Binary(http.Controller):
|
|||
cookies={'fileToken': token})
|
||||
|
||||
@http.route('/web/binary/upload', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def upload(self, callback, ufile):
|
||||
# TODO: might be useful to have a configuration flag for max-length file uploads
|
||||
out = """<script language="javascript" type="text/javascript">
|
||||
|
@ -1305,6 +1323,7 @@ class Binary(http.Controller):
|
|||
return out % (simplejson.dumps(callback), simplejson.dumps(args))
|
||||
|
||||
@http.route('/web/binary/upload_attachment', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def upload_attachment(self, callback, model, id, ufile):
|
||||
Model = request.session.model('ir.attachment')
|
||||
out = """<script language="javascript" type="text/javascript">
|
||||
|
@ -1594,6 +1613,7 @@ class ExportFormat(object):
|
|||
class CSVExport(ExportFormat, http.Controller):
|
||||
|
||||
@http.route('/web/export/csv', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def index(self, data, token):
|
||||
return self.base(data, token)
|
||||
|
||||
|
@ -1631,6 +1651,7 @@ class CSVExport(ExportFormat, http.Controller):
|
|||
class ExcelExport(ExportFormat, http.Controller):
|
||||
|
||||
@http.route('/web/export/xls', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def index(self, data, token):
|
||||
return self.base(data, token)
|
||||
|
||||
|
@ -1677,6 +1698,7 @@ class Reports(http.Controller):
|
|||
}
|
||||
|
||||
@http.route('/web/report', type='http', auth="user")
|
||||
@serialize_exception
|
||||
def index(self, action, token):
|
||||
action = simplejson.loads(action)
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. module: web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,15 +14,15 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:147
|
||||
#, python-format
|
||||
msgid "Default language:"
|
||||
msgstr "Standardsprache:"
|
||||
msgstr "Standard-Sprache:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -75,7 +75,7 @@ msgstr "Master Passwort"
|
|||
#: code:addons/web/static/src/xml/base.xml:292
|
||||
#, python-format
|
||||
msgid "Change Master Password"
|
||||
msgstr "Hauptpasswort ändern"
|
||||
msgstr "Master Passwort ändern"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -227,7 +227,7 @@ msgstr "Widget type '%s' is not implemented"
|
|||
#: code:addons/web/static/src/xml/base.xml:1626
|
||||
#, python-format
|
||||
msgid "Share with all users"
|
||||
msgstr ""
|
||||
msgstr "Share with all users"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -468,7 +468,7 @@ msgstr "Take a minute to get a coffee,<br />because it's loading..."
|
|||
#: code:addons/web/static/src/xml/base.xml:435
|
||||
#, python-format
|
||||
msgid "Activate the developer mode"
|
||||
msgstr ""
|
||||
msgstr "Activate the developer mode"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1802,7 +1802,7 @@ msgstr "View Fields"
|
|||
#: code:addons/web/static/src/xml/base.xml:348
|
||||
#, python-format
|
||||
msgid "Confirm New Password:"
|
||||
msgstr ""
|
||||
msgstr "Confirm New Password:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1860,7 +1860,7 @@ msgstr "OpenERP"
|
|||
#: code:addons/web/doc/module/static/src/xml/web_example.xml:8
|
||||
#, python-format
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
msgstr "Stop"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1884,7 +1884,7 @@ msgstr "Uploading ..."
|
|||
#: code:addons/web/static/src/xml/base.xml:1874
|
||||
#, python-format
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
msgstr "Name:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1898,7 +1898,7 @@ msgstr "About"
|
|||
#: code:addons/web/static/src/xml/base.xml:1457
|
||||
#, python-format
|
||||
msgid "Search Again"
|
||||
msgstr ""
|
||||
msgstr "Search Again"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1931,13 +1931,15 @@ msgid ""
|
|||
"Grouping on field '%s' is not possible because that field does not appear in "
|
||||
"the list view."
|
||||
msgstr ""
|
||||
"Grouping on field '%s' is not possible because that field does not appear in "
|
||||
"the list view."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:559
|
||||
#, python-format
|
||||
msgid "Set Defaults"
|
||||
msgstr ""
|
||||
msgstr "Set Defaults"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1980,7 +1982,7 @@ msgstr "Type:"
|
|||
#: code:addons/web/static/src/js/chrome.js:560
|
||||
#, python-format
|
||||
msgid "Incorrect super-administrator password"
|
||||
msgstr ""
|
||||
msgstr "Incorrect super-administrator password"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1995,14 +1997,14 @@ msgstr "Object:"
|
|||
#: code:addons/web/static/src/js/chrome.js:343
|
||||
#, python-format
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
msgstr "Loading"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:599
|
||||
#, python-format
|
||||
msgid "about a year ago"
|
||||
msgstr ""
|
||||
msgstr "about a year ago"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2022,13 +2024,15 @@ msgid ""
|
|||
"The type of the field '%s' must be a many2many field with a relation to "
|
||||
"'ir.attachment' model."
|
||||
msgstr ""
|
||||
"The type of the field '%s' must be a many2many field with a relation to "
|
||||
"'ir.attachment' model."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:594
|
||||
#, python-format
|
||||
msgid "%d hours ago"
|
||||
msgstr ""
|
||||
msgstr "%d hours ago"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2043,7 +2047,7 @@ msgstr "Add: "
|
|||
#: code:addons/web/static/src/xml/base.xml:1879
|
||||
#, python-format
|
||||
msgid "Quick Add"
|
||||
msgstr ""
|
||||
msgstr "Quick Add"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2070,7 +2074,7 @@ msgstr "Ok"
|
|||
#: code:addons/web/static/src/js/views.js:1237
|
||||
#, python-format
|
||||
msgid "Uploading..."
|
||||
msgstr ""
|
||||
msgstr "Uploading..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2084,7 +2088,7 @@ msgstr "Load Demonstration data:"
|
|||
#: code:addons/web/static/src/xml/base.xml:637
|
||||
#, python-format
|
||||
msgid "Created by :"
|
||||
msgstr ""
|
||||
msgstr "Created by :"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2092,7 +2096,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/dates.js:26
|
||||
#, python-format
|
||||
msgid "'%s' is not a valid datetime"
|
||||
msgstr ""
|
||||
msgstr "'%s' is not a valid datetime"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2137,14 +2141,14 @@ msgstr "is true"
|
|||
#: code:addons/web/static/src/js/view_form.js:4030
|
||||
#, python-format
|
||||
msgid "Add an item"
|
||||
msgstr ""
|
||||
msgstr "Add an item"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1621
|
||||
#, python-format
|
||||
msgid "Save current filter"
|
||||
msgstr ""
|
||||
msgstr "Save current filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2172,14 +2176,14 @@ msgstr "Download \"%s\""
|
|||
#: code:addons/web/static/src/js/view_form.js:325
|
||||
#, python-format
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "New"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_list.js:1777
|
||||
#, python-format
|
||||
msgid "Can't convert value %s to context"
|
||||
msgstr ""
|
||||
msgstr "Can't convert value %s to context"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2245,34 +2249,34 @@ msgstr "is false"
|
|||
#: code:addons/web/static/src/xml/base.xml:426
|
||||
#, python-format
|
||||
msgid "About OpenERP"
|
||||
msgstr ""
|
||||
msgstr "About OpenERP"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/formats.js:301
|
||||
#, python-format
|
||||
msgid "'%s' is not a correct date, datetime nor time"
|
||||
msgstr ""
|
||||
msgstr "'%s' is not a correct date, datetime nor time"
|
||||
|
||||
#. module: web
|
||||
#: code:addons/web/controllers/main.py:1307
|
||||
#, python-format
|
||||
msgid "No content found for field '%s' on '%s:%s'"
|
||||
msgstr ""
|
||||
msgstr "No content found for field '%s' on '%s:%s'"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:322
|
||||
#, python-format
|
||||
msgid "Database Management"
|
||||
msgstr ""
|
||||
msgstr "Database Management"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:5138
|
||||
#, python-format
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
msgstr "Image"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2286,7 +2290,7 @@ msgstr "Manage Databases"
|
|||
#: code:addons/web/static/src/js/pyeval.js:770
|
||||
#, python-format
|
||||
msgid "Evaluation Error"
|
||||
msgstr ""
|
||||
msgstr "Evaluation Error"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2305,7 +2309,7 @@ msgstr "not a valid integer"
|
|||
#: code:addons/web/static/src/xml/base.xml:1648
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
msgstr "or"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2319,7 +2323,7 @@ msgstr "No"
|
|||
#: code:addons/web/static/src/js/formats.js:313
|
||||
#, python-format
|
||||
msgid "'%s' is not convertible to date, datetime nor time"
|
||||
msgstr ""
|
||||
msgstr "'%s' is not convertible to date, datetime nor time"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2337,21 +2341,21 @@ msgstr "Duplicate"
|
|||
#: code:addons/web/static/src/xml/base.xml:1419
|
||||
#, python-format
|
||||
msgid "Discard"
|
||||
msgstr ""
|
||||
msgstr "Discard"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1642
|
||||
#, python-format
|
||||
msgid "Add a condition"
|
||||
msgstr ""
|
||||
msgstr "Add a condition"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:619
|
||||
#, python-format
|
||||
msgid "Still loading..."
|
||||
msgstr ""
|
||||
msgstr "Still loading..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2365,7 +2369,7 @@ msgstr "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s"
|
|||
#: code:addons/web/static/src/js/view_form.js:3926
|
||||
#, python-format
|
||||
msgid "The o2m record must be saved before an action can be used"
|
||||
msgstr ""
|
||||
msgstr "The o2m record must be saved before an action can be used"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2379,14 +2383,14 @@ msgstr "Backed"
|
|||
#: code:addons/web/static/src/xml/base.xml:1628
|
||||
#, python-format
|
||||
msgid "Use by default"
|
||||
msgstr ""
|
||||
msgstr "Use by default"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_list.js:1358
|
||||
#, python-format
|
||||
msgid "%s (%d)"
|
||||
msgstr ""
|
||||
msgstr "%s (%d)"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2400,7 +2404,7 @@ msgstr "triggered from search view"
|
|||
#: code:addons/web/static/src/js/search.js:1079
|
||||
#, python-format
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
msgstr "Filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2442,14 +2446,14 @@ msgstr "Edit Workflow"
|
|||
#: code:addons/web/static/src/js/views.js:1246
|
||||
#, python-format
|
||||
msgid "Do you really want to delete this attachment ?"
|
||||
msgstr ""
|
||||
msgstr "Do you really want to delete this attachment ?"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/views.js:914
|
||||
#, python-format
|
||||
msgid "Technical Translation"
|
||||
msgstr ""
|
||||
msgstr "Technical Translation"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2463,21 +2467,21 @@ msgstr "Field:"
|
|||
#: code:addons/web/static/src/xml/base.xml:642
|
||||
#, python-format
|
||||
msgid "Modified by :"
|
||||
msgstr ""
|
||||
msgstr "Modified by :"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/chrome.js:521
|
||||
#, python-format
|
||||
msgid "The database %s has been dropped"
|
||||
msgstr ""
|
||||
msgstr "The database %s has been dropped"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:482
|
||||
#, python-format
|
||||
msgid "User's timezone"
|
||||
msgstr ""
|
||||
msgstr "User's timezone"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2492,7 +2496,7 @@ msgstr "Client Error"
|
|||
#: code:addons/web/static/src/js/views.js:1073
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
msgstr "Print"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2507,6 +2511,7 @@ msgstr "Special:"
|
|||
msgid ""
|
||||
"The old password you provided is incorrect, your password was not changed."
|
||||
msgstr ""
|
||||
"The old password you provided is incorrect, your password was not changed."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2534,7 +2539,7 @@ msgstr "Save & Close"
|
|||
#: code:addons/web/static/src/js/view_form.js:2932
|
||||
#, python-format
|
||||
msgid "Search More..."
|
||||
msgstr ""
|
||||
msgstr "Search More..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2573,21 +2578,21 @@ msgstr "Select date"
|
|||
#: code:addons/web/static/src/js/search.js:1369
|
||||
#, python-format
|
||||
msgid "Search %(field)s for: %(value)s"
|
||||
msgstr ""
|
||||
msgstr "Search %(field)s for: %(value)s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1305
|
||||
#, python-format
|
||||
msgid "Delete this file"
|
||||
msgstr ""
|
||||
msgstr "Delete this file"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:168
|
||||
#, python-format
|
||||
msgid "Create Database"
|
||||
msgstr ""
|
||||
msgstr "Create Database"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
"Language: es\n"
|
||||
|
||||
#. module: web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -242,7 +242,7 @@ msgstr "Vorm"
|
|||
#: code:addons/web/static/src/xml/base.xml:1352
|
||||
#, python-format
|
||||
msgid "(no string)"
|
||||
msgstr ""
|
||||
msgstr "(ei ole rida)"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -962,7 +962,7 @@ msgstr "Salasõna on edukalt muudetud"
|
|||
#: code:addons/web/static/src/js/view_list_editable.js:793
|
||||
#, python-format
|
||||
msgid "The form's data can not be discarded"
|
||||
msgstr ""
|
||||
msgstr "Vormi andmed tuleb salvestada"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -36,7 +36,7 @@ msgstr "%d minuuttia sitten"
|
|||
#: code:addons/web/static/src/js/coresetup.js:620
|
||||
#, python-format
|
||||
msgid "Still loading...<br />Please be patient."
|
||||
msgstr "Ladataan...<br />Olkaa hyvä ja odottakaa."
|
||||
msgstr "Ladataan edelleen...<br />Ole hyvä ja odota."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -192,7 +192,7 @@ msgstr "Valitse"
|
|||
#: code:addons/web/static/src/js/chrome.js:571
|
||||
#, python-format
|
||||
msgid "Database restored successfully"
|
||||
msgstr "Tietokanta palautettu"
|
||||
msgstr "Tietokanta palautettu onnistuneesti"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -206,21 +206,21 @@ msgstr "Versio"
|
|||
#: code:addons/web/static/src/xml/base.xml:592
|
||||
#, python-format
|
||||
msgid "Latest Modification Date:"
|
||||
msgstr "Viimeisin muutospäivämäärä:"
|
||||
msgstr "Viimeisin muokkauspäivä:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/search.js:1566
|
||||
#, python-format
|
||||
msgid "M2O search fields do not currently handle multiple default values"
|
||||
msgstr "Monesta yhteen hakukentät eivät salli useita oletusarvoja."
|
||||
msgstr "Monesta-yhteen -hakukentät eivät salli useita oletusarvoja."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:1241
|
||||
#, python-format
|
||||
msgid "Widget type '%s' is not implemented"
|
||||
msgstr "Pienohjelman tyyppiä '%s' ei ole asennettu"
|
||||
msgstr "Sovelmatyyppiä \"%s\" ei ole asennettu"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -384,7 +384,7 @@ msgstr "Ryhmä"
|
|||
#: code:addons/web/static/src/xml/base.xml:949
|
||||
#, python-format
|
||||
msgid "Unhandled widget"
|
||||
msgstr "Käsittelemätön widgetti"
|
||||
msgstr "Käsittelemätön sovelma"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -896,7 +896,7 @@ msgstr "Väärä formaatti: %s"
|
|||
#: code:addons/web/static/src/xml/base.xml:203
|
||||
#, python-format
|
||||
msgid "Drop Database"
|
||||
msgstr "Pudota Tietokanta"
|
||||
msgstr "Poista tietokonta"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1213,7 +1213,7 @@ msgstr "%d kuukautta sitten"
|
|||
#: code:addons/web/static/src/xml/base.xml:326
|
||||
#, python-format
|
||||
msgid "Drop"
|
||||
msgstr "Pudota"
|
||||
msgstr "Poista"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1557,7 +1557,7 @@ msgstr "Puu"
|
|||
#: code:addons/web/controllers/main.py:793
|
||||
#, python-format
|
||||
msgid "Could not drop database !"
|
||||
msgstr "Älä pudota tietokantaa !"
|
||||
msgstr "Älä poista tietokantaa!"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1599,7 +1599,7 @@ msgstr "Tarkempi haku..."
|
|||
#: code:addons/web/static/src/js/chrome.js:521
|
||||
#, python-format
|
||||
msgid "Dropping database"
|
||||
msgstr "Pudottaa tietokantaa"
|
||||
msgstr "Poistaa tietokannan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2409,7 +2409,7 @@ msgstr "Suodatin"
|
|||
#: code:addons/web/static/src/xml/base.xml:972
|
||||
#, python-format
|
||||
msgid "Widget:"
|
||||
msgstr "Widgetti"
|
||||
msgstr "Sovelma:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2472,7 +2472,7 @@ msgstr "Muokkaaja:"
|
|||
#: code:addons/web/static/src/js/chrome.js:521
|
||||
#, python-format
|
||||
msgid "The database %s has been dropped"
|
||||
msgstr "Tietokanta %s on pudotettu"
|
||||
msgstr "Tietokanta %s on poistettu"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -36,7 +36,7 @@ msgstr "%d分前"
|
|||
#: code:addons/web/static/src/js/coresetup.js:620
|
||||
#, python-format
|
||||
msgid "Still loading...<br />Please be patient."
|
||||
msgstr ""
|
||||
msgstr "引き続き読込中...<br />今しばらくお待ちください。"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -75,14 +75,14 @@ msgstr "マスタパスワード:"
|
|||
#: code:addons/web/static/src/xml/base.xml:292
|
||||
#, python-format
|
||||
msgid "Change Master Password"
|
||||
msgstr ""
|
||||
msgstr "マスターパスワードを変更"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/chrome.js:513
|
||||
#, python-format
|
||||
msgid "Do you really want to delete the database: %s ?"
|
||||
msgstr ""
|
||||
msgstr "データベース %s を本当に削除しますか?"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -96,7 +96,7 @@ msgstr "%(field)s の検索:%(value)s"
|
|||
#: code:addons/web/static/src/js/chrome.js:559
|
||||
#, python-format
|
||||
msgid "Access Denied"
|
||||
msgstr ""
|
||||
msgstr "アクセスが拒否されました。"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -119,7 +119,7 @@ msgstr "1時間前"
|
|||
#: code:addons/web/static/src/xml/base.xml:234
|
||||
#, python-format
|
||||
msgid "Backup Database"
|
||||
msgstr ""
|
||||
msgstr "データベースをバックアップ"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -227,7 +227,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:1626
|
||||
#, python-format
|
||||
msgid "Share with all users"
|
||||
msgstr "全てのユーザと共有"
|
||||
msgstr "全ユーザと共有"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -270,7 +270,7 @@ msgstr "新しいパスワード:"
|
|||
#: code:addons/web/static/src/xml/base.xml:632
|
||||
#, python-format
|
||||
msgid "Attachment :"
|
||||
msgstr ""
|
||||
msgstr "添付:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -475,7 +475,7 @@ msgstr "開発者モードを有効化"
|
|||
#: code:addons/web/static/src/js/chrome.js:341
|
||||
#, python-format
|
||||
msgid "Loading (%d)"
|
||||
msgstr "ロード中 (%d)"
|
||||
msgstr "読込中(%d)"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -559,7 +559,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/view_form.js:2955
|
||||
#, python-format
|
||||
msgid "Create and Edit..."
|
||||
msgstr ""
|
||||
msgstr "登録・編集..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -587,7 +587,7 @@ msgstr "は次ではない"
|
|||
#: code:addons/web/static/src/xml/base.xml:572
|
||||
#, python-format
|
||||
msgid "Print Workflow"
|
||||
msgstr ""
|
||||
msgstr "印刷ワークフロー"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -608,7 +608,7 @@ msgstr "UTF-8"
|
|||
#: code:addons/web/static/src/xml/base.xml:443
|
||||
#, python-format
|
||||
msgid "For more information visit"
|
||||
msgstr "もっと詳しい情報はこちらへ"
|
||||
msgstr "詳細の確認はこちらにて:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -818,7 +818,7 @@ msgstr "区切り文字:"
|
|||
#: code:addons/web/static/src/xml/base.xml:484
|
||||
#, python-format
|
||||
msgid "Browser's timezone"
|
||||
msgstr ""
|
||||
msgstr "ブラウザタイムゾーン"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -966,7 +966,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:555
|
||||
#, python-format
|
||||
msgid "Debug View#"
|
||||
msgstr "ビューをデバッグ"
|
||||
msgstr "デバッグ対象ビュー#"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1074,7 +1074,7 @@ msgstr "検索"
|
|||
#: code:addons/web/static/src/js/view_form.js:4482
|
||||
#, python-format
|
||||
msgid "Open: "
|
||||
msgstr "開く: "
|
||||
msgstr "オープン: "
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1137,7 +1137,7 @@ msgstr "キャンセル"
|
|||
#: code:addons/web/static/src/xml/base.xml:9
|
||||
#, python-format
|
||||
msgid "Loading..."
|
||||
msgstr "読込み中..."
|
||||
msgstr "読込中..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1151,7 +1151,7 @@ msgstr "最終更新者:"
|
|||
#: code:addons/web/static/src/xml/base.xml:492
|
||||
#, python-format
|
||||
msgid "Timezone mismatch"
|
||||
msgstr ""
|
||||
msgstr "タイムゾーン不一致"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1240,7 +1240,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:442
|
||||
#, python-format
|
||||
msgid "Licenced under the terms of"
|
||||
msgstr "ライセンスに準拠"
|
||||
msgstr "準拠ライセンス:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1305,7 +1305,7 @@ msgstr "少なくとも1つのレコードを選んで下さい。"
|
|||
#: code:addons/web/static/src/js/coresetup.js:621
|
||||
#, python-format
|
||||
msgid "Don't leave yet,<br />it's still loading..."
|
||||
msgstr ""
|
||||
msgstr "しばしご辛抱を。<br />引き続き読込中です..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1354,7 +1354,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:463
|
||||
#, python-format
|
||||
msgid "Edit Company data"
|
||||
msgstr ""
|
||||
msgstr "会社データを編集"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1597,7 +1597,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:467
|
||||
#, python-format
|
||||
msgid "Powered by"
|
||||
msgstr "で動く"
|
||||
msgstr "Powered by"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1879,7 +1879,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/chrome.js:1165
|
||||
#, python-format
|
||||
msgid "About"
|
||||
msgstr "について"
|
||||
msgstr "概要"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2123,7 +2123,7 @@ msgstr "は正しい"
|
|||
#: code:addons/web/static/src/js/view_form.js:4030
|
||||
#, python-format
|
||||
msgid "Add an item"
|
||||
msgstr ""
|
||||
msgstr "項目を追加"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2203,7 +2203,7 @@ msgstr "ボタン"
|
|||
#: code:addons/web/static/src/xml/base.xml:440
|
||||
#, python-format
|
||||
msgid "OpenERP is a trademark of the"
|
||||
msgstr "OpenERPは商標です"
|
||||
msgstr "OpenERPの商標帰属:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2265,7 +2265,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:81
|
||||
#, python-format
|
||||
msgid "Manage Databases"
|
||||
msgstr "データベースの管理"
|
||||
msgstr "データベース管理"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2330,14 +2330,14 @@ msgstr "破棄"
|
|||
#: code:addons/web/static/src/xml/base.xml:1642
|
||||
#, python-format
|
||||
msgid "Add a condition"
|
||||
msgstr "条件の追加"
|
||||
msgstr "条件追加"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:619
|
||||
#, python-format
|
||||
msgid "Still loading..."
|
||||
msgstr ""
|
||||
msgstr "引き続き読込..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2365,7 +2365,7 @@ msgstr "バックアップされました"
|
|||
#: code:addons/web/static/src/xml/base.xml:1628
|
||||
#, python-format
|
||||
msgid "Use by default"
|
||||
msgstr ""
|
||||
msgstr "デフォルト使用"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2463,7 +2463,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:482
|
||||
#, python-format
|
||||
msgid "User's timezone"
|
||||
msgstr ""
|
||||
msgstr "ユーザタイムゾーン"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2520,7 +2520,7 @@ msgstr "保存して閉じる"
|
|||
#: code:addons/web/static/src/js/view_form.js:2932
|
||||
#, python-format
|
||||
msgid "Search More..."
|
||||
msgstr ""
|
||||
msgstr "さらに検索..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -119,7 +119,7 @@ msgstr "ongeveer 1 uur geleden"
|
|||
#: code:addons/web/static/src/xml/base.xml:234
|
||||
#, python-format
|
||||
msgid "Backup Database"
|
||||
msgstr "Back-up database"
|
||||
msgstr "Backup Database"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -177,7 +177,7 @@ msgstr "Ongeldige gebruikersnaam of wachtwoord"
|
|||
#: code:addons/web/static/src/xml/base.xml:278
|
||||
#, python-format
|
||||
msgid "Master Password:"
|
||||
msgstr "Hoofdwachtwoord"
|
||||
msgstr "Hoofdwachtwoord:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -213,14 +213,14 @@ msgstr "Laatst datum aangepast:"
|
|||
#: code:addons/web/static/src/js/search.js:1566
|
||||
#, python-format
|
||||
msgid "M2O search fields do not currently handle multiple default values"
|
||||
msgstr "M2O zoek velden behandelen momenteel geen meerdere standaard waardes"
|
||||
msgstr "M2O zoek velden kunnen momenteel geen meerdere standaard waardes aan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:1241
|
||||
#, python-format
|
||||
msgid "Widget type '%s' is not implemented"
|
||||
msgstr "Widget type '%s' is niet geimplementeerd"
|
||||
msgstr "Widget type '%s' is niet geïmplementeerd"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -284,14 +284,14 @@ msgstr "Te exporteren velden"
|
|||
#: code:addons/web/static/src/js/view_list.js:1350
|
||||
#, python-format
|
||||
msgid "Undefined"
|
||||
msgstr "Onbepaald"
|
||||
msgstr "Niet gedefinieerd"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:5002
|
||||
#, python-format
|
||||
msgid "File Upload"
|
||||
msgstr "Bestand upload"
|
||||
msgstr "Bestand uploaden"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -326,7 +326,7 @@ msgstr "OpenERP SA"
|
|||
#: code:addons/web/static/src/js/search.js:1663
|
||||
#, python-format
|
||||
msgid "Custom Filter"
|
||||
msgstr "Aangepaste Filter"
|
||||
msgstr "Aangepast filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -370,7 +370,7 @@ msgstr "Downloaden"
|
|||
#: code:addons/web/static/src/js/formats.js:270
|
||||
#, python-format
|
||||
msgid "'%s' is not a correct datetime"
|
||||
msgstr "'%s' is geen geldinge datum/tijd"
|
||||
msgstr "'%s' is geen geldige datum/tijd"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -432,7 +432,7 @@ msgstr "Het was niet mogelijk om de database te herstellen"
|
|||
#: code:addons/web/static/src/js/view_form.js:4982
|
||||
#, python-format
|
||||
msgid "File upload"
|
||||
msgstr "Bestand upload"
|
||||
msgstr "Bestand uploaden"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -461,7 +461,8 @@ msgstr "bevat"
|
|||
#: code:addons/web/static/src/js/coresetup.js:623
|
||||
#, python-format
|
||||
msgid "Take a minute to get a coffee,<br />because it's loading..."
|
||||
msgstr "Neem een minuutje voor een koffie,<br />want het is aan het laden..."
|
||||
msgstr ""
|
||||
"Neem een minuutje om koffie te halen,<br />want het is aan het laden..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -489,7 +490,7 @@ msgstr "Groepeer op"
|
|||
#: code:addons/web/static/src/js/view_list.js:699
|
||||
#, python-format
|
||||
msgid "You must select at least one record."
|
||||
msgstr "U dient tenminste één record te selecteren"
|
||||
msgstr "U dient tenminste één record te selecteren."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -503,7 +504,7 @@ msgstr "Weergeven Log (perm_read)"
|
|||
#: code:addons/web/static/src/js/view_form.js:1071
|
||||
#, python-format
|
||||
msgid "Set Default"
|
||||
msgstr "Gebruik als standaard"
|
||||
msgstr "Als standaard instellen"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -552,7 +553,7 @@ msgstr "Teruggezet"
|
|||
#: code:addons/web/static/src/js/view_list.js:409
|
||||
#, python-format
|
||||
msgid "%d-%d of %d"
|
||||
msgstr "%d-%d of %d"
|
||||
msgstr "%d-%d van %d"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -594,7 +595,7 @@ msgstr "Afdrukken Workflow"
|
|||
#: code:addons/web/static/src/js/chrome.js:413
|
||||
#, python-format
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Bevestig uw wachtwoord"
|
||||
msgstr "Bevestig uw nieuwe wachtwoord"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -681,7 +682,7 @@ msgstr "Filter opslaan"
|
|||
#: code:addons/web/static/src/xml/base.xml:1372
|
||||
#, python-format
|
||||
msgid "Action ID:"
|
||||
msgstr "Action ID:"
|
||||
msgstr "Actie ID:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -869,7 +870,7 @@ msgstr "OpenERP.com"
|
|||
#: code:addons/web/static/src/js/view_form.js:2349
|
||||
#, python-format
|
||||
msgid "Can't send email to invalid e-mail address"
|
||||
msgstr "Kan de e-mail niet versturen. Het adres is ongelding."
|
||||
msgstr "Kan geen email versturen naar ongeldig emailadres"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -958,7 +959,7 @@ msgstr "Dupliceer database"
|
|||
#: code:addons/web/static/src/js/chrome.js:585
|
||||
#, python-format
|
||||
msgid "Password has been changed successfully"
|
||||
msgstr "Uw wachtwoord is succesvol gewijzigd."
|
||||
msgstr "Wachtwoord is succesvol gewijzigd"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1000,7 +1001,7 @@ msgid ""
|
|||
"\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Locale evaluatie fout\n"
|
||||
"Lokale evaluatie fout\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
"%s"
|
||||
|
@ -1238,7 +1239,7 @@ msgstr "Het nieuwe wachtwoord en haar bevestiging moeten identiek zijn."
|
|||
#: code:addons/web/static/src/xml/base.xml:266
|
||||
#, python-format
|
||||
msgid "Restore Database"
|
||||
msgstr "Herstel database"
|
||||
msgstr "Database terugplaatsen"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1707,7 +1708,7 @@ msgstr "Het veld is leeg. Er is niets om op te slaan!"
|
|||
#: code:addons/web/static/src/xml/base.xml:567
|
||||
#, python-format
|
||||
msgid "Manage Views"
|
||||
msgstr "Weergaven beheren"
|
||||
msgstr "Weergaves beheren"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1735,7 +1736,7 @@ msgstr "Aanmaken \"<strong>%s</strong>\""
|
|||
#: code:addons/web/static/src/js/data_export.js:362
|
||||
#, python-format
|
||||
msgid "Please select fields to save export list..."
|
||||
msgstr "Selecteer aub velden voor opslaan export lijst"
|
||||
msgstr "Selecteer velden voor opslaan export lijst..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2037,7 +2038,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/coresetup.js:594
|
||||
#, python-format
|
||||
msgid "%d hours ago"
|
||||
msgstr "%d uren geleden"
|
||||
msgstr "%d uur geleden"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2101,7 +2102,7 @@ msgstr "Aangemaakt door:"
|
|||
#: code:addons/web/static/src/js/dates.js:26
|
||||
#, python-format
|
||||
msgid "'%s' is not a valid datetime"
|
||||
msgstr "'%s' is geen correcte datum/tijd"
|
||||
msgstr "'%s' is geen geldige datum/tijd"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2233,7 +2234,7 @@ msgstr "OpenERP is een handelsmerk van"
|
|||
#: code:addons/web/static/src/js/data_export.js:375
|
||||
#, python-format
|
||||
msgid "Please select fields to export..."
|
||||
msgstr "Selecteer velden voor export"
|
||||
msgstr "Selecteer velden om te exporteren..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2376,7 +2377,8 @@ msgstr "Onjuiste waarde bij veld %(fieldname)s: [%(value)s] is %(message)s"
|
|||
#, python-format
|
||||
msgid "The o2m record must be saved before an action can be used"
|
||||
msgstr ""
|
||||
"Het O2M record dient bewaard te worden alvorens een actie kan gebruikt worden"
|
||||
"Het o2m record dient opgeslagen te worden alvorens een actie kan worden "
|
||||
"gebruikt"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2510,7 +2512,7 @@ msgstr "Afdrukken"
|
|||
#: code:addons/web/static/src/xml/base.xml:1359
|
||||
#, python-format
|
||||
msgid "Special:"
|
||||
msgstr "Special:"
|
||||
msgstr "Speciaal:"
|
||||
|
||||
#. module: web
|
||||
#: code:addons/web/controllers/main.py:877
|
||||
|
@ -2518,7 +2520,7 @@ msgstr "Special:"
|
|||
msgid ""
|
||||
"The old password you provided is incorrect, your password was not changed."
|
||||
msgstr ""
|
||||
"Het oude wachtwoord wat u heft ingevoerd is niet correct. Uw wachtwoord is "
|
||||
"Het oude wachtwoord wat u heeft ingevoerd is niet correct. Uw wachtwoord is "
|
||||
"niet gewijzigd."
|
||||
|
||||
#. module: web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -999,6 +999,10 @@ msgid ""
|
|||
"\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Lokalny błąd oceny\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
"%s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2020,6 +2024,8 @@ msgid ""
|
|||
"The type of the field '%s' must be a many2many field with a relation to "
|
||||
"'ir.attachment' model."
|
||||
msgstr ""
|
||||
"Typ pola '%s' musi być typem \"wiele do wielu pól\" w relacji do modelu "
|
||||
"'ir.attachment'."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2156,7 +2162,7 @@ msgstr "Potwierdź"
|
|||
#: code:addons/web/static/src/js/data_export.js:127
|
||||
#, python-format
|
||||
msgid "Please enter save field list name"
|
||||
msgstr ""
|
||||
msgstr "Proszę wprowadźić nazwę zapisywej listy pól"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2185,7 +2191,7 @@ msgstr "Nie mozna skonwertować wartości %s do kontekstu"
|
|||
#: code:addons/web/static/src/xml/base.xml:563
|
||||
#, python-format
|
||||
msgid "Fields View Get"
|
||||
msgstr ""
|
||||
msgstr "Pobierz widok pól"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -10,13 +10,13 @@ msgstr ""
|
|||
"POT-Creation-Date: 2012-12-21 17:06+0000\n"
|
||||
"PO-Revision-Date: 2012-12-16 22:21+0000\n"
|
||||
"Last-Translator: Fábio Martinelli - http://zupy.com.br "
|
||||
"<webmaster@guaru.net>\n"
|
||||
"<webmaster@zupy.com.br>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -185,7 +185,7 @@ msgstr "Parolă Administrator:"
|
|||
#: code:addons/web/static/src/xml/base.xml:1402
|
||||
#, python-format
|
||||
msgid "Select"
|
||||
msgstr "Selectează"
|
||||
msgstr "Selectați"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -419,7 +419,7 @@ msgstr "...Descărcare în curs..."
|
|||
#: code:addons/web/static/src/xml/base.xml:1789
|
||||
#, python-format
|
||||
msgid "Import"
|
||||
msgstr "Importă"
|
||||
msgstr "Importați"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1507,7 +1507,7 @@ msgstr "nu conține"
|
|||
#: code:addons/web/static/src/xml/base.xml:1806
|
||||
#, python-format
|
||||
msgid "Import Options"
|
||||
msgstr "Importă Opțiuni"
|
||||
msgstr "Opțiuni Import"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1658,7 +1658,7 @@ msgstr "---Nu Importa ---"
|
|||
#: code:addons/web/static/src/xml/base.xml:1697
|
||||
#, python-format
|
||||
msgid "Import-Compatible Export"
|
||||
msgstr "Import-Export Compatibil"
|
||||
msgstr "Compatibil Import-Export"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2579,7 +2579,7 @@ msgstr "Elimină"
|
|||
#: code:addons/web/static/src/xml/base.xml:1090
|
||||
#, python-format
|
||||
msgid "Select date"
|
||||
msgstr "Selectează data"
|
||||
msgstr "Selectați data"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -75,7 +75,7 @@ msgstr "Мастер-пароль:"
|
|||
#: code:addons/web/static/src/xml/base.xml:292
|
||||
#, python-format
|
||||
msgid "Change Master Password"
|
||||
msgstr "Изменить главный пароль"
|
||||
msgstr "Изменить Мастер-пароль"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -96,7 +96,7 @@ msgstr "Искать %(field)s в: %(value)s"
|
|||
#: code:addons/web/static/src/js/chrome.js:559
|
||||
#, python-format
|
||||
msgid "Access Denied"
|
||||
msgstr "Доступ запрещен"
|
||||
msgstr "Доступ запрещён"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -134,7 +134,7 @@ msgstr "%(view_type)s вид"
|
|||
#: code:addons/web/static/src/js/dates.js:53
|
||||
#, python-format
|
||||
msgid "'%s' is not a valid date"
|
||||
msgstr "%s не является допустимой датой"
|
||||
msgstr "'%s' - недопустимая дата"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -214,7 +214,7 @@ msgstr "Дата изменения:"
|
|||
#, python-format
|
||||
msgid "M2O search fields do not currently handle multiple default values"
|
||||
msgstr ""
|
||||
"M2O поля поиска в настоящее время не работать с несколькими значениями по "
|
||||
"Поля поиска M2O в настоящее время не работают с несколькими значениями по "
|
||||
"умолчанию"
|
||||
|
||||
#. module: web
|
||||
|
@ -335,7 +335,7 @@ msgstr "Настраиваемый фильтр"
|
|||
#: code:addons/web/static/src/xml/base.xml:177
|
||||
#, python-format
|
||||
msgid "Duplicate Database"
|
||||
msgstr "Дублровать базу данных"
|
||||
msgstr "Дублировать базу данных"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -365,7 +365,7 @@ msgstr "Тип вида '%s' не поддерживается в one2many"
|
|||
#: code:addons/web/static/src/js/view_list.js:2204
|
||||
#, python-format
|
||||
msgid "Download"
|
||||
msgstr "Загрузить"
|
||||
msgstr "Скачать"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -892,7 +892,7 @@ msgstr "Настройки"
|
|||
#: code:addons/web/static/src/js/view_form.js:435
|
||||
#, python-format
|
||||
msgid "Wrong on change format: %s"
|
||||
msgstr "Неправильный или измененный формат: %s"
|
||||
msgstr "Ошибка при изменении формата: %s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1289,7 +1289,7 @@ msgstr "Группировать по: %s"
|
|||
#: code:addons/web/static/src/js/view_form.js:154
|
||||
#, python-format
|
||||
msgid "No data provided."
|
||||
msgstr "Нет предоставленных данных."
|
||||
msgstr "Нет данных."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1318,7 +1318,7 @@ msgstr "Вы должны выбрать хотя бы одну запись."
|
|||
#: code:addons/web/static/src/js/coresetup.js:621
|
||||
#, python-format
|
||||
msgid "Don't leave yet,<br />it's still loading..."
|
||||
msgstr "Не уходите,<br />она по-прежнему загружается ..."
|
||||
msgstr "Не уходите,<br />загрузка продолжается ..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1360,7 +1360,7 @@ msgstr "%(page)d/%(page_count)d"
|
|||
#: code:addons/web/static/src/js/chrome.js:414
|
||||
#, python-format
|
||||
msgid "The confirmation does not match the password"
|
||||
msgstr "Подтверждение должно совпадать с паролем"
|
||||
msgstr "Подтверждение не совпадает с паролем"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1441,7 +1441,7 @@ msgstr "Изменить по умолчанию:"
|
|||
#: code:addons/web/static/src/xml/base.xml:189
|
||||
#, python-format
|
||||
msgid "Original database name:"
|
||||
msgstr "Оригинальное название базы данных:"
|
||||
msgstr "название исходной базы данных:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1451,7 +1451,7 @@ msgstr "Оригинальное название базы данных:"
|
|||
#: code:addons/web/static/src/js/search.js:2119
|
||||
#, python-format
|
||||
msgid "is equal to"
|
||||
msgstr "соответствует"
|
||||
msgstr "равно"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1694,7 +1694,7 @@ msgstr "Название новой базы данных:"
|
|||
#: code:addons/web/static/src/js/chrome.js:411
|
||||
#, python-format
|
||||
msgid "Please enter your new password"
|
||||
msgstr "Пожалуйста введите ваш новый пароль"
|
||||
msgstr "Введите новый пароль"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1772,7 +1772,7 @@ msgstr "Импорт не выполнен по причине:"
|
|||
#: code:addons/web/static/src/xml/base.xml:561
|
||||
#, python-format
|
||||
msgid "JS Tests"
|
||||
msgstr "JS тест"
|
||||
msgstr "Тесты JS"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -227,7 +227,7 @@ msgstr "Widgettypen '%s' är inte implementerad"
|
|||
#: code:addons/web/static/src/xml/base.xml:1626
|
||||
#, python-format
|
||||
msgid "Share with all users"
|
||||
msgstr ""
|
||||
msgstr "Dela med alla användare"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -305,7 +305,7 @@ msgstr "ungefär en månad sedan"
|
|||
#: code:addons/web/static/src/xml/base.xml:1618
|
||||
#, python-format
|
||||
msgid "Custom Filters"
|
||||
msgstr ""
|
||||
msgstr "Anpassade filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -326,14 +326,14 @@ msgstr "OpenERP SA Company"
|
|||
#: code:addons/web/static/src/js/search.js:1663
|
||||
#, python-format
|
||||
msgid "Custom Filter"
|
||||
msgstr ""
|
||||
msgstr "Anpassat filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:177
|
||||
#, python-format
|
||||
msgid "Duplicate Database"
|
||||
msgstr ""
|
||||
msgstr "Duplicerad databas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -355,7 +355,7 @@ msgstr "Ändra lösenord"
|
|||
#: code:addons/web/static/src/js/view_form.js:3528
|
||||
#, python-format
|
||||
msgid "View type '%s' is not supported in One2Many."
|
||||
msgstr ""
|
||||
msgstr "Vytyp '%s' stöds inte i One2Many."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -461,7 +461,7 @@ msgstr "innehåller"
|
|||
#: code:addons/web/static/src/js/coresetup.js:623
|
||||
#, python-format
|
||||
msgid "Take a minute to get a coffee,<br />because it's loading..."
|
||||
msgstr ""
|
||||
msgstr "Ta en paus för en kaffe,<br/>därför den laddar..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -538,7 +538,7 @@ msgstr "Felaktig operator %s i domän %s"
|
|||
#: code:addons/web/static/src/js/formats.js:246
|
||||
#, python-format
|
||||
msgid "'%s' is not a correct float"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte en korrekt \"float\""
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -643,7 +643,7 @@ msgstr "Modell %s fält"
|
|||
#: code:addons/web/static/src/js/view_list.js:906
|
||||
#, python-format
|
||||
msgid "Setting 'id' attribute on existing record %s"
|
||||
msgstr ""
|
||||
msgstr "Anger 'id' egenskapen på existerande post %s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -695,7 +695,7 @@ msgstr "Ditt kontos inställda tidszon stämmer ej med webbläsarens tidszon."
|
|||
#: code:addons/web/static/src/js/view_form.js:1237
|
||||
#, python-format
|
||||
msgid "Field '%s' specified in view could not be found."
|
||||
msgstr ""
|
||||
msgstr "Fält '%s' angivet i vyn kan inte hittas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -723,7 +723,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/chrome.js:503
|
||||
#, python-format
|
||||
msgid "The database has been duplicated."
|
||||
msgstr ""
|
||||
msgstr "Databasen har duplicerats"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -791,6 +791,9 @@ msgid ""
|
|||
"\n"
|
||||
"Are you sure you want to leave this page ?"
|
||||
msgstr ""
|
||||
"Varning, posten har ändrats och dina ändringar kommer att försvinna\n"
|
||||
"\n"
|
||||
"Är du säker på att du vill lämna sidan?"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -818,14 +821,14 @@ msgstr "Avgränsare:"
|
|||
#: code:addons/web/static/src/xml/base.xml:484
|
||||
#, python-format
|
||||
msgid "Browser's timezone"
|
||||
msgstr ""
|
||||
msgstr "Webbläsarens tidszon"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1623
|
||||
#, python-format
|
||||
msgid "Filter name"
|
||||
msgstr ""
|
||||
msgstr "Filternamn"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -870,7 +873,7 @@ msgstr "Kan inte skicka e-post till felaktig adress"
|
|||
#: code:addons/web/static/src/xml/base.xml:658
|
||||
#, python-format
|
||||
msgid "Add..."
|
||||
msgstr ""
|
||||
msgstr "Lägg till..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -884,7 +887,7 @@ msgstr "Inställningar"
|
|||
#: code:addons/web/static/src/js/view_form.js:435
|
||||
#, python-format
|
||||
msgid "Wrong on change format: %s"
|
||||
msgstr ""
|
||||
msgstr "Felaktig ändring av format: %s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -892,14 +895,14 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:203
|
||||
#, python-format
|
||||
msgid "Drop Database"
|
||||
msgstr ""
|
||||
msgstr "Ta bort databas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:488
|
||||
#, python-format
|
||||
msgid "Click here to change your user's timezone."
|
||||
msgstr ""
|
||||
msgstr "Klicka här för att ändra din användares tidzon"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -913,7 +916,7 @@ msgstr "Modifierare:"
|
|||
#: code:addons/web/static/src/xml/base.xml:649
|
||||
#, python-format
|
||||
msgid "Delete this attachment"
|
||||
msgstr ""
|
||||
msgstr "Ta bort denna bilaga"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -931,7 +934,7 @@ msgstr "Spara"
|
|||
#: code:addons/web/static/src/xml/base.xml:370
|
||||
#, python-format
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
msgstr "Fler"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -945,14 +948,14 @@ msgstr "Användarnamn"
|
|||
#: code:addons/web/static/src/js/chrome.js:503
|
||||
#, python-format
|
||||
msgid "Duplicating database"
|
||||
msgstr ""
|
||||
msgstr "Duplicerar databas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/chrome.js:585
|
||||
#, python-format
|
||||
msgid "Password has been changed successfully"
|
||||
msgstr ""
|
||||
msgstr "Lösenordet har ändrats"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1014,7 +1017,7 @@ msgstr "Spara fältlista"
|
|||
#: code:addons/web/doc/module/static/src/xml/web_example.xml:5
|
||||
#, python-format
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
msgstr "Start"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1035,14 +1038,14 @@ msgstr "Datum skapad:"
|
|||
#: code:addons/web/controllers/main.py:878
|
||||
#, python-format
|
||||
msgid "Error, password not changed !"
|
||||
msgstr ""
|
||||
msgstr "Fel! Lösenord ej ändrat!"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:4981
|
||||
#, python-format
|
||||
msgid "The selected file exceed the maximum file size of %s."
|
||||
msgstr ""
|
||||
msgstr "Vald fil överstiger maximal filstorlek på %s."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1090,14 +1093,14 @@ msgstr "Säkerhetskopia"
|
|||
#: code:addons/web/static/src/js/dates.js:80
|
||||
#, python-format
|
||||
msgid "'%s' is not a valid time"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte en giltig tid"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/formats.js:278
|
||||
#, python-format
|
||||
msgid "'%s' is not a correct date"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte ett giltigt datum"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1111,7 +1114,7 @@ msgstr "(ingen rubrik)"
|
|||
#: code:addons/web/static/src/js/coresetup.js:596
|
||||
#, python-format
|
||||
msgid "%d days ago"
|
||||
msgstr ""
|
||||
msgstr "%d dagar sedan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1151,7 +1154,7 @@ msgstr "Senast ändrad av:"
|
|||
#: code:addons/web/static/src/xml/base.xml:492
|
||||
#, python-format
|
||||
msgid "Timezone mismatch"
|
||||
msgstr ""
|
||||
msgstr "Hopblandning av tidszoner"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1198,7 +1201,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/coresetup.js:598
|
||||
#, python-format
|
||||
msgid "%d months ago"
|
||||
msgstr ""
|
||||
msgstr "%d månader sedan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1219,7 +1222,7 @@ msgstr "Lägg till avancerat filter"
|
|||
#: code:addons/web/controllers/main.py:871
|
||||
#, python-format
|
||||
msgid "The new password and its confirmation must be identical."
|
||||
msgstr ""
|
||||
msgstr "Det nya lösenordet och bekräftelsen måste vara lika."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1227,14 +1230,14 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:266
|
||||
#, python-format
|
||||
msgid "Restore Database"
|
||||
msgstr ""
|
||||
msgstr "Återställ databas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/chrome.js:702
|
||||
#, python-format
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
msgstr "Logga in"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1263,21 +1266,21 @@ msgstr "Exporttyp:"
|
|||
#: code:addons/web/static/src/xml/base.xml:428
|
||||
#, python-format
|
||||
msgid "Log out"
|
||||
msgstr ""
|
||||
msgstr "Logga ut"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/search.js:1192
|
||||
#, python-format
|
||||
msgid "Group by: %s"
|
||||
msgstr ""
|
||||
msgstr "Grupperad på: %s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:154
|
||||
#, python-format
|
||||
msgid "No data provided."
|
||||
msgstr ""
|
||||
msgstr "Inga data angivna"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1306,7 +1309,7 @@ msgstr "Du måste välja minst en post."
|
|||
#: code:addons/web/static/src/js/coresetup.js:621
|
||||
#, python-format
|
||||
msgid "Don't leave yet,<br />it's still loading..."
|
||||
msgstr ""
|
||||
msgstr "Lämna inte skärmen än,<br />det laddar fortfarande..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1348,28 +1351,28 @@ msgstr "%(page)d/%(page_count)d"
|
|||
#: code:addons/web/static/src/js/chrome.js:414
|
||||
#, python-format
|
||||
msgid "The confirmation does not match the password"
|
||||
msgstr ""
|
||||
msgstr "Bekräftelsen matchar inte lösenordet"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:463
|
||||
#, python-format
|
||||
msgid "Edit Company data"
|
||||
msgstr ""
|
||||
msgstr "Redigera företagsdata"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:5017
|
||||
#, python-format
|
||||
msgid "Save As..."
|
||||
msgstr ""
|
||||
msgstr "Spara som…"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:5138
|
||||
#, python-format
|
||||
msgid "Could not display the selected image."
|
||||
msgstr ""
|
||||
msgstr "Kunde inte visa utvald bild."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1407,7 +1410,7 @@ msgstr "1. Importera en .CSV-fil"
|
|||
#: code:addons/web/static/src/js/chrome.js:702
|
||||
#, python-format
|
||||
msgid "No database selected !"
|
||||
msgstr ""
|
||||
msgstr "Ingen databas vald!"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1428,7 +1431,7 @@ msgstr "Byt standardvärde:"
|
|||
#: code:addons/web/static/src/xml/base.xml:189
|
||||
#, python-format
|
||||
msgid "Original database name:"
|
||||
msgstr ""
|
||||
msgstr "Ursprungligt databasnamn"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1452,7 +1455,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:1637
|
||||
#, python-format
|
||||
msgid "Advanced Search"
|
||||
msgstr ""
|
||||
msgstr "Avancerad sökning"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1467,6 +1470,7 @@ msgstr "Bekräfta nytt huvudlösenord:"
|
|||
#, python-format
|
||||
msgid "Maybe you should consider reloading the application by pressing F5..."
|
||||
msgstr ""
|
||||
"Du kanske skulle överväga att återladda applikationen genom att trycka F5..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1498,7 +1502,7 @@ msgstr "Importalternativ"
|
|||
#: code:addons/web/static/src/js/view_form.js:3023
|
||||
#, python-format
|
||||
msgid "Add %s"
|
||||
msgstr ""
|
||||
msgstr "Lägg till %s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1522,7 +1526,7 @@ msgstr "Stäng"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"You may not believe it,<br />but the application is actually loading..."
|
||||
msgstr ""
|
||||
msgstr "Du kanske inte tror det, <br />men applikationen laddar faktiskt..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1536,7 +1540,7 @@ msgstr "CSV Fil:"
|
|||
#: code:addons/web/static/src/js/search.js:1879
|
||||
#, python-format
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avancerat"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1549,14 +1553,14 @@ msgstr "Träd"
|
|||
#: code:addons/web/controllers/main.py:793
|
||||
#, python-format
|
||||
msgid "Could not drop database !"
|
||||
msgstr ""
|
||||
msgstr "Kunde inte ta bort databas!"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/formats.js:231
|
||||
#, python-format
|
||||
msgid "'%s' is not a correct integer"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte ett korrekt heltal"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1577,21 +1581,21 @@ msgstr "Okänt fält %s i domän %s"
|
|||
#: code:addons/web/static/src/js/views.js:1546
|
||||
#, python-format
|
||||
msgid "Node [%s] is not a JSONified XML node"
|
||||
msgstr ""
|
||||
msgstr "Nod [%s] är inte en JSONifierad XML nod"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1454
|
||||
#, python-format
|
||||
msgid "Advanced Search..."
|
||||
msgstr ""
|
||||
msgstr "Avancerad sökning..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/chrome.js:521
|
||||
#, python-format
|
||||
msgid "Dropping database"
|
||||
msgstr ""
|
||||
msgstr "Tar bort databas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1642,14 +1646,14 @@ msgstr ""
|
|||
#: code:addons/web/static/src/xml/base.xml:1697
|
||||
#, python-format
|
||||
msgid "Import-Compatible Export"
|
||||
msgstr ""
|
||||
msgstr "Importkompatibel export"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:600
|
||||
#, python-format
|
||||
msgid "%d years ago"
|
||||
msgstr ""
|
||||
msgstr "%d år sedan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1678,14 +1682,14 @@ msgstr "Nytt databasnamn:"
|
|||
#: code:addons/web/static/src/js/chrome.js:411
|
||||
#, python-format
|
||||
msgid "Please enter your new password"
|
||||
msgstr ""
|
||||
msgstr "Var god ange ditt nya lösenord"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:5017
|
||||
#, python-format
|
||||
msgid "The field is empty, there's nothing to save !"
|
||||
msgstr ""
|
||||
msgstr "Fältet är tomt, det finns ingenting att spara!"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1713,7 +1717,7 @@ msgstr "Rader att hoppa över"
|
|||
#: code:addons/web/static/src/js/view_form.js:2945
|
||||
#, python-format
|
||||
msgid "Create \"<strong>%s</strong>\""
|
||||
msgstr ""
|
||||
msgstr "Skapa \"<strong>%s</strong>\""
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1756,7 +1760,7 @@ msgstr "Importern misslyckades på grund av:"
|
|||
#: code:addons/web/static/src/xml/base.xml:561
|
||||
#, python-format
|
||||
msgid "JS Tests"
|
||||
msgstr ""
|
||||
msgstr "JS tester"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1770,7 +1774,7 @@ msgstr "Spara som:"
|
|||
#: code:addons/web/static/src/js/search.js:1024
|
||||
#, python-format
|
||||
msgid "Filter on: %s"
|
||||
msgstr ""
|
||||
msgstr "Filter på: %s"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1792,7 +1796,7 @@ msgstr "Visa fält"
|
|||
#: code:addons/web/static/src/xml/base.xml:348
|
||||
#, python-format
|
||||
msgid "Confirm New Password:"
|
||||
msgstr ""
|
||||
msgstr "Bekräfta nytt lösenord:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1850,7 +1854,7 @@ msgstr "OpenERP"
|
|||
#: code:addons/web/doc/module/static/src/xml/web_example.xml:8
|
||||
#, python-format
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
msgstr "Stoppa"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1874,7 +1878,7 @@ msgstr "Laddar upp..."
|
|||
#: code:addons/web/static/src/xml/base.xml:1874
|
||||
#, python-format
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
msgstr "Namn:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1888,7 +1892,7 @@ msgstr "Om"
|
|||
#: code:addons/web/static/src/xml/base.xml:1457
|
||||
#, python-format
|
||||
msgid "Search Again"
|
||||
msgstr ""
|
||||
msgstr "Sök igen"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1921,13 +1925,14 @@ msgid ""
|
|||
"Grouping on field '%s' is not possible because that field does not appear in "
|
||||
"the list view."
|
||||
msgstr ""
|
||||
"Att gruppera på fält '%s' är inte möjligt då detta fält inte finns i listvyn."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:559
|
||||
#, python-format
|
||||
msgid "Set Defaults"
|
||||
msgstr ""
|
||||
msgstr "Ställ in standardvärden"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1970,7 +1975,7 @@ msgstr "Typ:"
|
|||
#: code:addons/web/static/src/js/chrome.js:560
|
||||
#, python-format
|
||||
msgid "Incorrect super-administrator password"
|
||||
msgstr ""
|
||||
msgstr "Ogiltigt super-administrator lösenord"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -1985,14 +1990,14 @@ msgstr "Objekt:"
|
|||
#: code:addons/web/static/src/js/chrome.js:343
|
||||
#, python-format
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
msgstr "Laddar"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:599
|
||||
#, python-format
|
||||
msgid "about a year ago"
|
||||
msgstr ""
|
||||
msgstr "ungefär ett år sedan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2012,13 +2017,15 @@ msgid ""
|
|||
"The type of the field '%s' must be a many2many field with a relation to "
|
||||
"'ir.attachment' model."
|
||||
msgstr ""
|
||||
"Denna typ av fält '%s' måste var ett many2many fält med en relation till "
|
||||
"'ir.attachment' modellen."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:594
|
||||
#, python-format
|
||||
msgid "%d hours ago"
|
||||
msgstr ""
|
||||
msgstr "%d timmar sedan"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2033,7 +2040,7 @@ msgstr "Lägg till: "
|
|||
#: code:addons/web/static/src/xml/base.xml:1879
|
||||
#, python-format
|
||||
msgid "Quick Add"
|
||||
msgstr ""
|
||||
msgstr "Lägg till snabbt"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2060,7 +2067,7 @@ msgstr "Ok"
|
|||
#: code:addons/web/static/src/js/views.js:1237
|
||||
#, python-format
|
||||
msgid "Uploading..."
|
||||
msgstr ""
|
||||
msgstr "Överför…"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2074,7 +2081,7 @@ msgstr "Ladda demodata:"
|
|||
#: code:addons/web/static/src/xml/base.xml:637
|
||||
#, python-format
|
||||
msgid "Created by :"
|
||||
msgstr ""
|
||||
msgstr "Skapad av:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2082,7 +2089,7 @@ msgstr ""
|
|||
#: code:addons/web/static/src/js/dates.js:26
|
||||
#, python-format
|
||||
msgid "'%s' is not a valid datetime"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte en giltig datum/tid"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2127,14 +2134,14 @@ msgstr "är sann"
|
|||
#: code:addons/web/static/src/js/view_form.js:4030
|
||||
#, python-format
|
||||
msgid "Add an item"
|
||||
msgstr ""
|
||||
msgstr "Lägg till en post"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1621
|
||||
#, python-format
|
||||
msgid "Save current filter"
|
||||
msgstr ""
|
||||
msgstr "Spara aktuellt filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2162,14 +2169,14 @@ msgstr "Hämta \"%s\""
|
|||
#: code:addons/web/static/src/js/view_form.js:325
|
||||
#, python-format
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "Ny"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_list.js:1777
|
||||
#, python-format
|
||||
msgid "Can't convert value %s to context"
|
||||
msgstr ""
|
||||
msgstr "Kan inte konvertera värdet %s i sammanhanget"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2235,34 +2242,34 @@ msgstr "är falsk"
|
|||
#: code:addons/web/static/src/xml/base.xml:426
|
||||
#, python-format
|
||||
msgid "About OpenERP"
|
||||
msgstr ""
|
||||
msgstr "Om OpenERP"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/formats.js:301
|
||||
#, python-format
|
||||
msgid "'%s' is not a correct date, datetime nor time"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte ett korrekt datum , datum/tid eller tid"
|
||||
|
||||
#. module: web
|
||||
#: code:addons/web/controllers/main.py:1307
|
||||
#, python-format
|
||||
msgid "No content found for field '%s' on '%s:%s'"
|
||||
msgstr ""
|
||||
msgstr "Inget innehåll funnet för fält '%s' på '%s:%s'"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:322
|
||||
#, python-format
|
||||
msgid "Database Management"
|
||||
msgstr ""
|
||||
msgstr "Databashantering"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/view_form.js:5138
|
||||
#, python-format
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
msgstr "Bild"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2295,7 +2302,7 @@ msgstr "inte ett korrekt heltal"
|
|||
#: code:addons/web/static/src/xml/base.xml:1648
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
msgstr "eller"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2309,7 +2316,7 @@ msgstr "Nej"
|
|||
#: code:addons/web/static/src/js/formats.js:313
|
||||
#, python-format
|
||||
msgid "'%s' is not convertible to date, datetime nor time"
|
||||
msgstr ""
|
||||
msgstr "'%s' är inte konverterbart till datum, datum/tid eller tid"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2327,21 +2334,21 @@ msgstr "Duplicera"
|
|||
#: code:addons/web/static/src/xml/base.xml:1419
|
||||
#, python-format
|
||||
msgid "Discard"
|
||||
msgstr ""
|
||||
msgstr "Ignorera"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:1642
|
||||
#, python-format
|
||||
msgid "Add a condition"
|
||||
msgstr ""
|
||||
msgstr "Lägg till ett villkor"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/coresetup.js:619
|
||||
#, python-format
|
||||
msgid "Still loading..."
|
||||
msgstr ""
|
||||
msgstr "Laddar fortfarande..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2355,7 +2362,7 @@ msgstr "Felaktigt värde för fält %(fieldname)s: [%(value)s] är %(message)s"
|
|||
#: code:addons/web/static/src/js/view_form.js:3926
|
||||
#, python-format
|
||||
msgid "The o2m record must be saved before an action can be used"
|
||||
msgstr ""
|
||||
msgstr "o2m posten måste sparas innan en händelse kan användas"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2369,7 +2376,7 @@ msgstr "Säkerhetskopierad"
|
|||
#: code:addons/web/static/src/xml/base.xml:1628
|
||||
#, python-format
|
||||
msgid "Use by default"
|
||||
msgstr ""
|
||||
msgstr "Använd som standard"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2390,7 +2397,7 @@ msgstr "aktiverad från sökvyn"
|
|||
#: code:addons/web/static/src/js/search.js:1079
|
||||
#, python-format
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
msgstr "Filter"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2432,7 +2439,7 @@ msgstr "Ändra arbetsflöde"
|
|||
#: code:addons/web/static/src/js/views.js:1246
|
||||
#, python-format
|
||||
msgid "Do you really want to delete this attachment ?"
|
||||
msgstr ""
|
||||
msgstr "Vill du verkligen ta bort denna bilaga"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2453,21 +2460,21 @@ msgstr "Fält:"
|
|||
#: code:addons/web/static/src/xml/base.xml:642
|
||||
#, python-format
|
||||
msgid "Modified by :"
|
||||
msgstr ""
|
||||
msgstr "Ändrad av:"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/js/chrome.js:521
|
||||
#, python-format
|
||||
msgid "The database %s has been dropped"
|
||||
msgstr ""
|
||||
msgstr "Datbasen %s har tagits bort"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
#: code:addons/web/static/src/xml/base.xml:482
|
||||
#, python-format
|
||||
msgid "User's timezone"
|
||||
msgstr ""
|
||||
msgstr "Användarens tidszon"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2482,7 +2489,7 @@ msgstr "Klientfel"
|
|||
#: code:addons/web/static/src/js/views.js:1073
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
msgstr "Skriv ut"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2497,6 +2504,7 @@ msgstr "Special:"
|
|||
msgid ""
|
||||
"The old password you provided is incorrect, your password was not changed."
|
||||
msgstr ""
|
||||
"Det gamla lösenordet du angav är ej korrekt, ditt lösenord ändrades inte."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
@ -2524,7 +2532,7 @@ msgstr "Spara och stäng"
|
|||
#: code:addons/web/static/src/js/view_form.js:2932
|
||||
#, python-format
|
||||
msgid "Search More..."
|
||||
msgstr ""
|
||||
msgstr "Sök flera..."
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web
|
||||
#. openerp-web
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,459 @@
|
|||
/*!
|
||||
* Bootstrap v3.0.2 by @fat and @mdo
|
||||
* Copyright 2013 Twitter, Inc.
|
||||
* Licensed under http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world by @mdo and @fat.
|
||||
*/
|
||||
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
.btn-success:active,
|
||||
.btn-info:active,
|
||||
.btn-warning:active,
|
||||
.btn-danger:active,
|
||||
.btn-default.active,
|
||||
.btn-primary.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
}
|
||||
|
||||
.btn:active,
|
||||
.btn.active {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.btn-default {
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e0e0e0));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
|
||||
background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
|
||||
background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dbdbdb;
|
||||
border-color: #ccc;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-default:hover,
|
||||
.btn-default:focus {
|
||||
background-color: #e0e0e0;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-default:active,
|
||||
.btn-default.active {
|
||||
background-color: #e0e0e0;
|
||||
border-color: #dbdbdb;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#2d6ca2));
|
||||
background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #2b669a;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus {
|
||||
background-color: #2d6ca2;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #2d6ca2;
|
||||
border-color: #2b669a;
|
||||
}
|
||||
|
||||
.btn-success {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#419641));
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -moz-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3e8f3e;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-success:hover,
|
||||
.btn-success:focus {
|
||||
background-color: #419641;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-success:active,
|
||||
.btn-success.active {
|
||||
background-color: #419641;
|
||||
border-color: #3e8f3e;
|
||||
}
|
||||
|
||||
.btn-warning {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#eb9316));
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -moz-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e38d13;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-warning:hover,
|
||||
.btn-warning:focus {
|
||||
background-color: #eb9316;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-warning:active,
|
||||
.btn-warning.active {
|
||||
background-color: #eb9316;
|
||||
border-color: #e38d13;
|
||||
}
|
||||
|
||||
.btn-danger {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c12e2a));
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b92c28;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-danger:hover,
|
||||
.btn-danger:focus {
|
||||
background-color: #c12e2a;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-danger:active,
|
||||
.btn-danger.active {
|
||||
background-color: #c12e2a;
|
||||
border-color: #b92c28;
|
||||
}
|
||||
|
||||
.btn-info {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#2aabd2));
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -moz-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #28a4c9;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.btn-info:hover,
|
||||
.btn-info:focus {
|
||||
background-color: #2aabd2;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-info:active,
|
||||
.btn-info.active {
|
||||
background-color: #2aabd2;
|
||||
border-color: #28a4c9;
|
||||
}
|
||||
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus {
|
||||
background-color: #e8e8e8;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
}
|
||||
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
background-color: #357ebd;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd));
|
||||
background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
||||
}
|
||||
|
||||
.navbar-default {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||
background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-radius: 4px;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > .active > a {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f3f3f3));
|
||||
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
|
||||
background-image: -moz-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
|
||||
}
|
||||
|
||||
.navbar-inverse {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222));
|
||||
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);
|
||||
background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%);
|
||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-nav > .active > a {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#222222), to(#282828));
|
||||
background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%);
|
||||
background-image: -moz-linear-gradient(top, #222222 0%, #282828 100%);
|
||||
background-image: linear-gradient(to bottom, #222222 0%, #282828 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-brand,
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.navbar-static-top,
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.alert {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc));
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b2dba1;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0));
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #9acfea;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||
}
|
||||
|
||||
.alert-warning {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0));
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #f5e79e;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3));
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dca7a7;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||
}
|
||||
|
||||
.progress {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5));
|
||||
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9));
|
||||
background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-success {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44));
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-info {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5));
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-warning {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f));
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-danger {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c));
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||
}
|
||||
|
||||
.list-group {
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
text-shadow: 0 -1px 0 #3071a9;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3));
|
||||
background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3278b3;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
|
||||
}
|
||||
|
||||
.panel {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.panel-default > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-primary > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd));
|
||||
background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-success > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6));
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-info > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3));
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-warning > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc));
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-danger > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc));
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||
}
|
||||
|
||||
.well {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5));
|
||||
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dcdcdc;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -280,8 +280,8 @@
|
|||
<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
|
||||
<glyph unicode="" horiz-adv-x="1152" d="M896 608v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h224q14 0 23 -9t9 -23zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28 t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68zM1152 928v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704q93 0 158.5 -65.5t65.5 -158.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1152" d="M928 1152q93 0 158.5 -65.5t65.5 -158.5v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68z M864 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
|
@ -310,7 +310,7 @@
|
|||
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
||||
<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1708 881l-188 -881h-304l181 849q4 21 1 43q-4 20 -16 35q-10 14 -28 24q-18 9 -40 9h-197l-205 -960h-303l204 960h-304l-205 -960h-304l272 1280h1139q157 0 245 -118q86 -116 52 -281z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
|
||||
<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
|
@ -342,7 +342,7 @@
|
|||
<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
|
||||
<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
|
||||
<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M1664 352v-32q0 -132 -94 -226t-226 -94h-128q-132 0 -226 94t-94 226v480h-224q-2 -102 -14.5 -190.5t-30.5 -156t-48.5 -126.5t-57 -99.5t-67.5 -77.5t-69.5 -58.5t-74 -44t-69 -32t-65.5 -25.5q-4 -2 -32 -13q-8 -2 -12 -2q-22 0 -30 20l-71 178q-5 13 0 25t17 17 q7 3 20 7.5t18 6.5q31 12 46.5 18.5t44.5 20t45.5 26t42 32.5t40.5 42.5t34.5 53.5t30.5 68.5t22.5 83.5t17 103t6.5 123h-256q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h1216q14 0 23 -9t9 -23v-160q0 -14 -9 -23t-23 -9h-224v-512q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v64q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1280 1376v-160q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h960q14 0 23 -9t9 -23z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
|
||||
|
@ -390,10 +390,25 @@
|
|||
<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M805 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM453 1176v-344q0 -179 -89.5 -326t-234.5 -217q-129 152 -129 351q0 200 129.5 352t323.5 184zM958 991q-128 -152 -128 -351q0 -201 128 -351q-145 70 -234.5 218t-89.5 328 v341q196 -33 324 -185zM1638 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM1286 1176v-344q0 -179 -91 -326t-237 -217v0q133 154 133 351q0 195 -133 351q129 151 328 185zM1920 640q0 -201 -129 -351q-145 70 -234.5 218 t-89.5 328v341q194 -32 323.5 -184t129.5 -352z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
|
||||
<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
|
||||
<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
||||
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
</font>
|
||||
</defs></svg>
|
Before Width: | Height: | Size: 193 KiB After Width: | Height: | Size: 197 KiB |
Binary file not shown.
Binary file not shown.
|
@ -1,32 +0,0 @@
|
|||
# jQuery MD5 Plugin
|
||||
|
||||
## Usage
|
||||
Create ([hex](http://en.wikipedia.org/wiki/Hexadecimal)-encoded) [MD5](http://en.wikipedia.org/wiki/MD5) hash of a given string value:
|
||||
|
||||
var md5 = $.md5('value');
|
||||
|
||||
Create ([hex](http://en.wikipedia.org/wiki/Hexadecimal)-encoded) [HMAC](http://en.wikipedia.org/wiki/HMAC)-MD5 hash of a given string value and key:
|
||||
|
||||
var md5 = $.md5('value', 'key');
|
||||
|
||||
Create raw [MD5](http://en.wikipedia.org/wiki/MD5) hash of a given string value:
|
||||
|
||||
var md5 = $.md5('value', null, true);
|
||||
|
||||
Create raw [HMAC](http://en.wikipedia.org/wiki/HMAC)-MD5 hash of a given string value and key:
|
||||
|
||||
var md5 = $.md5('value', 'key', true);
|
||||
|
||||
## Requirements
|
||||
None.
|
||||
|
||||
If [jQuery](http://jquery.com/) is not available, the md5 function will be added to the global object:
|
||||
|
||||
var md5 = md5('value');
|
||||
|
||||
## License
|
||||
Released under the [MIT license](http://creativecommons.org/licenses/MIT/).
|
||||
|
||||
## Source Code & Download
|
||||
* Browse and checkout the [source code](https://github.com/blueimp/jQuery-MD5).
|
||||
* [Download](https://github.com/blueimp/jQuery-MD5/archives/master) the project to add the plugin to your website.
|
|
@ -1,32 +0,0 @@
|
|||
jQuery MD5 Plugin
|
||||
=================
|
||||
|
||||
Usage
|
||||
-----
|
||||
Create (hex-encoded) MD5 hash of a given string value:
|
||||
var md5 = $.md5('value');
|
||||
|
||||
Create (hex-encoded) HMAC-MD5 hash of a given string value and key:
|
||||
var md5 = $.md5('value', 'key');
|
||||
|
||||
Create raw MD5 hash of a given string value:
|
||||
var md5 = $.md5('value', null, true);
|
||||
|
||||
Create raw HMAC-MD5 hash of a given string value and key:
|
||||
var md5 = $.md5('value', 'key', true);
|
||||
|
||||
Requirements
|
||||
------------
|
||||
None.
|
||||
|
||||
If jQuery is not available, the md5 function will be added to the global object:
|
||||
var md5 = md5('value');
|
||||
|
||||
License
|
||||
-------
|
||||
Released under the MIT license:
|
||||
http://creativecommons.org/licenses/MIT/
|
||||
|
||||
Source Code & Download
|
||||
----------------------
|
||||
https://github.com/blueimp/jQuery-MD5
|
|
@ -1,269 +0,0 @@
|
|||
/*
|
||||
* jQuery MD5 Plugin 1.2.1
|
||||
* https://github.com/blueimp/jQuery-MD5
|
||||
*
|
||||
* Copyright 2010, Sebastian Tschan
|
||||
* https://blueimp.net
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://creativecommons.org/licenses/MIT/
|
||||
*
|
||||
* Based on
|
||||
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
|
||||
* Digest Algorithm, as defined in RFC 1321.
|
||||
* Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
|
||||
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
|
||||
* Distributed under the BSD License
|
||||
* See http://pajhome.org.uk/crypt/md5 for more info.
|
||||
*/
|
||||
|
||||
/*jslint bitwise: true */
|
||||
/*global unescape, jQuery */
|
||||
|
||||
(function ($) {
|
||||
'use strict';
|
||||
|
||||
/*
|
||||
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
|
||||
* to work around bugs in some JS interpreters.
|
||||
*/
|
||||
function safe_add(x, y) {
|
||||
var lsw = (x & 0xFFFF) + (y & 0xFFFF),
|
||||
msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
||||
return (msw << 16) | (lsw & 0xFFFF);
|
||||
}
|
||||
|
||||
/*
|
||||
* Bitwise rotate a 32-bit number to the left.
|
||||
*/
|
||||
function bit_rol(num, cnt) {
|
||||
return (num << cnt) | (num >>> (32 - cnt));
|
||||
}
|
||||
|
||||
/*
|
||||
* These functions implement the four basic operations the algorithm uses.
|
||||
*/
|
||||
function md5_cmn(q, a, b, x, s, t) {
|
||||
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
|
||||
}
|
||||
function md5_ff(a, b, c, d, x, s, t) {
|
||||
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
|
||||
}
|
||||
function md5_gg(a, b, c, d, x, s, t) {
|
||||
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
|
||||
}
|
||||
function md5_hh(a, b, c, d, x, s, t) {
|
||||
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
|
||||
}
|
||||
function md5_ii(a, b, c, d, x, s, t) {
|
||||
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
||||
*/
|
||||
function binl_md5(x, len) {
|
||||
/* append padding */
|
||||
x[len >> 5] |= 0x80 << ((len) % 32);
|
||||
x[(((len + 64) >>> 9) << 4) + 14] = len;
|
||||
|
||||
var i, olda, oldb, oldc, oldd,
|
||||
a = 1732584193,
|
||||
b = -271733879,
|
||||
c = -1732584194,
|
||||
d = 271733878;
|
||||
|
||||
for (i = 0; i < x.length; i += 16) {
|
||||
olda = a;
|
||||
oldb = b;
|
||||
oldc = c;
|
||||
oldd = d;
|
||||
|
||||
a = md5_ff(a, b, c, d, x[i], 7, -680876936);
|
||||
d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
|
||||
c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
|
||||
b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
||||
a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
|
||||
d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
||||
c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
||||
b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
|
||||
a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
||||
d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
||||
c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
|
||||
b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
||||
a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
||||
d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
|
||||
c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
||||
b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
||||
|
||||
a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
|
||||
d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
||||
c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
|
||||
b = md5_gg(b, c, d, a, x[i], 20, -373897302);
|
||||
a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
|
||||
d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
|
||||
c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
|
||||
b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
|
||||
a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
|
||||
d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
||||
c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
|
||||
b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
||||
a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
||||
d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
|
||||
c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
||||
b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
||||
|
||||
a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
|
||||
d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
||||
c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
||||
b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
|
||||
a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
||||
d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
||||
c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
|
||||
b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
||||
a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
|
||||
d = md5_hh(d, a, b, c, x[i], 11, -358537222);
|
||||
c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
|
||||
b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
|
||||
a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
|
||||
d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
|
||||
c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
|
||||
b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
|
||||
|
||||
a = md5_ii(a, b, c, d, x[i], 6, -198630844);
|
||||
d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
||||
c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
||||
b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
|
||||
a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
||||
d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
||||
c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
|
||||
b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
||||
a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
||||
d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
|
||||
c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
||||
b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
||||
a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
|
||||
d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
||||
c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
|
||||
b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
|
||||
|
||||
a = safe_add(a, olda);
|
||||
b = safe_add(b, oldb);
|
||||
c = safe_add(c, oldc);
|
||||
d = safe_add(d, oldd);
|
||||
}
|
||||
return [a, b, c, d];
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an array of little-endian words to a string
|
||||
*/
|
||||
function binl2rstr(input) {
|
||||
var i,
|
||||
output = '';
|
||||
for (i = 0; i < input.length * 32; i += 8) {
|
||||
output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to an array of little-endian words
|
||||
* Characters >255 have their high-byte silently ignored.
|
||||
*/
|
||||
function rstr2binl(input) {
|
||||
var i,
|
||||
output = [];
|
||||
output[(input.length >> 2) - 1] = undefined;
|
||||
for (i = 0; i < output.length; i += 1) {
|
||||
output[i] = 0;
|
||||
}
|
||||
for (i = 0; i < input.length * 8; i += 8) {
|
||||
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the MD5 of a raw string
|
||||
*/
|
||||
function rstr_md5(s) {
|
||||
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the HMAC-MD5, of a key and some data (raw strings)
|
||||
*/
|
||||
function rstr_hmac_md5(key, data) {
|
||||
var i,
|
||||
bkey = rstr2binl(key),
|
||||
ipad = [],
|
||||
opad = [],
|
||||
hash;
|
||||
ipad[15] = opad[15] = undefined;
|
||||
if (bkey.length > 16) {
|
||||
bkey = binl_md5(bkey, key.length * 8);
|
||||
}
|
||||
for (i = 0; i < 16; i += 1) {
|
||||
ipad[i] = bkey[i] ^ 0x36363636;
|
||||
opad[i] = bkey[i] ^ 0x5C5C5C5C;
|
||||
}
|
||||
hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
|
||||
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to a hex string
|
||||
*/
|
||||
function rstr2hex(input) {
|
||||
var hex_tab = '0123456789abcdef',
|
||||
output = '',
|
||||
x,
|
||||
i;
|
||||
for (i = 0; i < input.length; i += 1) {
|
||||
x = input.charCodeAt(i);
|
||||
output += hex_tab.charAt((x >>> 4) & 0x0F) +
|
||||
hex_tab.charAt(x & 0x0F);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode a string as utf-8
|
||||
*/
|
||||
function str2rstr_utf8(input) {
|
||||
return unescape(encodeURIComponent(input));
|
||||
}
|
||||
|
||||
/*
|
||||
* Take string arguments and return either raw or hex encoded strings
|
||||
*/
|
||||
function raw_md5(s) {
|
||||
return rstr_md5(str2rstr_utf8(s));
|
||||
}
|
||||
function hex_md5(s) {
|
||||
return rstr2hex(raw_md5(s));
|
||||
}
|
||||
function raw_hmac_md5(k, d) {
|
||||
return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d));
|
||||
}
|
||||
function hex_hmac_md5(k, d) {
|
||||
return rstr2hex(raw_hmac_md5(k, d));
|
||||
}
|
||||
|
||||
$.md5 = function (string, key, raw) {
|
||||
if (!key) {
|
||||
if (!raw) {
|
||||
return hex_md5(string);
|
||||
} else {
|
||||
return raw_md5(string);
|
||||
}
|
||||
}
|
||||
if (!raw) {
|
||||
return hex_hmac_md5(key, string);
|
||||
} else {
|
||||
return raw_hmac_md5(key, string);
|
||||
}
|
||||
};
|
||||
|
||||
}(typeof jQuery === 'function' ? jQuery : this));
|
|
@ -1,43 +0,0 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
/*
|
||||
* jQuery MD5 Plugin Tests 1.1
|
||||
* https://github.com/blueimp/jQuery-MD5
|
||||
*
|
||||
* Copyright 2010, Sebastian Tschan
|
||||
* https://blueimp.net
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://creativecommons.org/licenses/MIT/
|
||||
*/
|
||||
-->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>jQuery MD5 Plugin Tests</title>
|
||||
<link rel="stylesheet" href="http://code.jquery.com/qunit/git/qunit.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="qunit-header">jQuery MD5 Plugin Tests</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<div id="qunit-testrunner-toolbar"></div>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests"></ol>
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
|
||||
<script>
|
||||
(function ($) {
|
||||
'use strict';
|
||||
var nojquery = /nojquery=true/.test(location.search);
|
||||
$('<label><input type="checkbox">nojquery<\/label>').click(function () {
|
||||
location.search = nojquery ? '' : '?nojquery=true';
|
||||
}).appendTo('body').children(':first').attr('checked', nojquery);
|
||||
if (nojquery) {
|
||||
window.jQuery = null;
|
||||
}
|
||||
}(window.jQuery));
|
||||
</script>
|
||||
<script src="../jquery.md5.js"></script>
|
||||
<script src="http://code.jquery.com/qunit/git/qunit.js"></script>
|
||||
<script src="tests.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,57 +0,0 @@
|
|||
/*
|
||||
* jQuery MD5 Plugin Tests 1.1
|
||||
* https://github.com/blueimp/jQuery-MD5
|
||||
*
|
||||
* Copyright 2010, Sebastian Tschan
|
||||
* https://blueimp.net
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://creativecommons.org/licenses/MIT/
|
||||
*/
|
||||
|
||||
/*global jQuery, module, test, strictEqual */
|
||||
|
||||
(function ($) {
|
||||
'use strict';
|
||||
|
||||
module('Hex-encoded MD5');
|
||||
|
||||
test('Creating hex-encoded MD5 hash of an ASCII value', function () {
|
||||
strictEqual($.md5('value'), '2063c1608d6e0baf80249c42e2be5804');
|
||||
});
|
||||
|
||||
test('Creating hex-encoded MD5 hash of an UTF-8 value', function () {
|
||||
strictEqual($.md5('日本'), '4dbed2e657457884e67137d3514119b3');
|
||||
});
|
||||
|
||||
module('Hex-encoded HMAC-MD5');
|
||||
|
||||
test('Creating hex-encoded HMAC-MD5 hash of an ASCII value and key', function () {
|
||||
strictEqual($.md5('value', 'key'), '01433efd5f16327ea4b31144572c67f6');
|
||||
});
|
||||
|
||||
test('Creating hex-encoded HMAC-MD5 hash of an UTF-8 value and key', function () {
|
||||
strictEqual($.md5('日本', '日本'), 'c78b8c7357926981cc04740bd3e9d015');
|
||||
});
|
||||
|
||||
module('Raw MD5');
|
||||
|
||||
test('Creating raw MD5 hash of an ASCII value', function () {
|
||||
strictEqual($.md5('value', null, true), ' c\xc1`\x8dn\x0b\xaf\x80$\x9cB\xe2\xbeX\x04');
|
||||
});
|
||||
|
||||
test('Creating raw MD5 hash of an UTF-8 value', function () {
|
||||
strictEqual($.md5('日本', null, true), 'M\xbe\xd2\xe6WEx\x84\xe6q7\xd3QA\x19\xb3');
|
||||
});
|
||||
|
||||
module('Raw HMAC-MD5');
|
||||
|
||||
test('Creating raw HMAC-MD5 hash of an ASCII value and key', function () {
|
||||
strictEqual($.md5('value', 'key', true), '\x01C>\xfd_\x162~\xa4\xb3\x11DW,g\xf6');
|
||||
});
|
||||
|
||||
test('Creating raw HMAC-MD5 hash of an UTF-8 value and key', function () {
|
||||
strictEqual($.md5('日本', '日本', true), '\xc7\x8b\x8csW\x92i\x81\xcc\x04t\x0b\xd3\xe9\xd0\x15');
|
||||
});
|
||||
|
||||
}(typeof jQuery === 'function' ? jQuery : this));
|
|
@ -1,12 +1,11 @@
|
|||
// Underscore.string
|
||||
// (c) 2010 Esa-Matti Suuronen <esa-matti aet suuronen dot org>
|
||||
// Underscore.strings is freely distributable under the terms of the MIT license.
|
||||
// Documentation: https://github.com/epeli/underscore.string
|
||||
// Some code is borrowed from MooTools and Alexandru Marasteanu.
|
||||
// Underscore.string
|
||||
// (c) 2010 Esa-Matti Suuronen <esa-matti aet suuronen dot org>
|
||||
// Underscore.string is freely distributable under the terms of the MIT license.
|
||||
// Documentation: https://github.com/epeli/underscore.string
|
||||
// Some code is borrowed from MooTools and Alexandru Marasteanu.
|
||||
// Version '2.3.2'
|
||||
|
||||
// Version 2.2.0rc
|
||||
|
||||
(function(root){
|
||||
!function(root, String){
|
||||
'use strict';
|
||||
|
||||
// Defining helper functions.
|
||||
|
@ -16,36 +15,51 @@
|
|||
var nativeTrimLeft = String.prototype.trimLeft;
|
||||
|
||||
var parseNumber = function(source) { return source * 1 || 0; };
|
||||
|
||||
var strRepeat = function(str, qty, separator){
|
||||
// ~~var — is the fastest available way to convert anything to Integer in javascript.
|
||||
// We'll use it extensively in this lib.
|
||||
str += ''; qty = ~~qty;
|
||||
for (var repeat = []; qty > 0; repeat[--qty] = str) {}
|
||||
return repeat.join(separator == null ? '' : separator);
|
||||
};
|
||||
|
||||
var slice = function(a){
|
||||
return Array.prototype.slice.call(a);
|
||||
};
|
||||
|
||||
var defaultToWhiteSpace = function(characters){
|
||||
if (characters != null) {
|
||||
return '[' + _s.escapeRegExp(''+characters) + ']';
|
||||
var strRepeat = function(str, qty){
|
||||
if (qty < 1) return '';
|
||||
var result = '';
|
||||
while (qty > 0) {
|
||||
if (qty & 1) result += str;
|
||||
qty >>= 1, str += str;
|
||||
}
|
||||
return '\\s';
|
||||
return result;
|
||||
};
|
||||
|
||||
|
||||
var slice = [].slice;
|
||||
|
||||
var defaultToWhiteSpace = function(characters) {
|
||||
if (characters == null)
|
||||
return '\\s';
|
||||
else if (characters.source)
|
||||
return characters.source;
|
||||
else
|
||||
return '[' + _s.escapeRegExp(characters) + ']';
|
||||
};
|
||||
|
||||
// Helper for toBoolean
|
||||
function boolMatch(s, matchers) {
|
||||
var i, matcher, down = s.toLowerCase();
|
||||
matchers = [].concat(matchers);
|
||||
for (i = 0; i < matchers.length; i += 1) {
|
||||
matcher = matchers[i];
|
||||
if (!matcher) continue;
|
||||
if (matcher.test && matcher.test(s)) return true;
|
||||
if (matcher.toLowerCase() === down) return true;
|
||||
}
|
||||
}
|
||||
|
||||
var escapeChars = {
|
||||
lt: '<',
|
||||
gt: '>',
|
||||
quot: '"',
|
||||
apos: "'",
|
||||
amp: '&'
|
||||
amp: '&',
|
||||
apos: "'"
|
||||
};
|
||||
|
||||
|
||||
var reversedEscapeChars = {};
|
||||
for(var key in escapeChars){ reversedEscapeChars[escapeChars[key]] = key; }
|
||||
for(var key in escapeChars) reversedEscapeChars[escapeChars[key]] = key;
|
||||
reversedEscapeChars["'"] = '#39';
|
||||
|
||||
// sprintf() for JavaScript 0.7-beta1
|
||||
// http://www.diveintojavascript.com/projects/javascript-sprintf
|
||||
|
@ -175,28 +189,28 @@
|
|||
|
||||
var _s = {
|
||||
|
||||
VERSION: '2.2.0rc',
|
||||
VERSION: '2.3.0',
|
||||
|
||||
isBlank: function(str){
|
||||
if (str == null) str = '';
|
||||
return (/^\s*$/).test(str);
|
||||
},
|
||||
|
||||
stripTags: function(str){
|
||||
return (''+str).replace(/<\/?[^>]+>/g, '');
|
||||
if (str == null) return '';
|
||||
return String(str).replace(/<\/?[^>]+>/g, '');
|
||||
},
|
||||
|
||||
capitalize : function(str) {
|
||||
str += '';
|
||||
return str.charAt(0).toUpperCase() + str.substring(1);
|
||||
capitalize : function(str){
|
||||
str = str == null ? '' : String(str);
|
||||
return str.charAt(0).toUpperCase() + str.slice(1);
|
||||
},
|
||||
|
||||
chop: function(str, step){
|
||||
str = str+'';
|
||||
step = ~~step || str.length;
|
||||
var arr = [];
|
||||
for (var i = 0; i < str.length; i += step)
|
||||
arr.push(str.slice(i,i + step));
|
||||
return arr;
|
||||
if (str == null) return [];
|
||||
str = String(str);
|
||||
step = ~~step;
|
||||
return step > 0 ? str.match(new RegExp('.{1,' + step + '}', 'g')) : [str];
|
||||
},
|
||||
|
||||
clean: function(str){
|
||||
|
@ -204,22 +218,47 @@
|
|||
},
|
||||
|
||||
count: function(str, substr){
|
||||
str += ''; substr += '';
|
||||
return str.split(substr).length - 1;
|
||||
if (str == null || substr == null) return 0;
|
||||
|
||||
str = String(str);
|
||||
substr = String(substr);
|
||||
|
||||
var count = 0,
|
||||
pos = 0,
|
||||
length = substr.length;
|
||||
|
||||
while (true) {
|
||||
pos = str.indexOf(substr, pos);
|
||||
if (pos === -1) break;
|
||||
count++;
|
||||
pos += length;
|
||||
}
|
||||
|
||||
return count;
|
||||
},
|
||||
|
||||
chars: function(str) {
|
||||
return (''+str).split('');
|
||||
if (str == null) return [];
|
||||
return String(str).split('');
|
||||
},
|
||||
|
||||
swapCase: function(str) {
|
||||
if (str == null) return '';
|
||||
return String(str).replace(/\S/g, function(c){
|
||||
return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase();
|
||||
});
|
||||
},
|
||||
|
||||
escapeHTML: function(str) {
|
||||
return (''+str).replace(/[&<>"']/g, function(match){ return '&' + reversedEscapeChars[match] + ';'; });
|
||||
if (str == null) return '';
|
||||
return String(str).replace(/[&<>"']/g, function(m){ return '&' + reversedEscapeChars[m] + ';'; });
|
||||
},
|
||||
|
||||
unescapeHTML: function(str) {
|
||||
return (''+str).replace(/\&([^;]+);/g, function(entity, entityCode){
|
||||
if (str == null) return '';
|
||||
return String(str).replace(/\&([^;]+);/g, function(entity, entityCode){
|
||||
var match;
|
||||
|
||||
|
||||
if (entityCode in escapeChars) {
|
||||
return escapeChars[entityCode];
|
||||
} else if (match = entityCode.match(/^#x([\da-fA-F]+)$/)) {
|
||||
|
@ -233,31 +272,8 @@
|
|||
},
|
||||
|
||||
escapeRegExp: function(str){
|
||||
// From MooTools core 1.2.4
|
||||
return str.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
|
||||
},
|
||||
|
||||
insert: function(str, i, substr){
|
||||
var arr = _s.chars(str);
|
||||
arr.splice(~~i, 0, ''+substr);
|
||||
return arr.join('');
|
||||
},
|
||||
|
||||
include: function(str, needle){
|
||||
return !!~(''+str).indexOf(needle);
|
||||
},
|
||||
|
||||
join: function() {
|
||||
var args = slice(arguments);
|
||||
return args.join(args.shift());
|
||||
},
|
||||
|
||||
lines: function(str) {
|
||||
return (''+str).split("\n");
|
||||
},
|
||||
|
||||
reverse: function(str){
|
||||
return _s.chars(str).reverse().join('');
|
||||
if (str == null) return '';
|
||||
return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
|
||||
},
|
||||
|
||||
splice: function(str, i, howmany, substr){
|
||||
|
@ -266,31 +282,62 @@
|
|||
return arr.join('');
|
||||
},
|
||||
|
||||
insert: function(str, i, substr){
|
||||
return _s.splice(str, i, 0, substr);
|
||||
},
|
||||
|
||||
include: function(str, needle){
|
||||
if (needle === '') return true;
|
||||
if (str == null) return false;
|
||||
return String(str).indexOf(needle) !== -1;
|
||||
},
|
||||
|
||||
join: function() {
|
||||
var args = slice.call(arguments),
|
||||
separator = args.shift();
|
||||
|
||||
if (separator == null) separator = '';
|
||||
|
||||
return args.join(separator);
|
||||
},
|
||||
|
||||
lines: function(str) {
|
||||
if (str == null) return [];
|
||||
return String(str).split("\n");
|
||||
},
|
||||
|
||||
reverse: function(str){
|
||||
return _s.chars(str).reverse().join('');
|
||||
},
|
||||
|
||||
startsWith: function(str, starts){
|
||||
str += ''; starts += '';
|
||||
return str.length >= starts.length && str.substring(0, starts.length) === starts;
|
||||
if (starts === '') return true;
|
||||
if (str == null || starts == null) return false;
|
||||
str = String(str); starts = String(starts);
|
||||
return str.length >= starts.length && str.slice(0, starts.length) === starts;
|
||||
},
|
||||
|
||||
endsWith: function(str, ends){
|
||||
str += ''; ends += '';
|
||||
return str.length >= ends.length && str.substring(str.length - ends.length) === ends;
|
||||
if (ends === '') return true;
|
||||
if (str == null || ends == null) return false;
|
||||
str = String(str); ends = String(ends);
|
||||
return str.length >= ends.length && str.slice(str.length - ends.length) === ends;
|
||||
},
|
||||
|
||||
succ: function(str){
|
||||
str += '';
|
||||
var arr = _s.chars(str);
|
||||
arr.splice(str.length-1, 1, String.fromCharCode(str.charCodeAt(str.length-1) + 1));
|
||||
return arr.join('');
|
||||
if (str == null) return '';
|
||||
str = String(str);
|
||||
return str.slice(0, -1) + String.fromCharCode(str.charCodeAt(str.length-1) + 1);
|
||||
},
|
||||
|
||||
titleize: function(str){
|
||||
return (''+str).replace(/\b./g, function(ch){ return ch.toUpperCase(); });
|
||||
if (str == null) return '';
|
||||
str = String(str).toLowerCase();
|
||||
return str.replace(/(?:^|\s|-)\S/g, function(c){ return c.toUpperCase(); });
|
||||
},
|
||||
|
||||
camelize: function(str){
|
||||
return _s.trim(str).replace(/[-_\s]+(.)?/g, function(match, chr){
|
||||
return chr && chr.toUpperCase();
|
||||
});
|
||||
return _s.trim(str).replace(/[-_\s]+(.)?/g, function(match, c){ return c ? c.toUpperCase() : ""; });
|
||||
},
|
||||
|
||||
underscored: function(str){
|
||||
|
@ -298,45 +345,41 @@
|
|||
},
|
||||
|
||||
dasherize: function(str){
|
||||
return _s.trim(str).replace(/[_\s]+/g, '-').replace(/([A-Z])/g, '-$1').replace(/-+/g, '-').toLowerCase();
|
||||
return _s.trim(str).replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase();
|
||||
},
|
||||
|
||||
classify: function(str){
|
||||
str += '';
|
||||
return _s.titleize(str.replace(/_/g, ' ')).replace(/\s/g, '')
|
||||
return _s.titleize(String(str).replace(/[\W_]/g, ' ')).replace(/\s/g, '');
|
||||
},
|
||||
|
||||
humanize: function(str){
|
||||
return _s.capitalize(this.underscored(str).replace(/_id$/,'').replace(/_/g, ' '));
|
||||
return _s.capitalize(_s.underscored(str).replace(/_id$/,'').replace(/_/g, ' '));
|
||||
},
|
||||
|
||||
trim: function(str, characters){
|
||||
str += '';
|
||||
if (!characters && nativeTrim) { return nativeTrim.call(str); }
|
||||
if (str == null) return '';
|
||||
if (!characters && nativeTrim) return nativeTrim.call(str);
|
||||
characters = defaultToWhiteSpace(characters);
|
||||
return str.replace(new RegExp('\^' + characters + '+|' + characters + '+$', 'g'), '');
|
||||
return String(str).replace(new RegExp('\^' + characters + '+|' + characters + '+$', 'g'), '');
|
||||
},
|
||||
|
||||
ltrim: function(str, characters){
|
||||
str+='';
|
||||
if (!characters && nativeTrimLeft) {
|
||||
return nativeTrimLeft.call(str);
|
||||
}
|
||||
if (str == null) return '';
|
||||
if (!characters && nativeTrimLeft) return nativeTrimLeft.call(str);
|
||||
characters = defaultToWhiteSpace(characters);
|
||||
return str.replace(new RegExp('^' + characters + '+'), '');
|
||||
return String(str).replace(new RegExp('^' + characters + '+'), '');
|
||||
},
|
||||
|
||||
rtrim: function(str, characters){
|
||||
str+='';
|
||||
if (!characters && nativeTrimRight) {
|
||||
return nativeTrimRight.call(str);
|
||||
}
|
||||
if (str == null) return '';
|
||||
if (!characters && nativeTrimRight) return nativeTrimRight.call(str);
|
||||
characters = defaultToWhiteSpace(characters);
|
||||
return str.replace(new RegExp(characters + '+$'), '');
|
||||
return String(str).replace(new RegExp(characters + '+$'), '');
|
||||
},
|
||||
|
||||
truncate: function(str, length, truncateStr){
|
||||
str += ''; truncateStr = truncateStr || '...';
|
||||
if (str == null) return '';
|
||||
str = String(str); truncateStr = truncateStr || '...';
|
||||
length = ~~length;
|
||||
return str.length > length ? str.slice(0, length) + truncateStr : str;
|
||||
},
|
||||
|
@ -344,57 +387,53 @@
|
|||
/**
|
||||
* _s.prune: a more elegant version of truncate
|
||||
* prune extra chars, never leaving a half-chopped word.
|
||||
* @author github.com/sergiokas
|
||||
* @author github.com/rwz
|
||||
*/
|
||||
prune: function(str, length, pruneStr){
|
||||
str += ''; length = ~~length;
|
||||
pruneStr = pruneStr != null ? ''+pruneStr : '...';
|
||||
|
||||
var pruned, borderChar, template = str.replace(/\W/g, function(ch){
|
||||
return (ch.toUpperCase() !== ch.toLowerCase()) ? 'A' : ' ';
|
||||
});
|
||||
|
||||
borderChar = template.charAt(length);
|
||||
|
||||
pruned = template.slice(0, length);
|
||||
|
||||
// Check if we're in the middle of a word
|
||||
if (borderChar && borderChar.match(/\S/))
|
||||
pruned = pruned.replace(/\s\S+$/, '');
|
||||
|
||||
pruned = _s.rtrim(pruned);
|
||||
|
||||
return (pruned+pruneStr).length > str.length ? str : str.substring(0, pruned.length)+pruneStr;
|
||||
if (str == null) return '';
|
||||
|
||||
str = String(str); length = ~~length;
|
||||
pruneStr = pruneStr != null ? String(pruneStr) : '...';
|
||||
|
||||
if (str.length <= length) return str;
|
||||
|
||||
var tmpl = function(c){ return c.toUpperCase() !== c.toLowerCase() ? 'A' : ' '; },
|
||||
template = str.slice(0, length+1).replace(/.(?=\W*\w*$)/g, tmpl); // 'Hello, world' -> 'HellAA AAAAA'
|
||||
|
||||
if (template.slice(template.length-2).match(/\w\w/))
|
||||
template = template.replace(/\s*\S+$/, '');
|
||||
else
|
||||
template = _s.rtrim(template.slice(0, template.length-1));
|
||||
|
||||
return (template+pruneStr).length > str.length ? str : str.slice(0, template.length)+pruneStr;
|
||||
},
|
||||
|
||||
words: function(str, delimiter) {
|
||||
if (_s.isBlank(str)) return [];
|
||||
return _s.trim(str, delimiter).split(delimiter || /\s+/);
|
||||
},
|
||||
|
||||
pad: function(str, length, padStr, type) {
|
||||
str += '';
|
||||
|
||||
str = str == null ? '' : String(str);
|
||||
length = ~~length;
|
||||
|
||||
var padlen = 0;
|
||||
|
||||
length = ~~length;
|
||||
|
||||
if (!padStr) {
|
||||
if (!padStr)
|
||||
padStr = ' ';
|
||||
} else if (padStr.length > 1) {
|
||||
else if (padStr.length > 1)
|
||||
padStr = padStr.charAt(0);
|
||||
}
|
||||
|
||||
|
||||
switch(type) {
|
||||
case 'right':
|
||||
padlen = (length - str.length);
|
||||
padlen = length - str.length;
|
||||
return str + strRepeat(padStr, padlen);
|
||||
case 'both':
|
||||
padlen = (length - str.length);
|
||||
return strRepeat(padStr, Math.ceil(padlen/2)) +
|
||||
str +
|
||||
strRepeat(padStr, Math.floor(padlen/2));
|
||||
padlen = length - str.length;
|
||||
return strRepeat(padStr, Math.ceil(padlen/2)) + str
|
||||
+ strRepeat(padStr, Math.floor(padlen/2));
|
||||
default: // 'left'
|
||||
padlen = (length - str.length);
|
||||
padlen = length - str.length;
|
||||
return strRepeat(padStr, padlen) + str;
|
||||
}
|
||||
},
|
||||
|
@ -419,76 +458,185 @@
|
|||
},
|
||||
|
||||
toNumber: function(str, decimals) {
|
||||
str += '';
|
||||
var num = parseNumber(parseNumber(str).toFixed(~~decimals));
|
||||
return num === 0 && !str.match(/^0+$/) ? Number.NaN : num;
|
||||
if (!str) return 0;
|
||||
str = _s.trim(str);
|
||||
if (!str.match(/^-?\d+(?:\.\d+)?$/)) return NaN;
|
||||
return parseNumber(parseNumber(str).toFixed(~~decimals));
|
||||
},
|
||||
|
||||
numberFormat : function(number, dec, dsep, tsep) {
|
||||
if (isNaN(number) || number == null) return '';
|
||||
|
||||
number = number.toFixed(~~dec);
|
||||
tsep = typeof tsep == 'string' ? tsep : ',';
|
||||
|
||||
var parts = number.split('.'), fnums = parts[0],
|
||||
decimals = parts[1] ? (dsep || '.') + parts[1] : '';
|
||||
|
||||
return fnums.replace(/(\d)(?=(?:\d{3})+$)/g, '$1' + tsep) + decimals;
|
||||
},
|
||||
|
||||
strRight: function(str, sep){
|
||||
str += ''; sep = sep != null ? ''+sep : sep;
|
||||
if (str == null) return '';
|
||||
str = String(str); sep = sep != null ? String(sep) : sep;
|
||||
var pos = !sep ? -1 : str.indexOf(sep);
|
||||
return ~pos ? str.slice(pos+sep.length, str.length) : str;
|
||||
},
|
||||
|
||||
strRightBack: function(str, sep){
|
||||
str += ''; sep = sep != null ? ''+sep : sep;
|
||||
if (str == null) return '';
|
||||
str = String(str); sep = sep != null ? String(sep) : sep;
|
||||
var pos = !sep ? -1 : str.lastIndexOf(sep);
|
||||
return ~pos ? str.slice(pos+sep.length, str.length) : str;
|
||||
},
|
||||
|
||||
strLeft: function(str, sep){
|
||||
str += ''; sep = sep != null ? ''+sep : sep;
|
||||
if (str == null) return '';
|
||||
str = String(str); sep = sep != null ? String(sep) : sep;
|
||||
var pos = !sep ? -1 : str.indexOf(sep);
|
||||
return ~pos ? str.slice(0, pos) : str;
|
||||
},
|
||||
|
||||
strLeftBack: function(str, sep){
|
||||
if (str == null) return '';
|
||||
str += ''; sep = sep != null ? ''+sep : sep;
|
||||
var pos = str.lastIndexOf(sep);
|
||||
return ~pos ? str.slice(0, pos) : str;
|
||||
},
|
||||
|
||||
toSentence: function(array, separator, lastSeparator) {
|
||||
separator || (separator = ', ');
|
||||
lastSeparator || (lastSeparator = ' and ');
|
||||
var length = array.length, str = '';
|
||||
toSentence: function(array, separator, lastSeparator, serial) {
|
||||
separator = separator || ', ';
|
||||
lastSeparator = lastSeparator || ' and ';
|
||||
var a = array.slice(), lastMember = a.pop();
|
||||
|
||||
for (var i = 0; i < length; i++) {
|
||||
str += array[i];
|
||||
if (i === (length - 2)) { str += lastSeparator; }
|
||||
else if (i < (length - 1)) { str += separator; }
|
||||
}
|
||||
if (array.length > 2 && serial) lastSeparator = _s.rtrim(separator) + lastSeparator;
|
||||
|
||||
return str;
|
||||
return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember;
|
||||
},
|
||||
|
||||
toSentenceSerial: function() {
|
||||
var args = slice.call(arguments);
|
||||
args[3] = true;
|
||||
return _s.toSentence.apply(_s, args);
|
||||
},
|
||||
|
||||
slugify: function(str) {
|
||||
var from = "ąàáäâãćęèéëêìíïîłńòóöôõùúüûñçżź",
|
||||
to = "aaaaaaceeeeeiiiilnooooouuuunczz",
|
||||
if (str == null) return '';
|
||||
|
||||
var from = "ąàáäâãåæăćęèéëêìíïîłńòóöôõøśșțùúüûñçżź",
|
||||
to = "aaaaaaaaaceeeeeiiiilnoooooosstuuuunczz",
|
||||
regex = new RegExp(defaultToWhiteSpace(from), 'g');
|
||||
|
||||
str = (''+str).toLowerCase();
|
||||
|
||||
str = str.replace(regex, function(ch){
|
||||
var index = from.indexOf(ch);
|
||||
str = String(str).toLowerCase().replace(regex, function(c){
|
||||
var index = from.indexOf(c);
|
||||
return to.charAt(index) || '-';
|
||||
});
|
||||
|
||||
return _s.trim(str.replace(/[^\w\s-]/g, '').replace(/[-\s]+/g, '-'), '-');
|
||||
return _s.dasherize(str.replace(/[^\w\s-]/g, ''));
|
||||
},
|
||||
|
||||
surround: function(str, wrapper) {
|
||||
return [wrapper, str, wrapper].join('');
|
||||
},
|
||||
|
||||
quote: function(str, quoteChar) {
|
||||
return _s.surround(str, quoteChar || '"');
|
||||
},
|
||||
|
||||
unquote: function(str, quoteChar) {
|
||||
quoteChar = quoteChar || '"';
|
||||
if (str[0] === quoteChar && str[str.length-1] === quoteChar)
|
||||
return str.slice(1,str.length-1);
|
||||
else return str;
|
||||
},
|
||||
|
||||
exports: function() {
|
||||
var result = {};
|
||||
|
||||
for (var prop in this) {
|
||||
if (!this.hasOwnProperty(prop) || ~_s.words('include contains reverse').indexOf(prop)) continue;
|
||||
if (!this.hasOwnProperty(prop) || prop.match(/^(?:include|contains|reverse)$/)) continue;
|
||||
result[prop] = this[prop];
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
repeat: strRepeat
|
||||
|
||||
repeat: function(str, qty, separator){
|
||||
if (str == null) return '';
|
||||
|
||||
qty = ~~qty;
|
||||
|
||||
// using faster implementation if separator is not needed;
|
||||
if (separator == null) return strRepeat(String(str), qty);
|
||||
|
||||
// this one is about 300x slower in Google Chrome
|
||||
for (var repeat = []; qty > 0; repeat[--qty] = str) {}
|
||||
return repeat.join(separator);
|
||||
},
|
||||
|
||||
naturalCmp: function(str1, str2){
|
||||
if (str1 == str2) return 0;
|
||||
if (!str1) return -1;
|
||||
if (!str2) return 1;
|
||||
|
||||
var cmpRegex = /(\.\d+)|(\d+)|(\D+)/g,
|
||||
tokens1 = String(str1).toLowerCase().match(cmpRegex),
|
||||
tokens2 = String(str2).toLowerCase().match(cmpRegex),
|
||||
count = Math.min(tokens1.length, tokens2.length);
|
||||
|
||||
for(var i = 0; i < count; i++) {
|
||||
var a = tokens1[i], b = tokens2[i];
|
||||
|
||||
if (a !== b){
|
||||
var num1 = parseInt(a, 10);
|
||||
if (!isNaN(num1)){
|
||||
var num2 = parseInt(b, 10);
|
||||
if (!isNaN(num2) && num1 - num2)
|
||||
return num1 - num2;
|
||||
}
|
||||
return a < b ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (tokens1.length === tokens2.length)
|
||||
return tokens1.length - tokens2.length;
|
||||
|
||||
return str1 < str2 ? -1 : 1;
|
||||
},
|
||||
|
||||
levenshtein: function(str1, str2) {
|
||||
if (str1 == null && str2 == null) return 0;
|
||||
if (str1 == null) return String(str2).length;
|
||||
if (str2 == null) return String(str1).length;
|
||||
|
||||
str1 = String(str1); str2 = String(str2);
|
||||
|
||||
var current = [], prev, value;
|
||||
|
||||
for (var i = 0; i <= str2.length; i++)
|
||||
for (var j = 0; j <= str1.length; j++) {
|
||||
if (i && j)
|
||||
if (str1.charAt(j - 1) === str2.charAt(i - 1))
|
||||
value = prev;
|
||||
else
|
||||
value = Math.min(current[j], current[j - 1], prev) + 1;
|
||||
else
|
||||
value = i + j;
|
||||
|
||||
prev = current[j];
|
||||
current[j] = value;
|
||||
}
|
||||
|
||||
return current.pop();
|
||||
},
|
||||
|
||||
toBoolean: function(str, trueValues, falseValues) {
|
||||
if (typeof str === "number") str = "" + str;
|
||||
if (typeof str !== "string") return !!str;
|
||||
str = _s.trim(str);
|
||||
if (boolMatch(str, trueValues || ["true", "1"])) return true;
|
||||
if (boolMatch(str, falseValues || ["false", "0"])) return false;
|
||||
}
|
||||
};
|
||||
|
||||
// Aliases
|
||||
|
@ -500,26 +648,26 @@
|
|||
_s.rjust = _s.lpad;
|
||||
_s.ljust = _s.rpad;
|
||||
_s.contains = _s.include;
|
||||
_s.q = _s.quote;
|
||||
_s.toBool = _s.toBoolean;
|
||||
|
||||
// Exporting
|
||||
|
||||
// CommonJS module is defined
|
||||
if (typeof exports !== 'undefined') {
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
// Export module
|
||||
if (typeof module !== 'undefined' && module.exports)
|
||||
module.exports = _s;
|
||||
}
|
||||
exports._s = _s;
|
||||
|
||||
} else if (typeof define === 'function' && define.amd) {
|
||||
// Register as a named module with AMD.
|
||||
define('underscore.string', function() {
|
||||
return _s;
|
||||
});
|
||||
|
||||
} else {
|
||||
// Integrate with Underscore.js if defined
|
||||
// or create our own underscore object.
|
||||
root._ = root._ || {};
|
||||
root._.string = root._.str = _s;
|
||||
exports._s = _s;
|
||||
}
|
||||
|
||||
}(this || window));
|
||||
// Register as a named module with AMD.
|
||||
if (typeof define === 'function' && define.amd)
|
||||
define('underscore.string', [], function(){ return _s; });
|
||||
|
||||
|
||||
// Integrate with Underscore.js if defined
|
||||
// or create our own underscore object.
|
||||
root._ = root._ || {};
|
||||
root._.string = root._.str = _s;
|
||||
}(this, String);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -111,6 +111,8 @@
|
|||
}
|
||||
.openerp h4 {
|
||||
margin: 4px 0;
|
||||
font-weight: bold;
|
||||
font-size: inherit;
|
||||
}
|
||||
.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
|
||||
display: inline-block;
|
||||
|
@ -199,6 +201,7 @@
|
|||
}
|
||||
.openerp.ui-dialog {
|
||||
display: none;
|
||||
height: auto !important;
|
||||
padding: 6px;
|
||||
background-color: rgba(60, 60, 60, 0.7);
|
||||
border: 1px solid;
|
||||
|
@ -241,6 +244,7 @@
|
|||
}
|
||||
.openerp.ui-dialog .ui-dialog-content {
|
||||
background: white;
|
||||
width: auto !important;
|
||||
}
|
||||
.openerp.ui-dialog .ui-dialog-buttonpane {
|
||||
border-top: 1px solid #e0e0e0;
|
||||
|
@ -529,6 +533,15 @@
|
|||
.openerp .oe_grey {
|
||||
color: #aaaaaa;
|
||||
}
|
||||
.openerp .oe_error_detail hr {
|
||||
display: block;
|
||||
-webkit-margin-before: 0.5em;
|
||||
-webkit-margin-after: 0.5em;
|
||||
-webkit-margin-start: auto;
|
||||
-webkit-margin-end: auto;
|
||||
border-style: inset;
|
||||
border-width: 1px;
|
||||
}
|
||||
.openerp .oe_tag {
|
||||
border: 1px solid #afafb6;
|
||||
font-size: 11px;
|
||||
|
@ -680,6 +693,9 @@
|
|||
.openerp .oe_notebook_page {
|
||||
padding: 0;
|
||||
}
|
||||
.openerp .oe_notebook_page > label:not([for]) {
|
||||
font-weight: normal !important;
|
||||
}
|
||||
.openerp div.ui-tabs {
|
||||
padding: 3px 0px 3px 0px;
|
||||
}
|
||||
|
@ -739,9 +755,6 @@
|
|||
display: block;
|
||||
color: #4c4c4c;
|
||||
text-decoration: none;
|
||||
width: 200px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
.openerp .oe_dropdown_menu > li > a:hover {
|
||||
text-decoration: none;
|
||||
|
@ -979,7 +992,7 @@
|
|||
}
|
||||
.openerp .oe_login .oe_login_footer a {
|
||||
color: #eeeeee;
|
||||
margin: 0 8px;
|
||||
margin: 0 6px;
|
||||
}
|
||||
.openerp .oe_login .oe_login_footer a:hover {
|
||||
text-decoration: underline;
|
||||
|
@ -1025,19 +1038,7 @@
|
|||
.openerp .oe_content_full_screen .oe_topbar, .openerp .oe_content_full_screen .oe_leftbar {
|
||||
display: none;
|
||||
}
|
||||
.openerp .oe_topbar {
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
background-color: #414141;
|
||||
background-color: #454343;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626));
|
||||
background-image: -webkit-linear-gradient(top, #646060, #262626);
|
||||
background-image: -moz-linear-gradient(top, #646060, #262626);
|
||||
background-image: -ms-linear-gradient(top, #646060, #262626);
|
||||
background-image: -o-linear-gradient(top, #646060, #262626);
|
||||
background-image: linear-gradient(to bottom, #646060, #262626);
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_anonymous_login {
|
||||
.openerp .navbar .oe_topbar_anonymous_login {
|
||||
background-color: #dc5f59;
|
||||
color: #eeeeee;
|
||||
background-color: #be4343;
|
||||
|
@ -1048,11 +1049,11 @@
|
|||
background-image: -o-linear-gradient(top, #fc8787, maroon);
|
||||
background-image: linear-gradient(to bottom, #fc8787, maroon);
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_anonymous_login a {
|
||||
.openerp .navbar .oe_topbar_anonymous_login a {
|
||||
display: block;
|
||||
padding: 5px 10px 7px;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
height: 30px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
background: transparent;
|
||||
|
@ -1062,7 +1063,7 @@
|
|||
-o-transition: all 0.2s ease-out;
|
||||
transition: all 0.2s ease-out;
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_anonymous_login a:hover {
|
||||
.openerp .navbar .oe_topbar_anonymous_login a:hover {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: white;
|
||||
text-shadow: 0px 0px 3px rgba(0, 0, 0, 0.2);
|
||||
|
@ -1070,9 +1071,9 @@
|
|||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset;
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_item {
|
||||
.openerp .navbar .oe_topbar_item {
|
||||
display: block;
|
||||
padding: 5px 10px 7px;
|
||||
padding: 5px 10px 26px;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
text-decoration: none;
|
||||
|
@ -1085,7 +1086,7 @@
|
|||
-o-transition: all 0.2s ease-out;
|
||||
transition: all 0.2s ease-out;
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_item:hover {
|
||||
.openerp .navbar .oe_topbar_item:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
text-shadow: black 0px 0px 3px;
|
||||
color: white;
|
||||
|
@ -1093,7 +1094,7 @@
|
|||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset;
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_avatar {
|
||||
.openerp .navbar .oe_topbar_avatar {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: -2px 2px 0 0;
|
||||
|
@ -1101,13 +1102,13 @@
|
|||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_avatar {
|
||||
.openerp .navbar .oe_topbar_avatar {
|
||||
vertical-align: top;
|
||||
}
|
||||
.openerp .oe_topbar .oe_dropdown_arrow:after {
|
||||
.openerp .navbar .oe_dropdown_arrow:after {
|
||||
border-top: 4px solid white;
|
||||
}
|
||||
.openerp .oe_topbar .oe_dropdown_menu {
|
||||
.openerp .navbar .dropdown_menu {
|
||||
top: 32px;
|
||||
background: #333333;
|
||||
background: rgba(37, 37, 37, 0.9);
|
||||
|
@ -1122,14 +1123,14 @@
|
|||
-moz-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
.openerp .oe_topbar .oe_dropdown_menu li {
|
||||
.openerp .navbar .dropdown_menu li {
|
||||
float: none;
|
||||
padding: 3px 12px;
|
||||
}
|
||||
.openerp .oe_topbar .oe_dropdown_menu li a {
|
||||
.openerp .navbar .dropdown_menu li a {
|
||||
color: #eeeeee;
|
||||
}
|
||||
.openerp .oe_topbar .oe_dropdown_menu li:hover {
|
||||
.openerp .navbar .dropdown_menu li:hover {
|
||||
background-color: #212121;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#292929), to(#191919));
|
||||
background-image: -webkit-linear-gradient(top, #292929, #191919);
|
||||
|
@ -1141,21 +1142,21 @@
|
|||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.openerp .oe_topbar .oe_topbar_name {
|
||||
.openerp .navbar .oe_topbar_name {
|
||||
max-width: 150px;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
max-height: 100%;
|
||||
height: 15px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
.openerp .oe_menu {
|
||||
.openerp .navbar-nav {
|
||||
float: left;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
.openerp .oe_menu > li {
|
||||
.openerp .navbar-nav > li {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
@ -1163,13 +1164,13 @@
|
|||
display: block;
|
||||
color: #eeeeee;
|
||||
}
|
||||
.openerp .oe_menu > li > a {
|
||||
.openerp .navbar-nav > li > a {
|
||||
display: block;
|
||||
padding: 5px 10px 7px;
|
||||
padding: 5px 10px 26px !important;
|
||||
line-height: 20px;
|
||||
height: 20px;
|
||||
text-decoration: none;
|
||||
color: #eeeeee;
|
||||
color: #eeeeee !important;
|
||||
vertical-align: top;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
-webkit-transition: all 0.2s ease-out;
|
||||
|
@ -1178,7 +1179,7 @@
|
|||
-o-transition: all 0.2s ease-out;
|
||||
transition: all 0.2s ease-out;
|
||||
}
|
||||
.openerp .oe_menu > li > a:hover {
|
||||
.openerp .navbar-nav > li > a:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
text-shadow: black 0px 0px 3px;
|
||||
color: white;
|
||||
|
@ -1186,7 +1187,7 @@
|
|||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset;
|
||||
}
|
||||
.openerp .oe_menu > li > .oe_active {
|
||||
.openerp .navbar-nav > li > .active {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
text-shadow: black 0px 0px 3px;
|
||||
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4) inset;
|
||||
|
@ -1217,7 +1218,7 @@
|
|||
width: 220px;
|
||||
background: #f0eeee;
|
||||
border-right: 1px solid #afafb6;
|
||||
text-shadow: 0 1px 1px white;
|
||||
text-shadow: none;
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
.openerp a.oe_logo {
|
||||
|
@ -1269,37 +1270,9 @@
|
|||
color: #7c7bad;
|
||||
}
|
||||
.openerp .oe_secondary_submenu {
|
||||
padding: 2px 0 8px 0;
|
||||
margin: 0;
|
||||
}
|
||||
.openerp .oe_secondary_submenu li {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 1px 0 1px 20px !important;
|
||||
list-style-type: none;
|
||||
}
|
||||
.openerp .oe_secondary_submenu li a {
|
||||
display: block;
|
||||
color: #4c4c4c;
|
||||
padding: 2px 4px 2px 0;
|
||||
}
|
||||
.openerp .oe_secondary_submenu li .oe_menu_label {
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
font-size: 10px;
|
||||
background: #7c7bad;
|
||||
color: white;
|
||||
padding: 2px 4px;
|
||||
margin: 1px 6px 0 0;
|
||||
border: 1px solid lightgrey;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
margin-bottom: 10px !important;
|
||||
line-height: 1.1em;
|
||||
margin-top: 3px;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_menu_text {
|
||||
white-space: nowrap;
|
||||
|
@ -1307,15 +1280,9 @@
|
|||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 85%;
|
||||
margin-top: 1px;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_menu_counter {
|
||||
float: right;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
margin: 1px;
|
||||
padding: 1px 4px;
|
||||
border: none;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_menu_counter:hover {
|
||||
.openerp .oe_secondary_submenu .badge:hover {
|
||||
cursor: pointer;
|
||||
-webkit-transform: scale(1.1);
|
||||
-moz-transform: scale(1.1);
|
||||
|
@ -1323,33 +1290,6 @@
|
|||
-o-transform: scale(1.1);
|
||||
transform: scale(1.1);
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_active {
|
||||
border-top: 1px solid lightgrey;
|
||||
border-bottom: 1px solid #dedede;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2);
|
||||
background: #7c7bad;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_active a {
|
||||
color: white;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_active .oe_menu_label {
|
||||
background: #eeeeee;
|
||||
color: #7c7bad;
|
||||
text-shadow: 0 1px 1px white;
|
||||
-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_active .oe_menu_counter {
|
||||
background: #eeeeee;
|
||||
color: #7c7bad;
|
||||
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_menu_toggler:before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
|
@ -1374,9 +1314,6 @@
|
|||
border-right: 4px solid transparent;
|
||||
border-top: 4px solid #4c4c4c;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_secondary_submenu {
|
||||
margin-left: -20px;
|
||||
}
|
||||
.openerp .oe_secondary_submenu .oe_secondary_submenu li {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
@ -1443,6 +1380,7 @@
|
|||
.openerp .oe_application .oe_breadcrumb_title > * {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
font-weight: bold;
|
||||
}
|
||||
.openerp .oe_view_manager {
|
||||
display: table;
|
||||
|
@ -1485,6 +1423,7 @@
|
|||
font-size: 18px;
|
||||
margin: 0;
|
||||
float: left;
|
||||
line-height: 30px;
|
||||
}
|
||||
.openerp .oe_view_manager table.oe_view_manager_header h2 a {
|
||||
color: #7c7bad;
|
||||
|
@ -1655,9 +1594,12 @@
|
|||
.openerp .oe_view_manager_inline > .oe_view_manager_header, .openerp .oe_view_manager_inlineview > .oe_view_manager_header {
|
||||
display: none;
|
||||
}
|
||||
.openerp .oe_popup_form > .oe_formview > .oe_form_pager {
|
||||
.openerp .oe_popup_form .oe_formview .oe_form_pager {
|
||||
display: none !important;
|
||||
}
|
||||
.openerp .oe_popup_form table label {
|
||||
font-weight: normal;
|
||||
}
|
||||
.openerp .oe_popup_list_pager {
|
||||
float: right;
|
||||
}
|
||||
|
@ -1683,6 +1625,16 @@
|
|||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
.openerp .oe_searchview input:not([type]), .openerp .oe_searchview input[type="text"], .openerp .oe_searchview input[type="number"] {
|
||||
width: 156px;
|
||||
height: 22px;
|
||||
}
|
||||
.openerp .oe_searchview input[type="checkbox"] {
|
||||
margin: 3px 3px 3px 4px;
|
||||
}
|
||||
.openerp .oe_searchview select {
|
||||
margin: 2px 4px 2px 0;
|
||||
}
|
||||
.openerp .oe_searchview.oe_focused {
|
||||
border-color: #a6a6fe;
|
||||
-moz-box-shadow: 0 1px 2px #a6a6fe inset;
|
||||
|
@ -1907,6 +1859,7 @@
|
|||
box-sizing: border-box;
|
||||
display: table-cell;
|
||||
width: 50%;
|
||||
padding-left: 2px;
|
||||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section ul {
|
||||
margin: 0 8px 8px;
|
||||
|
@ -1942,7 +1895,7 @@
|
|||
line-height: 18px;
|
||||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer form button {
|
||||
margin: 0 0 8px 0;
|
||||
margin: 0 0 8px -3px;
|
||||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom {
|
||||
padding: 0 8px 8px 8px;
|
||||
|
@ -1970,6 +1923,9 @@
|
|||
top: 0;
|
||||
right: 5px;
|
||||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom label {
|
||||
font-weight: normal;
|
||||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_dashboard form {
|
||||
display: none;
|
||||
margin-top: 2px;
|
||||
|
@ -1997,6 +1953,7 @@
|
|||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced li:first-child .searchview_extended_prop_or {
|
||||
visibility: hidden;
|
||||
margin-left: -14px;
|
||||
}
|
||||
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced .searchview_extended_prop_or {
|
||||
opacity: 0.5;
|
||||
|
@ -2188,6 +2145,12 @@
|
|||
background: url(/web/static/src/img/form_sheetbg.png);
|
||||
border-bottom: 1px solid #dddddd;
|
||||
}
|
||||
.openerp .oe_application .oe_form_sheetbg .oe_subtotal_footer label {
|
||||
font-weight: bold;
|
||||
}
|
||||
.openerp .oe_application .oe_form_sheetbg table label {
|
||||
font-weight: normal;
|
||||
}
|
||||
.openerp .oe_application .oe_form_sheet {
|
||||
border: 1px solid #c8c8d3;
|
||||
-moz-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
|
||||
|
@ -2276,7 +2239,7 @@
|
|||
padding: 2px 11px 2px 0px !important;
|
||||
}
|
||||
.openerp .oe_form .oe_subtotal_footer label.oe_form_label_help {
|
||||
font-weight: normal;
|
||||
font-weight: normal !important;
|
||||
}
|
||||
.openerp .oe_form .oe_form_box_info {
|
||||
background: #ffee99;
|
||||
|
@ -2308,7 +2271,8 @@
|
|||
.openerp .oe_form td.oe_form_group_cell_label label {
|
||||
line-height: 18px;
|
||||
display: block;
|
||||
min-width: 140px;
|
||||
min-width: 150px;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
.openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell {
|
||||
padding: 2px 0 2px 8px;
|
||||
|
@ -2321,13 +2285,12 @@
|
|||
padding-left: 20px;
|
||||
}
|
||||
.openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] {
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.openerp .oe_form .oe_form_label_help[for] span, .openerp .oe_form .oe_form_label[for] span {
|
||||
font-size: 80%;
|
||||
color: darkgreen;
|
||||
color: darkGreen;
|
||||
vertical-align: top;
|
||||
position: relative;
|
||||
top: -4px;
|
||||
|
@ -2405,6 +2368,18 @@
|
|||
height: inherit !important;
|
||||
font-size: inherit;
|
||||
}
|
||||
.openerp .oe_form .oe_title h1, .openerp .oe_form h1 {
|
||||
font-weight: bold;
|
||||
font-size: 2em;
|
||||
}
|
||||
.openerp .oe_form h2 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
.openerp .oe_form label {
|
||||
font-weight: bold;
|
||||
margin-bottom: 0px;
|
||||
display: inline;
|
||||
}
|
||||
.openerp .oe_form .oe_form_field {
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
|
@ -2542,6 +2517,9 @@
|
|||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.openerp .oe_form .oe_form_field_binary {
|
||||
display: inline-block;
|
||||
}
|
||||
.openerp .oe_form .oe_form_field_image {
|
||||
padding: 0;
|
||||
position: relative;
|
||||
|
@ -2573,13 +2551,14 @@
|
|||
display: inline-block;
|
||||
clear: both;
|
||||
width: 100%;
|
||||
margin-bottom: -15px;
|
||||
}
|
||||
.openerp .oe_fileupload .oe_add {
|
||||
float: left;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
left: 2px;
|
||||
top: 7px;
|
||||
margin: 9px 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.openerp .oe_fileupload .oe_add button {
|
||||
|
@ -2591,9 +2570,6 @@
|
|||
}
|
||||
.openerp .oe_fileupload .oe_add button.oe_attach {
|
||||
width: 24px;
|
||||
overflow: hidden;
|
||||
width: 24px;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
color: #7c7bad;
|
||||
box-shadow: none;
|
||||
|
@ -2642,6 +2618,9 @@
|
|||
.openerp .oe_fileupload .oe_attachments .oe_attachment:nth-child(even) {
|
||||
background: #f4f5fa;
|
||||
}
|
||||
.openerp .oe_form_field_many2one {
|
||||
display: inline-block;
|
||||
}
|
||||
.openerp .oe_form_field_many2one td:first-child {
|
||||
position: relative;
|
||||
}
|
||||
|
@ -2704,9 +2683,13 @@
|
|||
padding-left: 24px;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
line-height: normal;
|
||||
font-size: 100%;
|
||||
font-weight: normal;
|
||||
}
|
||||
.openerp ul.oe_form_status li > .arrow, .openerp ul.oe_form_status_clickable li > .arrow {
|
||||
width: 17px;
|
||||
height: 30px;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
overflow: hidden;
|
||||
|
@ -3204,9 +3187,6 @@
|
|||
.openerp .oe_form_field_many2one .oe_m2o_cm_button {
|
||||
line-height: 18px;
|
||||
}
|
||||
.openerp .oe_secondary_submenu {
|
||||
line-height: 14px;
|
||||
}
|
||||
.openerp .oe_webclient .oe_star_on, .openerp .oe_webclient .oe_star_off {
|
||||
top: 0px;
|
||||
}
|
||||
|
@ -3402,7 +3382,7 @@ div.ui-widget-overlay {
|
|||
background: transparent;
|
||||
}
|
||||
.openerp_ie ul.oe_form_status li > .arrow span, .openerp_ie ul.oe_form_status_clickable li > .arrow span {
|
||||
background-color: #fefefe !important;
|
||||
background-color: #eeeeee !important;
|
||||
}
|
||||
.openerp_ie ul.oe_form_status li.oe_active > .label, .openerp_ie ul.oe_form_status_clickable li.oe_active > .label {
|
||||
border-bottom: 1px solid #729fcf;
|
||||
|
@ -3454,6 +3434,151 @@ div.ui-widget-overlay {
|
|||
overflow: hidden !important;
|
||||
}
|
||||
}
|
||||
|
||||
.nav li > a {
|
||||
padding: 3px 4px 2px 18px;
|
||||
color: #4c4c4c;
|
||||
}
|
||||
.nav nav-pills.nav-stacked > li > ul {
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
.nav-pills > li.active > a, a.list-group-item.active > a {
|
||||
background-color: #7c7bad;
|
||||
color: white;
|
||||
border-radius: 0;
|
||||
}
|
||||
.nav-pills > li.active a:hover, .nav-pills > li.active a:focus, a.list-group-item.active a:hover, a.list-group-item.active a:focus {
|
||||
background-color: #7c7bad;
|
||||
}
|
||||
.nav-pills > li.active .badge, a.list-group-item.active .badge {
|
||||
background-color: white;
|
||||
color: #7c7bad;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.badge {
|
||||
font-weight: normal;
|
||||
font-size: 11px;
|
||||
background-color: #7c7bad;
|
||||
}
|
||||
|
||||
button, body {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
h1, h2 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.17em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p {
|
||||
display: block;
|
||||
-webkit-margin-before: 1em;
|
||||
-webkit-margin-after: 1em;
|
||||
-webkit-margin-start: 0px;
|
||||
-webkit-margin-end: 0px;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: white;
|
||||
border: none;
|
||||
padding: 10px 0 3px 0;
|
||||
}
|
||||
|
||||
.jqstooltip {
|
||||
height: auto !important;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-weight: bold;
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
.oe_form .oe_subtype label, .oe_subtype label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.oe_msg_subtype_check {
|
||||
margin: 3px 3px 0 !important;
|
||||
}
|
||||
|
||||
.oe_view_manager_new .oe_form_nosheet {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.oe_view_manager_new .oe_form_nosheet .oe_form_label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
min-height: 32px;
|
||||
margin-bottom: 0px;
|
||||
border: none;
|
||||
z-index: 1;
|
||||
background-color: #414141;
|
||||
background-color: #454343;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626));
|
||||
background-image: -webkit-linear-gradient(top, #646060, #262626);
|
||||
background-image: -moz-linear-gradient(top, #646060, #262626);
|
||||
background-image: -ms-linear-gradient(top, #646060, #262626);
|
||||
background-image: -o-linear-gradient(top, #646060, #262626);
|
||||
background-image: linear-gradient(to bottom, #646060, #262626);
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav li a:hover, .navbar-default .navbar-nav li a:focus {
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.navbar-default .navbar-nav .open > a, .navbar-default .navbar-nav a:hover, .navbar-default .navbar-nav a:focus {
|
||||
background: rgba(0, 0, 0, 0.3) !important;
|
||||
}
|
||||
.navbar-default .navbar-nav .dropdown > a .caret {
|
||||
border-top-color: #777777 !important;
|
||||
border-bottom-color: #777777 !important;
|
||||
}
|
||||
|
||||
.navbar-nav li a {
|
||||
padding: 4px 32px 4px 12px;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
font-size: 13px;
|
||||
padding: 4px 0;
|
||||
background: #333333 !important;
|
||||
background: rgba(37, 37, 37, 0.9) !important;
|
||||
border-color: #999999;
|
||||
border-color: rgba(0, 0, 0, 0.2);
|
||||
background-color: #414141;
|
||||
text-shadow: none;
|
||||
background-color: #454343;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626));
|
||||
background-image: -webkit-linear-gradient(top, #646060, #262626);
|
||||
background-image: -moz-linear-gradient(top, #646060, #262626);
|
||||
background-image: -ms-linear-gradient(top, #646060, #262626);
|
||||
background-image: -o-linear-gradient(top, #646060, #262626);
|
||||
background-image: linear-gradient(to bottom, #646060, #262626);
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.dropdown-menu li a, .dropdown-menu li a:hover, .dropdown-menu li a:focus {
|
||||
color: #eeeeee;
|
||||
}
|
||||
|
||||
.ui-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
input[type="radio"], input[type="checkbox"] {
|
||||
margin-right: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.blockUI.blockOverlay {
|
||||
background-color: black;
|
||||
opacity: 0.6;
|
||||
|
|
|
@ -204,6 +204,8 @@ $sheet-padding: 16px
|
|||
vertical-align: middle
|
||||
h4
|
||||
margin: 4px 0
|
||||
font-weight: bold
|
||||
font-size: inherit
|
||||
// }}}
|
||||
// Button style {{{
|
||||
a.button:link, a.button:visited, button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button
|
||||
|
@ -263,6 +265,7 @@ $sheet-padding: 16px
|
|||
// Modal box
|
||||
&.ui-dialog
|
||||
display: none
|
||||
height: auto !important
|
||||
padding: 6px
|
||||
//overflow: hidden
|
||||
background-color: rgba(60,60,60,0.7)
|
||||
|
@ -287,6 +290,7 @@ $sheet-padding: 16px
|
|||
border: none
|
||||
.ui-dialog-content
|
||||
background: white
|
||||
width: auto !important
|
||||
.ui-dialog-buttonpane
|
||||
border-top: 1px solid #e0e0e0
|
||||
background: #f5f7f9
|
||||
|
@ -467,7 +471,16 @@ $sheet-padding: 16px
|
|||
max-width: 650px
|
||||
.oe_grey
|
||||
color: #aaa
|
||||
|
||||
// Added for generic error message and customize bootstrap3 <pre>,<hr>
|
||||
.oe_error_detail
|
||||
hr
|
||||
display: block
|
||||
-webkit-margin-before: 0.5em
|
||||
-webkit-margin-after: 0.5em
|
||||
-webkit-margin-start: auto
|
||||
-webkit-margin-end: auto
|
||||
border-style: inset
|
||||
border-width: 1px
|
||||
// }}}
|
||||
|
||||
// Tags (for many2many tags, among others) {{{
|
||||
|
@ -589,6 +602,10 @@ $sheet-padding: 16px
|
|||
cursor: default
|
||||
.oe_notebook_page
|
||||
padding: 0
|
||||
//Customize label weight according bootstrap3
|
||||
> label:not([for])
|
||||
font-weight: normal !important
|
||||
// End of customize
|
||||
div.ui-tabs
|
||||
padding: 3px 0px 3px 0px
|
||||
.ui-tabs-hide
|
||||
|
@ -630,9 +647,6 @@ $sheet-padding: 16px
|
|||
display: block
|
||||
color: #4c4c4c
|
||||
text-decoration: none
|
||||
width: 200px
|
||||
text-overflow: ellipsis
|
||||
overflow: hidden
|
||||
&:hover
|
||||
text-decoration: none
|
||||
.oe_dropdown_arrow:after
|
||||
|
@ -814,7 +828,7 @@ $sheet-padding: 16px
|
|||
text-align: center
|
||||
a
|
||||
color: #eee
|
||||
margin: 0 8px
|
||||
margin: 0 6px
|
||||
&:hover
|
||||
text-decoration: underline
|
||||
span
|
||||
|
@ -857,11 +871,7 @@ $sheet-padding: 16px
|
|||
// }}}
|
||||
// Top Menu {{{
|
||||
|
||||
.oe_topbar
|
||||
width: 100%
|
||||
height: 32px
|
||||
background-color: #414141
|
||||
@include vertical-gradient(#646060, #262626)
|
||||
.navbar
|
||||
.oe_topbar_anonymous_login
|
||||
background-color: #dc5f59
|
||||
color: #eeeeee
|
||||
|
@ -870,7 +880,7 @@ $sheet-padding: 16px
|
|||
display: block
|
||||
padding: 5px 10px 7px
|
||||
line-height: 20px
|
||||
height: 20px
|
||||
height: 30px
|
||||
text-decoration: none
|
||||
color: white
|
||||
background: transparent
|
||||
|
@ -882,7 +892,7 @@ $sheet-padding: 16px
|
|||
@include box-shadow(0 1px 2px rgba(0,0,0,0.2) inset)
|
||||
.oe_topbar_item
|
||||
display: block
|
||||
padding: 5px 10px 7px
|
||||
padding: 5px 10px 26px
|
||||
line-height: 20px
|
||||
height: 20px
|
||||
text-decoration: none
|
||||
|
@ -905,7 +915,7 @@ $sheet-padding: 16px
|
|||
vertical-align: top
|
||||
.oe_dropdown_arrow:after
|
||||
border-top: 4px solid white
|
||||
.oe_dropdown_menu
|
||||
.dropdown_menu
|
||||
top: 32px
|
||||
background: #333
|
||||
background: rgba(37,37,37,0.9)
|
||||
|
@ -925,17 +935,17 @@ $sheet-padding: 16px
|
|||
@include box-shadow(none)
|
||||
.oe_topbar_name
|
||||
max-width: 150px
|
||||
overflow: hidden
|
||||
display: inline-block
|
||||
max-height: 100%
|
||||
height: 15px // Customize to manage caret when topbar_name is over sized.
|
||||
text-overflow: ellipsis
|
||||
white-space: nowrap
|
||||
overflow: hidden // Customize to bring ellipsis when topbar_name is over sized.
|
||||
|
||||
// oe menu is the list of the buttons on the left side of the bar.
|
||||
// So why aren't the buttons oe_topbar_items ? This sad state of affairs
|
||||
// is a leftover from an uncomplete refactoring when the left and top menu
|
||||
// were merged. You are welcome to refactor and clean this up
|
||||
.oe_menu
|
||||
.navbar-nav
|
||||
float: left
|
||||
padding: 0
|
||||
margin: 0
|
||||
|
@ -949,11 +959,11 @@ $sheet-padding: 16px
|
|||
color: #eeeeee
|
||||
> a
|
||||
display: block
|
||||
padding: 5px 10px 7px
|
||||
padding: 5px 10px 26px !important
|
||||
line-height: 20px
|
||||
height: 20px
|
||||
text-decoration: none
|
||||
color: #eee
|
||||
color: #eee !important
|
||||
vertical-align: top
|
||||
text-shadow: 0 1px 1px rgba(0,0,0,0.2)
|
||||
@include transition(all 0.2s ease-out)
|
||||
|
@ -962,7 +972,7 @@ $sheet-padding: 16px
|
|||
text-shadow: black 0px 0px 3px
|
||||
color: white
|
||||
@include box-shadow(0 1px 2px rgba(0,0,0,0.4) inset)
|
||||
> .oe_active
|
||||
> .active
|
||||
background: rgba(0,0,0,0.30)
|
||||
text-shadow: black 0px 0px 3px
|
||||
@include box-shadow(0 1px 2px rgba(0,0,0,0.4) inset)
|
||||
|
@ -990,7 +1000,7 @@ $sheet-padding: 16px
|
|||
width: 220px
|
||||
background: #f0eeee
|
||||
border-right: 1px solid $tag-border
|
||||
text-shadow: 0 1px 1px white
|
||||
text-shadow: none
|
||||
padding-bottom: 16px
|
||||
a.oe_logo
|
||||
position: relative
|
||||
|
@ -1033,62 +1043,20 @@ $sheet-padding: 16px
|
|||
margin-left: 8px
|
||||
color: $link-color
|
||||
.oe_secondary_submenu
|
||||
padding: 2px 0 8px 0
|
||||
margin: 0
|
||||
li
|
||||
position: relative
|
||||
margin: 0
|
||||
padding: 1px 0 1px 20px !important
|
||||
list-style-type: none
|
||||
a
|
||||
display: block
|
||||
color: #4c4c4c
|
||||
padding: 2px 4px 2px 0
|
||||
.oe_menu_label
|
||||
position: absolute
|
||||
top: 1px
|
||||
right: 1px
|
||||
font-size: 10px
|
||||
background: $link-color
|
||||
color: white
|
||||
padding: 2px 4px
|
||||
margin: 1px 6px 0 0
|
||||
border: 1px solid lightGray
|
||||
text-shadow: 0 1px 1px rgba(0,0,0,0.2)
|
||||
@include radius(4px)
|
||||
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.2))
|
||||
margin-bottom: 10px !important
|
||||
line-height: 1.1em
|
||||
margin-top: 3px
|
||||
.oe_menu_text
|
||||
white-space: nowrap
|
||||
overflow: hidden
|
||||
display: inline-block
|
||||
text-overflow: ellipsis
|
||||
max-width: 85%
|
||||
.oe_menu_counter
|
||||
float: right
|
||||
text-shadow: 0 1px 1px rgba(0,0,0,0.2)
|
||||
margin: 1px
|
||||
padding: 1px 4px
|
||||
border: none
|
||||
margin-top: 1px
|
||||
.badge
|
||||
&:hover
|
||||
cursor: pointer
|
||||
@include transform(scale(1.1))
|
||||
.oe_active
|
||||
border-top: 1px solid lightGray
|
||||
border-bottom: 1px solid #dedede
|
||||
text-shadow: 0 1px 1px rgba(0,0,0,0.2)
|
||||
@include box-shadow((inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2)))
|
||||
background: $link-color
|
||||
a
|
||||
color: white
|
||||
.oe_menu_label
|
||||
background: #eee
|
||||
color: $link-color
|
||||
text-shadow: 0 1px 1px white
|
||||
@include box-shadow(0 1px 1px rgba(0, 0, 0, 0.2))
|
||||
.oe_menu_counter
|
||||
background: #eee
|
||||
color: $link-color
|
||||
@include box-shadow(inset 0 1px 2px rgba(0, 0, 0, 0.2))
|
||||
.oe_menu_toggler:before
|
||||
width: 0
|
||||
height: 0
|
||||
|
@ -1110,11 +1078,8 @@ $sheet-padding: 16px
|
|||
border-left: 4px solid transparent
|
||||
border-right: 4px solid transparent
|
||||
border-top: 4px solid #4c4c4c
|
||||
.oe_secondary_submenu
|
||||
margin-left: -20px
|
||||
.oe_secondary_submenu li
|
||||
margin-left: 20px
|
||||
|
||||
// }}}
|
||||
// About openerp {{{
|
||||
.oe_about
|
||||
|
@ -1160,6 +1125,7 @@ $sheet-padding: 16px
|
|||
.oe_breadcrumb_title > *
|
||||
display: inline-block
|
||||
overflow: hidden
|
||||
font-weight: bold
|
||||
// }}}
|
||||
// ViewManager common {{{
|
||||
.oe_view_manager
|
||||
|
@ -1198,6 +1164,7 @@ $sheet-padding: 16px
|
|||
font-size: 18px
|
||||
margin: 0
|
||||
float: left
|
||||
line-height: 30px
|
||||
a
|
||||
color: $link-color
|
||||
.oe_dropdown_menu
|
||||
|
@ -1326,8 +1293,13 @@ $sheet-padding: 16px
|
|||
display: none
|
||||
// }}}
|
||||
// FormPopup {{{
|
||||
.oe_popup_form > .oe_formview > .oe_form_pager
|
||||
display: none !important
|
||||
.oe_popup_form
|
||||
.oe_formview .oe_form_pager
|
||||
display: none !important
|
||||
// Customize label weight for popup wizard appear from another wizard according bootstrap3
|
||||
table label
|
||||
font-weight: normal
|
||||
// End of customize
|
||||
.oe_popup_list_pager
|
||||
float: right
|
||||
// }}}
|
||||
|
@ -1348,6 +1320,15 @@ $sheet-padding: 16px
|
|||
height: 14px
|
||||
font-size: 12px
|
||||
line-height: 18px
|
||||
//Customize searchview input, select
|
||||
input:not([type]), input[type="text"], input[type="number"]
|
||||
width: 156px
|
||||
height: 22px
|
||||
input[type="checkbox"]
|
||||
margin: 3px 3px 3px 4px
|
||||
select
|
||||
margin: 2px 4px 2px 0
|
||||
//End of customize
|
||||
&.oe_focused
|
||||
border-color: $tag-border-selected
|
||||
@include box-shadow(0 1px 2px $tag-border-selected inset)
|
||||
|
@ -1512,6 +1493,7 @@ $sheet-padding: 16px
|
|||
@include box-sizing(border)
|
||||
display: table-cell
|
||||
width: 50%
|
||||
padding-left: 2px // Managed padding-left according bootstrap3
|
||||
ul
|
||||
margin: 0 8px 8px
|
||||
padding: 0
|
||||
|
@ -1541,7 +1523,7 @@ $sheet-padding: 16px
|
|||
margin: 4px 0
|
||||
line-height: 18px
|
||||
button
|
||||
margin: 0 0 8px 0
|
||||
margin: 0 0 8px -3px // Managed margin-left according bootstrap3
|
||||
.oe_searchview_custom
|
||||
padding: 0 8px 8px 8px
|
||||
div
|
||||
|
@ -1561,6 +1543,10 @@ $sheet-padding: 16px
|
|||
position: absolute
|
||||
top: 0
|
||||
right: 5px
|
||||
//Customize for searchview label
|
||||
label
|
||||
font-weight: normal
|
||||
//End of Customize
|
||||
.oe_searchview_dashboard
|
||||
form
|
||||
display: none
|
||||
|
@ -1586,9 +1572,10 @@ $sheet-padding: 16px
|
|||
white-space: nowrap
|
||||
&:first-child .searchview_extended_prop_or
|
||||
visibility: hidden
|
||||
margin-left: -14px
|
||||
.searchview_extended_prop_or
|
||||
opacity: 0.5
|
||||
margin-left: -14px
|
||||
margin-left: -14px //Customize 'or' in searchview
|
||||
.oe_opened
|
||||
h4:before
|
||||
content: "▾ "
|
||||
|
@ -1735,6 +1722,12 @@ $sheet-padding: 16px
|
|||
.oe_form_sheetbg
|
||||
background: url(/web/static/src/img/form_sheetbg.png)
|
||||
border-bottom: 1px solid #ddd
|
||||
// Customize font weight according bootstrap3
|
||||
.oe_subtotal_footer label
|
||||
font-weight: bold
|
||||
table label
|
||||
font-weight: normal
|
||||
// End of customize
|
||||
.oe_form_sheet
|
||||
border: 1px solid #c8c8d3 //$tag-border
|
||||
@include box-shadow(0 4px 20px rgba(0,0,0,0.15))
|
||||
|
@ -1802,7 +1795,7 @@ $sheet-padding: 16px
|
|||
font-weight: bold !important
|
||||
padding: 2px 11px 2px 0px !important
|
||||
label.oe_form_label_help
|
||||
font-weight: normal
|
||||
font-weight: normal !important
|
||||
.oe_form_box_info
|
||||
background: #fe9
|
||||
border-bottom: 1px solid #cb6
|
||||
|
@ -1829,7 +1822,8 @@ $sheet-padding: 16px
|
|||
label
|
||||
line-height: 18px
|
||||
display: block
|
||||
min-width: 140px
|
||||
min-width: 150px
|
||||
font-weight: bold !important
|
||||
td.oe_form_group_cell + .oe_form_group_cell
|
||||
padding: 2px 0 2px 8px
|
||||
.oe_form_group
|
||||
|
@ -1841,7 +1835,6 @@ $sheet-padding: 16px
|
|||
// FormView.label {{{
|
||||
.oe_form
|
||||
.oe_form_label_help[for], .oe_form_label[for]
|
||||
font-weight: bold
|
||||
white-space: nowrap
|
||||
padding-right: 8px
|
||||
span
|
||||
|
@ -1910,6 +1903,17 @@ $sheet-padding: 16px
|
|||
input
|
||||
height: inherit !important
|
||||
font-size: inherit
|
||||
// Customize for formview
|
||||
.oe_title h1, h1
|
||||
font-weight: bold
|
||||
font-size: 2em
|
||||
h2
|
||||
font-size: 1.5em
|
||||
label
|
||||
font-weight: bold
|
||||
margin-bottom: 0px
|
||||
display: inline
|
||||
// End of customize
|
||||
.oe_form_field
|
||||
width: 100%
|
||||
display: inline-block
|
||||
|
@ -2025,6 +2029,8 @@ $sheet-padding: 16px
|
|||
margin: 0
|
||||
padding: 0
|
||||
.oe_form
|
||||
.oe_form_field_binary
|
||||
display: inline-block
|
||||
.oe_form_field_image
|
||||
padding: 0
|
||||
position: relative
|
||||
|
@ -2048,12 +2054,13 @@ $sheet-padding: 16px
|
|||
display: inline-block
|
||||
clear: both
|
||||
width: 100%
|
||||
margin-bottom: -15px
|
||||
.oe_add
|
||||
float: left
|
||||
position: relative
|
||||
width: 100%
|
||||
left: +2px
|
||||
top: +7px
|
||||
margin: 9px 0 /* Customize margin according bootstrap3 */
|
||||
overflow: hidden
|
||||
button
|
||||
display: inline
|
||||
|
@ -2063,9 +2070,6 @@ $sheet-padding: 16px
|
|||
vertical-align: middle
|
||||
button.oe_attach
|
||||
width: 24px
|
||||
overflow: hidden
|
||||
width: 24px
|
||||
overflow: hidden
|
||||
background: transparent
|
||||
color: #7C7BAD
|
||||
box-shadow: none
|
||||
|
@ -2107,6 +2111,7 @@ $sheet-padding: 16px
|
|||
// }}}
|
||||
// FormView.many2one {{{
|
||||
.oe_form_field_many2one
|
||||
display: inline-block
|
||||
td:first-child
|
||||
position: relative
|
||||
span.oe_m2o_drop_down_button
|
||||
|
@ -2155,8 +2160,14 @@ $sheet-padding: 16px
|
|||
padding-left: 24px
|
||||
margin: 0
|
||||
position: relative
|
||||
// Customize for statusbar label
|
||||
line-height: normal
|
||||
font-size: 100%
|
||||
font-weight: normal
|
||||
// End of customize
|
||||
> .arrow
|
||||
width: 17px
|
||||
height: 30px
|
||||
display: inline-block
|
||||
vertical-align: top
|
||||
overflow: hidden
|
||||
|
@ -2525,8 +2536,6 @@ $sheet-padding: 16px
|
|||
top: -1px
|
||||
.oe_form_field_many2one .oe_m2o_cm_button
|
||||
line-height: 18px
|
||||
.oe_secondary_submenu
|
||||
line-height: 14px
|
||||
.oe_webclient
|
||||
.oe_star_on, .oe_star_off
|
||||
top: 0px
|
||||
|
@ -2684,7 +2693,7 @@ div.ui-widget-overlay
|
|||
background: transparent
|
||||
> .arrow
|
||||
span
|
||||
background-color: #fefefe !important
|
||||
background-color: #eeeeee !important
|
||||
li.oe_active
|
||||
> .label
|
||||
border-bottom: 1px solid #729fcf
|
||||
|
@ -2731,6 +2740,121 @@ div.ui-widget-overlay
|
|||
overflow: hidden !important
|
||||
// }}}
|
||||
|
||||
// Customize bootstrap3 for leftbar
|
||||
.nav
|
||||
li > a
|
||||
padding: 3px 4px 2px 18px
|
||||
color: #4c4c4c
|
||||
nav-pills.nav-stacked > li > ul
|
||||
padding-left: 16px
|
||||
.nav-pills > li.active,a.list-group-item.active
|
||||
> a
|
||||
background-color: #7c7bad
|
||||
color: white
|
||||
border-radius: 0
|
||||
a:hover,a:focus
|
||||
background-color: #7c7bad
|
||||
.badge
|
||||
background-color: white
|
||||
color: #7c7bad
|
||||
text-shadow: none
|
||||
.badge
|
||||
font-weight: normal
|
||||
font-size: 11px
|
||||
background-color: #7c7bad
|
||||
// End of customize
|
||||
|
||||
// Customize for global tags
|
||||
button, body
|
||||
line-height: normal
|
||||
h1,h2
|
||||
font-weight: bold
|
||||
h3
|
||||
font-size: 1.17em
|
||||
font-weight: bold
|
||||
p
|
||||
display: block
|
||||
-webkit-margin-before: 1em
|
||||
-webkit-margin-after: 1em
|
||||
-webkit-margin-start: 0px
|
||||
-webkit-margin-end: 0px
|
||||
pre
|
||||
background-color: #FFFFFF
|
||||
border: none
|
||||
padding: 10px 0 3px 0
|
||||
// End of customize
|
||||
|
||||
// Customize for kanban tooltip
|
||||
.jqstooltip
|
||||
height: auto !important
|
||||
width: auto !important
|
||||
// End of kanban tooltip
|
||||
|
||||
// Customize for chatter
|
||||
h5
|
||||
font-weight: bold
|
||||
font-size: smaller
|
||||
.oe_form .oe_subtype label, .oe_subtype label
|
||||
font-weight: normal
|
||||
.oe_msg_subtype_check
|
||||
margin: 3px 3px 0 !important
|
||||
// End of customize
|
||||
|
||||
// Minimized unused white space and label weight for wizard popup
|
||||
.oe_view_manager_new .oe_form_nosheet
|
||||
margin-top: 8px
|
||||
.oe_form_label
|
||||
font-weight: normal
|
||||
// End of customize
|
||||
|
||||
// navbar hack {{{
|
||||
.navbar
|
||||
min-height: 32px
|
||||
margin-bottom: 0px
|
||||
border: none
|
||||
z-index: 1
|
||||
background-color: #414141
|
||||
@include vertical-gradient(#646060, #262626)
|
||||
.navbar-default
|
||||
.navbar-nav
|
||||
li
|
||||
a:hover,a:focus
|
||||
background: rgba(0, 0, 0, 0.3)
|
||||
.open > a,a:hover,a:focus
|
||||
background: rgba(0, 0, 0, 0.3) !important
|
||||
.dropdown > a .caret
|
||||
border-top-color: #777 !important
|
||||
border-bottom-color: #777 !important
|
||||
.navbar-nav
|
||||
li
|
||||
a
|
||||
padding: 4px 32px 4px 12px
|
||||
.dropdown-menu
|
||||
font-size: 13px
|
||||
padding: 4px 0
|
||||
background: #333333 !important
|
||||
background: rgba(37, 37, 37, 0.9) !important
|
||||
border-color: #999999
|
||||
border-color: rgba(0, 0, 0, 0.2)
|
||||
background-color: #414141
|
||||
text-shadow: none
|
||||
@include vertical-gradient(#646060, #262626)
|
||||
@include radius(3px)
|
||||
li
|
||||
a,a:hover,a:focus
|
||||
color: #eeeeee
|
||||
// End hack }}}
|
||||
|
||||
// Hack for ui icon {{{
|
||||
.ui-icon
|
||||
width: 18px
|
||||
height: 18px
|
||||
// End hack}}}
|
||||
|
||||
input[type="radio"], input[type="checkbox"]
|
||||
margin-right: 4px
|
||||
margin-left: 4px
|
||||
|
||||
.blockUI.blockOverlay
|
||||
background-color: black
|
||||
opacity: 0.6000000238418579
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
.openerp .oe_export {
|
||||
width: 100%;
|
||||
}
|
||||
/* Customize according bootstrap3 */
|
||||
.openerp .oe_export label {
|
||||
font-weight: normal;
|
||||
}
|
||||
/* End of customize */
|
||||
.openerp .oe_export_row tr{
|
||||
background-color: #FFFFFF;
|
||||
font-size: 0.8em;
|
||||
|
|
|
@ -442,10 +442,10 @@ instance.web.DatabaseManager = instance.web.Widget.extend({
|
|||
self.$el.html(QWeb.render("DatabaseManager", { widget : self }));
|
||||
$('.oe_user_menu_placeholder').append(QWeb.render("DatabaseManager.user_menu",{ widget : self }));
|
||||
$('.oe_secondary_menus_container').append(QWeb.render("DatabaseManager.menu",{ widget : self }));
|
||||
$('ul.oe_secondary_submenu > li:first').addClass('oe_active');
|
||||
$('ul.oe_secondary_submenu > li:first').addClass('active');
|
||||
$('ul.oe_secondary_submenu > li').bind('click', function (event) {
|
||||
var menuitem = $(this);
|
||||
menuitem.addClass('oe_active').siblings().removeClass('oe_active');
|
||||
menuitem.addClass('active').siblings().removeClass('active');
|
||||
var form_id =menuitem.find('a').attr('href');
|
||||
$(form_id).show().siblings().hide();
|
||||
event.preventDefault();
|
||||
|
@ -969,7 +969,7 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
this.needaction_data = data;
|
||||
_.each(this.needaction_data, function (item, menu_id) {
|
||||
var $item = self.$secondary_menus.find('a[data-menu="' + menu_id + '"]');
|
||||
$item.find('.oe_menu_counter').remove();
|
||||
$item.find('.badge').remove();
|
||||
if (item.needaction_counter && item.needaction_counter > 0) {
|
||||
$item.append(QWeb.render("Menu.needaction_counter", { widget : item }));
|
||||
}
|
||||
|
@ -982,8 +982,8 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
reflow: function() {
|
||||
var self = this;
|
||||
this.$el.height('auto').show();
|
||||
var $more_container = this.$('.oe_menu_more_container').hide();
|
||||
var $more = this.$('.oe_menu_more');
|
||||
var $more_container = this.$('#menu_more_container').hide();
|
||||
var $more = this.$('#menu_more');
|
||||
$more.children('li').insertBefore($more_container);
|
||||
var $toplevel_items = this.$el.children('li').not($more_container).hide();
|
||||
$toplevel_items.each(function() {
|
||||
|
@ -1026,8 +1026,8 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
}
|
||||
|
||||
// Activate current main menu
|
||||
this.$el.find('.oe_active').removeClass('oe_active');
|
||||
$main_menu.addClass('oe_active');
|
||||
this.$el.find('.active').removeClass('active');
|
||||
$main_menu.addClass('active');
|
||||
|
||||
// Show current sub menu
|
||||
this.$secondary_menus.find('.oe_secondary_menu').hide();
|
||||
|
@ -1037,13 +1037,13 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
this.$secondary_menus.parent('.oe_leftbar').toggle(!!$sub_menu.children().length);
|
||||
|
||||
// Activate current menu item and show parents
|
||||
this.$secondary_menus.find('.oe_active').removeClass('oe_active');
|
||||
this.$secondary_menus.find('.active').removeClass('active');
|
||||
if ($main_menu !== $clicked_menu) {
|
||||
$clicked_menu.parents().show();
|
||||
if ($clicked_menu.is('.oe_menu_toggler')) {
|
||||
$clicked_menu.toggleClass('oe_menu_opened').siblings('.oe_secondary_submenu:first').toggle();
|
||||
} else {
|
||||
$clicked_menu.parent().addClass('oe_active');
|
||||
$clicked_menu.parent().addClass('active');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1129,7 +1129,7 @@ instance.web.Menu = instance.web.Widget.extend({
|
|||
},
|
||||
on_menu_click: function(ev) {
|
||||
ev.preventDefault();
|
||||
var needaction = $(ev.target).is('div.oe_menu_counter');
|
||||
var needaction = $(ev.target).is('div#menu_counter');
|
||||
this.menu_click($(ev.currentTarget).data('menu'), needaction);
|
||||
},
|
||||
});
|
||||
|
@ -1143,7 +1143,7 @@ instance.web.UserMenu = instance.web.Widget.extend({
|
|||
start: function() {
|
||||
var self = this;
|
||||
this._super.apply(this, arguments);
|
||||
this.$el.on('click', '.oe_dropdown_menu li a[data-menu]', function(ev) {
|
||||
this.$el.on('click', '.dropdown-menu li a[data-menu]', function(ev) {
|
||||
ev.preventDefault();
|
||||
var f = self['on_menu_' + $(this).data('menu')];
|
||||
if (f) {
|
||||
|
@ -1223,6 +1223,26 @@ instance.web.UserMenu = instance.web.Widget.extend({
|
|||
},
|
||||
});
|
||||
|
||||
instance.web.FullscreenWidget = instance.web.Widget.extend({
|
||||
/**
|
||||
* Widgets extending the FullscreenWidget will be displayed fullscreen,
|
||||
* and will have a fixed 1:1 zoom level on mobile devices.
|
||||
*/
|
||||
start: function(){
|
||||
if(!$('#oe-fullscreenwidget-viewport').length){
|
||||
$('head').append('<meta id="oe-fullscreenwidget-viewport" name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">');
|
||||
}
|
||||
instance.webclient.set_content_full_screen(true);
|
||||
return this._super();
|
||||
},
|
||||
destroy: function(){
|
||||
instance.webclient.set_content_full_screen(false);
|
||||
$('#oe-fullscreenwidget-viewport').remove();
|
||||
return this._super();
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
instance.web.Client = instance.web.Widget.extend({
|
||||
init: function(parent, origin) {
|
||||
instance.client = instance.webclient = this;
|
||||
|
@ -1284,7 +1304,7 @@ instance.web.Client = instance.web.Widget.extend({
|
|||
self.action_manager.appendTo(self.$('.oe_application'));
|
||||
},
|
||||
toggle_bars: function(value) {
|
||||
this.$('tr:has(td.oe_topbar),.oe_leftbar').toggle(value);
|
||||
this.$('tr:has(td.navbar),.oe_leftbar').toggle(value);
|
||||
},
|
||||
has_uncommitted_changes: function() {
|
||||
return false;
|
||||
|
|
|
@ -561,6 +561,10 @@ instance.web.TranslationDataBase.include({
|
|||
});
|
||||
|
||||
/** Custom jQuery plugins */
|
||||
$.browser = $.browser || {};
|
||||
if(navigator.appVersion.indexOf("MSIE") !== -1) {
|
||||
$.browser.msie = 1;
|
||||
}
|
||||
$.fn.getAttributes = function() {
|
||||
var o = {};
|
||||
if (this.length) {
|
||||
|
|
|
@ -743,7 +743,7 @@ instance.web.DataSetSearch = instance.web.DataSet.extend({
|
|||
});
|
||||
},
|
||||
get_domain: function (other_domain) {
|
||||
this._model.domain(other_domain);
|
||||
return this._model.domain(other_domain);
|
||||
},
|
||||
alter_ids: function (ids) {
|
||||
this._super(ids);
|
||||
|
@ -780,6 +780,7 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
|
|||
this._super.apply(this, arguments);
|
||||
this.reset_ids([]);
|
||||
this.last_default_get = {};
|
||||
this.running_reads = [];
|
||||
},
|
||||
default_get: function(fields, options) {
|
||||
var self = this;
|
||||
|
@ -846,6 +847,9 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
|
|||
this.to_write = [];
|
||||
this.cache = [];
|
||||
this.delete_all = false;
|
||||
_.each(_.clone(this.running_reads), function(el) {
|
||||
el.reject();
|
||||
});
|
||||
},
|
||||
read_ids: function (ids, fields, options) {
|
||||
var self = this;
|
||||
|
@ -861,7 +865,6 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
|
|||
to_get.push(id);
|
||||
}
|
||||
});
|
||||
var completion = $.Deferred();
|
||||
var return_records = function() {
|
||||
var records = _.map(ids, function(id) {
|
||||
return _.extend({}, _.detect(self.cache, function(c) {return c.id === id;}).values, {"id": id});
|
||||
|
@ -896,10 +899,20 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
|
|||
}, 0);
|
||||
});
|
||||
}
|
||||
completion.resolve(records);
|
||||
return $.when(records);
|
||||
};
|
||||
if(to_get.length > 0) {
|
||||
var rpc_promise = this._super(to_get, fields, options).done(function(records) {
|
||||
var def = $.Deferred();
|
||||
self.running_reads.push(def);
|
||||
def.always(function() {
|
||||
self.running_reads = _.without(self.running_reads, def);
|
||||
});
|
||||
this._super(to_get, fields, options).then(function() {
|
||||
def.resolve.apply(def, arguments);
|
||||
}, function() {
|
||||
def.reject.apply(def, arguments);
|
||||
});
|
||||
return def.then(function(records) {
|
||||
_.each(records, function(record, index) {
|
||||
var id = to_get[index];
|
||||
var cached = _.detect(self.cache, function(x) {return x.id === id;});
|
||||
|
@ -910,13 +923,11 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
|
|||
cached.values = _.defaults(_.clone(cached.values), record);
|
||||
}
|
||||
});
|
||||
return_records();
|
||||
return return_records();
|
||||
});
|
||||
$.when(rpc_promise).fail(function() {completion.reject();});
|
||||
} else {
|
||||
return_records();
|
||||
return return_records();
|
||||
}
|
||||
return completion.promise();
|
||||
},
|
||||
/**
|
||||
* Invalidates caching of a record in the dataset to ensure the next read
|
||||
|
@ -1090,6 +1101,157 @@ instance.web.DropMisordered = instance.web.Class.extend({
|
|||
}
|
||||
});
|
||||
|
||||
instance.web.SimpleIndexedDB = instance.web.Class.extend({
|
||||
/**
|
||||
* A simple wrapper around IndexedDB that provides an asynchronous
|
||||
* localStorage-like Key-Value api that persists between browser
|
||||
* restarts.
|
||||
*
|
||||
* It will not work if the browser doesn't support a recent version
|
||||
* of IndexedDB, and it may fail if the user refuses db access.
|
||||
*
|
||||
* All instances of SimpleIndexedDB will by default refer to the same
|
||||
* IndexedDB database, if you want to pick another one, use the 'name'
|
||||
* option on instanciation.
|
||||
*/
|
||||
init: function(opts){
|
||||
var self = this;
|
||||
var opts = opts || {};
|
||||
|
||||
this.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
|
||||
this.db = undefined;
|
||||
this._ready = new $.Deferred();
|
||||
|
||||
if(this.indexedDB && this.indexedDB.open){
|
||||
var request = this.indexedDB.open( opts.name || "SimpleIndexedDB" ,1);
|
||||
|
||||
request.onerror = function(event){
|
||||
self.db = null;
|
||||
self._ready.reject(event.target.error);
|
||||
};
|
||||
|
||||
request.onsuccess = function(event){
|
||||
self.db = request.result;
|
||||
self._ready.resolve();
|
||||
};
|
||||
|
||||
request.onupgradeneeded = function(event){
|
||||
self.db = event.target.result;
|
||||
|
||||
var objectStore = self.db.createObjectStore("keyvals", { keyPath:"key" });
|
||||
self._ready.resolve();
|
||||
};
|
||||
}else{
|
||||
this.db = null;
|
||||
this._ready.reject({type:'UnknownError', message:'IndexedDB is not supported by your Browser'});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* returns true if the browser supports the necessary IndexedDB API
|
||||
* (but doesn't tell if the db can be created, check ready() for that)
|
||||
*/
|
||||
isSupportedByBrowser: function(){
|
||||
return this.indexedDB && this.indexedDB.open;
|
||||
},
|
||||
|
||||
/**
|
||||
* returns a deferred that resolves when the db has been successfully
|
||||
* initialized. done/failed callbacks are optional.
|
||||
*/
|
||||
ready: function(done,failed){
|
||||
this._ready.then(done,failed);
|
||||
return this._ready.promise();
|
||||
},
|
||||
|
||||
/**
|
||||
* fetches the value associated to 'key' in the db. if the key doesn't
|
||||
* exists, it returns undefined. The returned value is provided as a
|
||||
* deferred, or as the first parameter of the optional 'done' callback.
|
||||
*/
|
||||
getItem: function(key,done,failed){
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
def.then(done,failed);
|
||||
|
||||
this._ready.then(function(){
|
||||
var request = self.db.transaction(["keyvals"],"readwrite")
|
||||
.objectStore("keyvals")
|
||||
.get(key);
|
||||
|
||||
request.onsuccess = function(){
|
||||
def.resolve(request.result ? request.result.value : undefined);
|
||||
};
|
||||
|
||||
request.onerror = function(event){
|
||||
def.reject(event.target.error);
|
||||
};
|
||||
},function(){
|
||||
def.reject({type:'UnknownError', message:'Could not initialize the IndexedDB database'});
|
||||
});
|
||||
|
||||
return def.promise();
|
||||
},
|
||||
|
||||
/**
|
||||
* Associates a value to 'key' in the db, overwriting previous value if
|
||||
* necessary. Contrary to localStorage, the value is not limited to strings and
|
||||
* can be any javascript object, even with cyclic references !
|
||||
*
|
||||
* Be sure to check for failure as the user may refuse to have data localy stored.
|
||||
*/
|
||||
setItem: function(key,value,done,failed){
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
def.then(done,failed);
|
||||
|
||||
this._ready.then(function(){
|
||||
var request = self.db.transaction(["keyvals"],"readwrite")
|
||||
.objectStore("keyvals")
|
||||
.put( {key:key, value:value} );
|
||||
|
||||
request.onsuccess = function(){
|
||||
def.resolve();
|
||||
};
|
||||
|
||||
request.onerror = function(event){
|
||||
def.reject(event.target.error);
|
||||
};
|
||||
},function(){
|
||||
def.reject({type:'UnknownError', message:'Could not initialize the IndexedDB database'});
|
||||
});
|
||||
|
||||
return def.promise();
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes the value associated with 'key' from the db.
|
||||
*/
|
||||
removeItem: function(key,done,failed){
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
def.then(done,failed);
|
||||
|
||||
this._ready.then(function(){
|
||||
var request = self.db.transaction(["keyvals"],"readwrite")
|
||||
.objectStore("keyvals")
|
||||
.delete(key);
|
||||
|
||||
request.onsuccess = function(){
|
||||
def.resolve();
|
||||
};
|
||||
|
||||
request.onerror = function(event){
|
||||
def.reject(event.target.error);
|
||||
};
|
||||
},function(){
|
||||
def.reject({type:'UnknownError', message:'Could not initialize the IndexedDB database'});
|
||||
});
|
||||
|
||||
return def.promise();
|
||||
},
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|
||||
|
|
|
@ -1155,7 +1155,8 @@ openerp.Model = openerp.Class.extend({
|
|||
kwargs = args;
|
||||
args = [];
|
||||
}
|
||||
return this.session().rpc('/web/dataset/call_kw', {
|
||||
var call_kw = _.str.sprintf('/web/dataset/call_kw/%s/%s', this.name, method);
|
||||
return this.session().rpc(call_kw, {
|
||||
model: this.name,
|
||||
method: method,
|
||||
args: args,
|
||||
|
@ -1236,15 +1237,14 @@ openerp.TranslationDataBase = openerp.Class.extend(/** @lends instance.Translati
|
|||
openerp._t = new openerp.TranslationDataBase().build_translation_function();
|
||||
|
||||
openerp.get_cookie = function(c_name) {
|
||||
if (document.cookie.length > 0) {
|
||||
var c_start = document.cookie.indexOf(c_name + "=");
|
||||
if (c_start != -1) {
|
||||
c_start = c_start + c_name.length + 1;
|
||||
var c_end = document.cookie.indexOf(";", c_start);
|
||||
if (c_end == -1) {
|
||||
c_end = document.cookie.length;
|
||||
}
|
||||
return unescape(document.cookie.substring(c_start, c_end));
|
||||
var cookies = document.cookie ? document.cookie.split('; ') : [];
|
||||
for (var i = 0, l = cookies.length; i < l; i++) {
|
||||
var parts = cookies[i].split('=');
|
||||
var name = parts.shift();
|
||||
var cookie = parts.join('=');
|
||||
|
||||
if (c_name && c_name === name) {
|
||||
return cookie;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
|
@ -1292,7 +1292,10 @@ openerp.str_to_datetime = function(str) {
|
|||
if ( !res ) {
|
||||
throw new Error("'" + str + "' is not a valid datetime");
|
||||
}
|
||||
var tmp = new Date(0);
|
||||
var tmp = new Date(2000,0,1);
|
||||
tmp.setUTCMonth(1970);
|
||||
tmp.setUTCMonth(0);
|
||||
tmp.setUTCDate(1);
|
||||
tmp.setUTCFullYear(parseFloat(res[1]));
|
||||
tmp.setUTCMonth(parseFloat(res[2]) - 1);
|
||||
tmp.setUTCDate(parseFloat(res[3]));
|
||||
|
@ -1324,7 +1327,7 @@ openerp.str_to_date = function(str) {
|
|||
if ( !res ) {
|
||||
throw new Error("'" + str + "' is not a valid date");
|
||||
}
|
||||
var tmp = new Date(0);
|
||||
var tmp = new Date(2000,0,1);
|
||||
tmp.setFullYear(parseFloat(res[1]));
|
||||
tmp.setMonth(parseFloat(res[2]) - 1);
|
||||
tmp.setDate(parseFloat(res[3]));
|
||||
|
|
|
@ -71,7 +71,10 @@ my.SearchQuery = B.Collection.extend({
|
|||
},
|
||||
add: function (values, options) {
|
||||
options = options || {};
|
||||
if (!(values instanceof Array)) {
|
||||
|
||||
if (!values) {
|
||||
values = [];
|
||||
} else if (!(values instanceof Array)) {
|
||||
values = [values];
|
||||
}
|
||||
|
||||
|
@ -87,6 +90,10 @@ my.SearchQuery = B.Collection.extend({
|
|||
}
|
||||
B.Collection.prototype.add.call(this, model, options);
|
||||
}, this);
|
||||
// warning: in backbone 1.0+ add is supposed to return the added models,
|
||||
// but here toggle may delegate to add and return its value directly.
|
||||
// return value of neither seems actually used but should be tested
|
||||
// before change, probably
|
||||
return this;
|
||||
},
|
||||
toggle: function (value, options) {
|
||||
|
|
|
@ -58,8 +58,7 @@ openerp.testing = {};
|
|||
}
|
||||
var fn, params;
|
||||
var needle = rparams.model + ':' + rparams.method;
|
||||
if (url.url === '/web/dataset/call_kw'
|
||||
&& needle in this.responses) {
|
||||
if (url.url.substr(0, 20) === '/web/dataset/call_kw' && needle in this.responses) {
|
||||
fn = this.responses[needle];
|
||||
params = [
|
||||
rparams.args || [],
|
||||
|
|
|
@ -399,9 +399,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
|||
this.dataset.index = this.dataset.ids.length - 1;
|
||||
break;
|
||||
}
|
||||
this.reload();
|
||||
var def = this.reload();
|
||||
this.trigger('pager_action_executed');
|
||||
return def;
|
||||
}
|
||||
return $.when();
|
||||
},
|
||||
init_pager: function() {
|
||||
var self = this;
|
||||
|
@ -416,8 +418,15 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
|||
this.$el.find('.oe_form_pager').replaceWith(this.$pager);
|
||||
}
|
||||
this.$pager.on('click','a[data-pager-action]',function() {
|
||||
var action = $(this).data('pager-action');
|
||||
self.execute_pager_action(action);
|
||||
var $el = $(this);
|
||||
if ($el.attr("disabled"))
|
||||
return;
|
||||
var action = $el.data('pager-action');
|
||||
var def = $.when(self.execute_pager_action(action));
|
||||
$el.attr("disabled");
|
||||
def.always(function() {
|
||||
$el.removeAttr("disabled");
|
||||
});
|
||||
});
|
||||
this.do_update_pager();
|
||||
},
|
||||
|
@ -722,12 +731,13 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
|||
var self = this;
|
||||
return this.save().done(function(result) {
|
||||
self.trigger("save", result);
|
||||
self.to_view_mode();
|
||||
}).then(function(result) {
|
||||
var parent = self.ViewManager.ActionManager.getParent();
|
||||
if(parent){
|
||||
parent.menu.do_reload_needaction();
|
||||
}
|
||||
self.reload().then(function() {
|
||||
self.to_view_mode();
|
||||
var parent = self.ViewManager.ActionManager.getParent();
|
||||
if(parent){
|
||||
parent.menu.do_reload_needaction();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
on_button_cancel: function(event) {
|
||||
|
@ -891,17 +901,12 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
|||
* @param {Object} r result of the write function.
|
||||
*/
|
||||
record_saved: function(r) {
|
||||
var self = this;
|
||||
this.trigger('record_saved', r);
|
||||
if (!r) {
|
||||
// should not happen in the server, but may happen for internal purpose
|
||||
this.trigger('record_saved', r);
|
||||
return $.Deferred().reject();
|
||||
} else {
|
||||
return $.when(this.reload()).then(function () {
|
||||
self.trigger('record_saved', r);
|
||||
return r;
|
||||
});
|
||||
}
|
||||
return r;
|
||||
},
|
||||
/**
|
||||
* Updates the form' dataset to contain the new record:
|
||||
|
@ -3071,7 +3076,7 @@ instance.web.form.CompletionFieldMixin = {
|
|||
values.push({
|
||||
label: _t("Search More..."),
|
||||
action: function() {
|
||||
dataset.name_search(search_val, self.build_domain(), 'ilike', false).done(function(data) {
|
||||
dataset.name_search(search_val, self.build_domain(), 'ilike', 160).done(function(data) {
|
||||
self._search_create_popup("search", data);
|
||||
});
|
||||
},
|
||||
|
@ -3583,6 +3588,67 @@ instance.web.form.Many2OneButton = instance.web.form.AbstractField.extend({
|
|||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Abstract-ish ListView.List subclass adding an "Add an item" row to replace
|
||||
* the big ugly button in the header.
|
||||
*
|
||||
* Requires the implementation of a ``is_readonly`` method (usually a proxy to
|
||||
* the corresponding field's readonly or effective_readonly property) to
|
||||
* decide whether the special row should or should not be inserted.
|
||||
*
|
||||
* Optionally an ``_add_row_class`` attribute can be set for the class(es) to
|
||||
* set on the insertion row.
|
||||
*/
|
||||
instance.web.form.AddAnItemList = instance.web.ListView.List.extend({
|
||||
pad_table_to: function (count) {
|
||||
if (!this.view.is_action_enabled('create') || this.is_readonly()) {
|
||||
this._super(count);
|
||||
return;
|
||||
}
|
||||
|
||||
this._super(count > 0 ? count - 1 : 0);
|
||||
|
||||
var self = this;
|
||||
var columns = _(this.columns).filter(function (column) {
|
||||
return column.invisible !== '1';
|
||||
}).length;
|
||||
if (this.options.selectable) { columns++; }
|
||||
if (this.options.deletable) { columns++; }
|
||||
|
||||
var $cell = $('<td>', {
|
||||
colspan: columns,
|
||||
'class': this._add_row_class || ''
|
||||
}).append(
|
||||
$('<a>', {href: '#'}).text(_t("Add an item"))
|
||||
.mousedown(function () {
|
||||
// FIXME: needs to be an official API somehow
|
||||
if (self.view.editor.is_editing()) {
|
||||
self.view.__ignore_blur = true;
|
||||
}
|
||||
})
|
||||
.click(function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
// FIXME: there should also be an API for that one
|
||||
if (self.view.editor.form.__blur_timeout) {
|
||||
clearTimeout(self.view.editor.form.__blur_timeout);
|
||||
self.view.editor.form.__blur_timeout = false;
|
||||
}
|
||||
self.view.ensure_saved().done(function () {
|
||||
self.view.do_add_record();
|
||||
});
|
||||
}));
|
||||
|
||||
var $padding = this.$current.find('tr:not([data-id]):first');
|
||||
var $newrow = $('<tr>').append($cell);
|
||||
if ($padding.length) {
|
||||
$padding.before($newrow);
|
||||
} else {
|
||||
this.$current.append($newrow)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
# Values: (0, 0, { fields }) create
|
||||
# (1, ID, { fields }) update
|
||||
|
@ -4161,62 +4227,11 @@ instance.web.form.One2ManyGroups = instance.web.ListView.Groups.extend({
|
|||
}
|
||||
}
|
||||
});
|
||||
instance.web.form.One2ManyList = instance.web.ListView.List.extend({
|
||||
pad_table_to: function (count) {
|
||||
if (!this.view.is_action_enabled('create')) {
|
||||
this._super(count);
|
||||
} else {
|
||||
this._super(count > 0 ? count - 1 : 0);
|
||||
}
|
||||
|
||||
// magical invocation of wtf does that do
|
||||
if (this.view.o2m.get('effective_readonly')) {
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
var columns = _(this.columns).filter(function (column) {
|
||||
return column.invisible !== '1';
|
||||
}).length;
|
||||
if (this.options.selectable) { columns++; }
|
||||
if (this.options.deletable) { columns++; }
|
||||
|
||||
if (!this.view.is_action_enabled('create')) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $cell = $('<td>', {
|
||||
colspan: columns,
|
||||
'class': 'oe_form_field_one2many_list_row_add'
|
||||
}).append(
|
||||
$('<a>', {href: '#'}).text(_t("Add an item"))
|
||||
.mousedown(function () {
|
||||
// FIXME: needs to be an official API somehow
|
||||
if (self.view.editor.is_editing()) {
|
||||
self.view.__ignore_blur = true;
|
||||
}
|
||||
})
|
||||
.click(function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
// FIXME: there should also be an API for that one
|
||||
if (self.view.editor.form.__blur_timeout) {
|
||||
clearTimeout(self.view.editor.form.__blur_timeout);
|
||||
self.view.editor.form.__blur_timeout = false;
|
||||
}
|
||||
self.view.ensure_saved().done(function () {
|
||||
self.view.do_add_record();
|
||||
});
|
||||
}));
|
||||
|
||||
var $padding = this.$current.find('tr:not([data-id]):first');
|
||||
var $newrow = $('<tr>').append($cell);
|
||||
if ($padding.length) {
|
||||
$padding.before($newrow);
|
||||
} else {
|
||||
this.$current.append($newrow);
|
||||
}
|
||||
}
|
||||
instance.web.form.One2ManyList = instance.web.form.AddAnItemList.extend({
|
||||
_add_row_class: 'oe_form_field_one2many_list_row_add',
|
||||
is_readonly: function () {
|
||||
return this.view.o2m.get('effective_readonly');
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.form.One2ManyFormView = instance.web.FormView.extend({
|
||||
|
@ -4428,7 +4443,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend(instan
|
|||
this.$el.addClass('oe_form_field oe_form_field_many2many');
|
||||
|
||||
this.list_view = new instance.web.form.Many2ManyListView(this, this.dataset, false, {
|
||||
'addable': this.get("effective_readonly") ? null : _t("Add"),
|
||||
'addable': null,
|
||||
'deletable': this.get("effective_readonly") ? false : true,
|
||||
'selectable': this.multi_selection,
|
||||
'sortable': false,
|
||||
|
@ -4495,6 +4510,11 @@ instance.web.form.Many2ManyDataSet = instance.web.DataSetStatic.extend({
|
|||
* @extends instance.web.ListView
|
||||
*/
|
||||
instance.web.form.Many2ManyListView = instance.web.ListView.extend(/** @lends instance.web.form.Many2ManyListView# */{
|
||||
init: function (parent, dataset, view_id, options) {
|
||||
this._super(parent, dataset, view_id, _.extend(options || {}, {
|
||||
ListType: instance.web.form.Many2ManyList,
|
||||
}));
|
||||
},
|
||||
do_add_record: function () {
|
||||
var pop = new instance.web.form.SelectCreatePopup(this);
|
||||
pop.select_element(
|
||||
|
@ -4544,6 +4564,12 @@ instance.web.form.Many2ManyListView = instance.web.ListView.extend(/** @lends in
|
|||
},
|
||||
is_action_enabled: function () { return true; },
|
||||
});
|
||||
instance.web.form.Many2ManyList = instance.web.form.AddAnItemList.extend({
|
||||
_add_row_class: 'oe_form_field_many2many_list_row_add',
|
||||
is_readonly: function () {
|
||||
return this.view.m2m_field.get('effective_readonly');
|
||||
}
|
||||
});
|
||||
|
||||
instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend(instance.web.form.CompletionFieldMixin, {
|
||||
disable_utility_classes: true,
|
||||
|
@ -5547,18 +5573,18 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
|
|||
var self = this;
|
||||
var selection_unfolded = [];
|
||||
var selection_folded = [];
|
||||
var fold_field = this.options.fold_field;
|
||||
|
||||
var calculation = _.bind(function() {
|
||||
if (this.field.type == "many2one") {
|
||||
return self.get_distant_fields().then(function(fields) {
|
||||
return self.get_distant_fields().then(function (fields) {
|
||||
return new instance.web.DataSetSearch(self, self.field.relation, self.build_context(), self.get("evaluated_selection_domain"))
|
||||
.read_slice(fields.fold ? ['fold'] : ['id'], {}).then(function (records) {
|
||||
|
||||
var ids = _.map(records, function (val) {return val.id;});
|
||||
.read_slice(_.union(_.keys(self.distant_fields), ['id']), {}).then(function (records) {
|
||||
var ids = _.pluck(records, 'id');
|
||||
return self.dataset.name_get(ids).then(function (records_name) {
|
||||
_.each(records, function (record) {
|
||||
var name = _.find(records_name, function (val) {return val[0] == record.id;})[1];
|
||||
if (record.fold && record.id != self.get('value')) {
|
||||
if (fold_field && record[fold_field] && record.id != self.get('value')) {
|
||||
selection_folded.push([record.id, name]);
|
||||
} else {
|
||||
selection_unfolded.push([record.id, name]);
|
||||
|
@ -5566,7 +5592,7 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
|
|||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// For field type selection filter values according to
|
||||
// statusbar_visible attribute of the field. For example:
|
||||
|
@ -5588,12 +5614,18 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
|
|||
}
|
||||
});
|
||||
},
|
||||
/*
|
||||
* :deprecated: this feature will probably be removed with OpenERP v8
|
||||
*/
|
||||
get_distant_fields: function() {
|
||||
var self = this;
|
||||
if (! this.options.fold_field) {
|
||||
this.distant_fields = {}
|
||||
}
|
||||
if (this.distant_fields) {
|
||||
return $.when(this.distant_fields);
|
||||
}
|
||||
return new instance.web.Model(self.field.relation).call("fields_get", [["fold"]]).then(function(fields) {
|
||||
return new instance.web.Model(self.field.relation).call("fields_get", [[this.options.fold_field]]).then(function(fields) {
|
||||
self.distant_fields = fields;
|
||||
return fields;
|
||||
});
|
||||
|
|
|
@ -508,7 +508,6 @@ 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 () {
|
||||
// Keep '=='. This is not a mistake, this is a wanted behaviour to match null & undefined
|
||||
if (self.dataset.index == null) {
|
||||
if (self.records.length) {
|
||||
self.dataset.index = 0;
|
||||
|
@ -1474,14 +1473,13 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
|
|||
|
||||
var view = this.view,
|
||||
limit = view.limit(),
|
||||
d = new $.Deferred(),
|
||||
page = this.datagroup.openable ? this.page : view.page;
|
||||
|
||||
var fields = _.pluck(_.select(this.columns, function(x) {return x.tag == "field";}), 'name');
|
||||
var options = { offset: page * limit, limit: limit, context: {bin_size: true} };
|
||||
//TODO xmo: investigate why we need to put the setTimeout
|
||||
$.async_when().done(function() {
|
||||
dataset.read_slice(fields, options).done(function (records) {
|
||||
return $.async_when().then(function() {
|
||||
return dataset.read_slice(fields, options).then(function (records) {
|
||||
// FIXME: ignominious hacks, parents (aka form view) should not send two ListView#reload_content concurrently
|
||||
if (self.records.length) {
|
||||
self.records.reset(null, {silent: true});
|
||||
|
@ -1513,13 +1511,12 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
|
|||
|
||||
self.records.add(records, {silent: true});
|
||||
list.render();
|
||||
d.resolve(list);
|
||||
if (_.isEmpty(records)) {
|
||||
view.no_result();
|
||||
}
|
||||
return list;
|
||||
});
|
||||
});
|
||||
return d.promise();
|
||||
},
|
||||
setup_resequence_rows: function (list, dataset) {
|
||||
// drag and drop enabled if list is not sorted and there is a
|
||||
|
@ -1600,11 +1597,12 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
|
|||
self.render_groups(groups));
|
||||
if (post_render) { post_render(); }
|
||||
}, function (dataset) {
|
||||
self.render_dataset(dataset).done(function (list) {
|
||||
self.render_dataset(dataset).then(function (list) {
|
||||
self.children[null] = list;
|
||||
self.elements =
|
||||
[list.$current.replaceAll($el)[0]];
|
||||
self.setup_resequence_rows(list, dataset);
|
||||
}).always(function() {
|
||||
if (post_render) { post_render(); }
|
||||
});
|
||||
});
|
||||
|
|
|
@ -147,6 +147,19 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
this.inner_action = last_widget.action;
|
||||
}
|
||||
},
|
||||
add_breadcrumb_url: function (url, label) {
|
||||
// Add a pseudo breadcrumb that will redirect to an url
|
||||
this.push_breadcrumb({
|
||||
show: function() {
|
||||
instance.web.redirect(url);
|
||||
},
|
||||
hide: function() {},
|
||||
destroy: function() {},
|
||||
get_title: function() {
|
||||
return label;
|
||||
}
|
||||
});
|
||||
},
|
||||
get_title: function() {
|
||||
var titles = [];
|
||||
for (var i = 0; i < this.breadcrumbs.length; i += 1) {
|
||||
|
@ -217,6 +230,12 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
do_load_state: function(state, warm) {
|
||||
var self = this,
|
||||
action_loaded;
|
||||
if (!warm && 'return_label' in state) {
|
||||
var return_url = state.return_url || document.referrer;
|
||||
if (return_url) {
|
||||
this.add_breadcrumb_url(return_url, state.return_label);
|
||||
}
|
||||
}
|
||||
if (state.action) {
|
||||
if (_.isString(state.action) && instance.web.client_actions.contains(state.action)) {
|
||||
var action_client = {
|
||||
|
@ -225,7 +244,9 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
params: state,
|
||||
_push_me: state._push_me,
|
||||
};
|
||||
this.null_action();
|
||||
if (warm) {
|
||||
this.null_action();
|
||||
}
|
||||
action_loaded = this.do_action(action_client);
|
||||
} else {
|
||||
var run_action = (!this.inner_widget || !this.inner_widget.action) || this.inner_widget.action.id !== state.action;
|
||||
|
@ -245,7 +266,9 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
add_context.active_ids = [state.active_id];
|
||||
}
|
||||
add_context.params = state;
|
||||
this.null_action();
|
||||
if (warm) {
|
||||
this.null_action();
|
||||
}
|
||||
action_loaded = this.do_action(state.action, { additional_context: add_context });
|
||||
$.when(action_loaded || null).done(function() {
|
||||
instance.webclient.menu.has_been_loaded.done(function() {
|
||||
|
@ -258,7 +281,9 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
}
|
||||
} else if (state.model && state.id) {
|
||||
// TODO handle context & domain ?
|
||||
this.null_action();
|
||||
if (warm) {
|
||||
this.null_action();
|
||||
}
|
||||
var action = {
|
||||
res_model: state.model,
|
||||
res_id: state.id,
|
||||
|
@ -268,7 +293,9 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
action_loaded = this.do_action(action);
|
||||
} else if (state.sa) {
|
||||
// load session action
|
||||
this.null_action();
|
||||
if (warm) {
|
||||
this.null_action();
|
||||
}
|
||||
action_loaded = this.rpc('/web/session/get_session_action', {key: state.sa}).then(function(action) {
|
||||
if (action) {
|
||||
return self.do_action(action);
|
||||
|
@ -510,7 +537,11 @@ instance.web.ActionManager = instance.web.Widget.extend({
|
|||
});
|
||||
},
|
||||
ir_actions_act_url: function (action) {
|
||||
window.open(action.url, action.target === 'self' ? '_self' : '_blank');
|
||||
if (action.target === 'self') {
|
||||
instance.web.redirect(action.url);
|
||||
} else {
|
||||
window.open(action.url, '_blank');
|
||||
}
|
||||
return $.when();
|
||||
},
|
||||
});
|
||||
|
@ -1178,11 +1209,12 @@ instance.web.Sidebar = instance.web.Widget.extend({
|
|||
var self = this;
|
||||
self.getParent().sidebar_eval_context().done(function (sidebar_eval_context) {
|
||||
var ids = self.getParent().get_selected_ids();
|
||||
var domain;
|
||||
if (self.getParent().get_active_domain) {
|
||||
var domain = self.getParent().get_active_domain();
|
||||
domain = self.getParent().get_active_domain();
|
||||
}
|
||||
else {
|
||||
var domain = $.Deferred().resolve(undefined);
|
||||
domain = $.Deferred().resolve(undefined);
|
||||
}
|
||||
if (ids.length === 0) {
|
||||
instance.web.dialog($("<div />").text(_t("You must choose at least one record.")), { title: _t("Warning"), modal: true });
|
||||
|
@ -1354,7 +1386,17 @@ instance.web.View = instance.web.Widget.extend({
|
|||
return self.getParent().on_action_executed.apply(null, arguments);
|
||||
}
|
||||
};
|
||||
var context = new instance.web.CompoundContext(dataset.get_context(), action_data.context || {});
|
||||
var context = dataset.get_context();
|
||||
if (action_data.model !== dataset.model) {
|
||||
// filter out context keys that are specific to the action model.
|
||||
// Wrong default_ and search_default values will no give the expected views
|
||||
// Wrong group_by values will simply fail and forbid rendering of the destination view
|
||||
context = _.object(_.reject(_.pairs(context.eval()), function(pair) {
|
||||
return pair[0].match('^(?:(?:default_|search_default_).+|group_by|group_by_no_leaf)$') !== null;
|
||||
}));
|
||||
}
|
||||
|
||||
context = new instance.web.CompoundContext(context, action_data.context || {});
|
||||
var handler = function (action) {
|
||||
if (action && action.constructor == Object) {
|
||||
var ncontext = new instance.web.CompoundContext(context);
|
||||
|
|
|
@ -320,7 +320,7 @@
|
|||
</t>
|
||||
<t t-name="DatabaseManager.menu">
|
||||
<div class="oe_secondary_menu_section">Database Management</div>
|
||||
<ul class="oe_secondary_submenu">
|
||||
<ul class="oe_secondary_submenu nav nav-pills nav-stacked">
|
||||
<li><a href="#db_create">Create</a></li>
|
||||
<li><a href="#db_duplicate">Duplicate</a></li>
|
||||
<li><a href="#db_drop">Drop</a></li>
|
||||
|
@ -362,15 +362,13 @@
|
|||
</t>
|
||||
|
||||
<t t-name="Menu">
|
||||
<ul class="oe_menu" t-if="widget.data">
|
||||
<ul class="nav navbar-nav navbar-left" t-if="widget.data">
|
||||
<li t-foreach="widget.data.data.children" t-as="menu">
|
||||
<t t-call="Menu.link"/>
|
||||
</li>
|
||||
<li class="oe_menu_more_container" style="display: none;">
|
||||
<span class="oe_topbar_item oe_menu_more_link oe_dropdown_toggle oe_dropdown_arrow">
|
||||
More
|
||||
<ul class="oe_menu_more oe_dropdown_menu"/>
|
||||
</span>
|
||||
<li id="menu_more_container" class="dropdown" style="display: none;">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">More <b class="caret"></b></a>
|
||||
<ul id="menu_more" class="dropdown-menu"></ul>
|
||||
</li>
|
||||
</ul>
|
||||
</t>
|
||||
|
@ -389,7 +387,7 @@
|
|||
</div>
|
||||
</t>
|
||||
<t t-name="Menu.secondary.submenu">
|
||||
<ul t-if="menu.children.length" class="oe_secondary_submenu">
|
||||
<ul t-if="menu.children.length" class="oe_secondary_submenu nav nav-pills nav-stacked">
|
||||
<li t-foreach="menu.children" t-as="menu">
|
||||
<t t-call="Menu.link"/>
|
||||
<!--<span class="oe_menu_label">8</span>-->
|
||||
|
@ -410,24 +408,28 @@
|
|||
</t>
|
||||
|
||||
<t t-name="Menu.needaction_counter">
|
||||
<div class="oe_tag oe_tag_dark oe_menu_counter">
|
||||
<div id="menu_counter" class="badge pull-right">
|
||||
<t t-if="widget.needaction_counter > 99"> 99+ </t>
|
||||
<t t-if="widget.needaction_counter <= 99"> <t t-esc="widget.needaction_counter"/> </t>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="UserMenu">
|
||||
<span class="oe_user_menu oe_topbar_item oe_dropdown_toggle oe_dropdown_arrow">
|
||||
<img class="oe_topbar_avatar" t-att-data-default-src="_s + '/web/static/src/img/user_menu_avatar.png'"/>
|
||||
<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>
|
||||
</ul>
|
||||
</span>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<img class="oe_topbar_avatar" t-att-data-default-src="_s + '/web/static/src/img/user_menu_avatar.png'"/>
|
||||
<span class="oe_topbar_name"/> <b class="caret"></b>
|
||||
</a>
|
||||
<ul class="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>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</t>
|
||||
<t t-name="UserMenu.about">
|
||||
|
||||
|
@ -450,7 +452,7 @@
|
|||
<div class="openerp openerp_webclient_container">
|
||||
<table class="oe_webclient">
|
||||
<tr>
|
||||
<td colspan="2" class="oe_topbar">
|
||||
<td colspan="2" class="navbar navbar-default navbar-static-top" role="navigation">
|
||||
<div class="oe_menu_placeholder"/>
|
||||
<div class="oe_user_menu_placeholder"/>
|
||||
<div class="oe_systray"/>
|
||||
|
|
|
@ -8,10 +8,9 @@ from openerp import http
|
|||
class MockRequestCase(unittest2.TestCase):
|
||||
def setUp(self):
|
||||
super(MockRequestCase, self).setUp()
|
||||
self.tmp_req = http.set_request(mock.Mock())
|
||||
self.tmp_req.__enter__()
|
||||
http._request_stack.push(mock.Mock())
|
||||
|
||||
def tearDown(self):
|
||||
self.tmp_req.__exit__(None, None, None)
|
||||
http._request_stack.pop()
|
||||
super(MockRequestCase, self).tearDown()
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web_calendar
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web_calendar
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web_calendar
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web_calendar
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web_calendar
|
||||
#. openerp-web
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. module: web_calendar
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-26 06:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16810)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-11 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 16869)\n"
|
||||
|
||||
#. module: web_calendar
|
||||
#. openerp-web
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue