[MERGE] trunk

bzr revid: fme@openerp.com-20120712155700-q390mzb6q4falplb
This commit is contained in:
Fabien Meghazi 2012-07-12 17:57:00 +02:00
commit c6ee8ca196
22 changed files with 511 additions and 98 deletions

View File

@ -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,

View File

@ -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):

View File

@ -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;

View File

@ -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;

View File

@ -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)

View File

@ -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();

View File

@ -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;
}
});
};

View File

@ -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"

View File

@ -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'],

View File

@ -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'],

View File

@ -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": [

View File

@ -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 "Нов възел"

View File

@ -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'],

View File

@ -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 "Създай"

View File

@ -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)

View File

@ -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>"

View File

@ -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;

View File

@ -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

View File

@ -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) {

View File

@ -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" : [],

View File

@ -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 ""

View File

@ -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,