[MERGE] trunk
bzr revid: fme@openerp.com-20120712155700-q390mzb6q4falplb
This commit is contained in:
commit
c6ee8ca196
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"name" : "web",
|
||||
"name" : "Web",
|
||||
"category": "Hidden",
|
||||
"description":
|
||||
"""
|
||||
OpenERP Web core module.
|
||||
This module provides the core of the OpenERP web client.
|
||||
This module provides the core of the OpenERP Web Client.
|
||||
""",
|
||||
"depends" : [],
|
||||
'auto_install': True,
|
||||
|
|
|
@ -453,7 +453,7 @@ class Root(object):
|
|||
static_dirs = self._load_addons(openerp_addons_namespace)
|
||||
if options.serve_static:
|
||||
self.dispatch = werkzeug.wsgi.SharedDataMiddleware(
|
||||
self.dispatch, static_dirs)
|
||||
self.dispatch, static_dirs, cache=False)
|
||||
|
||||
if options.session_storage:
|
||||
if not os.path.exists(options.session_storage):
|
||||
|
|
|
@ -65,10 +65,6 @@
|
|||
padding: 3px 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.text-core .text-wrap .text-dropdown .text-list .text-suggestion em {
|
||||
font-style: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.text-core .text-wrap .text-dropdown .text-list .text-suggestion.text-selected {
|
||||
color: #fff;
|
||||
background: #6d84b4;
|
||||
|
|
|
@ -2353,6 +2353,59 @@
|
|||
color: #333333;
|
||||
}
|
||||
|
||||
.openerp .tree_header {
|
||||
background-color: #f0f0f0;
|
||||
border-bottom: 1px solid #cacaca;
|
||||
color: #4c4c4c;
|
||||
padding: 5px;
|
||||
height: 25px;
|
||||
}
|
||||
.openerp .tree_header button {
|
||||
float: right;
|
||||
height: 27px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.openerp .oe-treeview-table {
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.openerp .oe-treeview-table th {
|
||||
padding: 10px;
|
||||
color: #4c4c4c;
|
||||
font-weight: bold;
|
||||
background-color: #f0f0f0;
|
||||
border-bottom: 2px solid #cacaca;
|
||||
}
|
||||
.openerp .oe-treeview-table .treeview-tr, .openerp .oe-treeview-table .treeview-td {
|
||||
cursor: pointer;
|
||||
border-right: 1px dotted #afafb6;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #cfcccc;
|
||||
}
|
||||
.openerp .oe-treeview-table tr:hover {
|
||||
background-color: #e0e0f8;
|
||||
}
|
||||
.openerp .oe-treeview-table .oe-number {
|
||||
text-align: right !important;
|
||||
}
|
||||
.openerp .oe-treeview-table span {
|
||||
font-size: 90%;
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
display: block;
|
||||
}
|
||||
.openerp .oe-treeview-table .treeview-tr.oe-treeview-first {
|
||||
background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat;
|
||||
}
|
||||
.openerp .oe-treeview-table .oe_open .treeview-tr.oe-treeview-first {
|
||||
background-image: url(/web/static/src/img/collapse.gif);
|
||||
}
|
||||
.openerp .oe-treeview-table .treeview-tr.oe-treeview-first span, .openerp .oe-treeview-table .treeview-td.oe-treeview-first span {
|
||||
margin-left: 16px;
|
||||
}
|
||||
|
||||
.kitten-mode-activated {
|
||||
background-image: url(http://placekitten.com/g/1365/769);
|
||||
background-size: cover;
|
||||
|
|
|
@ -1853,6 +1853,49 @@ $sheet-max-width: 860px
|
|||
float: right
|
||||
color: #333
|
||||
// }}}
|
||||
//Tree view
|
||||
.openerp
|
||||
.tree_header
|
||||
background-color: #f0f0f0
|
||||
border-bottom: 1px solid #cacaca
|
||||
color: #4c4c4c
|
||||
padding: 5px
|
||||
height: 25px
|
||||
button
|
||||
float: right
|
||||
height: 27px
|
||||
margin-right: 5px
|
||||
.oe-treeview-table
|
||||
width: 100%
|
||||
background-color: white
|
||||
border-spacing: 0
|
||||
th
|
||||
padding: 10px
|
||||
color: #4c4c4c
|
||||
font-weight: bold
|
||||
background-color: #f0f0f0
|
||||
border-bottom: 2px solid #cacaca
|
||||
.treeview-tr, .treeview-td
|
||||
cursor: pointer
|
||||
border-right: 1px dotted #afafb6
|
||||
vertical-align: top
|
||||
text-align: left
|
||||
border-bottom: 1px solid #cfcccc
|
||||
tr:hover
|
||||
background-color: #e0e0f8
|
||||
.oe-number
|
||||
text-align: right !important
|
||||
span
|
||||
font-size: 90%
|
||||
font-weight: normal
|
||||
white-space: nowrap
|
||||
display: block
|
||||
.treeview-tr.oe-treeview-first
|
||||
background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat
|
||||
.oe_open .treeview-tr.oe-treeview-first
|
||||
background-image: url(/web/static/src/img/collapse.gif)
|
||||
.treeview-tr.oe-treeview-first span, .treeview-td.oe-treeview-first span
|
||||
margin-left: 16px
|
||||
// Kitten Mode {{{
|
||||
.kitten-mode-activated
|
||||
background-image: url(http://placekitten.com/g/1365/769)
|
||||
|
|
|
@ -894,11 +894,12 @@ instance.web.WebClient = instance.web.Widget.extend({
|
|||
});
|
||||
this.$element.on('click', '.oe_dropdown_toggle', function(ev) {
|
||||
ev.preventDefault();
|
||||
var $menu = $(this).find('.oe_dropdown_menu');
|
||||
var $toggle = $(this);
|
||||
var $menu = $toggle.find('.oe_dropdown_menu');
|
||||
var state = $menu.is('.oe_opened');
|
||||
setTimeout(function() {
|
||||
// Do not alter propagation
|
||||
$menu.toggleClass('oe_opened', !state);
|
||||
$toggle.add($menu).toggleClass('oe_opened', !state);
|
||||
if (!state) {
|
||||
// Move $menu if outside window's edge
|
||||
var doc_width = $(document).width();
|
||||
|
|
|
@ -63,6 +63,12 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
}
|
||||
return fields;
|
||||
},
|
||||
store_record:function(records){
|
||||
var self = this;
|
||||
_(records).each(function (record) {
|
||||
self.records[record.id] = record;
|
||||
});
|
||||
},
|
||||
on_loaded: function (fields_view) {
|
||||
var self = this;
|
||||
var has_toolbar = !!fields_view.arch.attrs.toolbar;
|
||||
|
@ -87,17 +93,19 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
this.$element.addClass(this.fields_view.arch.attrs['class']);
|
||||
|
||||
this.dataset.read_slice(this.fields_list()).then(function(records) {
|
||||
self.store_record(records);
|
||||
if (!has_toolbar) {
|
||||
// WARNING: will do a second read on the same ids, but only on
|
||||
// first load so not very important
|
||||
self.getdata(null, _(records).pluck('id'));
|
||||
self.render_data({'null':records})
|
||||
self.getdata(_.pluck(records,"id"));
|
||||
return;
|
||||
}
|
||||
|
||||
var $select = self.$element.find('select')
|
||||
.change(function () {
|
||||
var $option = $(this).find(':selected');
|
||||
self.getdata($option.val(), $option.data('children'));
|
||||
self.getdata($option.val());
|
||||
});
|
||||
_(records).each(function (record) {
|
||||
self.records[record.id] = record;
|
||||
|
@ -112,7 +120,12 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
$select.change();
|
||||
}
|
||||
});
|
||||
|
||||
this.$element.find("#tree_view_expand").click(function(){
|
||||
self.expand_all();
|
||||
});
|
||||
this.$element.find("#tree_view_collapse").click(function(){
|
||||
self.collpase_all();
|
||||
});
|
||||
// TODO store open nodes in url ?...
|
||||
this.do_push_state({});
|
||||
|
||||
|
@ -128,6 +141,22 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
return [color, py.parse(py.tokenize(expr)), expr];
|
||||
}).value();
|
||||
},
|
||||
expand_all: function(){
|
||||
var self = this;
|
||||
var tr = this.$element.find(".oe-treeview-table tbody tr[id^='treerow_']");
|
||||
_.each(tr,function(rec){
|
||||
self.showcontent($(rec).attr('data-id'),true);
|
||||
});
|
||||
},
|
||||
collpase_all: function(){
|
||||
var self = this;
|
||||
var root_tr = this.$element.find(".oe-treeview-table tbody tr[data-level='"+1+"']");
|
||||
_.each(root_tr,function(rec){
|
||||
if($(rec).hasClass('oe_open')){
|
||||
self.showcontent($(rec).attr('data-id'),false);
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Returns the color for the provided record in the current view (from the
|
||||
* ``@colors`` attribute)
|
||||
|
@ -164,50 +193,44 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
});
|
||||
|
||||
this.$element.delegate('.treeview-tr', 'click', function () {
|
||||
var is_loaded = 0,
|
||||
$this = $(this),
|
||||
var $this = $(this),
|
||||
record_id = $this.data('id'),
|
||||
record = self.records[record_id],
|
||||
children_ids = record[self.children_field];
|
||||
|
||||
_(children_ids).each(function(childid) {
|
||||
if (self.$element.find('#treerow_' + childid).length) {
|
||||
if (self.$element.find('#treerow_' + childid).is(':hidden')) {
|
||||
is_loaded = -1;
|
||||
} else {
|
||||
is_loaded++;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (is_loaded === 0) {
|
||||
if (!$this.parent().hasClass('oe_open')) {
|
||||
self.getdata(record_id, children_ids);
|
||||
}
|
||||
} else {
|
||||
self.showcontent(record_id, is_loaded < 0);
|
||||
}
|
||||
bool = $this.parent().hasClass('oe_open');
|
||||
self.showcontent(record_id, !bool);
|
||||
});
|
||||
},
|
||||
// get child data of selected value
|
||||
getdata: function (id, children_ids) {
|
||||
getdata: function (id) {
|
||||
var self = this;
|
||||
|
||||
self.dataset.read_ids(children_ids, this.fields_list()).then(function(records) {
|
||||
_(records).each(function (record) {
|
||||
self.records[record.id] = record;
|
||||
});
|
||||
|
||||
var $curr_node = self.$element.find('#treerow_' + id);
|
||||
var parent_child ={};
|
||||
id = _.isArray(id)?id:parseInt(id);
|
||||
var ir_model_data = new instance.web.Model(this.model,self.dataset.get_context() || {},[['id','child_of',id]]).query();
|
||||
ir_model_data._execute().then(function(records){
|
||||
self.store_record(records);
|
||||
_.each(records,function(rec){
|
||||
if(rec[self.children_field].length === 0)return;
|
||||
parent_child[rec.id] = [];
|
||||
_.each(rec[self.children_field],function(key){
|
||||
parent_child[rec.id].push(self.records[key]);
|
||||
});
|
||||
})
|
||||
self.render_data(parent_child);
|
||||
});
|
||||
},
|
||||
render_data: function(groupby){
|
||||
var self = this;
|
||||
_.each(_.keys(groupby),function(key){
|
||||
var $curr_node = self.$element.find('#treerow_' + key);
|
||||
var record = groupby[key];
|
||||
var children_rows = QWeb.render('TreeView.rows', {
|
||||
'records': records,
|
||||
'records': record,
|
||||
'children_field': self.children_field,
|
||||
'fields_view': self.fields_view.arch.children,
|
||||
'fields': self.fields,
|
||||
'level': $curr_node.data('level') || 0,
|
||||
'level': ($curr_node.data('level') || 0) + 1,
|
||||
'render': instance.web.format_value,
|
||||
'color_for': self.color_for
|
||||
});
|
||||
|
||||
if ($curr_node.length) {
|
||||
$curr_node.addClass('oe_open');
|
||||
$curr_node.after(children_rows);
|
||||
|
@ -215,8 +238,10 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
self.$element.find('tbody').html(children_rows);
|
||||
}
|
||||
});
|
||||
self.collpase_all();
|
||||
},
|
||||
|
||||
|
||||
// Get details in listview
|
||||
activate: function(id) {
|
||||
var self = this;
|
||||
|
@ -259,13 +284,5 @@ instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeVie
|
|||
}, this);
|
||||
},
|
||||
|
||||
do_show: function () {
|
||||
this.$element.show();
|
||||
},
|
||||
|
||||
do_hide: function () {
|
||||
this.$element.hide();
|
||||
this.hidden = true;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -399,16 +399,17 @@
|
|||
<t t-name="ViewManager">
|
||||
<div class="oe_view_manager">
|
||||
<table class="oe_view_manager_header">
|
||||
<col width="33%"/>
|
||||
<col width="33%"/>
|
||||
<col width="34%"/>
|
||||
<col width="25%"/>
|
||||
<col width="25%"/>
|
||||
<col width="25%"/>
|
||||
<col width="25%"/>
|
||||
<tr class="oe_header_row oe_header_row_top">
|
||||
<td colspan="2">
|
||||
<h2 class="oe_view_title" t-if="widget.flags.display_title !== false">
|
||||
<span class="oe_view_title_text oe_breadcrumb_title"/>
|
||||
</h2>
|
||||
</td>
|
||||
<td>
|
||||
<td colspan="2">
|
||||
<div class="oe_view_manager_view_search" t-opentag="true"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -416,7 +417,7 @@
|
|||
<td>
|
||||
<div class="oe_view_manager_buttons"/>
|
||||
</td>
|
||||
<td>
|
||||
<td colspan="2">
|
||||
<div class="oe_view_manager_sidebar"/>
|
||||
</td>
|
||||
<td>
|
||||
|
@ -535,14 +536,16 @@
|
|||
</t>
|
||||
|
||||
<t t-name="TreeView">
|
||||
<select t-if="toolbar" style="width: 30%">
|
||||
</select>
|
||||
<table class="oe_tree_table">
|
||||
<div class = "tree_header">
|
||||
<select t-if="toolbar" ></select>
|
||||
<button id = "tree_view_collapse">Collapse All</button>
|
||||
<button id = "tree_view_expand">Expand All</button>
|
||||
</div>
|
||||
<table class="oe-treeview-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th t-foreach="fields_view" t-as="field"
|
||||
t-if="!field.attrs.modifiers.tree_invisible"
|
||||
class="treeview-header">
|
||||
t-if="!field.attrs.modifiers.tree_invisible">
|
||||
<t t-esc="fields[field.attrs.name].string" />
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -554,11 +557,11 @@
|
|||
<tr t-name="TreeView.rows"
|
||||
t-foreach="records" t-as="record"
|
||||
t-att-id="'treerow_' + record.id"
|
||||
t-att-data-id="record.id" t-att-data-level="level + 1">
|
||||
t-att-data-id="record.id" t-att-data-level="level">
|
||||
<t t-set="children" t-value="record[children_field]"/>
|
||||
<t t-set="class" t-value="children and children.length ? 'treeview-tr' : 'treeview-td'"/>
|
||||
<t t-set="rank" t-value="'oe_tree_first'"/>
|
||||
<t t-set="style" t-value="'background-position: ' + 19*level + 'px; padding-left: ' + 19*level + 'px;'"/>
|
||||
<t t-set="rank" t-value="'oe-treeview-first'"/>
|
||||
<t t-set="style" t-value="'background-position: ' + 19*(level-1) + 'px; padding-left: ' + 19*(level-1) + 'px;'"/>
|
||||
|
||||
<td t-foreach="fields_view" t-as="field"
|
||||
t-if="!field.attrs.modifiers.tree_invisible"
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "web calendar",
|
||||
"name": "Web Calendar",
|
||||
"category": "Hidden",
|
||||
"description":
|
||||
"""
|
||||
OpenERP Web calendar view.
|
||||
OpenERP Web Calendar view.
|
||||
""",
|
||||
"version": "2.0",
|
||||
"depends": ['web'],
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "web Dashboard",
|
||||
"name": "Web Dashboard",
|
||||
"category": "Hidden",
|
||||
"description":
|
||||
"""
|
||||
OpenERP Web dashboard view.
|
||||
OpenERP Web Dashboard view.
|
||||
""",
|
||||
"version": "2.0",
|
||||
"depends": ['web'],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name" : "OpenERP Web Diagram",
|
||||
"category" : "Hidden",
|
||||
"description":'Openerp web Diagram view',
|
||||
"description":'Openerp Web Diagram view',
|
||||
"version" : "2.0",
|
||||
"depends" : ["web"],
|
||||
"js": [
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
# Bulgarian translation for openerp-web
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openerp-web package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openerp-web\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-07-02 09:06+0200\n"
|
||||
"PO-Revision-Date: 2012-07-11 13:48+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Bulgarian <bg@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: 2012-07-12 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15593)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:11
|
||||
msgid "Diagram"
|
||||
msgstr "Диаграма"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:165
|
||||
msgid "Are you sure?"
|
||||
msgstr "Сигурни ли сте?"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:195
|
||||
msgid ""
|
||||
"Deleting this node cannot be undone.\n"
|
||||
"It will also delete all connected transitions.\n"
|
||||
"\n"
|
||||
"Are you sure ?"
|
||||
msgstr ""
|
||||
"Изтриването на този възел не може да бъде отменено.\n"
|
||||
"То също така ще изтрие и всички свързани преходи.\n"
|
||||
"\n"
|
||||
"Сигурни ли сте?"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:213
|
||||
msgid ""
|
||||
"Deleting this transition cannot be undone.\n"
|
||||
"\n"
|
||||
"Are you sure ?"
|
||||
msgstr ""
|
||||
"Изтриването на този възел не може да бъде отменено.\n"
|
||||
"\n"
|
||||
"Сигурни ли сте?"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:224
|
||||
#: addons/web_diagram/static/src/js/diagram.js:257
|
||||
msgid "Activity"
|
||||
msgstr "Дейност"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:232
|
||||
#: addons/web_diagram/static/src/js/diagram.js:296
|
||||
msgid "Open: "
|
||||
msgstr "Отвори: "
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:262
|
||||
#: addons/web_diagram/static/src/js/diagram.js:314
|
||||
msgid "Create:"
|
||||
msgstr "Създай:"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/js/diagram.js:289
|
||||
#: addons/web_diagram/static/src/js/diagram.js:308
|
||||
msgid "Transition"
|
||||
msgstr "Преход"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_diagram/static/src/xml/base_diagram.xml:6
|
||||
msgid "New Node"
|
||||
msgstr "Нов възел"
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "web Gantt",
|
||||
"name": "Web Gantt",
|
||||
"category": "Hidden",
|
||||
"description":
|
||||
"""
|
||||
OpenERP Web gantt chart view.
|
||||
OpenERP Web Gantt chart view.
|
||||
""",
|
||||
"version": "2.0",
|
||||
"depends": ['web'],
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# Bulgarian translation for openerp-web
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openerp-web package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openerp-web\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-07-02 09:06+0200\n"
|
||||
"PO-Revision-Date: 2012-07-11 13:51+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Bulgarian <bg@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: 2012-07-12 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15593)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_gantt/static/src/js/gantt.js:11
|
||||
msgid "Gantt"
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_gantt/static/src/xml/web_gantt.xml:10
|
||||
msgid "Create"
|
||||
msgstr "Създай"
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
* Parse a <graph> view but allows changing dynamically the presentation
|
||||
* Graph Types: pie, lines, areas, bars, radar
|
||||
* Stacked / Not Stacked for areas and bars
|
||||
* Stacked/Not Stacked for areas and bars
|
||||
* Legends: top, inside (top/left), hidden
|
||||
* Features: download as PNG or CSV, browse data grid, switch orientation
|
||||
* Unlimited "Group By" levels (not stacked), two cross level analysis (stacked)
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
# Bulgarian translation for openerp-web
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openerp-web package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openerp-web\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-07-02 09:06+0200\n"
|
||||
"PO-Revision-Date: 2012-07-11 14:02+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Bulgarian <bg@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: 2012-07-12 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15593)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/js/kanban.js:10
|
||||
msgid "Kanban"
|
||||
msgstr "Канбан"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/js/kanban.js:372
|
||||
msgid "Undefined"
|
||||
msgstr "Неопределен"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/js/kanban.js:684
|
||||
msgid "Are you sure you want to delete this record ?"
|
||||
msgstr "Сигурни ли сте, че искате да изтриете този запис?"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/js/kanban.js:839
|
||||
msgid "Create: "
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/xml/web_kanban.xml:53
|
||||
msgid "Show more... ("
|
||||
msgstr "Покажи повече... ("
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/xml/web_kanban.xml:53
|
||||
msgid "remaining)"
|
||||
msgstr "оставащ)"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/xml/web_kanban.xml:71
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/xml/web_kanban.xml:71
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_kanban/static/src/xml/web_kanban.xml:72
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Create"
|
||||
#~ msgstr "Създаване"
|
||||
|
||||
#~ msgid "</tr><tr>"
|
||||
#~ msgstr "</tr><tr>"
|
|
@ -38,7 +38,6 @@
|
|||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_groups {
|
||||
height: inherit;
|
||||
width: 100%;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_header:hover .oe_dropdown_kanban {
|
||||
display: inline-block;
|
||||
|
@ -64,10 +63,10 @@
|
|||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_column.oe_kanban_grouped, .openerp .oe_kanban_view .oe_kanban_group_header {
|
||||
background: #f0eeee;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_column.oe_kanban_grouped, .openerp .oe_kanban_view .oe_kanban_group_header {
|
||||
border-left: 1px solid #f0f8f8;
|
||||
border-right: 1px solid #b9b9b9;
|
||||
min-width: 170px;
|
||||
max-width: 250px;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_form .oe_kanban_column {
|
||||
padding: 0px;
|
||||
|
@ -79,9 +78,6 @@
|
|||
.openerp .oe_kanban_view .oe_kanban_aggregates {
|
||||
padding: 0;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_group_header {
|
||||
position: relative;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_group_folded .oe_kanban_group_title, .openerp .oe_kanban_view .oe_kanban_group_folded.oe_kanban_column > *, .openerp .oe_kanban_view .oe_kanban_group_folded .oe_kanban_aggregates, .openerp .oe_kanban_view .oe_kanban_group_folded .oe_kanban_add {
|
||||
display: none;
|
||||
}
|
||||
|
@ -124,7 +120,6 @@
|
|||
float: right;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_quick_create {
|
||||
overflow: hidden;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_quick_create_buttons {
|
||||
|
@ -346,8 +341,8 @@
|
|||
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
|
||||
-box-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_card:hover .oe_dropdown_kanban {
|
||||
display: block;
|
||||
.openerp .oe_kanban_view .oe_kanban_card:hover .oe_dropdown_kanban > span {
|
||||
visibility: visible;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_card h3 {
|
||||
margin: 0 16px 0 0;
|
||||
|
@ -446,7 +441,6 @@
|
|||
position: absolute;
|
||||
top: -8px;
|
||||
right: 3px;
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_dropdown_kanban:hover {
|
||||
|
@ -457,6 +451,15 @@
|
|||
top: 28px;
|
||||
min-width: 160px;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_header .oe_dropdown_kanban {
|
||||
display: none;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_column .oe_dropdown_kanban.oe_opened > span {
|
||||
visibility: visible;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_column .oe_dropdown_kanban > span {
|
||||
visibility: hidden;
|
||||
}
|
||||
.openerp .oe_kanban_view .oe_kanban_colorpicker {
|
||||
padding: 3px 6px;
|
||||
white-space: nowrap;
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
// KanbanGroups {{{
|
||||
.oe_kanban_groups
|
||||
height: inherit
|
||||
width: 100%
|
||||
.oe_kanban_header
|
||||
&:hover
|
||||
.oe_dropdown_kanban
|
||||
|
@ -76,10 +75,10 @@
|
|||
|
||||
.oe_kanban_column.oe_kanban_grouped, .oe_kanban_group_header
|
||||
background: #f0eeee
|
||||
|
||||
.oe_kanban_column.oe_kanban_grouped, .oe_kanban_group_header
|
||||
border-left: 1px solid #f0f8f8
|
||||
border-right: 1px solid #b9b9b9
|
||||
min-width: 170px
|
||||
max-width: 250px
|
||||
|
||||
.oe_form
|
||||
.oe_kanban_column
|
||||
|
@ -90,8 +89,6 @@
|
|||
height: 100%
|
||||
.oe_kanban_aggregates
|
||||
padding: 0
|
||||
.oe_kanban_group_header
|
||||
position: relative
|
||||
.oe_kanban_group_folded
|
||||
.oe_kanban_group_title, &.oe_kanban_column > *, .oe_kanban_aggregates, .oe_kanban_add
|
||||
display: none
|
||||
|
@ -120,7 +117,6 @@
|
|||
width: 16px
|
||||
height: 16px
|
||||
background: url(/web_kanban/static/src/img/minus-icon.png) no-repeat
|
||||
.oe_kanban_group_folded .oe_kanban_fold_icon
|
||||
// }}}
|
||||
// KanbanQuickCreate {{{
|
||||
.oe_kanban_add, .oe_kanban_header .oe_dropdown_toggle
|
||||
|
@ -132,7 +128,6 @@
|
|||
float: right
|
||||
|
||||
.oe_kanban_quick_create
|
||||
overflow: hidden
|
||||
margin-bottom: 4px
|
||||
.oe_kanban_quick_create_buttons
|
||||
margin: 4px 0
|
||||
|
@ -298,8 +293,8 @@
|
|||
margin-bottom: 0
|
||||
&:hover
|
||||
@include box-shadow(0 0 3px rgba(0,0,0,0.6))
|
||||
.oe_dropdown_kanban
|
||||
display: block
|
||||
.oe_dropdown_kanban > span
|
||||
visibility: visible
|
||||
h3
|
||||
margin: 0 16px 0 0
|
||||
color: #4c4c4c
|
||||
|
@ -365,7 +360,6 @@
|
|||
position: absolute
|
||||
top: -8px
|
||||
right: 3px
|
||||
display: none
|
||||
cursor: pointer
|
||||
&:hover
|
||||
text-decoration: none
|
||||
|
@ -373,6 +367,15 @@
|
|||
left: 0
|
||||
top: 28px
|
||||
min-width: 160px
|
||||
.oe_kanban_header
|
||||
.oe_dropdown_kanban
|
||||
display: none
|
||||
.oe_kanban_column
|
||||
.oe_dropdown_kanban
|
||||
&.oe_opened > span
|
||||
visibility: visible
|
||||
> span
|
||||
visibility: hidden
|
||||
// }}}
|
||||
// KanbanColorPicker {{{
|
||||
.oe_kanban_colorpicker
|
||||
|
|
|
@ -286,13 +286,20 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
|
|||
},
|
||||
compute_groups_width: function() {
|
||||
var unfolded = 0;
|
||||
var self = this;
|
||||
_.each(this.groups, function(group) {
|
||||
unfolded += group.state.folded ? 0 : 1;
|
||||
group.$element.css('width', '');
|
||||
});
|
||||
_.each(this.groups, function(group) {
|
||||
if (!group.state.folded) {
|
||||
group.$element.css('width', Math.round(100/unfolded) + '%');
|
||||
if (182*unfolded>=self.$element.width()) {
|
||||
group.$element.css('width', "170px");
|
||||
} else if (262*unfolded>self.$element.width()) {
|
||||
group.$element.css('width', Math.round(100/unfolded) + '%');
|
||||
} else {
|
||||
group.$element.css('width', "250px");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -750,6 +757,9 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({
|
|||
// Set the cache duration in seconds.
|
||||
url += '&cache=' + parseInt(cache, 10);
|
||||
}
|
||||
if (this.record[field] && this.record[field].value && ! /^\d+(\.\d*)? \w+$/.test(this.record[field].value)) {
|
||||
url = 'data:image/png;base64,' + this.record[field].value;
|
||||
}
|
||||
return url;
|
||||
},
|
||||
kanban_text_ellipsis: function(s, size) {
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name" : "OpenERP Web mobile",
|
||||
"name" : "OpenERP Web Mobile",
|
||||
"category": "Hidden",
|
||||
"description":
|
||||
"""
|
||||
OpenERP Web mobile.
|
||||
OpenERP Web Mobile.
|
||||
""",
|
||||
"version" : "2.0",
|
||||
"depends" : [],
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
# Bulgarian translation for openerp-web
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openerp-web package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openerp-web\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-07-02 09:06+0200\n"
|
||||
"PO-Revision-Date: 2012-07-11 14:08+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Bulgarian <bg@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: 2012-07-12 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 15593)\n"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:17
|
||||
msgid "OpenERP"
|
||||
msgstr "OpenERP"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:22
|
||||
msgid "Database:"
|
||||
msgstr "База данни:"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:30
|
||||
msgid "Login:"
|
||||
msgstr "Вход:"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:32
|
||||
msgid "Password:"
|
||||
msgstr "Парола:"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:34
|
||||
msgid "Login"
|
||||
msgstr "Вход"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:36
|
||||
msgid "Bad username or password"
|
||||
msgstr "Грешно потребителско име или парола"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:42
|
||||
msgid "Powered by openerp.com"
|
||||
msgstr "Powered by openerp.com"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:49
|
||||
msgid "Home"
|
||||
msgstr "Начало"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:57
|
||||
msgid "Favourite"
|
||||
msgstr "Любими"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:58
|
||||
msgid "Preference"
|
||||
msgstr "Предпочитания"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:123
|
||||
msgid "Logout"
|
||||
msgstr "Изход"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:132
|
||||
msgid "There are no records to show."
|
||||
msgstr "Няма записи за показване."
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:183
|
||||
msgid "Open this resource"
|
||||
msgstr "Отвори този ресурс"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:223
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:226
|
||||
msgid "Percent of tasks closed according to total of tasks to do..."
|
||||
msgstr "Процент на приключените задачи съпоставен с общия брой задачи..."
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:264
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:268
|
||||
msgid "On"
|
||||
msgstr "Включено"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:265
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:269
|
||||
msgid "Off"
|
||||
msgstr "Изключено"
|
||||
|
||||
#. openerp-web
|
||||
#: addons/web_mobile/static/src/xml/web_mobile.xml:294
|
||||
msgid "Form View"
|
||||
msgstr ""
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name" : "OpenERP Web web",
|
||||
"name" : "OpenERP Web Web",
|
||||
"category" : "Hidden",
|
||||
"description":'Openerp web web',
|
||||
"description":'Openerp Web Web',
|
||||
"version" : "2.0",
|
||||
"depends" : [],
|
||||
"installable" : False,
|
||||
|
|
Loading…
Reference in New Issue