From bf9bb582b95624a20d394e082e452afc81626236 Mon Sep 17 00:00:00 2001 From: Mathias Markl Date: Thu, 21 Sep 2017 12:00:52 +0200 Subject: [PATCH] update --- muk_web_view_hierarchy/LICENSE | 619 +++++++++++++++++ muk_web_view_hierarchy/README.md | 3 + muk_web_view_hierarchy/__init__.py | 23 + muk_web_view_hierarchy/__manifest__.py | 59 ++ muk_web_view_hierarchy/models/__init__.py | 24 + muk_web_view_hierarchy/models/ir_actions.py | 32 + muk_web_view_hierarchy/models/ir_ui_view.py | 32 + .../static/description/banner.png | Bin 0 -> 41364 bytes .../static/description/icon.png | Bin 0 -> 7808 bytes .../static/description/index.html | 35 + .../static/description/logo.png | Bin 0 -> 38064 bytes .../static/description/screenshot.png | Bin 0 -> 8461 bytes .../jquery-treetable/css/jquery.treetable.css | 28 + .../jquery-treetable/js/jquery.treetable.js | 629 ++++++++++++++++++ .../static/src/js/view_hierarchy.js | 110 +++ .../static/src/xml/base.xml | 58 ++ muk_web_view_hierarchy/template/assets.xml | 32 + muk_web_view_hierarchy/tools/__init__.py | 23 + .../tools/view_validation.py | 36 + 19 files changed, 1743 insertions(+) create mode 100644 muk_web_view_hierarchy/LICENSE create mode 100644 muk_web_view_hierarchy/README.md create mode 100644 muk_web_view_hierarchy/__init__.py create mode 100644 muk_web_view_hierarchy/__manifest__.py create mode 100644 muk_web_view_hierarchy/models/__init__.py create mode 100644 muk_web_view_hierarchy/models/ir_actions.py create mode 100644 muk_web_view_hierarchy/models/ir_ui_view.py create mode 100644 muk_web_view_hierarchy/static/description/banner.png create mode 100644 muk_web_view_hierarchy/static/description/icon.png create mode 100644 muk_web_view_hierarchy/static/description/index.html create mode 100644 muk_web_view_hierarchy/static/description/logo.png create mode 100644 muk_web_view_hierarchy/static/description/screenshot.png create mode 100644 muk_web_view_hierarchy/static/lib/jquery-treetable/css/jquery.treetable.css create mode 100644 muk_web_view_hierarchy/static/lib/jquery-treetable/js/jquery.treetable.js create mode 100644 muk_web_view_hierarchy/static/src/js/view_hierarchy.js create mode 100644 muk_web_view_hierarchy/static/src/xml/base.xml create mode 100644 muk_web_view_hierarchy/template/assets.xml create mode 100644 muk_web_view_hierarchy/tools/__init__.py create mode 100644 muk_web_view_hierarchy/tools/view_validation.py diff --git a/muk_web_view_hierarchy/LICENSE b/muk_web_view_hierarchy/LICENSE new file mode 100644 index 0000000..faf7bf4 --- /dev/null +++ b/muk_web_view_hierarchy/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_view_hierarchy/README.md b/muk_web_view_hierarchy/README.md new file mode 100644 index 0000000..b72809d --- /dev/null +++ b/muk_web_view_hierarchy/README.md @@ -0,0 +1,3 @@ +# MuK Web Client Refresh + +Adds a refresh channel to the web client. By sending a message to this channel, the corresponding view is reloaded. \ No newline at end of file diff --git a/muk_web_view_hierarchy/__init__.py b/muk_web_view_hierarchy/__init__.py new file mode 100644 index 0000000..db6dffe --- /dev/null +++ b/muk_web_view_hierarchy/__init__.py @@ -0,0 +1,23 @@ +# -*- 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 tools +import models \ No newline at end of file diff --git a/muk_web_view_hierarchy/__manifest__.py b/muk_web_view_hierarchy/__manifest__.py new file mode 100644 index 0000000..30c280d --- /dev/null +++ b/muk_web_view_hierarchy/__manifest__.py @@ -0,0 +1,59 @@ +# -*- 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 Web View Hierarchy", + "summary": """Hierarchy View""", + "description": """ + + """, + "version": "10.0.1.0.1", + "category": "Extra Tools", + "license": "AGPL-3", + "website": "http://www.mukit.at", + "author": "MuK IT", + "contributors": [ + "Mathias Markl ", + ], + "depends": [ + "base", + "base_import", + "web", + ], + "data": [ + "template/assets.xml" + ], + "demo": [ + ], + "qweb": [ + "static/src/xml/*.xml", + ], + "images": [ + 'static/description/banner.png' + ], + "external_dependencies": { + "python": [], + "bin": [], + }, + "application": False, + "installable": True, + +} \ No newline at end of file diff --git a/muk_web_view_hierarchy/models/__init__.py b/muk_web_view_hierarchy/models/__init__.py new file mode 100644 index 0000000..e9486f5 --- /dev/null +++ b/muk_web_view_hierarchy/models/__init__.py @@ -0,0 +1,24 @@ +# -*- 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 ir_actions +from . import ir_ui_view + diff --git a/muk_web_view_hierarchy/models/ir_actions.py b/muk_web_view_hierarchy/models/ir_actions.py new file mode 100644 index 0000000..920cff2 --- /dev/null +++ b/muk_web_view_hierarchy/models/ir_actions.py @@ -0,0 +1,32 @@ +# -*- 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 logging + +from odoo import models, api, fields + +_logger = logging.getLogger(__name__) + +class ActWindowView(models.Model): + _inherit = 'ir.actions.act_window.view' + + view_mode = fields.Selection( + selection_add=[('hierarchy', "Hierarchy")]) \ No newline at end of file diff --git a/muk_web_view_hierarchy/models/ir_ui_view.py b/muk_web_view_hierarchy/models/ir_ui_view.py new file mode 100644 index 0000000..1f3983f --- /dev/null +++ b/muk_web_view_hierarchy/models/ir_ui_view.py @@ -0,0 +1,32 @@ +# -*- 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 logging + +from odoo import models, api, fields + +_logger = logging.getLogger(__name__) + +class View(models.Model): + _inherit = 'ir.ui.view' + + type = fields.Selection( + selection_add=[('hierarchy', "Hierarchy")]) \ No newline at end of file diff --git a/muk_web_view_hierarchy/static/description/banner.png b/muk_web_view_hierarchy/static/description/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4593446f48e54971c24124d8b3eabc1f21c13c GIT binary patch literal 41364 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 literal 0 HcmV?d00001 diff --git a/muk_web_view_hierarchy/static/description/icon.png b/muk_web_view_hierarchy/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..490e1f6ff2654bc6e94f4dcbf621ca7fedcb3fb4 GIT binary patch literal 7808 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 E04q$|-~a#s literal 0 HcmV?d00001 diff --git a/muk_web_view_hierarchy/static/description/index.html b/muk_web_view_hierarchy/static/description/index.html new file mode 100644 index 0000000..46c7dac --- /dev/null +++ b/muk_web_view_hierarchy/static/description/index.html @@ -0,0 +1,35 @@ +
+
+

Auto Refresh

+

View Refresh Channel

+

MuK IT GmbH - + www.mukit.at

+
+ +
+
+
+ +
+
+
+

Overview

+

Allows the creation of rules to trigger a view + refresh automatically.

+
+
+
+ +
+

Help and Support

+ + +
\ No newline at end of file diff --git a/muk_web_view_hierarchy/static/description/logo.png b/muk_web_view_hierarchy/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_view_hierarchy/static/description/screenshot.png b/muk_web_view_hierarchy/static/description/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..87baa07c5bebc8c6a41a1b26576d022e73fe8b0a GIT binary patch literal 8461 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 0 || this.row.data(this.settings.branchAttr) === true) { + return true; + } else { + return false; + } + }; + + Node.prototype.updateBranchLeafClass = function(){ + this.row.removeClass('branch'); + this.row.removeClass('leaf'); + this.row.addClass(this.isBranchNode() ? 'branch' : 'leaf'); + }; + + Node.prototype.level = function() { + return this.ancestors().length; + }; + + Node.prototype.parentNode = function() { + if (this.parentId != null) { + return this.tree[this.parentId]; + } else { + return null; + } + }; + + Node.prototype.removeChild = function(child) { + var i = $.inArray(child, this.children); + return this.children.splice(i, 1) + }; + + Node.prototype.render = function() { + var handler, + settings = this.settings, + target; + + if (settings.expandable === true && this.isBranchNode()) { + handler = function(e) { + $(this).parents("table").treetable("node", $(this).parents("tr").data(settings.nodeIdAttr)).toggle(); + return e.preventDefault(); + }; + + this.indenter.html(this.expander); + target = settings.clickableNodeNames === true ? this.treeCell : this.expander; + + target.off("click.treetable").on("click.treetable", handler); + target.off("keydown.treetable").on("keydown.treetable", function(e) { + if (e.keyCode == 13) { + handler.apply(this, [e]); + } + }); + } + + this.indenter[0].style.paddingLeft = "" + (this.level() * settings.indent) + "px"; + + return this; + }; + + Node.prototype.reveal = function() { + if (this.parentId != null) { + this.parentNode().reveal(); + } + return this.expand(); + }; + + Node.prototype.setParent = function(node) { + if (this.parentId != null) { + this.tree[this.parentId].removeChild(this); + } + this.parentId = node.id; + this.row.data(this.settings.parentIdAttr, node.id); + return node.addChild(this); + }; + + Node.prototype.show = function() { + if (!this.initialized) { + this._initialize(); + } + this.row.show(); + if (this.expanded()) { + this._showChildren(); + } + return this; + }; + + Node.prototype.toggle = function() { + if (this.expanded()) { + this.collapse(); + } else { + this.expand(); + } + return this; + }; + + Node.prototype._hideChildren = function() { + var child, _i, _len, _ref, _results; + _ref = this.children; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + child = _ref[_i]; + _results.push(child.hide()); + } + return _results; + }; + + Node.prototype._initialize = function() { + var settings = this.settings; + + this.render(); + + if (settings.expandable === true && settings.initialState === "collapsed") { + this.collapse(); + } else { + this.expand(); + } + + if (settings.onNodeInitialized != null) { + settings.onNodeInitialized.apply(this); + } + + return this.initialized = true; + }; + + Node.prototype._showChildren = function() { + var child, _i, _len, _ref, _results; + _ref = this.children; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + child = _ref[_i]; + _results.push(child.show()); + } + return _results; + }; + + return Node; + })(); + + Tree = (function() { + function Tree(table, settings) { + this.table = table; + this.settings = settings; + this.tree = {}; + + // Cache the nodes and roots in simple arrays for quick access/iteration + this.nodes = []; + this.roots = []; + } + + Tree.prototype.collapseAll = function() { + var node, _i, _len, _ref, _results; + _ref = this.nodes; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + node = _ref[_i]; + _results.push(node.collapse()); + } + return _results; + }; + + Tree.prototype.expandAll = function() { + var node, _i, _len, _ref, _results; + _ref = this.nodes; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + node = _ref[_i]; + _results.push(node.expand()); + } + return _results; + }; + + Tree.prototype.findLastNode = function (node) { + if (node.children.length > 0) { + return this.findLastNode(node.children[node.children.length - 1]); + } else { + return node; + } + }; + + Tree.prototype.loadRows = function(rows) { + var node, row, i; + + if (rows != null) { + for (i = 0; i < rows.length; i++) { + row = $(rows[i]); + + if (row.data(this.settings.nodeIdAttr) != null) { + node = new Node(row, this.tree, this.settings); + this.nodes.push(node); + this.tree[node.id] = node; + + if (node.parentId != null && this.tree[node.parentId]) { + this.tree[node.parentId].addChild(node); + } else { + this.roots.push(node); + } + } + } + } + + for (i = 0; i < this.nodes.length; i++) { + node = this.nodes[i].updateBranchLeafClass(); + } + + return this; + }; + + Tree.prototype.move = function(node, destination) { + // Conditions: + // 1: +node+ should not be inserted as a child of +node+ itself. + // 2: +destination+ should not be the same as +node+'s current parent (this + // prevents +node+ from being moved to the same location where it already + // is). + // 3: +node+ should not be inserted in a location in a branch if this would + // result in +node+ being an ancestor of itself. + var nodeParent = node.parentNode(); + if (node !== destination && destination.id !== node.parentId && $.inArray(node, destination.ancestors()) === -1) { + node.setParent(destination); + this._moveRows(node, destination); + + // Re-render parentNode if this is its first child node, and therefore + // doesn't have the expander yet. + if (node.parentNode().children.length === 1) { + node.parentNode().render(); + } + } + + if(nodeParent){ + nodeParent.updateBranchLeafClass(); + } + if(node.parentNode()){ + node.parentNode().updateBranchLeafClass(); + } + node.updateBranchLeafClass(); + return this; + }; + + Tree.prototype.removeNode = function(node) { + // Recursively remove all descendants of +node+ + this.unloadBranch(node); + + // Remove node from DOM () + node.row.remove(); + + // Remove node from parent children list + if (node.parentId != null) { + node.parentNode().removeChild(node); + } + + // Clean up Tree object (so Node objects are GC-ed) + delete this.tree[node.id]; + this.nodes.splice($.inArray(node, this.nodes), 1); + + return this; + } + + Tree.prototype.render = function() { + var root, _i, _len, _ref; + _ref = this.roots; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + root = _ref[_i]; + + // Naming is confusing (show/render). I do not call render on node from + // here. + root.show(); + } + return this; + }; + + Tree.prototype.sortBranch = function(node, sortFun) { + // First sort internal array of children + node.children.sort(sortFun); + + // Next render rows in correct order on page + this._sortChildRows(node); + + return this; + }; + + Tree.prototype.unloadBranch = function(node) { + // Use a copy of the children array to not have other functions interfere + // with this function if they manipulate the children array + // (eg removeNode). + var children = node.children.slice(0), + i; + + for (i = 0; i < children.length; i++) { + this.removeNode(children[i]); + } + + // Reset node's collection of children + node.children = []; + + node.updateBranchLeafClass(); + + return this; + }; + + Tree.prototype._moveRows = function(node, destination) { + var children = node.children, i; + + node.row.insertAfter(destination.row); + node.render(); + + // Loop backwards through children to have them end up on UI in correct + // order (see #112) + for (i = children.length - 1; i >= 0; i--) { + this._moveRows(children[i], node); + } + }; + + // Special _moveRows case, move children to itself to force sorting + Tree.prototype._sortChildRows = function(parentNode) { + return this._moveRows(parentNode, parentNode); + }; + + return Tree; + })(); + + // jQuery Plugin + methods = { + init: function(options, force) { + var settings; + + settings = $.extend({ + branchAttr: "ttBranch", + clickableNodeNames: false, + column: 0, + columnElType: "td", // i.e. 'td', 'th' or 'td,th' + expandable: false, + expanderTemplate: " ", + indent: 19, + indenterTemplate: "", + initialState: "collapsed", + nodeIdAttr: "ttId", // maps to data-tt-id + parentIdAttr: "ttParentId", // maps to data-tt-parent-id + stringExpand: "Expand", + stringCollapse: "Collapse", + + // Events + onInitialized: null, + onNodeCollapse: null, + onNodeExpand: null, + onNodeInitialized: null + }, options); + + return this.each(function() { + var el = $(this), tree; + + if (force || el.data("treetable") === undefined) { + tree = new Tree(this, settings); + tree.loadRows(this.rows).render(); + + el.addClass("treetable").data("treetable", tree); + + if (settings.onInitialized != null) { + settings.onInitialized.apply(tree); + } + } + + return el; + }); + }, + + destroy: function() { + return this.each(function() { + return $(this).removeData("treetable").removeClass("treetable"); + }); + }, + + collapseAll: function() { + this.data("treetable").collapseAll(); + return this; + }, + + collapseNode: function(id) { + var node = this.data("treetable").tree[id]; + + if (node) { + node.collapse(); + } else { + throw new Error("Unknown node '" + id + "'"); + } + + return this; + }, + + expandAll: function() { + this.data("treetable").expandAll(); + return this; + }, + + expandNode: function(id) { + var node = this.data("treetable").tree[id]; + + if (node) { + if (!node.initialized) { + node._initialize(); + } + + node.expand(); + } else { + throw new Error("Unknown node '" + id + "'"); + } + + return this; + }, + + loadBranch: function(node, rows) { + var settings = this.data("treetable").settings, + tree = this.data("treetable").tree; + + // TODO Switch to $.parseHTML + rows = $(rows); + + if (node == null) { // Inserting new root nodes + this.append(rows); + } else { + var lastNode = this.data("treetable").findLastNode(node); + rows.insertAfter(lastNode.row); + } + + this.data("treetable").loadRows(rows); + + // Make sure nodes are properly initialized + rows.filter("tr").each(function() { + tree[$(this).data(settings.nodeIdAttr)].show(); + }); + + if (node != null) { + // Re-render parent to ensure expander icon is shown (#79) + node.render().expand(); + } + + return this; + }, + + move: function(nodeId, destinationId) { + var destination, node; + + node = this.data("treetable").tree[nodeId]; + destination = this.data("treetable").tree[destinationId]; + this.data("treetable").move(node, destination); + + return this; + }, + + node: function(id) { + return this.data("treetable").tree[id]; + }, + + removeNode: function(id) { + var node = this.data("treetable").tree[id]; + + if (node) { + this.data("treetable").removeNode(node); + } else { + throw new Error("Unknown node '" + id + "'"); + } + + return this; + }, + + reveal: function(id) { + var node = this.data("treetable").tree[id]; + + if (node) { + node.reveal(); + } else { + throw new Error("Unknown node '" + id + "'"); + } + + return this; + }, + + sortBranch: function(node, columnOrFunction) { + var settings = this.data("treetable").settings, + prepValue, + sortFun; + + columnOrFunction = columnOrFunction || settings.column; + sortFun = columnOrFunction; + + if ($.isNumeric(columnOrFunction)) { + sortFun = function(a, b) { + var extractValue, valA, valB; + + extractValue = function(node) { + var val = node.row.find("td:eq(" + columnOrFunction + ")").text(); + // Ignore trailing/leading whitespace and use uppercase values for + // case insensitive ordering + return $.trim(val).toUpperCase(); + } + + valA = extractValue(a); + valB = extractValue(b); + + if (valA < valB) return -1; + if (valA > valB) return 1; + return 0; + }; + } + + this.data("treetable").sortBranch(node, sortFun); + return this; + }, + + unloadBranch: function(node) { + this.data("treetable").unloadBranch(node); + return this; + } + }; + + $.fn.treetable = function(method) { + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method === 'object' || !method) { + return methods.init.apply(this, arguments); + } else { + return $.error("Method " + method + " does not exist on jQuery.treetable"); + } + }; + + // Expose classes to world + this.TreeTable || (this.TreeTable = {}); + this.TreeTable.Node = Node; + this.TreeTable.Tree = Tree; +})(jQuery); diff --git a/muk_web_view_hierarchy/static/src/js/view_hierarchy.js b/muk_web_view_hierarchy/static/src/js/view_hierarchy.js new file mode 100644 index 0000000..0d1b8c6 --- /dev/null +++ b/muk_web_view_hierarchy/static/src/js/view_hierarchy.js @@ -0,0 +1,110 @@ +odoo.define('muk_dms_views.hierarchy', function(require) { +"use strict"; + +var core = require('web.core'); +var data = require('web.data'); +var formats = require('web.formats'); +var pyeval = require('web.pyeval'); +var session = require('web.session'); +var utils = require('web.utils'); +var common = require('web.list_common'); +var data_manager = require('web.data_manager'); + +var View = require('web.View'); +var ListView = require('web.ListView'); +var DataExport = require('web.DataExport'); +var Sidebar = require('web.Sidebar'); +var Model = require('web.DataModel'); +var Pager = require('web.Pager'); + +var _t = core._t; +var _lt = core._lt; +var QWeb = core.qweb; + +var HierarchyView = ListView.extend({ + _template: 'HierarchyView', + display_name: _lt("Hierarchy"), + icon: 'fa-sitemap', + defaults: _.extend({}, View.prototype.defaults, { + // records can be selected one by one + selectable: true, + // list rows can be deleted + deletable: false, + // whether the column headers should be displayed + header: true, + // display addition button, with that label + addable: _lt("Create"), + // whether the list view can be sorted, note that once a view has been + // sorted it can not be reordered anymore + sortable: true, + // whether the view rows can be reordered (via vertical drag & drop) + reorderable: true, + action_buttons: true, + //whether the editable property of the view has to be disabled + disable_editable_mode: false, + import_enabled: true, + }), + + init: function() { + this._super.apply(this, arguments); + + }, + + do_load_state: function(state, warm) { + console.log("4444"); + return this._super.apply(this, arguments); + }, + + load_list: function() { + var self = this; + console.log("H§$"); + return this._super.apply(this, arguments); + }, + + reload_content: synchronized(function () { + var self = this; + this.setup_columns(this.fields_view.fields, this.grouped); + this.$('tbody .o_list_record_selector input').prop('checked', false); + this.records.reset(); + var reloaded = $.Deferred(); + this.groups.render(function () { + if (self.dataset.index === null) { + if (self.records.length) { + self.dataset.index = 0; + } + } else if (self.dataset.index >= self.records.length) { + self.dataset.index = self.records.length ? 0 : null; + } + self.load_list().then(function () { + if (!self.grouped && self.display_nocontent_helper()) { + self.no_result(); + } + reloaded.resolve(); + }); + }); + this.do_push_state({ + min: this.current_min, + limit: this._limit + }); + return reloaded.promise(); + }), + +}); + +core.view_registry.add('hierarchy', HierarchyView); + +function synchronized(fn) { + var fn_mutex = new utils.Mutex(); + return function () { + var obj = this; + var args = _.toArray(arguments); + return fn_mutex.exec(function () { + if (obj.isDestroyed()) { return $.when(); } + return fn.apply(obj, args); + }); + }; +} + +return HierarchyView; + +}); \ No newline at end of file diff --git a/muk_web_view_hierarchy/static/src/xml/base.xml b/muk_web_view_hierarchy/static/src/xml/base.xml new file mode 100644 index 0000000..1e02c1a --- /dev/null +++ b/muk_web_view_hierarchy/static/src/xml/base.xml @@ -0,0 +1,58 @@ + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ + +
+
+ +
\ No newline at end of file diff --git a/muk_web_view_hierarchy/template/assets.xml b/muk_web_view_hierarchy/template/assets.xml new file mode 100644 index 0000000..0fabfe9 --- /dev/null +++ b/muk_web_view_hierarchy/template/assets.xml @@ -0,0 +1,32 @@ + + + + + + +