@@ -406,7 +406,7 @@
-
+
@@ -626,7 +626,7 @@
kanban,tree,form,calendar,gantt,graph
-
{"search_default_project_id": project_id, 'search_default_inbox': 1}
+
{}
A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to another user. If you delegate a task to another user, you get a new task in pending state, which will be reopened when you have to review the work achieved. If you install the project_timesheet module, task work can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed.
@@ -749,31 +749,6 @@
-
- res.users.project.form1
- res.users
- form
-
-
-
-
-
-
-
-
-
-
- view.users.form.project.modif.inherited1
- res.users
-
- form
-
-
-
-
-
-
-
-
+
diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css
index 93437c878ba..7a354d5a801 100644
--- a/addons/project/static/src/css/project.css
+++ b/addons/project/static/src/css/project.css
@@ -1,42 +1,50 @@
.project_fields {
- margin-top: 1px;
- margin-bottom: 1px;
- font-size: 11px;
- padding-left: 0px;
- }
+ margin-top: 1px;
+ margin-bottom: 1px;
+ font-size: 11px;
+ padding-left: 0px;
+}
.project_fields td {
border: none;
- padding: 2px 0 2px 8px; }
+ padding: 2px 0 2px 8px;
+}
.project_fields th {
padding: 0;
border-right: 1px solid #dddddd;
vertical-align: top;
- margin-right: 8px; }
+ margin-right: 8px;
+}
.project_vignettes{
- padding: 4px !important }
- .project_vignettes li {
+ padding: 4px !important;
+}
+.project_vignettes li {
float: left;
- }
- .project_vignettes .project_avatar {
+}
+.project_vignettes .project_avatar {
width: 30px;
height: 30px;
- padding-left: 0px; }
- .project_vignettes .project_fields {
- width: 100%; }
- .project_vignettes .project_fields th {
- width: 120px;
- font-weight: normal; }
- .project_vignettes .project_fields td {
- color: #888888; }
- .project_vignettes h4 a {
- color: #4c4c4c; }
- .project_vignettes > li h4 {
+ padding-left: 0px;
+}
+.project_vignettes .project_fields {
+ width: 100%;
+}
+.project_vignettes .project_fields th {
+ width: 120px;
+ font-weight: normal;
+}
+.project_vignettes .project_fields td {
+ color: #888888;
+}
+.project_vignettes h4 a {
+ color: #4c4c4c;
+}
+.project_vignettes > li h4 {
margin-bottom: 2px;
- padding-left: 2px; }
-
+ padding-left: 2px;
+}
.oe_project_buttons {
padding: 2px 2px !important;
- background: none !important;
+ background: none !important;
background-color: transparent !important;
border: hidden !important;
color: #8A89BA !important;
@@ -51,8 +59,8 @@
border-radius: 4px;
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
- -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
- }
+ -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
+}
.click_button {
background: none !important;
background-color: transparent !important;
@@ -68,54 +76,60 @@
-webkit-box-align: baseline;
}
-
.click_button:hover {
cursor: default !important;
}
.dropdown-menu {
- display: none;
- position: absolute; }
+ display: none;
+ position: absolute;
+}
.dropdown {
- position: relative; }
+ position: relative;
+}
.dropdown-toggle:after {
- width: 0;
- height: 0;
- display: inline-block;
- content: "&darr";
- text-indent: -99999px;
- vertical-align: top;
- margin-top: 8px;
- margin-left: 4px;
- border-left: 4px solid transparent;
- border-right: 4px solid transparent;
- border-top: 4px solid white;
- filter: alpha(opacity=50);
- -khtml-opacity: 0.5;
- -moz-opacity: 0.5;
- opacity: 0.5; }
- .oe_project_kanban_vignette .dropdown-menu .color-chooser {
- padding: 0 3px; }
- .oe_project_kanban_vignette .dropdown-menu .color-chooser li {
- float: left; }
- .oe_project_kanban_vignette .dropdown-menu .color-chooser li a {
- padding: 2px; }
+ width: 0;
+ height: 0;
+ display: inline-block;
+ content: "&darr";
+ text-indent: -99999px;
+ vertical-align: top;
+ margin-top: 8px;
+ margin-left: 4px;
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid white;
+ filter: alpha(opacity=50);
+ -khtml-opacity: 0.5;
+ -moz-opacity: 0.5;
+ opacity: 0.5;
+}
+.oe_project_kanban_vignette .dropdown-menu .color-chooser {
+ padding: 0 3px;
+}
+.oe_project_kanban_vignette .dropdown-menu .color-chooser li {
+ float: left;
+}
+.oe_project_kanban_vignette .dropdown-menu .color-chooser li a {
+ padding: 2px;
+}
a.oe_project_kanban_action {
- position: absolute;
- right: 0;
- display: none;
- }
- a.oe_project_kanban_action:hover {
- text-decoration: none; }
- a.oe_project_kanban_action .oe_i {
- color: #4c4c4c; }
-
-.square {
- display: inline-block;
- width: 18px;
- height: 18px;
- border:1px solid grey;
- }
+ position: absolute;
+ right: 0;
+ display: none;
+}
+a.oe_project_kanban_action:hover {
+ text-decoration: none;
+}
+a.oe_project_kanban_action .oe_i {
+ color: #4c4c4c;
+}
+.square {
+ display: inline-block;
+ width: 18px;
+ height: 18px;
+ border:1px solid grey;
+}
.oe_kanban_color_0 {
background: white;
}
@@ -136,85 +150,97 @@ a.oe_project_kanban_action {
}
.open {
- display: block;
- }
- .open .dropdown-menu {
- display: block; }
+ display: block;
+}
+.open .dropdown-menu {
+ display: block;
+}
a.oe_project_kanban_action {
- position: absolute;
- right: 0;
- }
- a.oe_project_kanban_action:hover {
+ position: absolute;
+ right: 0;
+}
+a.oe_project_kanban_action:hover {
text-decoration: none;
- }
- a.oe_project_kanban_action .eo_i {
- color: #4c4c4c; }
+}
+a.oe_project_kanban_action .eo_i {
+ color: #4c4c4c;
+}
.oe_project_kanban_vignette {
- position: relative;
- min-height: 50px;
- /*background: white;*/
- border: 1px solid #d8d8d8;
- border-bottom-color: #b9b9b9;
- padding: 6px;
- margin: 6px 0;
- display: inline-block;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
- border-radius: 4px;
-
+ position: relative;
+ min-height: 50px;
+ /*background: white;*/
+ border: 1px solid #d8d8d8;
+ border-bottom-color: #b9b9b9;
+ padding: 6px;
+ margin: 6px 0;
+ display: inline-block;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
}
- .oe_project_kanban_vignette:last-child {
- margin-bottom: 0; }
- .oe_project_kanban_vignette:hover {
+.oe_project_kanban_vignette:last-child {
+ margin-bottom: 0;
+}
+.oe_project_kanban_vignette:hover {
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
- -box-shadow: 0 0 3px rgba(0, 0, 0, 0.6); }
- .oe_project_kanban_vignette h4 {
- margin: 0 0 2px; }
+ -box-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
+}
+.oe_project_kanban_vignette h4 {
+ margin: 0 0 2px;
+}
.oe_project_kanban_vignette .dropdown-menu {
- top: 30px;
- right: -140px;
- padding: 4px;
- border: 1px solid #afafb6;
- width: 160px;
- overflow-x: hidden;
- z-index: 900;
- background: white;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px;
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
- -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); }
- .oe_project_kanban_vignette .dropdown-menu p {
- margin-left: 12px; }
- .oe_project_kanban_vignette .dropdown-menu li {
+ top: 30px;
+ right: -140px;
+ padding: 4px;
+ border: 1px solid #afafb6;
+ width: 160px;
+ overflow-x: hidden;
+ z-index: 900;
+ background: white;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+ -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+}
+.oe_project_kanban_vignette .dropdown-menu p {
+ margin-left: 12px;
+}
+.oe_project_kanban_vignette .dropdown-menu li {
float: none;
display: block;
- background-color: none; }
- .oe_project_kanban_vignette .dropdown-menu li a {
- display: block;
- padding: 3px 6px;
- clear: both;
- font-weight: normal;
- line-height: 14px;
- color: #4c4c4c;
- text-decoration: none; }
- .oe_project_kanban_vignette .dropdown-menu li a:hover {
- background: #f0f0fa;
- background: -moz-linear-gradient(#f0f0fa, #eeeef6);
- background: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6));
- background: -webkit-linear-gradient(#f0f0fa, #eeeef6);
- -moz-box-shadow: none;
- -webkit-box-shadow: none;
- -box-shadow: none; }
+ background-color: none;
+}
+.oe_project_kanban_vignette .dropdown-menu li a {
+ display: block;
+ padding: 3px 6px;
+ clear: both;
+ font-weight: normal;
+ line-height: 14px;
+ color: #4c4c4c;
+ text-decoration: none;
+}
+.oe_project_kanban_vignette .dropdown-menu li a:hover {
+ background: #f0f0fa;
+ background: -moz-linear-gradient(#f0f0fa, #eeeef6);
+ background: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6));
+ background: -webkit-linear-gradient(#f0f0fa, #eeeef6);
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -box-shadow: none;
+}
.oe_project_kanban_vignette .dropdown-menu .color-chooser {
- padding: 0 3px; }
- .oe_project_kanban_vignette .dropdown-menu .color-chooser li {
- float: left; }
- .oe_project_kanban_vignette .dropdown-menu .color-chooser li a {
- padding: 2px; }
+ padding: 0 3px;
+}
+.oe_project_kanban_vignette .dropdown-menu .color-chooser li {
+ float: left;
+}
+.oe_project_kanban_vignette .dropdown-menu .color-chooser li a {
+ padding: 2px;
+}
diff --git a/addons/project/static/src/js/project.js b/addons/project/static/src/js/project.js
index 09a7c9eb256..8d806fb0605 100644
--- a/addons/project/static/src/js/project.js
+++ b/addons/project/static/src/js/project.js
@@ -3,31 +3,30 @@ openerp.project = function(openerp) {
bind_events: function() {
var self = this;
self._super();
- if(this.view.dataset.model == 'project.project') {
-
+ if (this.view.dataset.model == 'project.project') {
/*set avatar title for members.
In many2many fields, returns only list of ids.
we can implement return value of m2m fields like [(1,"Adminstration"),...].
*/
- _.each($(this.$element).find('.project_avatar'),function(avatar){
+ _.each($(this.$element).find('.project_avatar'), function(avatar) {
var dataset = new openerp.web.DataSetSearch(this, 'res.users', self.session.context, [['id','=',avatar.id]]);
- dataset.read_slice(['name']).then(function(result){
- avatar.setAttribute("title",result[0].name)
+ dataset.read_slice(['name']).then(function(result) {
+ avatar.setAttribute("title",result[0].name);
});
- });
-
+ });
+
// set sequence like Tasks,Issues,Timesheets and Phases
- var my_list = $("#list a")
+ var my_list = $("#list a");
my_list.sort(function (a, b) {
- var aValue = parseInt(a.id);
- var bValue = parseInt(b.id);
+ var aValue = parseInt(a.id, 10);
+ var bValue = parseInt(b.id, 10);
return aValue == bValue ? 0 : aValue < bValue ? -1 : 1;
- });
+ });
$('#list').replaceWith(my_list);
-
+
// when vignette is clicked, it opens the first action in sequence
- if (my_list.length != 0) {
- var click_button = $(this.$element).find('.click_button')
+ if (my_list.length !== 0) {
+ var click_button = $(this.$element).find('.click_button');
click_button.attr('data-name', my_list[0].getAttribute('data-name'));
click_button.attr('data-type', "action");
}
@@ -36,13 +35,13 @@ openerp.project = function(openerp) {
we can do other way to implement new widget.
because we need to rpc call for that.
*/
- this.$element.find('.bgcolor').click(function(){
- var color = parseInt($(this).find('span').attr('class').split(' ')[0].substring(16))
- var color_class = $(this).find('span').attr('class').split(' ')[0]
+ this.$element.find('.bgcolor').click(function() {
+ var color = parseInt($(this).find('span').attr('class').split(' ')[0].substring(16), 10);
+ var color_class = $(this).find('span').attr('class').split(' ')[0];
$(this).closest('#oe_project_kanban_vignette').removeClass().addClass(color_class + ' oe_project_kanban_vignette');
- self.view.dataset.write(parseInt(this.id), {color:color});
+ self.view.dataset.write(parseInt(this.id, 10), {color:color});
});
}
}
});
-}
+};
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 5f06b0679e2..169468a2976 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -142,12 +142,6 @@ class project_issue(crm.crm_case, osv.osv):
res[issue.id] = {'progress' : progress}
return res
- def _get_project(self, cr, uid, context=None):
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- if user.context_project_id:
- return user.context_project_id.id
- return False
-
def on_change_project(self, cr, uid, ids, project_id, context=None):
return {}
@@ -263,7 +257,6 @@ class project_issue(crm.crm_case, osv.osv):
'section_id': crm.crm_case._get_section,
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
'priority': crm.AVAILABLE_PRIORITIES[2][0],
- 'project_id':_get_project,
'categ_id' : lambda *a: False,
}
diff --git a/addons/project_issue/project_issue_menu.xml b/addons/project_issue/project_issue_menu.xml
index e78c113866e..4c3be9e1327 100644
--- a/addons/project_issue/project_issue_menu.xml
+++ b/addons/project_issue/project_issue_menu.xml
@@ -12,7 +12,7 @@
kanban,tree,calendar
-
{"search_default_user_id": uid, "search_default_draft": 1,"search_default_todo": 1,"search_default_project_id":project_id, 'search_default_inbox': 1}
+
{"search_default_user_id": uid, "search_default_draft": 1,"search_default_todo": 1}
Issues such as system bugs, customer complaints, and material breakdowns are collected here. You can define the stages assigned when solving the project issue (analysis, development, done). With the mailgateway module, issues can be integrated through an email address (example: support@mycompany.com)
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index eef3713fcb4..0d466dd21fc 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -265,7 +265,7 @@
-