diff options
| author | Géry Debongnie <ged@odoo.com> | 2015-06-12 11:42:34 +0200 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2015-06-15 16:30:36 +0200 |
| commit | d6506b22e49a7dc97c8fae7650071dec7f559477 (patch) | |
| tree | 03355d581b023390c3aca719f489d94b4b546745 | |
| parent | 05adb7f2352ec7e0331a2b6a0aee7d1272f6332c (diff) | |
[IMP] project: update to new design
| -rw-r--r-- | addons/project/project.py | 10 | ||||
| -rw-r--r-- | addons/project/project_dashboard.xml | 10 | ||||
| -rw-r--r-- | addons/project/project_view.xml | 64 | ||||
| -rw-r--r-- | addons/project/static/src/less/project_dashboard.less | 58 | ||||
| -rw-r--r-- | addons/rating_project/views/project_view.xml | 6 |
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 |
