summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2015-06-12 11:42:34 +0200
committerGéry Debongnie <ged@odoo.com>2015-06-15 16:30:36 +0200
commitd6506b22e49a7dc97c8fae7650071dec7f559477 (patch)
tree03355d581b023390c3aca719f489d94b4b546745
parent05adb7f2352ec7e0331a2b6a0aee7d1272f6332c (diff)
[IMP] project: update to new design
-rw-r--r--addons/project/project.py10
-rw-r--r--addons/project/project_dashboard.xml10
-rw-r--r--addons/project/project_view.xml64
-rw-r--r--addons/project/static/src/less/project_dashboard.less58
-rw-r--r--addons/rating_project/views/project_view.xml6
5 files changed, 78 insertions, 70 deletions
diff --git a/addons/project/project.py b/addons/project/project.py
index b75a0e2fa95..fdffb68ed86 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -556,6 +556,12 @@ class task(osv.osv):
res[task.id] = False
return res
+ def _compute_displayed_image(self, cr, uid, ids, prop, arg, context=None):
+ res = {}
+ for line in self.browse(cr, uid, ids, context=context):
+ res[line.id] = line.attachment_ids and line.attachment_ids.filtered(lambda x: x.file_type_icon == 'webimage')[0] or None
+ return res
+
_columns = {
'active': fields.function(_is_template, store=True, string='Not a Template Task', type='boolean', help="This field is computed automatically and have the same behavior than the boolean 'active' field: if the task is linked to a template or unactivated project, it will be hidden unless specifically asked."),
'name': fields.char('Task Summary', track_visibility='onchange', size=128, required=True, select=True),
@@ -592,7 +598,9 @@ class task(osv.osv):
'id': fields.integer('ID', readonly=True),
'color': fields.integer('Color Index'),
'user_email': fields.related('user_id', 'email', type='char', string='User Email', readonly=True),
- }
+ 'attachment_ids': fields.one2many('ir.attachment', 'res_id', domain=lambda self: [('res_model', '=', self._name)], auto_join=True, string='Attachments'),
+ 'displayed_image_id': fields.function(_compute_displayed_image, relation='ir.attachment', type="many2one", string='Attachment'),
+ }
_defaults = {
'stage_id': _get_default_stage_id,
'project_id': lambda self, cr, uid, ctx=None: ctx.get('default_project_id') if ctx is not None else False,
diff --git a/addons/project/project_dashboard.xml b/addons/project/project_dashboard.xml
index b97e9721187..9d23ad05f40 100644
--- a/addons/project/project_dashboard.xml
+++ b/addons/project/project_dashboard.xml
@@ -27,7 +27,7 @@
<span><t t-esc="record.name.value"/></span>
</div>
<div t-if="record.alias_id.raw_value">
- <span><i class="fa fa-envelope-o"></i> <t t-esc="record.alias_id.value"/></span>
+ <span><i class="fa fa-envelope"></i> <t t-esc="record.alias_id.value"/></span>
</div>
</div>
</div><div class="o_kanban_card_manage_pane o_invisible">
@@ -41,16 +41,14 @@
<div>
<a name="%(action_view_task_history_cumulative_filter)d" type="action">Cumulative Flow</a>
</div>
- </div>
- <div t-if="widget.editable" class="o_project_kanban_colorpicker">
- <div class="col-xs-12">
- <li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
+ <div t-if="widget.editable" class="o_project_kanban_colorpicker">
+ <ul class="oe_kanban_colorpicker" data-field="color"/>
</div>
</div>
</div>
<div class="o_project_kanban_manage">
<div class="text-left">
- <a class="o_kanban_manage_toggle_button">More <i class="fa fa-caret-down"/></a>
+ <a class="o_kanban_manage_toggle_button" href="#">More <i class="fa fa-caret-down"/></a>
</div>
</div>
</div>
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index e4e9a752fc6..36ff5bccf03 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -7,6 +7,7 @@
id="base.menu_main_pm"
groups="group_project_manager,group_project_user"
icon="fa-calendar"
+ web_icon="project,static/description/icon.png"
sequence="50"/>
<menuitem name="Search"
@@ -88,6 +89,15 @@
</header>
<sheet string="Project">
<field name="analytic_account_id" invisible="1" required="0"/>
+ <div class="oe_button_box" name="button_box" groups="base.group_user">
+ <button class="oe_stat_button" type="action" attrs="{'invisible':[('use_tasks','=', False)]}"
+ name="%(act_project_project_2_project_task_all)d" icon="fa-tasks">
+ <field string="Tasks" name="task_count" widget="statinfo" options="{'label_field': 'label_tasks'}"/>
+ </button>
+ <button class="oe_stat_button" name="attachment_tree_view" type="object" icon="fa-files-o">
+ <field string="Documents" name="doc_count" widget="statinfo"/>
+ </button>
+ </div>
<div class="oe_title">
<label for="name" class="oe_edit_only" string="Project Name"/>
<h1>
@@ -102,15 +112,6 @@
</div>
</div>
</div>
- <div class="oe_right oe_button_box" name="buttons" groups="base.group_user">
- <button class="oe_inline oe_stat_button" type="action" attrs="{'invisible':[('use_tasks','=', False)]}"
- name="%(act_project_project_2_project_task_all)d" icon="fa-tasks">
- <field string="Tasks" name="task_count" widget="statinfo" options="{'label_field': 'label_tasks'}"/>
- </button>
- <button class="oe_inline oe_stat_button" name="attachment_tree_view" type="object" icon="fa-files-o">
- <field string="Documents" name="doc_count" widget="statinfo"/>
- </button>
- </div>
<notebook>
<page string="Emails" attrs="{'invisible': [('alias_domain', '=', False)]}">
<group name="group_alias">
@@ -254,7 +255,6 @@
</record>
<!-- Task -->
-
<record id="view_task_form2" model="ir.ui.view">
<field name="name">project.task.form</field>
<field name="model">project.task</field>
@@ -266,17 +266,15 @@
options="{'fold_field': 'fold'}"/>
</header>
<sheet string="Task">
- <div class="row">
- <h1 class="col-xs-11">
- <field class="oe_inline oe_left" name="priority" widget="priority"/>
- <field name="name" placeholder="Task summary..." class="oe_inline"/>
- </h1>
- <div class="col-xs-1 text-right">
- <field name="kanban_state" class="oe_inline" widget="kanban_state_selection"
+ <div class="oe_title">
+ <h1 class="o_row">
+ <field name="priority" widget="priority"/>
+ <field name="name" placeholder="Task summary..."/>
+ <field name="kanban_state" widget="kanban_state_selection"
options='{
"states_legend_field": "stage_id",
"states_legend": {"normal": "legend_normal", "blocked": "legend_blocked", "done": "legend_done"}}'/>
- </div>
+ </h1>
</div>
<group>
<group>
@@ -357,29 +355,35 @@
<field name="date_deadline"/>
<field name="message_summary"/>
<field name="tag_ids"/>
+ <field name="displayed_image_id"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
- <div class="oe_dropdown_toggle oe_dropdown_kanban" groups="base.group_user">
- <i class="fa fa-bars fa-lg"/>
- <ul class="oe_dropdown_menu">
+
+ <div class="o_dropdown_kanban dropdown" groups="base.group_user">
+ <a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
+ <span class="fa fa-bars fa-lg"/>
+ </a>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<t t-if="widget.editable"><li><a type="edit">Edit Task</a></li></t>
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
-
<div class="oe_kanban_content">
- <div><b><field name="name"/></b></div>
<div>
+ <field name="tag_ids"/>
+ </div>
+ <div>
+ <strong><field name="name"/></strong>
+ </div>
+ <div class="text-muted">
<field name="project_id" invisible="context.get('default_project_id', False)"/><br/>
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
<span t-attf-class="#{red || ''}"><i><field name="date_deadline"/></i></span>
</div>
- <div class="oe_kanban_footer_left" style="margin-top:5px;">
- <field name="tag_ids"/>
- </div>
<div class="oe_kanban_bottom_left">
+ <field name="priority" widget="priority"/>
<t t-raw="record.message_summary.raw_value"/>
</div>
<div class="oe_kanban_bottom_right">
@@ -387,10 +391,12 @@
<div class="pull-left" groups="base.group_user">
<field name="kanban_state" widget="kanban_state_selection"
options='{"states_legend": {"normal": "legend_normal", "blocked": "legend_blocked", "done": "legend_done"}}'/>
- <field name="priority" widget="priority"/>
</div>
</div>
</div>
+ <div t-if="record.displayed_image_id.value">
+ <field name="displayed_image_id" widget="attachment_image"/>
+ </div>
<div class="oe_clear"></div>
</div>
</t>
@@ -571,7 +577,7 @@
<p class="text-muted" colspan="2">
You can also give a tooltip about the use of the stars available in the kanban and form views.
</p>
- <label for="legend_priority" string=" " class="fa fa-star fa-lg oe_star_on oe_project_kanban_legend"/>
+ <label for="legend_priority" string=" " class="fa fa-star fa-lg o_star_on oe_project_kanban_legend"/>
<field name="legend_priority" nolabel="1"/>
<p class="text-muted" colspan="2">
@@ -685,4 +691,4 @@
<menuitem action="project_tags_action" id="menu_project_tags_act" parent="base.menu_definitions" groups="base.group_no_one"/>
</data>
-</openerp>
+</openerp> \ No newline at end of file
diff --git a/addons/project/static/src/less/project_dashboard.less b/addons/project/static/src/less/project_dashboard.less
index 9ce363aea0a..e47f36a4f0a 100644
--- a/addons/project/static/src/less/project_dashboard.less
+++ b/addons/project/static/src/less/project_dashboard.less
@@ -1,45 +1,37 @@
-.oe_kanban_view.o_kanban_dashboard.o_project_kanban {
-
- @odoo-brand-optional: #21b799;
+.o_kanban_view.o_kanban_dashboard.o_project_kanban {
.o_kanban_flexbox {
- display: flex;
+ .o-flex-display();
position: relative;
}
- .oe_kanban_record {
+ .o_kanban_record {
min-width: 300px;
- max-width: 350px;
- }
-
- /*
- .oe_kanban_record:hover .o_project_kanban_manage {
- visibility: visible;
}
- */
.o_project_kanban_main {
- margin-bottom: 40px; // give space for manage section at the bottom
- width: 75%;
+ // give space for manage section at the bottom
+ margin-bottom: 40px;
+ width: 70%;
- .o_primary {
- font-size: larger;
+ .o_kanban_card_content {
+ font-size: 12px;
+ .o_primary {
+ font-size: larger;
+ }
}
.o_project_kanban_manage {
visibility: visible;
position: absolute;
bottom: 0;
- margin-left: 10px;
+ margin-left: 16px;
margin-bottom: 10px;
}
.o_project_kanban_colorpicker {
padding: 8px;
}
.o_kanban_card_manage_pane {
- border-color: lightgrey;
- border-bottom-style: solid;
- border-bottom-width: 1px;
.o_kanban_card_manage_title {
margin: 0;
@@ -48,12 +40,16 @@
}
.o_project_kanban_boxes {
- display: flex;
- flex-direction: column;
- justify-content: flex-end;
- align-content: stretch;
+ .o-flex-display();
+ .o-flex-flow(column, nowrap);
+ .o-justify-content(flex-end);
+ .o-align-content(stretch);
+
+ width: 30%;
- width: 25%;
+ > a:hover {
+ text-decoration: none;
+ }
.o_value {
font-size: x-large;
@@ -67,11 +63,11 @@
.o_project_kanban_box {
text-align: center;
padding: 15px 0 15px 0;
- flex: 1 1 auto;
- display: flex;
- align-items: center;
- flex-direction: column;
- justify-content: center;
+ .o-flex(1, 1, auto);
+ .o-flex-display();
+ .o-align-items(center);
+ .o-flex-flow(column, nowrap);
+ .o-justify-content(center);
}
.o_project_kanban_box:nth-child(even) {
background-color: grey;
@@ -80,4 +76,4 @@
background-color: @odoo-brand-optional;
}
}
-}
+} \ No newline at end of file
diff --git a/addons/rating_project/views/project_view.xml b/addons/rating_project/views/project_view.xml
index 8322dd0b096..8f56709d83f 100644
--- a/addons/rating_project/views/project_view.xml
+++ b/addons/rating_project/views/project_view.xml
@@ -8,7 +8,7 @@
<field name="inherit_id" ref="project.edit_project"/>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
- <xpath expr="//div[@name='buttons']" position="inside">
+ <div name="button_box" position="inside">
<button name="action_view_task_rating"
attrs="{'invisible': ['|', '|', ('is_visible_happy_customer', '=', False), ('use_tasks','=', False), ('percentage_satisfaction_task', '=', -1)]}"
class="oe_stat_button oe_percent"
@@ -16,7 +16,7 @@
icon="fa-smile-o">
<field string="On tasks" name="percentage_satisfaction_task" widget="statinfo"/>
</button>
- </xpath>
+ </div>
<xpath expr="//field[@name='privacy_visibility']" position="after">
<field name="is_visible_happy_customer"/>
</xpath>
@@ -38,4 +38,4 @@
</record>
</data>
-</openerp>
+</openerp> \ No newline at end of file