From 2863076af97ad56a48e1c3c89248b568694bc789 Mon Sep 17 00:00:00 2001 From: Mathias Markl Date: Thu, 20 Jul 2017 00:00:19 +0200 Subject: [PATCH] 10.0.1.0.1 --- muk_web_preview/__manifest__.py | 2 +- muk_web_preview/static/description/index.html | 2 +- .../static/lib/ViewerJS/index.html | 3 - .../static/src/js/preview_dialog.js | 8 +- .../static/src/js/preview_generator.js | 16 +- .../static/src/js/preview_handler.js | 3 + .../static/src/js/preview_widgets.js | 53 +- .../static/src/less/preview_content.less | 1 + muk_web_preview_audio/__manifest__.py | 2 +- .../static/src/js/preview_generator.js | 11 +- muk_web_preview_image/__manifest__.py | 2 +- .../static/description/index.html | 2 +- .../static/src/js/preview_generator.js | 13 +- .../static/src/less/preview_content.less | 16 +- muk_web_preview_mail/LICENSE | 619 ++++++++++++++++++ muk_web_preview_mail/README.md | 5 + muk_web_preview_mail/__init__.py | 22 + muk_web_preview_mail/__manifest__.py | 63 ++ muk_web_preview_mail/controllers/__init__.py | 22 + muk_web_preview_mail/controllers/main.py | 132 ++++ .../static/description/banner.png | Bin 0 -> 41876 bytes .../static/description/icon.png | Bin 0 -> 9610 bytes .../static/description/index.html | 39 ++ .../static/description/logo.png | Bin 0 -> 38064 bytes .../static/description/screenshot.png | Bin 0 -> 75123 bytes .../static/src/js/preview_generator.js | 136 ++++ .../static/src/less/preview_content.less | 231 +++++++ .../static/src/xml/preview_content.xml | 77 +++ muk_web_preview_mail/template/assets.xml | 27 + muk_web_preview_text/__manifest__.py | 2 +- .../static/src/js/preview_generator.js | 16 +- .../static/src/less/preview_content.less | 2 +- .../static/src/xml/preview_content.xml | 1 - muk_web_preview_video/__manifest__.py | 2 +- .../static/src/js/preview_generator.js | 13 +- 35 files changed, 1483 insertions(+), 60 deletions(-) create mode 100644 muk_web_preview_mail/LICENSE create mode 100644 muk_web_preview_mail/README.md create mode 100644 muk_web_preview_mail/__init__.py create mode 100644 muk_web_preview_mail/__manifest__.py create mode 100644 muk_web_preview_mail/controllers/__init__.py create mode 100644 muk_web_preview_mail/controllers/main.py create mode 100644 muk_web_preview_mail/static/description/banner.png create mode 100644 muk_web_preview_mail/static/description/icon.png create mode 100644 muk_web_preview_mail/static/description/index.html create mode 100644 muk_web_preview_mail/static/description/logo.png create mode 100644 muk_web_preview_mail/static/description/screenshot.png create mode 100644 muk_web_preview_mail/static/src/js/preview_generator.js create mode 100644 muk_web_preview_mail/static/src/less/preview_content.less create mode 100644 muk_web_preview_mail/static/src/xml/preview_content.xml create mode 100644 muk_web_preview_mail/template/assets.xml diff --git a/muk_web_preview/__manifest__.py b/muk_web_preview/__manifest__.py index bd868c0..206587a 100644 --- a/muk_web_preview/__manifest__.py +++ b/muk_web_preview/__manifest__.py @@ -29,7 +29,7 @@ - Portable Document Format (.pdf) - Open Document (.odt, .odp, .ods, .otp) """, - "version": "10.0.1.0.0", + "version": "10.0.1.0.1", "category": "Extra Tools", "license": "AGPL-3", "website": "http://www.mukit.at", diff --git a/muk_web_preview/static/description/index.html b/muk_web_preview/static/description/index.html index b67f747..5f5d3fc 100644 --- a/muk_web_preview/static/description/index.html +++ b/muk_web_preview/static/description/index.html @@ -38,4 +38,4 @@ - + \ No newline at end of file diff --git a/muk_web_preview/static/lib/ViewerJS/index.html b/muk_web_preview/static/lib/ViewerJS/index.html index 41c5b0f..a100e64 100644 --- a/muk_web_preview/static/lib/ViewerJS/index.html +++ b/muk_web_preview/static/lib/ViewerJS/index.html @@ -75,11 +75,8 @@ c;a?(e.title||(e.title=a.replace(/^.*[\\\/]/,"")),e.documentUrl=a,b(a,function(b Viewer = function(plugin, parameters) { var matches = (/&(filename=([^&]+)|title=([^&]+)|)&/).exec(window.location.hash); - console.log(matches); if(matches && matches.length > 1) { parameters.title = decodeURIComponent(matches[2]); - } else { - parameters.title = ""; } return original_Viewer(plugin, parameters); } diff --git a/muk_web_preview/static/src/js/preview_dialog.js b/muk_web_preview/static/src/js/preview_dialog.js index 97dce3e..42160a9 100644 --- a/muk_web_preview/static/src/js/preview_dialog.js +++ b/muk_web_preview/static/src/js/preview_dialog.js @@ -31,9 +31,7 @@ var _t = core._t; var PreviewDialog = Widget.extend({ init: function(parent, generator, url, mimetype, extension, title) { - var self = this; this._super(parent); - this.generator = generator; this._opened = $.Deferred(); this.title = title || _t('Preview'); this.url = url; @@ -43,6 +41,8 @@ var PreviewDialog = Widget.extend({ this.$modal.on('hidden.bs.modal', _.bind(this.destroy, this)); this.$modal.find('.preview-maximize').on('click', _.bind(this.maximize, this)); this.$modal.find('.preview-minimize').on('click', _.bind(this.minimize, this)); + this.generator = generator; + this.generator.widget = this; }, renderElement: function() { this._super(); @@ -93,8 +93,8 @@ var PreviewDialog = Widget.extend({ } }); -PreviewDialog.createPreviewDialog = function (owner, url, mimetype, extension, title) { - return new PreviewDialog(owner, new PreviewGenerator(), url, mimetype, extension, title).open(); +PreviewDialog.createPreviewDialog = function (parent, url, mimetype, extension, title) { + return new PreviewDialog(parent, new PreviewGenerator(parent, {}), url, mimetype, extension, title).open(); }; return PreviewDialog; diff --git a/muk_web_preview/static/src/js/preview_generator.js b/muk_web_preview/static/src/js/preview_generator.js index c646ca7..2b4b944 100644 --- a/muk_web_preview/static/src/js/preview_generator.js +++ b/muk_web_preview/static/src/js/preview_generator.js @@ -60,11 +60,13 @@ var OpenOfficeHandler = PreviewHandler.extend({ }); var PreviewGenerator = core.Class.extend({ - handler: { - "PDFHandler": new PDFHandler(), - "OpenOfficeHandler": new OpenOfficeHandler(), - }, - init: function(additional_handler) { + handler: {}, + init: function(widget, additional_handler) { + this.widget = widget; + this.handler = _.extend(this.handler, { + "PDFHandler": new PDFHandler(widget), + "OpenOfficeHandler": new OpenOfficeHandler(widget) + }); this.handler = _.extend(this.handler, additional_handler); }, createPreview: function(url, mimetype, extension, title) { @@ -83,8 +85,8 @@ var PreviewGenerator = core.Class.extend({ } }); -PreviewGenerator.createPreview = function(url, mimetype, extension, title) { - return new PreviewGenerator({}).createPreview(url, mimetype, extension, title); +PreviewGenerator.createPreview = function(widget, url, mimetype, extension, title) { + return new PreviewGenerator(widget, {}).createPreview(url, mimetype, extension, title); }; return PreviewGenerator; diff --git a/muk_web_preview/static/src/js/preview_handler.js b/muk_web_preview/static/src/js/preview_handler.js index 83c2809..c6d0d0f 100644 --- a/muk_web_preview/static/src/js/preview_handler.js +++ b/muk_web_preview/static/src/js/preview_handler.js @@ -23,6 +23,9 @@ odoo.define('muk_preview.PreviewHandler', function (require) { var core = require('web.core'); var Handler = core.Class.extend({ + init: function(widget) { + this.widget = widget; + }, checkExtension: function(extension) { return false; }, diff --git a/muk_web_preview/static/src/js/preview_widgets.js b/muk_web_preview/static/src/js/preview_widgets.js index 8a9543c..91388c4 100644 --- a/muk_web_preview/static/src/js/preview_widgets.js +++ b/muk_web_preview/static/src/js/preview_widgets.js @@ -23,6 +23,7 @@ odoo.define('muk_preview.PreviewWidgets', function (require) { var core = require('web.core'); var utils = require('web.utils'); var Widget = require('web.Widget'); +var ListView = require('web.ListView'); var PreviewHandler = require('muk_preview.PreviewHandler'); var PreviewGenerator = require('muk_preview.PreviewGenerator'); @@ -40,7 +41,7 @@ core.form_widget_registry.get("binary").include({ e.stopPropagation(); var value = self.get('value'); var filename_fieldname = self.node.attrs.filename; - var filename_field = self.view.fields && self.view.fields[filename_fieldname]; + var filename_field = self.view.fields && filename_fieldname && self.view.fields[filename_fieldname]; var filename = filename_field ? filename_field.get('value') : null; PreviewDialog.createPreviewDialog(self, '/web/content?' + $.param({ 'model': self.view.dataset.model, @@ -50,7 +51,7 @@ core.form_widget_registry.get("binary").include({ 'filename': filename, 'download': true, 'data': utils.is_bin_size(value) ? null : value, - }), false, filename.split('.').pop(), filename); + }), false, filename ? filename.split('.').pop() : false, filename); }); } }, @@ -71,8 +72,54 @@ core.form_widget_registry.get("binary").include({ this._super(); } } - }); +core.list_widget_registry.get("field.binary").include({ + _format: function(row_data, options) { + var link = this._super(row_data, options); + var value = row_data[this.id].value; + var filename = this.filename && row_data[this.filename].value; + if (value && filename && value.substr(0, 10).indexOf(' ') !== -1) { + var download_url = '/web/content?' + $.param({ + 'model': options.model, + 'field': this.id, + 'id': options.id, + 'download': true, + 'filename_field': this.filename + }); + var preview = _.template( + '')({ + link: download_url, + filename: filename, + }); + return preview + link; + } + return link; + } +}); + +ListView.include({ + reload_content: function() { + var self = this; + var reloaded = this._super(); + reloaded.then(function() { + var $elements = self.$el.find('.o_binary_preview'); + $elements.click(function(e) { + e.stopPropagation(); + var $target = $(e.currentTarget); + PreviewDialog.createPreviewDialog(self, $target.data('link'), + false, $target.data('filename').split('.').pop(), + $target.data('filename')); + }); + }); + return reloaded; + } +}); }); \ No newline at end of file diff --git a/muk_web_preview/static/src/less/preview_content.less b/muk_web_preview/static/src/less/preview_content.less index 80e560e..f6577b1 100644 --- a/muk_web_preview/static/src/less/preview_content.less +++ b/muk_web_preview/static/src/less/preview_content.less @@ -52,6 +52,7 @@ .o_preview_unsupported_download { padding-top: 25px; + padding-bottom: 5px; } } diff --git a/muk_web_preview_audio/__manifest__.py b/muk_web_preview_audio/__manifest__.py index cca544b..dfb2b63 100644 --- a/muk_web_preview_audio/__manifest__.py +++ b/muk_web_preview_audio/__manifest__.py @@ -29,7 +29,7 @@ - Ogg Theora Vorbis (*.ogg, audio/ogg) - MP3 (*.mp3, audio/mpeg) """, - "version": "10.0.1.0.0", + "version": "10.0.1.0.1", "category": "Extra Tools", "license": "AGPL-3", "website": "http://www.mukit.at", diff --git a/muk_web_preview_audio/static/src/js/preview_generator.js b/muk_web_preview_audio/static/src/js/preview_generator.js index 64be07c..d9bdba1 100644 --- a/muk_web_preview_audio/static/src/js/preview_generator.js +++ b/muk_web_preview_audio/static/src/js/preview_generator.js @@ -56,12 +56,11 @@ var AudioHandler = PreviewHandler.extend({ }); PreviewGenerator.include({ - audioHandler: { - "AudioHandler": new AudioHandler(), - }, - init: function(additional_handler) { - additional_handler = _.extend(this.audioHandler, additional_handler); - this._super(additional_handler); + init: function(widget, additional_handler) { + this._super(widget, additional_handler); + this.handler = _.extend(this.handler, { + "AudioHandler": new AudioHandler(widget), + }); }, }); diff --git a/muk_web_preview_image/__manifest__.py b/muk_web_preview_image/__manifest__.py index cb9e784..1a404bc 100644 --- a/muk_web_preview_image/__manifest__.py +++ b/muk_web_preview_image/__manifest__.py @@ -46,7 +46,7 @@ - XBM-Dateien (*.xbm, image/x-xbitmap) - XPM-Dateien (*.xpm, image/x-xpixmap) """, - "version": "10.0.1.0.0", + "version": "10.0.1.0.1", "category": "Extra Tools", "license": "AGPL-3", "website": "http://www.mukit.at", diff --git a/muk_web_preview_image/static/description/index.html b/muk_web_preview_image/static/description/index.html index 76d0820..1570268 100644 --- a/muk_web_preview_image/static/description/index.html +++ b/muk_web_preview_image/static/description/index.html @@ -64,4 +64,4 @@ - + \ No newline at end of file diff --git a/muk_web_preview_image/static/src/js/preview_generator.js b/muk_web_preview_image/static/src/js/preview_generator.js index b8126e4..7965078 100644 --- a/muk_web_preview_image/static/src/js/preview_generator.js +++ b/muk_web_preview_image/static/src/js/preview_generator.js @@ -54,13 +54,12 @@ var ImageHandler = PreviewHandler.extend({ }); PreviewGenerator.include({ - imageHandler: { - "ImageHandler": new ImageHandler(), - }, - init: function(additional_handler) { - additional_handler = _.extend(this.imageHandler, additional_handler); - this._super(additional_handler); + init: function(widget, additional_handler) { + this._super(widget, additional_handler); + this.handler = _.extend(this.handler, { + "ImageHandler": new ImageHandler(widget), + }); }, }); -}); +}); \ No newline at end of file diff --git a/muk_web_preview_image/static/src/less/preview_content.less b/muk_web_preview_image/static/src/less/preview_content.less index 1c004b7..33d9902 100644 --- a/muk_web_preview_image/static/src/less/preview_content.less +++ b/muk_web_preview_image/static/src/less/preview_content.less @@ -17,15 +17,17 @@ * **********************************************************************************/ -.o_preview_image img { +.o_preview_image { position: absolute; + display: flex; height: 100%; - width: auto; - margin: auto; - top: 0; - bottom:0; - left: 0; - right:0; + width: 100%; +} + +.o_preview_image img { + margin: auto; + max-width: 100%; + max-height: 100%; } .iv-container { diff --git a/muk_web_preview_mail/LICENSE b/muk_web_preview_mail/LICENSE new file mode 100644 index 0000000..faf7bf4 --- /dev/null +++ b/muk_web_preview_mail/LICENSE @@ -0,0 +1,619 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/muk_web_preview_mail/README.md b/muk_web_preview_mail/README.md new file mode 100644 index 0000000..d422a74 --- /dev/null +++ b/muk_web_preview_mail/README.md @@ -0,0 +1,5 @@ +# MuK Preview Mail + +Extendes the Preview Dialog to support mails. Currently the following mail extensions are supported: + +* Microsoft Outlook Express Mail Message (*.eml, message/rfc822) \ No newline at end of file diff --git a/muk_web_preview_mail/__init__.py b/muk_web_preview_mail/__init__.py new file mode 100644 index 0000000..3c3d6e6 --- /dev/null +++ b/muk_web_preview_mail/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# 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 . +# +################################################################################### + +import controllers \ No newline at end of file diff --git a/muk_web_preview_mail/__manifest__.py b/muk_web_preview_mail/__manifest__.py new file mode 100644 index 0000000..6affd2d --- /dev/null +++ b/muk_web_preview_mail/__manifest__.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# 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 . +# +################################################################################### + +{ + "name": "MuK Preview Mail", + "summary": """Mail Preview""", + "description": """ + Extendes the Extendes the Preview Dialog to support mails. + Currently the following mail extensions are supported: + - Microsoft Outlook Express Mail Message (*.eml, message/rfc822) + """, + "version": "10.0.1.0.0", + "category": "Extra Tools", + "license": "AGPL-3", + "website": "http://www.mukit.at", + "author": "MuK IT", + "contributors": [ + "Mathias Markl ", + ], + "depends": [ + "mail", + "muk_web_preview", + ], + "data": [ + "template/assets.xml", + ], + "demo": [ + ], + "qweb": [ + "static/src/xml/*.xml", + ], + "images": [ + 'static/description/banner.png' + ], + "external_dependencies": { + "python": [ + 'requests', + 'cachetools' + ], + "bin": [], + }, + "application": False, + "installable": True, + +} \ No newline at end of file diff --git a/muk_web_preview_mail/controllers/__init__.py b/muk_web_preview_mail/controllers/__init__.py new file mode 100644 index 0000000..fa6e444 --- /dev/null +++ b/muk_web_preview_mail/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# 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 . +# +################################################################################### + +from . import main \ No newline at end of file diff --git a/muk_web_preview_mail/controllers/main.py b/muk_web_preview_mail/controllers/main.py new file mode 100644 index 0000000..465a941 --- /dev/null +++ b/muk_web_preview_mail/controllers/main.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# 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 . +# +################################################################################### + +import os +import json +import email +import base64 +import urllib +import urllib2 +import logging +import urlparse +import cStringIO +import mimetypes +import collections + +import werkzeug.exceptions + +from odoo import _ +from odoo import tools +from odoo import http +from odoo.http import request +from odoo.http import Response + +_logger = logging.getLogger(__name__) + +try: + import requests +except ImportError: + _logger.warn('Cannot `import requests`.') + +try: + from cachetools import TTLCache + mail_cache = TTLCache(maxsize=50, ttl=600) +except ImportError: + _logger.warn('Cannot `import cachetools`.') + +class Main(http.Controller): + + _Attachment = collections.namedtuple('Attachment', 'name mimetype extension url info') + + @http.route('/web/preview/converter/mail', auth="user", type='http') + def parse_mail(self, url, attachment=None, force_compute=False, **kw): + try: + message = mail_cache[url] if mail_cache and not force_compute else None + except KeyError: + message = None + if not message: + if not bool(urlparse.urlparse(url).netloc): + url_parts = url.split('?') + path = url_parts[0] + query_string = url_parts[1] if len(url_parts) > 1 else None + router = request.httprequest.app.get_db_router(request.db).bind('') + match = router.match(path, query_args=query_string) + method = router.match(path, query_args=query_string)[0] + params = dict(urlparse.parse_qsl(query_string)) + if len(match) > 1: + params.update(match[1]) + response = method(**params) + if not response.status_code == 200: + return self._make_error_response(response.status_code,response.description if hasattr(response, 'description') else _("Unknown Error")) + else: + if response.headers['content-type'] == 'message/rfc822': + message = request.env['mail.thread'].message_parse(response.data, False) + else: + return werkzeug.exceptions.BadRequest(_("Unparsable message! The file has to be of type: message/rfc822")) + else: + if requests: + try: + response = requests.get(url) + if response.headers['content-type'] == 'message/rfc822': + message = request.env['mail.thread'].message_parse(response.content, False) + else: + return werkzeug.exceptions.BadRequest(_("Unparsable message! The file has to be of type: message/rfc822")) + except requests.exceptions.RequestException as exception: + return self._make_error_response(exception.response.status_code, exception.response.reason or _("Unknown Error")) + else: + return werkzeug.exceptions.InternalServerError(_("To parse emails the Python library requests needs to be installed." + + "Please contact your system administrator.")) + mail_cache[url] = message.copy() + return self._make_parse_response(request.httprequest.url, message, attachment) + + def _set_query_parameter(self, url, param_name, param_value): + scheme, netloc, path, query_string, fragment = urlparse.urlsplit(url) + query_params = urlparse.parse_qs(query_string) + query_params[param_name] = [param_value] + new_query_string = urllib.urlencode(query_params, doseq=True) + return urlparse.urlunsplit((scheme, netloc, path, new_query_string, fragment)) + + def _make_error_response(self, status, message): + exception = werkzeug.exceptions.HTTPException() + exception.code = status + exception.description = message + return exception + + def _make_attachment_response(self, file, filename): + headers = [('Content-Type', mimetypes.guess_type(urllib.pathname2url(filename))[0]), + ('Content-Disposition', 'attachment;filename={};'.format(filename)), + ('Content-Length', len(file))] + return request.make_response(file, headers) + + def _make_parse_response(self, url, message, attachment): + if attachment: + for file in message["attachments"]: + if file.fname == attachment: + return self._make_attachment_response(file.content, file.fname) + else: + attachments = [] + for file in message["attachments"]: + mimetype = mimetypes.guess_type(urllib.pathname2url(file.fname))[0] + extension = os.path.splitext(file.fname)[1] + link = self._set_query_parameter(url, "attachment", file.fname) + attachments.append(self._Attachment(file.fname, mimetype, extension, link, file.info)) + message["attachments"] = attachments + return Response(json.dumps(message), content_type='application/json;charset=utf-8', status=200) \ No newline at end of file diff --git a/muk_web_preview_mail/static/description/banner.png b/muk_web_preview_mail/static/description/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a9cb9584dd71c2a934442105b85997e9f43df4ad GIT binary patch literal 41876 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 U=1BU}odZ5ZU6M|L)~TR>0n1!HE&u=k literal 0 HcmV?d00001 diff --git a/muk_web_preview_mail/static/description/icon.png b/muk_web_preview_mail/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d5251b603484ceb8b8089df96731cabb270e99d9 GIT binary patch literal 9610 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 +
+

Preview Mail

+

Preview your mails directly in Odoo.

+

MuK IT GmbH - + www.mukit.at

+
+ +
+
+ + +
+
+
+

Overview

+

Extendes the Preview Dialog to support mails. + Currently the following mail extensions are supported:

+

+ Microsoft Outlook + Express Mail Message (*.eml, message/rfc822) +

+
+
+
+ +
+

Help and Support

+
+ +
\ No newline at end of file diff --git a/muk_web_preview_mail/static/description/logo.png b/muk_web_preview_mail/static/description/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9427ce33ea36c2ec961356d01d612bae02d48ce2 GIT binary patch literal 38064 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 literal 0 HcmV?d00001 diff --git a/muk_web_preview_mail/static/description/screenshot.png b/muk_web_preview_mail/static/description/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee5286db8067c149c1e71d44a12539b53ec81dd GIT binary patch literal 75123 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 literal 0 HcmV?d00001 diff --git a/muk_web_preview_mail/static/src/js/preview_generator.js b/muk_web_preview_mail/static/src/js/preview_generator.js new file mode 100644 index 0000000..87e3ef7 --- /dev/null +++ b/muk_web_preview_mail/static/src/js/preview_generator.js @@ -0,0 +1,136 @@ +/********************************************************************************** +* +* 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_preview_mail.PreviewGenerator', function (require) { +"use strict"; + +var core = require('web.core'); + +var PreviewHandler = require('muk_preview.PreviewHandler'); +var PreviewGenerator = require('muk_preview.PreviewGenerator'); + +var QWeb = core.qweb; +var _t = core._t; + +var MailHandler = PreviewHandler.extend({ + checkExtension: function(extension) { + return ['.eml', 'eml'].includes(extension); + }, + checkType: function(mimetype) { + return ['message/rfc822'].includes(mimetype); + }, + createHtml: function(url, mimetype, extension, title) { + var self = this; + var result = $.Deferred(); + var $content = $(QWeb.render('MailHTMLContent')); + $.ajax({ + url: '/web/preview/converter/mail', + dataType: "json", + data: { + url: url, + }, + success: function(mail) { + $content.find('.mail-loader').hide(); + $content.find('.mail-container').show(); + $content.find('.reply').click(function() { + $('.modal').modal('hide'); + self.widget.do_action({ + type: 'ir.actions.act_window', + res_model: 'mail.mail', + views: [[false, 'form']], + context: { + default_subject: _t("Re: " + mail.subject), + default_email_to: mail.from + }, + }); + }); + $content.find('#subject').text(mail.subject); + $content.find('#meta-to').text(mail.to); + $content.find('#meta-cc').text(mail.cc); + $content.find('#meta-from').text(mail.from); + $content.find('#meta-date').text(mail.date); + mail.body = mail.body.replace(/cid:(\w|\d)+.\w+/g, function(cid) { + var attachments = $.grep(mail.attachments, function(attachment) { + return attachment[4].cid && attachment[4].cid.includes(cid.substring(4, cid.length)); + }); + return attachments[0][3]; + }); + $content.find('#body').html(mail.body); + _.each(mail.attachments, function(attachment, index, attachments) { + if(!attachment[4].cid) { + var $download = $(''); + $download.addClass('fa fa-download'); + $download.css('cursor', 'pointer'); + $download.data('toggle', 'tooltip'); + $download.data('placement', 'top'); + $download.data('url', attachment[3]); + $download.attr('title', _t("Download!")); + $download.tooltip(); + $download.click(function(e) { + window.location = $(e.target).data('url'); + }); + var $tab = $(''); + $tab.attr('href', '#attachment-' + index); + $tab.attr('aria-controls', 'attachment-' + index); + $tab.attr('role', 'tab'); + $tab.attr('data-toggle', 'tab'); + $tab.append($download); + $tab.append($('').text(attachment[0])); + $content.find('.nav-tabs').append($('
  • ').append($tab)); + $tab.click(function(e) { + var $target = $content.find($(e.currentTarget).attr('href')); + if(!$target.data('loaded')) { + $target.data('loaded', true); + PreviewGenerator.createPreview(self, $target.data('url'), $target.data('mimetype'), + $target.data('extension'), $target.data('title')).then(function($preview) { + $target.append($preview); + }); + } + }); + var $pane = $('
    '); + $pane.addClass('tab-pane attachment-container'); + $pane.attr('id', 'attachment-' + index); + $pane.data('loaded', false); + $pane.data('url', attachment[3]); + $pane.data('mimetype', attachment[1]); + $pane.data('extension', attachment[2]); + $pane.data('title', attachment[0]); + $content.find('.tab-content').append($pane); + } + }); + }, + error: function(request, status, error) { + console.error(request.responseText); + } + }); + result.resolve($content); + return $.when(result); + }, +}); + +PreviewGenerator.include({ + init: function(widget, additional_handler) { + this._super(widget, additional_handler); + this.handler = _.extend(this.handler, { + "MailHandler": new MailHandler(widget) + }); + }, +}); + +}); \ No newline at end of file diff --git a/muk_web_preview_mail/static/src/less/preview_content.less b/muk_web_preview_mail/static/src/less/preview_content.less new file mode 100644 index 0000000..3a2910a --- /dev/null +++ b/muk_web_preview_mail/static/src/less/preview_content.less @@ -0,0 +1,231 @@ +/********************************************************************************** +* +* 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 . +* +**********************************************************************************/ + +.o_preview_mail { + position: absolute; + width: 100%; + height: 100%; + + .mail-container { + display: none; + + .meta-panel { + height: 158px; + padding: 5px 25px 0 25px; + + .meta-table { + margin-bottom: 10px ! important; + + .meta-tag { + width: 25px; + } + } + + .meta-table > tbody > tr { + border-top: 1px solid @gray-light; + } + + .meta-table > tbody > tr:first-child { + border-top: 0; + } + + .meta-table > tbody > tr > td { + border-top: 0; + padding: 3px 8px 3px 8px; + } + } + + /* Based on Bootstrap Line Tabs by @keenthemes, Licensed under MIT */ + .content-panel { + padding: 0 10px 10px 10px; + + .tab-line > .nav-tabs { + border: none; + margin: 0px; + } + + .tab-line > .nav-tabs > li { + margin-right: 2px; + } + + .tab-line > .nav-tabs > li > a { + border: 0; + margin-right: 0; + color: @gray; + } + + .tab-line > .nav-tabs > li > a > span { + padding-left: 5px; + } + + .tab-line > .nav-tabs > li > a > i { + font-size: 15px; + } + + .tab-line > .nav-tabs > li.open, + .tab-line > .nav-tabs > li:hover { + border-bottom: 4px solid lighten(@brand-primary, 20%); + } + + .tab-line > .nav-tabs > li.open > a, + .tab-line > .nav-tabs > li:hover > a { + border: 0; + color: @gray-light; + background: none ! important; + } + + .tab-line > .nav-tabs > li.open .dropdown-menu, + .tab-line > .nav-tabs > li:hover .dropdown-menu { + margin-top: 0px; + } + + .tab-line > .nav-tabs > li.active { + position: relative; + border-bottom: 4px solid @brand-primary; + } + + .tab-line > .nav-tabs > li.active > a { + border: 0; + color: @gray-dark; + } + + .tab-line > .tab-content { + border: 0; + border-top: 1px solid #eee; + margin-top: -3px; + padding: 15px 0; + } + + .attachment-container { + position: absolute; + width: calc(~'100% - 20px'); + height: calc(~'100% - 215px'); + } + } + } + + /* Based on a CodePen Snippet by Dave McCarthy */ + .mail-loader { + height: 20px; + width: 250px; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + + .loader--dot { + animation-name: loader; + animation-timing-function: ease-in-out; + animation-duration: 3s; + animation-iteration-count: infinite; + height: 20px; + width: 20px; + border-radius: 100%; + background-color: black; + position: absolute; + border: 2px solid white; + } + + .loader--dot:first-child { + background-color: #8cc759; + animation-delay: 0.5s; + } + + .loader--dot:nth-child(2) { + background-color: #8c6daf; + animation-delay: 0.4s; + } + + .loader--dot:nth-child(3) { + background-color: #ef5d74; + animation-delay: 0.3s; + } + + .loader--dot:nth-child(4) { + background-color: #f9a74b; + animation-delay: 0.2s; + } + + .loader--dot:nth-child(5) { + background-color: #60beeb; + animation-delay: 0.1s; + } + + .loader--dot:nth-child(6) { + background-color: #fbef5a; + animation-delay: 0s; + } + + .loader--text { + position: absolute; + top: 200%; + left: 0; + right: 0; + width: 4rem; + margin: auto; + } + + .loader--text:after { + content: "Loading"; + font-weight: bold; + animation-name: loading-text; + animation-duration: 3s; + animation-iteration-count: infinite; + } + + @keyframes loader { + 15% { + transform: translateX(0); + } + + 45% { + transform: translateX(230px); + } + + 65% { + transform: translateX(230px); + } + + 95% { + transform: translateX(0); + } + } + + @keyframes loading-text { + 0% { + content: "Loading"; + } + + 25% { + content: "Loading."; + } + + 50% { + content: "Loading.."; + } + + 75% { + content: "Loading..."; + } + } + } +} + diff --git a/muk_web_preview_mail/static/src/xml/preview_content.xml b/muk_web_preview_mail/static/src/xml/preview_content.xml new file mode 100644 index 0000000..247a50f --- /dev/null +++ b/muk_web_preview_mail/static/src/xml/preview_content.xml @@ -0,0 +1,77 @@ + + + + + +