diff --git a/muk_web_utils/__manifest__.py b/muk_web_utils/__manifest__.py
index 02be89f..b58687f 100644
--- a/muk_web_utils/__manifest__.py
+++ b/muk_web_utils/__manifest__.py
@@ -20,7 +20,7 @@
{
"name": "MuK Web Utils",
"summary": """Utility Features""",
- "version": "12.0.2.7.0",
+ "version": "12.0.2.8.0",
"category": "Extra Tools",
"license": "AGPL-3",
"author": "MuK IT",
diff --git a/muk_web_utils/doc/changelog.rst b/muk_web_utils/doc/changelog.rst
index 748458c..1ea418c 100644
--- a/muk_web_utils/doc/changelog.rst
+++ b/muk_web_utils/doc/changelog.rst
@@ -1,3 +1,8 @@
+`2.8.0`
+-------
+
+- Added path field widgets
+
`2.7.0`
-------
diff --git a/muk_web_utils/static/src/js/fields/path.js b/muk_web_utils/static/src/js/fields/path.js
new file mode 100644
index 0000000..fd34ab0
--- /dev/null
+++ b/muk_web_utils/static/src/js/fields/path.js
@@ -0,0 +1,113 @@
+/**********************************************************************************
+*
+* Copyright (C) 2017 MuK IT GmbH
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as
+* published by the Free Software Foundation, either version 3 of the
+* License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with this program. If not, see .
+*
+**********************************************************************************/
+
+odoo.define('muk_web_utils.path', function (require) {
+"use strict";
+
+var core = require('web.core');
+var fields = require('web.basic_fields');
+var registry = require('web.field_registry');
+var colorpicker = require('web.colorpicker');
+
+var AbstractField = require('web.AbstractField');
+
+var _t = core._t;
+var QWeb = core.qweb;
+
+var FieldPathNames = fields.FieldChar.extend({
+ init: function(parent, name, record) {
+ this._super.apply(this, arguments);
+ this.max_width = this.nodeOptions.width || 500;
+ },
+ _renderReadonly: function() {
+ var show_value = this._formatValue(this.value);
+ var text_witdh = $.fn.textWidth(show_value);
+ if(text_witdh >= this.max_width) {
+ var ratio_start = (1 - (this.max_width / text_witdh)) * show_value.length;
+ show_value = ".." + show_value.substring(ratio_start, show_value.length);
+ }
+ this.$el.text(show_value);
+ },
+});
+
+var FieldPathJson = fields.FieldText.extend({
+ events: _.extend({}, fields.FieldText.prototype.events, {
+ 'click a' : '_onNodeClicked',
+ }),
+ init: function(parent, name, record) {
+ this._super.apply(this, arguments);
+ this.max_width = this.nodeOptions.width || 500;
+ this.seperator = this.nodeOptions.seperator || "/";
+ this.prefix = this.nodeOptions.prefix || false;
+ this.suffix = this.nodeOptions.suffix || false;
+ },
+ _renderReadonly: function() {
+ this.$el.empty();
+ this._renderPath();
+ },
+ _renderPath: function() {
+ var text_width_measure = "";
+ var path = JSON.parse(this.value || "[]");
+ $.each(_.clone(path).reverse(), function(index, element) {
+ text_width_measure += element.name + "/";
+ if($.fn.textWidth(text_width_measure) >= this.max_width) {
+ this.$el.prepend($('').text(".."));
+ } else {
+ if (index == 0) {
+ if(this.suffix) {
+ this.$el.prepend($('').text(this.seperator));
+ }
+ this.$el.prepend($('').text(element.name));
+ this.$el.prepend($('').text(this.seperator));
+ } else {
+ this.$el.prepend($('', {
+ 'class': 'oe_form_uri',
+ 'data-model': element.model,
+ 'data-id': element.id,
+ 'href': "javascript:void(0);",
+ 'text': element.name,
+ }));
+ if (index != path.length - 1) {
+ this.$el.prepend($('').text(this.seperator));
+ } else if (this.prefix) {
+ this.$el.prepend($('').text(this.seperator));
+ }
+ }
+ }
+ return ($.fn.textWidth(text_width_measure) < this.max_width);
+ }.bind(this));
+ },
+ _onNodeClicked : function(event) {
+ this.do_action({
+ type: 'ir.actions.act_window',
+ res_model: $(event.currentTarget).data('model'),
+ res_id: $(event.currentTarget).data('id'),
+ views: [[false, 'form']],
+ target: 'current',
+ context: {},
+ });
+ }
+});
+
+registry.add('path_names', FieldPathNames);
+registry.add('path_json', FieldPathJson);
+
+return FieldColor;
+
+});
\ No newline at end of file
diff --git a/muk_web_utils/template/assets.xml b/muk_web_utils/template/assets.xml
index a706e15..74990df 100644
--- a/muk_web_utils/template/assets.xml
+++ b/muk_web_utils/template/assets.xml
@@ -43,6 +43,7 @@
+