diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..5cb8704 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,861 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +-------------------------------------------------------------------------------------------------------------------------- +APIs + +This project may include APIs to SAP or third party products or services. The use of these APIs, products and services may be subject to additional agreements. In no event shall the application of the Apache Software License, v.2 to this project grant any rights in or to these APIs, products or services that would alter, expand, be inconsistent with, or supersede any terms of these additional agreements. “API” means application programming interfaces, as well as their respective specifications and implementing code that allows other software products to communicate with or call on SAP or third party products or services (for example, SAP Enterprise Services, BAPIs, Idocs, RFCs and ABAP calls or other user exits) and may be made available through SAP or third party products, SDKs, documentation or other media. + + +------------------------------------------------------------------------------ +OpenUI5 SUBCOMPONENTS: + +OpenUI5 includes the following subcomponents that are subject to separate license terms. +Your use of these subcomponents is subject to the separate license terms applicable to +each subcomponent. + +Component: ace 1.2.6 +Licensor: Ajax.org B.V. +Website: https://ace.c9.io/ +License: BSD 3-clause "New" or "Revised" License +: Ajax.org B.V. +: Ajax.org B.V. + = 2010 + +Component: Array every Method +Licensor: Mozilla Developer Network +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#Polyfill +License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +Component: Array indexOf Method +Licensor: Mozilla Developer Network +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Polyfill +License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +Component: Array map Method +Licensor: Mozilla Developer Network +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Polyfill +License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +Component: Array reduce Method +Licensor: Mozilla Developer Network +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce#Polyfill +License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +Component: Array reduceRight Method +Licensor: Mozilla Developer Network +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight#Polyfill +License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +Component: blanket.js 1.1.5 +Licensor: Alex Seville +Website: http://blanketjs.org/ +License: MIT License + = 2013 +: Alex Seville + +Component: crossroads.js 0.12.0 +Licensor: Miller Medeiros +Website: http://github.com/millermedeiros/crossroads.js/ +License: MIT License + = unspecified + = Miller Medeiros + +Component: d3 3.4.12 +Licensor: Michael Bostock +Website: http://github.com/mbostock/d3/ +License: BSD 3-clause "New" or "Revised" License + = Michael Bostock + = Michael Bostock + = 2010-2014 + +Component: datajs - JavaScript Library for data-centric web applications 1.1.0 +Licensor: Microsoft +Website: http://datajs.codeplex.com/ +License: MIT License + = unspecified + = Microsoft + +Component: es6-promise 2.3.0 - a tiny implementation of Promises/A+. +Licensor: Jake Archibald +Website: https://github.com/jakearchibald/es6-promise +License: MIT License + = 2014 + = Yehuda Katz, Tom Dale, Stefan Penner, Jake Archibald and contributors + +Component: Flexie 1.0.3 +Licensor: Richard Herrera +Website: http://github.com/doctyper/flexie/ +License: MIT License + = 2010 + = Richard Herrera + +Component: Function.prototype.bind +Licensor: Mozilla Developer Network +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind +License: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +Component: Esprima +Licensor: Ariya Hidayat +Website: http://esprima.org/ +License: BSD 2-clause "Simplified" License + = 2011-2013 + = Ariya Hidayat and other contributors + = Ariya Hidayat and other contributors + +Component: google-caja Build 4884 +Licensor: Various +Website: http://code.google.com/p/google-caja/ +License: Apache License 2.0 + +Component: google-code-prettify 20130304 +Licensor: Various +Website: http://code.google.com/p/google-code-prettify/ +License: Apache License 2.0 + +Component: Handlebars 4.0.5 +Licensor: Yehuda Katz +Website: http://handlebarsjs.com/ +License: MIT License + = 2011-2015 + = Yehuda Katz + +Component: Hasher 1.2.0 +Licensor: Miller Medeiros +Website: http://github.com/millermedeiros/hasher +License: MIT License + = unspecified + = Miller Medeiros + +Component: iscroll 4.2.5 +Licensor: Matteo Spinelli +Website: http://github.com/cubiq/iscroll/ +License: MIT License + = 2008-2013 + = Matteo Spinelli + +Component: jQuery 2.2.3 +Licensor: jQuery Foundation and other contributors +Website: http://jquery.com/ +License: MIT License + = 2016 + = jQuery Foundation and other contributors + +Component: jQuery-UI 1.10.4 +Licensor: Paul Bakaus +Website: http://github.com/jquery/jquery-ui/ +License: MIT License + = 2014 + = Paul Bakaus + +Component: jQuery mobile 1.3.1 +Licensor: jQuery Foundation and other contributors +Website: http://jquerymobile.com/ +License: MIT License + = 2013 + = jQuery Foundation and other contributors + +Component: jquery-glob +Licensor: Software Freedom Conservancy, Inc. +Website: http://github.com/nje/jquery-globalize +License: MIT License + = unspecified + = Software Freedom Conservancy, Inc. + +Component: jquery-mobile 1.3.1 +Licensor: jQuery Foundation, Inc. and other contributors +Website: http://github.com/jquery/jquery-mobile/ +License: MIT License + = 2010, 2013 + = jQuery Foundation, Inc. and other contributors + +Component: jquery.fix.clone +Licensor: Spencer Tipping +Website: https://github.com/spencertipping/jquery.fix.clone +License: MIT License + = unspecified + = Spencer Tipping + +Component: js-signals 1.0.0 +Licensor: Miller Medeiros +Website: http://github.com/millermedeiros/js-signals/ +License: MIT License + = unspecified + = Miller Medeiros + +Component: JSON in JavaScript +Licensor: Douglas Crockford +Website: http://www.json.org/js.html +License: Public Domain + +Component: JSZip 2.2.0 +Licensor: Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso +Website: https://github.com/Stuk/jszip +License: MIT License + = 2009-2012 + = Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso + +Component: JUnit Reporter for QUnit +Licensor: jQuery Foundation and other contributors +Website: https://github.com/jquery/qunit-reporter-junit +License: MIT License + +Component: klay.js 0.4.1 +Licensor: Ulf Rueegg +Website: https://github.com/OpenKieler/klayjs +License: Eclipse Public License - v 1.0 + +Component: less.js 1.6.3 +Licensor: Alexis Sellier & The Core Less Team +Website: http://github.com/cloudhead/less.js/ +License: Apache License 2.0 + +Component: mobify.js 1.1 +Licensor: Mobify R&D Inc +Website: http://www.mobify.com/ +License: MIT License + = unspecified + = Mobify R&D Inc + +Component: mobiscroll 2.9.0 +Licensor: Mathias Bynens +Website: http://mobiscroll.codeplex.com/ +License: MIT License + = unspecified + = Mathias Bynens + +Component: node-lru-cache 2.7.3 - A cache object that deletes the least-recently-used items. +Licensor: Isaac Z. Schlueter and Contributors +Website: https://github.com/isaacs/node-lru-cache/blob/v2.7.3/ +License: ISC License + = 2015 + = Isaac Z. Schlueter and Contributors + +Component: punycode.js 1.2.3 +Licensor: Acid Media +Website: http://github.com/bestiejs/punycode.js/ +License: MIT License + = 2010 + = Acid Media + +Component: qunit 1.18.0 +Licensor: jQuery Foundation and other contributors +Website: http://github.com/jquery/qunit/ +License: MIT License + = 2006, 2014 + = jQuery Foundation and other contributors + +Component: qunit 2.3.2 +Licensor: jQuery Foundation and other contributors +Website: http://github.com/jquery/qunit/ +License: MIT License + = 2017 + = jQuery Foundation and other contributors + +Component: qunit composite 1.0.4 +Licensor: jQuery Foundation and other contributors +Website:https://github.com/JamesMGreene/qunit-composite +License: MIT License + = unspecified + = jQuery Foundation and other contributors + +Component: requirejs 2.1.8 +Licensor: The Dojo Foundation +Website: http://github.com/jrburke/requirejs/ +License: MIT License + = 2010-2011 + = The Dojo Foundation + +Component: sinon-qunit 2.0.0 +Licensor: Christian Johansen +Website: http://github.com/cjohansen/sinon-qunit/ +License: BSD 3-clause "New" or "Revised" License + = Christian Johansen + = Christian Johansen + = 2010-2011 + +Component: Sinon.JS 1.14.1 +Licensor: Christian Johansen +Website: http://github.com/cjohansen/Sinon.JS/ +License: BSD 3-clause "New" or "Revised" License + = Christian Johansen + = Christian Johansen + = 2010-2014 + +Component: SwipeView 1.0 +Licensor: Matteo Spinelli +Website: http://github.com/cubiq/SwipeView/ +License: MIT License + = 2012 + = Matteo Spinelli + +Component: TDOP +Licensor: Douglas Crockford +Website: https://github.com/douglascrockford/TDOP +License: Apache License 2.0, granted to SAP by Douglas Crockford + +Component: Unicode Common Locale Data Repository +Licensor: Unicode, Inc. +Website: http://cldr.unicode.org/ +License: Unicode, Inc. License Agreement - Data Files And Software (http://www.unicode.org/copyright.html) + +Component: unorm 1.3.3 +Licensor: Bjarke Walling +Website: http://github.com/walling/unorm/ +License: MIT License + = Bjarke Walling + = 2014 + +Component: URI.js 1.11.2 +Licensor: Rodney Rehm +Website: http://github.com/medialize/URI.js/ +License: MIT License + = unspecified + = Rodney Rehm + +Component: vkBeautify 0.99.00.beta +Licensor: Vadim Kiryukhin +Website: http://www.eslinstructor.net/vkbeautify/ +License: MIT License + = 2012 + = Vadim Kiryukhin + +Component: Zynga Scroller 1.2.1-0-g5d43806 +Licensor: Zynga Inc. +Website: http://zynga.github.com/scroller/ +License: MIT License + = 2011 + = Zynga Inc. + +Component: jalaali-js +Licensor: Behrang Noruzi Niya +Website: https://github.com/jalaali/jalaali-js/ +License: MIT License + = Behrang Noruzi Niya + = unspecified + + +-------------------------------------------------------------------------------------------------------------------------- + +CC0 1.0 Universal (CCO 1.0) Public Domain Dedication + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: +i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; +ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; +iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; +v. rights protecting the extraction, dissemination, use and reuse of data in a Work; +vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and +vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. +b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. +c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. +d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work + +-------------------------------------------------------------------------------------------------------------------------- + +The MIT License (MIT) + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +-------------------------------------------------------------------------------------------------------------------------- + +The BSD 3-Clause License + +Copyright (c) , +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------------------------------------------------- + +The BSD 2-Clause License + +Copyright (c) , +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------------------------------------------------- + +The ISC License + +Copyright (c) Year(s), Company or Person's Name + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-------------------------------------------------------------------------------------------------------------------------- + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and +b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' + from a Contributor if it was added to the Program by such Contributor + itself or anyone acting on such Contributor's behalf. Contributions do not + include additions to the Program which: (i) are separate modules of + software distributed in conjunction with the Program under their own + license agreement, and (ii) are not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code and + object code form. This patent license shall apply to the combination of + the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if a + third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. + +Each Contributor must identify itself as the originator of its Contribution, +if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, +if a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits and +other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such Commercial +Contributor in connection with its distribution of the Program in a commercial +product offering. The obligations in this section do not apply to any claims +or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: +a) promptly notify the Commercial Contributor in writing of such claim, and +b) allow the Commercial Contributor to control, and cooperate with the +Commercial Contributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such claim at +its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If +that Commercial Contributor then makes performance claims, or offers +warranties related to Product X, those performance claims and warranties are +such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a +court requires any other Contributor to pay any damages as a result, the +Commercial Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement , including but not limited to the +risks and costs of program errors, compliance with applicable laws, damage to +or loss of data, programs or equipment, and unavailability or interruption of +operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION +LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of the +remainder of the terms of this Agreement, and without further action by the +parties hereto, such provision shall be reformed to the minimum extent +necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted +under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to +time. No one other than the Agreement Steward has the right to modify this +Agreement. The Eclipse Foundation is the initial Agreement Steward. The +Eclipse Foundation may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement will +be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version of the +Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly +stated in Sections 2(a) and 2(b) above, Recipient receives no rights or +licenses to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in the +Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. + diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..2eeeb12 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1 @@ +Copyright (c) 2009-2017 SAP SE or an SAP affiliate company. \ No newline at end of file diff --git a/bower.json b/bower.json index 4080453..0ec27be 100644 --- a/bower.json +++ b/bower.json @@ -16,6 +16,6 @@ "url": "https://github.com/SAP/openui5.git" }, "dependencies": { - "openui5-sap.ui.core": "openui5/packaged-sap.ui.core" + "openui5-sap.ui.core": "openui5/packaged-sap.ui.core#1.50.0" } } \ No newline at end of file diff --git a/resources/sap/ui/rta/.library b/resources/sap/ui/rta/.library new file mode 100644 index 0000000..cf28467 --- /dev/null +++ b/resources/sap/ui/rta/.library @@ -0,0 +1,58 @@ + + + + sap.ui.rta + SAP SE + UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + 1.50.0 + + SAPUI5 library with RTA controls. + + + + sap.ui.core + + + sap.ui.layout + + + sap.m + + + sap.ui.fl + + + sap.ui.dt + + + + + + + + + + + + + + + + + + + + + + + CA-UI5-RTA + + + + diff --git a/resources/sap/ui/rta/ControlTreeModifier.js b/resources/sap/ui/rta/ControlTreeModifier.js new file mode 100644 index 0000000..5bbdbab --- /dev/null +++ b/resources/sap/ui/rta/ControlTreeModifier.js @@ -0,0 +1,327 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(["sap/ui/fl/changeHandler/JsControlTreeModifier"], function (JsControlTreeModifier) { + + "use strict"; + + /** + * Implementation of the RTA-specific functionality for the control tree modifier + * + * @class + * @extends sap.ui.fl.changehandler.jsControlTreeModifier + * + * @author SAP SE + * @version 1.50.0 + * + * @private + * @since 1.44 + * @alias sap.ui.rta.ControlTreeModifier + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + + /* Stack of reversals of previously executed operations, used to perform Undos + * e.g. "destroy" is the reversal of "create control" + */ + var _aUndoStack; + + var RtaControlTreeModifier = { + + /** + * Start recording operations + */ + startRecordingUndo : function() { + _aUndoStack = []; + }, + + /** + * Stop recording operations + * @return {Array} stack of recorded undo operations + */ + stopRecordingUndo : function() { + var aReturnUndoStack = _aUndoStack; + _aUndoStack = undefined; + return aReturnUndoStack; + }, + + /** + * Execute all recorded undo operations from stack + * @param {Array} aUndoStack stack of recorded undo operations + */ + performUndo : function(aUndoStack) { + while (aUndoStack.length) { + var oOperation = aUndoStack.pop(); + this[oOperation.name].apply(this, oOperation.properties); + } + }, + + /** + * Add an operation to the undo stack + * @param {string} sFunctionName The name of the function + * @param {any[]} aProperties The properties related to the function + */ + _saveUndoOperation : function(sFunctionName, aProperties) { + if (_aUndoStack) { + _aUndoStack.push({ + name : sFunctionName, + properties : aProperties + }); + } + }, + + /** + * Execute the visibility change from parent and record the opposite visibility as undo operation + * @override + */ + setVisible : function (oControl, bVisible) { + var bOldVisible = this.getVisible(oControl); + + var vReturnValue = JsControlTreeModifier.setVisible.apply(this, arguments); + + /* If the visibility changed, record the reversal as undo operation */ + if (bOldVisible !== this.getVisible(oControl)){ + this._saveUndoOperation("setVisible", [oControl, bOldVisible]); + } + + return vReturnValue; + }, + + /** + * Execute the setStashed method and record the opposite value for the undo operation + * The control can be a StashedControl ("placeholder") or a "real" control + * After the setStashed operation, the placeholder can create a real control with same ID + * Therefore we must save the previous ID in order to perform setStashed on this new control when executing the undo + * Real controls have getVisible; placeholders have getStashed. For real controls, we only manipulate the visibility, since + * once they are created, the stashing is not relevant anymore + * @override + */ + setStashed: function (oControl, bStashed) { + var bOldValue; + var vControlId = oControl.getId(); + if (oControl.getVisible){ + bOldValue = !oControl.getVisible(); + } else { + bOldValue = oControl.getStashed(); + } + + JsControlTreeModifier.setStashed.apply(this, arguments); + + var oSetControl = sap.ui.getCore().byId(vControlId); + + if (bOldValue !== bStashed) { + this._saveUndoOperation("setStashed", [oSetControl, !bStashed]); + } + }, + + /** + * Execute the bind property and record unbindProperty as undo operation if property was not previously bound + save property value + * If the property had a previous value, this value is restored with the undo + * @override + */ + bindProperty: function (oControl, sPropertyName, mBindingInfos) { + var mOldBindingInfos = oControl.getBindingInfo(sPropertyName); + var vOldValue; + + var oMetadata = oControl.getMetadata().getPropertyLikeSetting(sPropertyName); + if (oMetadata) { + var sPropertyGetter = oMetadata._sGetter; + vOldValue = oControl[sPropertyGetter](); + } + + JsControlTreeModifier.bindProperty.apply(this, arguments); + + if (mOldBindingInfos){ + this._saveUndoOperation("bindProperty", [oControl, sPropertyName, mOldBindingInfos]); + } else { + this._saveUndoOperation("unbindProperty", [oControl, sPropertyName]); + } + if (vOldValue) { + this._saveUndoOperation("setProperty", [oControl, sPropertyName, vOldValue]); + } + }, + + + /** + * Unbind a property and record bindProperty as undo operation + * @param {sap.ui.core.Control} oControl The control containing the property + * @param {string} sPropertyName The property to be unbound + */ + unbindProperty: function (oControl, sPropertyName) { + var mOldBindingInfos = oControl.getBindingInfo(sPropertyName); + + JsControlTreeModifier.unbindProperty.apply(this, arguments); + + if (mOldBindingInfos){ + this._saveUndoOperation("bindProperty", [oControl, sPropertyName, mOldBindingInfos]); + } + }, + + /** + * Record the previous value of the property in the undo operation + * @override + */ + setProperty : function (oControl, sPropertyName, oPropertyValue) { + var vOldValue; + + var oMetadata = oControl.getMetadata().getPropertyLikeSetting(sPropertyName); + if (oMetadata) { + var sPropertyGetter = oMetadata._sGetter; + vOldValue = oControl[sPropertyGetter](); + } + + var vReturnValue = JsControlTreeModifier.setProperty.apply(this, arguments); + + /* If the value changed, record the reversal as undo operation */ + if (vOldValue !== oPropertyValue){ + this._saveUndoOperation("setProperty", [oControl, sPropertyName, vOldValue]); + } + + return vReturnValue; + }, + + /** + * Record the previous value of the property binding in the undo operation + * @override + */ + setPropertyBinding : function (oControl, sPropertyName, oPropertyBinding) { + var oOldValue; + var oMetadata = oControl.getMetadata().getPropertyLikeSetting(sPropertyName); + + if (oMetadata) { + var sPropertyGetter = oMetadata._sGetter; + oOldValue = oControl[sPropertyGetter](); + } + + JsControlTreeModifier.setPropertyBinding.apply(this, arguments); + + /* If the value changed, record the reversal as undo operation */ + if (oOldValue !== oPropertyBinding) { + this._saveUndoOperation("setPropertyBinding", [oControl, sPropertyName, oOldValue]); + } + }, + + /** + * Record destroy as undo operation + * @override + */ + createControl: function (sClassName, oAppComponent, oView, oSelector) { + var oExistingControl = this.bySelector(oSelector, oAppComponent); + + var vReturnValue = JsControlTreeModifier.createControl.apply(this, arguments); + + if (!oExistingControl) { + var oCreatedControl = this.bySelector(oSelector, oAppComponent); + this._saveUndoOperation("destroy", [oCreatedControl]); + } + + return vReturnValue; + }, + + /** + * Controls are never destroyed by the user in RTA (only hidden) + * Therefore, there is no need to record an undo operation for destroy + * This function is to execute the undo operation of createControl + * @param {sap.ui.core.Control} oControl The control which was created + */ + destroy : function(oControl) { + if (oControl) { + oControl.destroy(); + } + }, + + /** + * Adds an additional item to the aggregation or changes it in case it is not a multiple one + * Adds removeAggregation as the undo operation + * @override + */ + insertAggregation: function (oParent, sName, oObject, iIndex) { + var oOldAggregationValue = JsControlTreeModifier.getAggregation.call(this, oParent, sName); + + JsControlTreeModifier.insertAggregation.apply(this, arguments); + + if (oParent) { + if (oParent.getMetadata) { + var oMetadata = oParent.getMetadata(); + var oAggregations = oMetadata.getAllAggregations(); + if (oAggregations) { + var oAggregation = oAggregations[sName]; + if (oAggregation) { + if (oAggregation.multiple) { + this._saveUndoOperation("removeAggregation", [oParent, sName, oObject]); + } else { + this._saveUndoOperation("insertAggregation", [oParent, sName, oOldAggregationValue]); + } + } + } + } + } + }, + + /** + * Removes the object from the aggregation of the given control + * Adds insertAggregation as the undo operation + * The aggregationElements can be an array or a single object (e.g. ToolTip) + * @override + */ + removeAggregation: function (oParent, sName, oObject) { + var iOldIndex; + var oAggregationElements; + if (oParent && oObject){ + oAggregationElements = JsControlTreeModifier.getAggregation.call(this, oParent, sName); + if (oAggregationElements){ + oAggregationElements.some(function(oElement, iIndex) { + if (oElement === oObject){ + iOldIndex = iIndex; + return true; + } + }); + } + } + + JsControlTreeModifier.removeAggregation.apply(this, arguments); + + if (iOldIndex || iOldIndex === 0) { + this._saveUndoOperation("insertAggregation", [oParent, sName, oObject, iOldIndex]); + } + }, + + /** + * Removes all objects from an aggregation of the given control + * Adds one insertAggregation per removed object as undo operations + * @override + */ + removeAllAggregation: function (oParent, sName) { + var aOldAggregationElements = []; + var vAggregationElements; + if (oParent) { + vAggregationElements = JsControlTreeModifier.getAggregation.call(this, oParent, sName); + } + + if (vAggregationElements && vAggregationElements instanceof Array) { + aOldAggregationElements = vAggregationElements.slice(); + } else if (vAggregationElements && vAggregationElements instanceof Object) { + aOldAggregationElements[0] = vAggregationElements; + } + + JsControlTreeModifier.removeAllAggregation(oParent, sName); + + if (aOldAggregationElements){ + aOldAggregationElements.forEach(function(oElement) { + this._saveUndoOperation("insertAggregation", [oParent, sName, oElement]); + }, this); + } + } + }; + + return jQuery.sap.extend( + true /* deep extend */, + {} /* target object, to avoid changing of original modifier */, + JsControlTreeModifier, + RtaControlTreeModifier + ); +}, +/* bExport= */true); diff --git a/resources/sap/ui/rta/RuntimeAuthoring.js b/resources/sap/ui/rta/RuntimeAuthoring.js new file mode 100644 index 0000000..3be7097 --- /dev/null +++ b/resources/sap/ui/rta/RuntimeAuthoring.js @@ -0,0 +1,1685 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.Main. +sap.ui.define([ + "jquery.sap.global", + "sap/ui/base/ManagedObject", + "sap/ui/rta/toolbar/Fiori", + "sap/ui/rta/toolbar/Standalone", + "sap/ui/rta/toolbar/Personalization", + "sap/ui/dt/ElementUtil", + "sap/ui/dt/DesignTime", + "sap/ui/dt/OverlayRegistry", + "sap/ui/dt/Overlay", + "sap/ui/rta/command/Stack", + "sap/ui/rta/command/CommandFactory", + "sap/ui/rta/command/LREPSerializer", + "sap/ui/rta/plugin/Rename", + "sap/ui/rta/plugin/DragDrop", + "sap/ui/rta/plugin/RTAElementMover", + "sap/ui/rta/plugin/CutPaste", + "sap/ui/rta/plugin/Remove", + "sap/ui/rta/plugin/CreateContainer", + "sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin", + "sap/ui/rta/plugin/additionalElements/AddElementsDialog", + "sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer", + "sap/ui/rta/plugin/Combine", + "sap/ui/rta/plugin/Split", + "sap/ui/rta/plugin/Selection", + "sap/ui/rta/plugin/Settings", + "sap/ui/dt/plugin/ContextMenu", + "sap/ui/dt/plugin/TabHandling", + "sap/ui/fl/FlexControllerFactory", + "sap/ui/rta/ui/SettingsDialog", + "./Utils", + "sap/ui/fl/transport/Transports", + "sap/ui/fl/transport/TransportSelection", + "sap/ui/fl/Utils", + "sap/ui/fl/registry/Settings", + "sap/m/MessageBox", + "sap/m/MessageToast", + "sap/ui/rta/util/PopupManager", + "sap/ui/core/BusyIndicator", + "sap/ui/dt/DOMUtil", + "sap/ui/rta/util/StylesLoader", + "sap/ui/rta/appVariant/ManageAppsLoader" + ], + function( + jQuery, + ManagedObject, + FioriToolbar, + StandaloneToolbar, + PersonalizationToolbar, + ElementUtil, + DesignTime, + OverlayRegistry, + Overlay, + CommandStack, + CommandFactory, + LREPSerializer, + RTARenamePlugin, + RTADragDropPlugin, + RTAElementMover, + CutPastePlugin, + RemovePlugin, + CreateContainerPlugin, + AdditionalElementsPlugin, + AdditionalElementsDialog, + AdditionalElementsAnalyzer, + CombinePlugin, + SplitPlugin, + SelectionPlugin, + SettingsPlugin, + ContextMenuPlugin, + TabHandlingPlugin, + FlexControllerFactory, + SettingsDialog, + Utils, + Transports, + TransportSelection, + FlexUtils, + FlexSettings, + MessageBox, + MessageToast, + PopupManager, + BusyIndicator, + DOMUtil, + StylesLoader, + ManageAppsLoader + ) { + "use strict"; + + var FL_MAX_LAYER_PARAM = "sap-ui-fl-max-layer"; + + /** + * Constructor for a new sap.ui.rta.RuntimeAuthoring class. + * + * @class The runtime authoring allows to adapt the fields of a running application. + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.30 + * @alias sap.ui.rta.RuntimeAuthoring + * @experimental This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var RuntimeAuthoring = ManagedObject.extend("sap.ui.rta.RuntimeAuthoring", /** @lends sap.ui.rta.RuntimeAuthoring.prototype */ + { + metadata : { + // ---- control specific ---- + library : "sap.ui.rta", + associations : { + /** The root control which the runtime authoring should handle */ + "rootControl" : { + type : "sap.ui.core.Control" + } + }, + properties : { + /** The URL which is called when the custom field dialog is opened */ + "customFieldUrl" : "string", + + /** Whether the create custom field button should be shown */ + "showCreateCustomField" : "boolean", + + /** Whether the create custom field button should be shown */ + "showToolbars" : { + type : "boolean", + defaultValue : true + }, + + /** Whether rta is triggered from a dialog button */ + "triggeredFromDialog" : { + type : "boolean", + defaultValue : false + }, + + /** Temporary property : whether to show a dialog for changing control's properties# + * should be removed after DTA will fully switch to a property panel + */ + "showSettingsDialog" : { + type : "boolean", + defaultValue : true + }, + + /** Whether the window unload dialog should be shown */ + "showWindowUnloadDialog" : { + type : "boolean", + defaultValue : true + }, + + /** sap.ui.rta.command.Stack */ + "commandStack" : { + type : "any" + }, + + /** Map indicating plugins in to be loaded or in use by RuntimeAuthoring and DesignTime */ + "plugins" : { + type : "any", + defaultValue : {} + }, + + + /** + * Map with flex-related settings + * @experimental + */ + "flexSettings": { + type: "object" + }, + + /** Defines view state of the RTA. Possible values: adaptation, navigation */ + "mode" : { + type: "string", + defaultValue: "adaptation" + } + }, + events : { + /** Fired when the runtime authoring is started */ + "start" : { + parameters: { + editablePluginsCount: { + type: "int" + } + } + }, + + /** Fired when the runtime authoring is stopped */ + "stop" : {}, + + /** Fired when the runtime authoring failed to start */ + "failed" : {}, + + /** + * Event fired when a DesignTime selection is changed + */ + "selectionChange" : { + parameters : { + selection : { type : "sap.ui.dt.Overlay[]" } + } + }, + /**Event fired when the runtime authoring mode is changed */ + "modeChanged" : {}, + + /** + * Fired when the undo/redo stack has changed, undo/redo buttons can be updated + */ + "undoRedoStackModified" : {} + } + }, + _sAppTitle : null + + }); + + /** + * Returns (and creates) the default plugins of RuntimeAuthoring + * + * These are AdditionalElements, ContextMenu, CreateContainer, CutPaste, + * DragDrop, Remove, Rename, Selection, Settings, TabHandling + * + * Method uses a local cache to hold the default plugins: Then on multiple access + * always the same instances get returned. + * + * @public + * @return {map} Map with plugins + */ + RuntimeAuthoring.prototype.getDefaultPlugins = function() { + if (!this._mDefaultPlugins) { + var oCommandFactory = new CommandFactory({ + flexSettings: this.getFlexSettings() + }); + + // Initialize local cache + this._mDefaultPlugins = {}; + + // Selection + this._mDefaultPlugins["selection"] = new SelectionPlugin({ + commandFactory: oCommandFactory, + multiSelectionRequiredPlugins: [ + CombinePlugin.getMetadata().getName(), + RemovePlugin.getMetadata().getName() + ], + elementEditableChange: this._onElementEditableChange.bind(this) + }); + + // Drag drop plugin + var oRTAElementMover = new RTAElementMover({ + commandFactory: oCommandFactory + }); + + this._mDefaultPlugins["dragDrop"] = new RTADragDropPlugin({ + elementMover: oRTAElementMover, + commandFactory: oCommandFactory, + dragStarted: this._handleStopCutPaste.bind(this) + }); + + // Cut paste + this._mDefaultPlugins["cutPaste"] = new CutPastePlugin({ + elementMover: oRTAElementMover, + commandFactory: oCommandFactory + }); + + // Remove + this._mDefaultPlugins["remove"] = new RemovePlugin({ + commandFactory: oCommandFactory + }); + + // Additional elements + this._mDefaultPlugins["additionalElements"] = new AdditionalElementsPlugin({ + commandFactory: oCommandFactory, + analyzer: AdditionalElementsAnalyzer, + dialog: new AdditionalElementsDialog() + }); + + // Rename + this._mDefaultPlugins["rename"] = new RTARenamePlugin({ + commandFactory: oCommandFactory, + editable: this._handleStopCutPaste.bind(this) + }); + + // Settings + this._mDefaultPlugins["settings"] = new SettingsPlugin({ + commandFactory: oCommandFactory + }); + + // Create container + this._mDefaultPlugins["createContainer"] = new CreateContainerPlugin({ + commandFactory: oCommandFactory + }); + + // Combine + this._mDefaultPlugins["combine"] = new CombinePlugin({ + commandFactory: oCommandFactory + }); + + // Split + this._mDefaultPlugins["split"] = new SplitPlugin({ + commandFactory: oCommandFactory + }); + + // Context Menu + this._mDefaultPlugins["contextMenu"] = new ContextMenuPlugin({ + styleClass: Utils.getRtaStyleClassName() + }); + + // Tab Handling + this._mDefaultPlugins["tabHandling"] = new TabHandlingPlugin(); + } + + return jQuery.extend({}, this._mDefaultPlugins); + }; + + /** + * In order to clear the cache and to destroy the default plugins on exit use + * _destroyDefaultPlugins() + * + * In order to destroy default plugins not used, because replaced or removed, + * pass the list of active plugins: _destroyDefaultPlugins( mPluginsToKeep ). + * + * @param {map} mPluginsToKeep - list of active plugins to keep in _mDefaultPlugins + * @private + */ + RuntimeAuthoring.prototype._destroyDefaultPlugins = function (mPluginsToKeep) { + // Destroy default plugins and clear cache + // ... but keep those in mPluginsToKeep + for (var sDefaultPluginName in this._mDefaultPlugins) { + var oDefaultPlugin = this._mDefaultPlugins[sDefaultPluginName]; + + if (oDefaultPlugin && !oDefaultPlugin.bIsDestroyed) { + if (!mPluginsToKeep || mPluginsToKeep[sDefaultPluginName] !== oDefaultPlugin) { + oDefaultPlugin.destroy(); + } + } + } + if (!mPluginsToKeep) { + this._mDefaultPlugins = null; + } + }; + + /** + * @override + */ + RuntimeAuthoring.prototype.init = function() { + this._onCommandStackModified = this._onStackModified.bind(this); + this.iEditableOverlaysCount = 0; + + // call setFlexSettings with the defaultValues + this.setFlexSettings({ + layer: "CUSTOMER", + developerMode: true + }); + + this.oPopupManager = new PopupManager({ + open: this.onPopupOpen.bind(this), + close: this.onPopupClose.bind(this) + }); + }; + + RuntimeAuthoring.prototype.onPopupOpen = function(oEvent) { + if ( + oEvent.getParameters() instanceof sap.m.Dialog + && this._oToolsMenu instanceof FioriToolbar + ) { + this._oToolsMenu.setColor("contrast"); + } + this._oToolsMenu.bringToFront(); + }; + + RuntimeAuthoring.prototype.onPopupClose = function(oEvent) { + if (oEvent.getParameters() instanceof sap.m.Dialog) { + this._oToolsMenu.setColor(); + } + }; + + RuntimeAuthoring.prototype.setPlugins = function(mPlugins) { + if (this._oDesignTime) { + throw new Error('Cannot replace plugins: runtime authoring already started'); + } + this.setProperty("plugins", mPlugins); + }; + + /** + * Setter for flexSettings + * + * @param {Object} [mFlexSettings] property bag + * @param {String} [mFlexSettings.layer] The Layer in which RTA should be started. Default: "CUSTOMER" + * @param {Boolean} [mFlexSettings.developerMode] Whether RTA is started in DeveloperMode Mode. Whether RTA is started in DeveloperMode Mode + * @param {String} [mFlexSettings.namespace] Namespace for changes inside LREP + */ + RuntimeAuthoring.prototype.setFlexSettings = function(mFlexSettings) { + // Check URI-parameters for sap-ui-layer + var oUriParams = jQuery.sap.getUriParameters(); + var aUriLayer = oUriParams.mParams["sap-ui-layer"]; + if (aUriLayer && aUriLayer.length > 0) { + mFlexSettings.layer = aUriLayer[0]; + } + + Utils.setRtaStyleClassName(mFlexSettings.layer); + this.setProperty("flexSettings", jQuery.extend(this.getFlexSettings(), mFlexSettings)); + }; + + /** + * Checks the uri parameters for "sap-ui-layer" and returns either the current layer or the layer from the uri parameter, if there is one + * + * @param {String} sLayer the current layer + * @returns {String} the layer after checking the uri parameters + * @private + */ + RuntimeAuthoring.prototype.getLayer = function(sLayer) { + return this.getFlexSettings().layer; + }; + + RuntimeAuthoring.prototype._getFlexController = function() { + var oRootControl = this._oRootControl || sap.ui.getCore().byId(this.getRootControl()); + return FlexControllerFactory.createForControl(oRootControl); + }; + + RuntimeAuthoring.prototype._getTextResources = function() { + return sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + }; + + /** + * Start Runtime Authoring + * + * @public + */ + RuntimeAuthoring.prototype.start = function() { + // Create DesignTime + if (!this._oDesignTime) { + this._oRootControl = sap.ui.getCore().byId(this.getRootControl()); + //Check if the application has personalized changes and reload without them + return this._handlePersonalizationChangesOnStart() + .then(function(bReloadTriggered){ + if (!bReloadTriggered) { + // Take default plugins if no plugins handed over + if (!this.getPlugins() || !Object.keys(this.getPlugins()).length) { + this.setPlugins(this.getDefaultPlugins()); + } + + // Destroy default plugins instantiated but not in use + this._destroyDefaultPlugins(this.getPlugins()); + + Object.keys(this.getPlugins()).forEach(function(sPluginName) { + if (this.getPlugins()[sPluginName].attachElementModified) { + this.getPlugins()[sPluginName].attachElementModified(this._handleElementModified, this); + } + }.bind(this)); + + // Hand over currrent command stack to setting plugin + if (this.getPlugins()["settings"]) { + this.getPlugins()["settings"].setCommandStack(this.getCommandStack()); + } + + this._buildContextMenu(); + + this._oSerializer = new LREPSerializer({commandStack : this.getCommandStack(), rootControl : this.getRootControl()}); + + // Create design time + var aKeys = Object.keys(this.getPlugins()); + var aPlugins = aKeys.map(function(sKey) { + return this.getPlugins()[sKey]; + }, this); + + jQuery.sap.measure.start("rta.dt.startup","Measurement of RTA: DesignTime start up"); + this._oDesignTime = new DesignTime({ + rootElements : [this._oRootControl], + plugins : aPlugins + }); + + jQuery(Overlay.getOverlayContainer()).addClass("sapUiRta"); + if (this.getLayer() === "USER") { + jQuery(Overlay.getOverlayContainer()).addClass("sapUiRtaPersonalize"); + } + + this._oRootControl.addStyleClass("sapUiRtaRoot"); + + this._oDesignTime.attachSelectionChange(function(oEvent) { + this.fireSelectionChange({selection: oEvent.getParameter("selection")}); + }, this); + + this._oDesignTime.attachEventOnce("synced", function() { + this.fireStart({ + editablePluginsCount: this.iEditableOverlaysCount + }); + jQuery.sap.measure.end("rta.dt.startup","Measurement of RTA: DesignTime start up"); + }, this); + + this._oDesignTime.attachEventOnce("syncFailed", function() { + this.fireFailed(); + }, this); + + // attach RuntimeAuthoring event to _$document + this._$document = jQuery(document); + this.fnKeyDown = this._onKeyDown.bind(this); + this._$document.on("keydown", this.fnKeyDown); + + // Register function for checking unsaved before leaving RTA + this._oldUnloadHandler = window.onbeforeunload; + window.onbeforeunload = this._onUnload.bind(this); + + sap.ui.getCore().getEventBus().subscribe("sap.ushell.renderers.fiori2.Renderer", "appClosed", this._onAppClosed, this); + } + + return Promise.resolve(bReloadTriggered); + }.bind(this)) + .then(function (bReloadTriggered) { + var bIsAppVariantSupported; + if (this.getShowToolbars() && !bReloadTriggered) { + // Create ToolsMenu + return FlexSettings.getInstance(FlexUtils.getComponentClassName(this._oRootControl)) + .then(function(oSettings) { + bIsAppVariantSupported = ManageAppsLoader.hasAppVariantsSupport(this.getLayer(), oSettings.isAtoEnabled() && oSettings.isAtoAvailable()); + return !oSettings.isProductiveSystem() && !oSettings.hasMergeErrorOccured(); + }.bind(this)) + .catch(function(oError) { + return false; + }) + .then(function (bShowPublish) { + this._createToolsMenu(bShowPublish, bIsAppVariantSupported); + return this._oToolsMenu.show(); + }.bind(this)) + .then(function() { + //Popup Overlays + this.oPopupManager.setRta(this); + }.bind(this)); + } + }.bind(this)) + .then(function() { + var oRelevantPopups = this.oPopupManager.getRelevantPopups(); + if (oRelevantPopups.aDialogs || oRelevantPopups.aPopovers) { + return this._oToolsMenu.bringToFront(); + } + return true; + }.bind(this)) + .then(function () { + StylesLoader + .loadStyles('InPageStyles') + .then(function (sData) { + var sStyles = sData.replace(/%scrollWidth%/g, DOMUtil.getScrollbarWidth() + 'px'); + DOMUtil.insertStyles(sStyles); + }); + + // non-blocking style loading + return true; + }); + } + }; + + var fnShowTechnicalError = function(vError) { + var sErrorMessage = vError.stack || vError.message || vError.status || vError; + var oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + jQuery.sap.log.error("Failed to transfer runtime adaptation changes to layered repository", sErrorMessage); + var sMsg = oTextResources.getText("MSG_LREP_TRANSFER_ERROR") + "\n" + + oTextResources.getText("MSG_ERROR_REASON", sErrorMessage); + MessageBox.error(sMsg, { + styleClass: Utils.getRtaStyleClassName() + }); + }; + + RuntimeAuthoring.prototype._onAppClosed = function() { + this.stop(true, true); + }; + + /** + * @override + */ + RuntimeAuthoring.prototype.setCommandStack = function(oCommandStack) { + var oOldCommandStack = this.getProperty("commandStack"); + if (oOldCommandStack) { + oOldCommandStack.detachModified(this._onCommandStackModified); + } + + if (this._oInternalCommandStack) { + this._oInternalCommandStack.destroy(); + delete this._oInternalCommandStack; + } + + var oResult = this.setProperty("commandStack", oCommandStack); + + if (oCommandStack) { + oCommandStack.attachModified(this._onCommandStackModified); + } + + if (this.getPlugins() && this.getPlugins()["settings"]) { + this.getPlugins()["settings"].setCommandStack(oCommandStack); + } + + return oResult; + }; + + /** + * + * @override + */ + RuntimeAuthoring.prototype.getCommandStack = function() { + var oCommandStack = this.getProperty("commandStack"); + if (!oCommandStack) { + oCommandStack = new CommandStack(); + this._oInternalCommandStack = oCommandStack; + this.setCommandStack(oCommandStack); + } + + return oCommandStack; + }; + + /** + * adapt the enablement of undo/redo/reset/transport button + * @private + */ + RuntimeAuthoring.prototype._onStackModified = function() { + var oCommandStack = this.getCommandStack(); + var bCanUndo = oCommandStack.canUndo(); + var bCanRedo = oCommandStack.canRedo(); + var oUshellContainer = Utils.getUshellContainer(); + + if (this.getShowToolbars() && this._oToolsMenu) { + this._oToolsMenu.setUndoRedoEnabled(bCanUndo, bCanRedo); + this._oToolsMenu.setPublishEnabled(this._bChangesExist || bCanUndo); + this._oToolsMenu.setRestoreEnabled(this._bChangesExist || bCanUndo); + } + this.fireUndoRedoStackModified(); + + if (oUshellContainer) { + if (bCanUndo) { + oUshellContainer.setDirtyFlag(true); + } else { + oUshellContainer.setDirtyFlag(false); + } + } + }; + + RuntimeAuthoring.prototype._closeToolBars = function() { + if (this.getShowToolbars() && this._oToolsMenu) { + return this._oToolsMenu.hide(); + } else { + return Promise.resolve(); + } + }; + + /** + * Returns a selection from the DesignTime + * @return {sap.ui.dt.Overlay[]} selected overlays + * @public + */ + RuntimeAuthoring.prototype.getSelection = function() { + if (this._oDesignTime) { + return this._oDesignTime.getSelection(); + } else { + return []; + } + }; + + /** + * stop Runtime Authoring + * + * @public + * @param {boolean} bDontSaveChanges - stop RTA with or w/o saving changes + * @param {boolean} bSkipCheckPersChanges - stop RTA with or w/o checking for personalized changes + * @returns {Promise} promise with no parameters + */ + RuntimeAuthoring.prototype.stop = function(bDontSaveChanges, bSkipCheckPersChanges) { + return ((bDontSaveChanges) ? Promise.resolve() : this._serializeToLrep()) + .then(this._closeToolBars.bind(this)) + .then(bSkipCheckPersChanges ? Promise.resolve() : this._handlePersonalizationChangesOnExit.bind(this)) + .then(function(){ + this.exit(); + this.fireStop(); + }.bind(this))['catch'](fnShowTechnicalError); + }; + + RuntimeAuthoring.prototype.restore = function() { + this._onRestore(); + }; + + RuntimeAuthoring.prototype.transport = function() { + this._onTransport(); + }; + + // ---- backward compatibility API + RuntimeAuthoring.prototype.undo = function() { + return this._onUndo(); + }; + + RuntimeAuthoring.prototype.redo = function() { + return this._onRedo(); + }; + + RuntimeAuthoring.prototype.canUndo = function() { + return this.getCommandStack().canUndo(); + }; + + RuntimeAuthoring.prototype.canRedo = function() { + return this.getCommandStack().canRedo(); + }; + // ---- backward compatibility API + + RuntimeAuthoring.prototype._onKeyDown = function(oEvent) { + // on macintosh os cmd-key is used instead of ctrl-key + var bCtrlKey = sap.ui.Device.os.macintosh ? oEvent.metaKey : oEvent.ctrlKey; + if ((oEvent.keyCode === jQuery.sap.KeyCodes.Z) && (oEvent.shiftKey === false) && (oEvent.altKey === false) && (bCtrlKey === true)) { + // CTRL+Z + this._onUndo() + + .then(oEvent.stopPropagation.bind(oEvent)); + } else if ((oEvent.keyCode === jQuery.sap.KeyCodes.Y) && (oEvent.shiftKey === false) && (oEvent.altKey === false) && (bCtrlKey === true)) { + // CTRL+Y + this._onRedo() + + .then(oEvent.stopPropagation.bind(oEvent)); + } + }; + + /** + * Check for unsaved changes before Leaving Runtime Authoring + * + * @private + */ + RuntimeAuthoring.prototype._onUnload = function() { + var oCommandStack = this.getCommandStack(); + var bUnsaved = oCommandStack.canUndo() || oCommandStack.canRedo(); + if (bUnsaved && this.getShowWindowUnloadDialog()) { + var sMessage = this._getTextResources().getText("MSG_UNSAVED_CHANGES"); + return sMessage; + } else { + window.onbeforeunload = this._oldUnloadHandler; + } + }; + + RuntimeAuthoring.prototype._serializeToLrep = function() { + return this._oSerializer.saveCommands(); + }; + + RuntimeAuthoring.prototype._onUndo = function() { + this._handleStopCutPaste(); + return this.getCommandStack().undo(); + }; + + RuntimeAuthoring.prototype._onRedo = function() { + this._handleStopCutPaste(); + return this.getCommandStack().redo(); + }; + + RuntimeAuthoring.prototype._createToolsMenu = function(bPublishAvailable, bIsAppVariantSupported) { + if (!this._oToolsMenu) { + var fnConstructor; + + if (this.getLayer() === "USER") { + fnConstructor = PersonalizationToolbar; + } else if (Utils.getFiori2Renderer()) { + fnConstructor = FioriToolbar; + } else { + fnConstructor = StandaloneToolbar; + } + + if (this.getLayer() === "USER") { + this._oToolsMenu = new fnConstructor({ + textResources: this._getTextResources(), + //events + exit: this.stop.bind(this, false, false), + restore: this._onRestore.bind(this) + }); + } else { + this._oToolsMenu = new fnConstructor({ + modeSwitcher: this.getMode(), + publishVisible: bPublishAvailable, + textResources: this._getTextResources(), + manageAppsVisible: bIsAppVariantSupported, + //events + exit: this.stop.bind(this, false, false), + transport: this._onTransport.bind(this), + restore: this._onRestore.bind(this), + undo: this._onUndo.bind(this), + redo: this._onRedo.bind(this), + modeChange: this._onModeChange.bind(this), + manageApps: ManageAppsLoader.load.bind(null, this.getRootControl()) + }); + } + + this._checkChangesExist().then(function(bResult){ + this._bChangesExist = bResult; + this._oToolsMenu.setPublishEnabled(bResult); + this._oToolsMenu.setRestoreEnabled(bResult); + }.bind(this)); + } + }; + + /** + * Exit Runtime Authoring - destroy all controls and plugins + * + * @protected + */ + RuntimeAuthoring.prototype.exit = function() { + if (this._oDesignTime) { + jQuery(Overlay.getOverlayContainer()).removeClass("sapUiRta"); + this._oDesignTime.destroy(); + this._oDesignTime = null; + + // detach browser events + this._$document.off("keydown", this.fnKeyDown); + // Destroy default plugins + this._destroyDefaultPlugins(); + // plugins have been destroyed as _oDesignTime.destroy() + // plugins are set to defaultValue if parameter is null + this.setPlugins(null); + } + + if (this._oRootControl) { + this._oRootControl.removeStyleClass("sapUiRtaRoot"); + } + + if (this._oToolsMenu) { + this._oToolsMenu.destroy(); + this._oToolsMenu = null; + } + this.setCommandStack(null); + + var oUshellContainer = Utils.getUshellContainer(); + if (oUshellContainer) { + oUshellContainer.setDirtyFlag(false); + } + + if (this.oPopupManager) { + this.oPopupManager.destroy(); + } + + window.onbeforeunload = this._oldUnloadHandler; + sap.ui.getCore().getEventBus().unsubscribe("sap.ushell.renderers.fiori2.Renderer", "appClosed", this._onAppClosed, this); + }; + + /** + * Function to handle ABAP transport of the changes + * + * @private + */ + RuntimeAuthoring.prototype._onTransport = function() { + var fnHandleAllErrors = function (oError) { + BusyIndicator.hide(); + if (oError.message !== 'createAndApply failed') { + FlexUtils.log.error("transport error" + oError); + return this._showMessage(MessageBox.Icon.ERROR, "HEADER_TRANSPORT_ERROR", "MSG_TRANSPORT_ERROR", oError); + } + }.bind(this); + + this._handleStopCutPaste(); + + return this._openSelection() + .then(this._checkTransportInfo) + .then(function(oTransportInfo) { + if (oTransportInfo) { + return this._serializeToLrep().then(function () { + return this._getFlexController().getComponentChanges({currentLayer: this.getLayer()}).then(function (aAllLocalChanges) { + if (aAllLocalChanges.length > 0) { + BusyIndicator.show(0); + return this._createAndApplyChanges(aAllLocalChanges) + .then(this._transportAllLocalChanges.bind(this, oTransportInfo)) + ['catch'](fnHandleAllErrors); + } + }.bind(this)); + }.bind(this))['catch'](fnShowTechnicalError); + } + }.bind(this) + ); + }; + + RuntimeAuthoring.prototype._checkTransportInfo = function(oTransportInfo) { + if (oTransportInfo && oTransportInfo.transport && oTransportInfo.packageName !== "$TMP") { + return oTransportInfo; + } else { + return false; + } + }; + + RuntimeAuthoring.prototype._openSelection = function () { + return new TransportSelection().openTransportSelection(null, this._oRootControl, Utils.getRtaStyleClassName()); + }; + + /** + * Create and apply changes + * + * Function is copied from FormP13nHandler. We need all changes for various controls. + * The function is used in the transport handling. + * + * @private + * @param {array} aChangeSpecificData - array of objects with change specific data + * @param {sap.ui.fl.FlexController} - instance of FlexController + * @returns {Promise} promise that resolves with no parameters + */ + RuntimeAuthoring.prototype._createAndApplyChanges = function(aChangeSpecificData) { + var aPromises = []; + return Promise.resolve() + + .then(function() { + function fnValidChanges(oChangeSpecificData) { + return oChangeSpecificData && oChangeSpecificData.selector && oChangeSpecificData.selector.id; + } + aChangeSpecificData.filter(fnValidChanges).forEach(function(oChangeSpecificData) { + var oControl = sap.ui.getCore().byId(oChangeSpecificData.selector.id); + aPromises.push(function() { + return Promise.resolve() + .then(function() { + return this._getFlexController().createAndApplyChange(oChangeSpecificData, oControl); + }.bind(this)); + }.bind(this)); + }.bind(this)); + return FlexUtils.execPromiseQueueSequentially(aPromises); + }.bind(this)) + + .catch(function(oError) { + FlexUtils.log.error("Create and apply error: " + oError); + return oError; + }) + + .then(function(oError) { + return this._getFlexController().saveAll().then(function() { + if (oError) { + throw oError; + } + }); + }.bind(this)) + + .catch(function(oError) { + FlexUtils.log.error("Create and apply and/or save error: " + oError); + return this._showMessage(MessageBox.Icon.ERROR, "HEADER_TRANSPORT_APPLYSAVE_ERROR", "MSG_TRANSPORT_APPLYSAVE_ERROR", oError); + }.bind(this)); + }; + + /** + * Delete all changes for current layer and root control's component + * + * @private + * @return {Promise} the promise from the FlexController + */ + RuntimeAuthoring.prototype._deleteChanges = function() { + var oTransportSelection = new TransportSelection(); + var sCurrentLayer = this.getLayer(); + + this._getFlexController().getComponentChanges({currentLayer: sCurrentLayer}).then(function(aChanges) { + return FlexSettings.getInstance(FlexUtils.getComponentClassName(this._oRootControl)).then(function(oSettings) { + if (!oSettings.isProductiveSystem() && !oSettings.hasMergeErrorOccured()) { + return oTransportSelection.setTransports(aChanges, this._oRootControl); + } + }.bind(this)).then(function() { + return this._getFlexController().discardChanges(aChanges, sCurrentLayer === "USER"); + }.bind(this)).then(function() { + return window.location.reload(); + }); + }.bind(this))["catch"](function(oError) { + return this._showMessage(MessageBox.Icon.ERROR, "HEADER_RESTORE_FAILED", "MSG_RESTORE_FAILED", oError); + }.bind(this)); + }; + + /** + * @private + */ + RuntimeAuthoring.prototype._showMessage = function(oMessageType, sTitleKey, sMessageKey, oError) { + var sMessage = this._getTextResources().getText(sMessageKey, oError ? [oError.message || oError] : undefined); + var sTitle = this._getTextResources().getText(sTitleKey); + + return new Promise(function(resolve) { + MessageBox.show(sMessage, { + icon: oMessageType, + title: sTitle, + onClose: resolve, + styleClass: Utils.getRtaStyleClassName() + }); + }); + }; + + /** + * @private + */ + RuntimeAuthoring.prototype._showMessageToast = function(sMessageKey) { + var sMessage = this._getTextResources().getText(sMessageKey); + + MessageToast.show(sMessage); + }; + + /** + * Check if restart of RTA is needed + * the RTA FLP plugin will check this + * and restart RTA if needed + * + * @public + * @static + * @returns {Boolean} if restart is needed + */ + RuntimeAuthoring.needsRestart = function(sLayer) { + + var bRestart = !!window.localStorage.getItem("sap.ui.rta.restart." + sLayer); + return bRestart; + }; + + /** + * Enable restart of RTA + * the RTA FLP plugin would handle the restart + * + * @public + * @static + */ + RuntimeAuthoring.enableRestart = function(sLayer) { + window.localStorage.setItem("sap.ui.rta.restart." + sLayer, true); + }; + + /** + * Disable restart of RTA + * the RTA FLP plugin whould handle the restart + * + * @public + * @static + */ + RuntimeAuthoring.disableRestart = function(sLayer) { + window.localStorage.removeItem("sap.ui.rta.restart." + sLayer); + }; + + /** + * Discard all LREP changes and restores the default app state, + * opens a MessageBox where the user can confirm + * the restoring to the default app state + * + * @private + */ + RuntimeAuthoring.prototype._onRestore = function() { + var sMessage = this.getLayer() === "USER" + ? this._getTextResources().getText("FORM_PERS_RESET_MESSAGE_PERSONALIZATION") + : this._getTextResources().getText("FORM_PERS_RESET_MESSAGE"); + var sTitle = this.getLayer() === "USER" + ? this._getTextResources().getText("BTN_RESTORE") + : this._getTextResources().getText("FORM_PERS_RESET_TITLE"); + + var fnConfirmDiscardAllChanges = function (sAction) { + if (sAction === "OK") { + this.getCommandStack().removeAllCommands(); + RuntimeAuthoring.enableRestart(this.getLayer()); + this._deleteChanges(); + } + }.bind(this); + + this._handleStopCutPaste(); + + MessageBox.confirm(sMessage, { + icon: MessageBox.Icon.WARNING, + title : sTitle, + onClose : fnConfirmDiscardAllChanges, + styleClass: Utils.getRtaStyleClassName() + }); + }; + + /** + * Prepare all changes and assign them to an existing transport + * + * @private + * @param {object} oTransportInfo - information about the selected transport + * @param {sap.ui.fl.FlexController} - instance of FlexController + * @returns {Promise} Promise which resolves without parameters + */ + RuntimeAuthoring.prototype._transportAllLocalChanges = function(oTransportInfo) { + return this._getFlexController().getComponentChanges({currentLayer: this.getLayer()}).then(function(aAllLocalChanges) { + + // Pass list of changes to be transported with transport request to backend + var oTransports = new Transports(); + var aTransportData = oTransports._convertToChangeTransportData(aAllLocalChanges); + var oTransportParams = {}; + //packageName is '' in CUSTOMER layer (no package input field in transport dialog) + oTransportParams.package = oTransportInfo.packageName; + oTransportParams.transportId = oTransportInfo.transport; + oTransportParams.changeIds = aTransportData; + + return oTransports.makeChangesTransportable(oTransportParams).then(function() { + + // remove the $TMP package from all changes; has been done on the server as well, + // but is not reflected in the client cache until the application is reloaded + aAllLocalChanges.forEach(function(oChange) { + + if (oChange.getPackage() === '$TMP') { + var oDefinition = oChange.getDefinition(); + oDefinition.packageName = oTransportInfo.packageName; + oChange.setResponse(oDefinition); + } + }); + }).then(function() { + BusyIndicator.hide(); + this._showMessageToast("MSG_TRANSPORT_SUCCESS"); + }.bind(this)); + }.bind(this)); + }; + + /** + * Checks the two parent-information maps for equality + * + * @param {object} + * oInfo1 * + * @param {object} + * oInfo2 + * @return {boolean} true if equal, false otherwise + * @private + */ + RuntimeAuthoring.prototype._isEqualParentInfo = function(oInfo1, oInfo2) { + var oResult = !!oInfo1 && !!oInfo2; + if (oResult && (oInfo1.parent && oInfo2.parent)) { + oResult = oInfo1.parent.getId() === oInfo2.parent.getId(); + } + if (oResult && (oInfo1.index || oInfo2.index)) { + oResult = oInfo1.index === oInfo2.index; + } + if (oResult && (oInfo1.aggregation || oInfo2.aggregation)) { + oResult = oInfo1.aggregation === oInfo2.aggregation; + } + return oResult; + }; + + /** + * Function to handle modification of an element + * + * @param {sap.ui.base.Event} oEvent Event object + * @returns {promise} Returns promise that resolves after command was executed sucessfully + * @private + */ + RuntimeAuthoring.prototype._handleElementModified = function(oEvent) { + this._handleStopCutPaste(); + + var oCommand = oEvent.getParameter("command"); + if (oCommand instanceof sap.ui.rta.command.BaseCommand) { + return this.getCommandStack().pushAndExecute(oCommand); + } + return Promise.resolve(); + }; + + /** + * @private + */ + RuntimeAuthoring.prototype._onElementEditableChange = function(oEvent) { + var bEditable = oEvent.getParameter("editable"); + if (bEditable) { + this.iEditableOverlaysCount += 1; + } else { + this.iEditableOverlaysCount -= 1; + } + }; + + /** + * Function to handle hiding an element by the context menu + * + * @param {object} + * oOverlay object + * @private + */ + RuntimeAuthoring.prototype._handleRemoveElement = function(aOverlays) { + this.getPlugins()["remove"].removeElement(aOverlays); + }; + + /** + * @private + */ + RuntimeAuthoring.prototype._openSettingsDialog = function(oEventOrOverlays) { + var aSelectedOverlays = (oEventOrOverlays.mParameters) ? oEventOrOverlays.getParameter("selectedOverlays") : oEventOrOverlays; + var oElement = aSelectedOverlays[0].getElementInstance(); + this._handleStopCutPaste(); + + if (!this._oSettingsDialog) { + this._oSettingsDialog = new SettingsDialog(); + } + this._oSettingsDialog.setCommandStack(this.getCommandStack()); + this._oSettingsDialog.open(oElement); + }; + + + var fnMultiSelectionInactive = function(oOverlay) { + return this._oDesignTime.getSelection().length < 2; + }; + + var fnIsMovable = function(oOverlay) { + return oOverlay.getMovable(); + }; + + var fnIsRemoveAvailable = function(oOverlay) { + return this.getPlugins()["remove"].isRemoveAvailable(oOverlay); + }; + + var fnIsRemoveEnabled = function(oOverlay) { + return this.getPlugins()["remove"].isRemoveEnabled(oOverlay); + }; + + var fnIsRenameAvailable = function(oOverlay) { + return this.getPlugins()["rename"].isRenameAvailable(oOverlay); + }; + + var fnIsRenameEnabled = function(oOverlay) { + return this.getPlugins()["rename"].isRenameEnabled(oOverlay); + }; + + var fnIsSettingsAvailable = function(oOverlay) { + return this.getPlugins()["settings"].isSettingsAvailable(oOverlay); + }; + + var fnIsSettingsEnabled = function(oOverlay) { + return this.getPlugins()["settings"].isSettingsEnabled(oOverlay); + }; + + var fnIsCombineAvailable = function(oOverlay) { + return this.getPlugins()["combine"].isCombineAvailable(oOverlay); + }; + + var fnIsCombineEnabled = function(oOverlay) { + return this.getPlugins()["combine"].isCombineEnabled(oOverlay); + }; + + var fnIsSplitAvailable = function(oOverlay) { + return this.getPlugins()["split"].isSplitAvailable(oOverlay); + }; + + var fnIsSplitEnabled = function(oOverlay) { + return this.getPlugins()["split"].isSplitEnabled(oOverlay); + }; + + RuntimeAuthoring.prototype._buildContextMenu = function() { + // Return if plugin missing + var oContextMenuPlugin = this.getPlugins()["contextMenu"]; + if (!oContextMenuPlugin) { + return; + } + + var oAdditionalElementsPlugin = this.getPlugins()["additionalElements"]; + var oCreateContainerPlugin = this.getPlugins()["createContainer"]; + + if (this.getPlugins()["rename"]) { + + oContextMenuPlugin.addMenuItem({ + id : "CTX_RENAME_LABEL", + text : this._getTextResources().getText("CTX_RENAME"), + handler : this._handleRename.bind(this), + available : fnIsRenameAvailable.bind(this), + enabled : function(oOverlay) { + return (fnMultiSelectionInactive.call(this, oOverlay) && fnIsRenameEnabled.call(this, oOverlay)); + }.bind(this) + }); + } + + if (oAdditionalElementsPlugin){ + oContextMenuPlugin.addMenuItem({ + id : "CTX_ADD_ELEMENTS_AS_SIBLING", + text : oAdditionalElementsPlugin.getContextMenuTitle.bind(oAdditionalElementsPlugin, true), + handler : oAdditionalElementsPlugin.showAvailableElements.bind(oAdditionalElementsPlugin, true), + available : oAdditionalElementsPlugin.isAvailable.bind(oAdditionalElementsPlugin, true), + enabled : function(oOverlay) { + return fnMultiSelectionInactive.call(this, oOverlay) && oAdditionalElementsPlugin.isEnabled(true, oOverlay); + }.bind(this) + }); + + oContextMenuPlugin.addMenuItem({ + id : "CTX_ADD_ELEMENTS_AS_CHILD", + text : oAdditionalElementsPlugin.getContextMenuTitle.bind(oAdditionalElementsPlugin, false), + handler : oAdditionalElementsPlugin.showAvailableElements.bind(oAdditionalElementsPlugin, false), + available : oAdditionalElementsPlugin.isAvailable.bind(oAdditionalElementsPlugin, false), + enabled : function(oOverlay) { + return fnMultiSelectionInactive.call(this, oOverlay) && oAdditionalElementsPlugin.isEnabled(false, oOverlay); + }.bind(this) + }); + + } + + if (oCreateContainerPlugin) { + + oContextMenuPlugin.addMenuItem({ + id : "CTX_CREATE_CHILD_CONTAINER", + text : oCreateContainerPlugin.getCreateContainerText.bind(oCreateContainerPlugin, false), + handler : this._createContainer.bind(this, false), + available : oCreateContainerPlugin.isCreateAvailable.bind(oCreateContainerPlugin, false), + enabled : oCreateContainerPlugin.isCreateEnabled.bind(oCreateContainerPlugin, false) + }); + + oContextMenuPlugin.addMenuItem({ + id : "CTX_CREATE_SIBLING_CONTAINER", + text : oCreateContainerPlugin.getCreateContainerText.bind(oCreateContainerPlugin, true), + handler : this._createContainer.bind(this, true), + available : oCreateContainerPlugin.isCreateAvailable.bind(oCreateContainerPlugin, true), + enabled : oCreateContainerPlugin.isCreateEnabled.bind(oCreateContainerPlugin, true) + }); + } + + if (this.getPlugins()["remove"]) { + + oContextMenuPlugin.addMenuItem({ + id : "CTX_REMOVE", + text : this._getTextResources().getText("CTX_REMOVE"), // text can be defined also in designtime metadata + handler : this._handleRemoveElement.bind(this), + available : fnIsRemoveAvailable.bind(this), + enabled : fnIsRemoveEnabled.bind(this) + }); + } + + oContextMenuPlugin.addMenuItem({ + id : "CTX_CUT", + text : this._getTextResources().getText("CTX_CUT"), + handler : this._handleCutElement.bind(this), + available : fnIsMovable, + enabled : function () { + return this._oDesignTime.getSelection().length === 1; + }.bind(this) + }); + + if (this.getPlugins()["cutPaste"]) { + + oContextMenuPlugin.addMenuItem({ + id : "CTX_PASTE", + text : this._getTextResources().getText("CTX_PASTE"), + handler : this._handlePasteElement.bind(this), + available : fnIsMovable, + enabled : function(oOverlay) { + return this.getPlugins()["cutPaste"].isElementPasteable(oOverlay); + }.bind(this) + }); + } + + oContextMenuPlugin.addMenuItem({ + id : "CTX_GROUP_FIELDS", + text : this._getTextResources().getText("CTX_GROUP_FIELDS"), + handler : this._handleCombineElements.bind(this), + available : fnIsCombineAvailable.bind(this), + enabled : fnIsCombineEnabled.bind(this) + }); + + oContextMenuPlugin.addMenuItem({ + id : "CTX_UNGROUP_FIELDS", + text : this._getTextResources().getText("CTX_UNGROUP_FIELDS"), + handler : this._handleSplitElements.bind(this), + available : fnIsSplitAvailable.bind(this), + enabled : fnIsSplitEnabled.bind(this) + }); + + if (this.getPlugins()["settings"]) { + oContextMenuPlugin.addMenuItem({ + id : "CTX_SETTINGS", + text : this._getTextResources().getText("CTX_SETTINGS"), + handler : this._handleSettings.bind(this), + available : fnIsSettingsAvailable.bind(this), + enabled : fnIsSettingsEnabled.bind(this) + }); + } + }; + + RuntimeAuthoring.prototype._createContainer = function(bSibling, aOverlays) { + this._handleStopCutPaste(); + + var oOverlay = aOverlays[0]; + var oNewContainerOverlay = this.getPlugins()["createContainer"].handleCreate(bSibling, oOverlay); + + if (this.getPlugins()["rename"]) { + + var oDelegate = { + "onAfterRendering" : function() { + // TODO : remove timeout + setTimeout(function() { + this.getPlugins()["rename"].startEdit(oNewContainerOverlay); + }.bind(this), 0); + oNewContainerOverlay.removeEventDelegate(oDelegate); + }.bind(this) + }; + + oNewContainerOverlay.addEventDelegate(oDelegate); + } + + }; + + /** + * Function to handle renaming a label + * + * @param {array} + * aOverlays list of selected overlays + * @private + */ + RuntimeAuthoring.prototype._handleRename = function(aOverlays) { + var oOverlay = aOverlays[0]; + this.getPlugins()["rename"].startEdit(oOverlay); + }; + + /** + * Function to handle cutting an element + * + * @param {array} + * aOverlays list of selected overlays + * @private + */ + RuntimeAuthoring.prototype._handleCutElement = function(aOverlays) { + var oOverlay = aOverlays[0]; + this.getPlugins()["cutPaste"].cut(oOverlay); + }; + + /** + * Function to handle pasting an element + * + * @param {array} + * aOverlays list of selected overlays + * @private + */ + RuntimeAuthoring.prototype._handlePasteElement = function(aOverlays) { + var oOverlay = aOverlays[0]; + this.getPlugins()["cutPaste"].paste(oOverlay); + }; + + /** + * Handler function to stop cut and paste, because some other operation has started + * + * @private + */ + RuntimeAuthoring.prototype._handleStopCutPaste = function() { + this.getPlugins()["cutPaste"].stopCutAndPaste(); + }; + + /** + * Function to handle combining of elements + * + * @private + */ + RuntimeAuthoring.prototype._handleCombineElements = function() { + this._handleStopCutPaste(); + + var oSelectedElement = this.getPlugins()["contextMenu"].getContextElement(); + this.getPlugins()["combine"].handleCombine(oSelectedElement); + }; + + /** + * Function to handle ungrouping of elements + * + * @private + */ + RuntimeAuthoring.prototype._handleSplitElements = function() { + this._handleStopCutPaste(); + + var oSelectedElement = this.getPlugins()["contextMenu"].getContextElement(); + this.getPlugins()["split"].handleSplit(oSelectedElement); + }; + + /** + * Function to handle settings + * + * @private + */ + RuntimeAuthoring.prototype._handleSettings = function(aOverlays) { + this.getPlugins()["settings"].handleSettings(aOverlays); + }; + + /** + * Get the Title of the Application from the manifest.json + * + * @private + * @returns {String} the application title or empty string + */ + RuntimeAuthoring.prototype._getApplicationTitle = function() { + + var sTitle = ""; + var oComponent = sap.ui.core.Component.getOwnerComponentFor(this._oRootControl); + if (oComponent) { + sTitle = oComponent.getMetadata().getManifestEntry("sap.app").title; + } + return sTitle; + }; + + /** + * Check if Changes exist + * @private + * @returns {Promise} Resolving to false means that no change check is required + */ + RuntimeAuthoring.prototype._checkChangesExist = function() { + if (this._getFlexController().getComponentName().length > 0) { + return this._getFlexController().getComponentChanges({currentLayer: this.getLayer()}).then(function(aAllLocalChanges) { + return aAllLocalChanges.length > 0; + }); + } else { + return Promise.resolve(false); + } + }; + + /** + * Returns the URL parsed hash from UShell + * @return {map} Parsed shell hash map + */ + RuntimeAuthoring.prototype._getURLParsedHash = function(){ + var oURLParser = sap.ushell.Container.getService("URLParsing"); + if (oURLParser.parseShellHash && oURLParser.getHash){ + return oURLParser.parseShellHash(oURLParser.getHash(window.location.href)); + } + }; + + /** + * Builds the navigation arguments object required to trigger the navigation + * using the CrossApplicationNavigation ushell service + * @param {map} mParsedHash The parsed URL hash + * @return {map} The argument map ("oArg" parameter of the "toExternal" function) + */ + RuntimeAuthoring.prototype._buildNavigationArguments = function(mParsedHash){ + return { + target: { + semanticObject : mParsedHash.semanticObject, + action : mParsedHash.action, + context : mParsedHash.contextRaw + }, + params: mParsedHash.params, + appSpecificRoute : mParsedHash.appSpecificRoute + }; + }; + + /** + * Returns true if the ui layer parameter is set to customer (skips personalization changes) + * @param {map} mParsedHash The parsed URL hash + * @return {boolean} True if the parameter is in the hash + */ + RuntimeAuthoring.prototype._hasCustomerLayerParameter = function(mParsedHash){ + return mParsedHash.params && + mParsedHash.params[FL_MAX_LAYER_PARAM] && + mParsedHash.params[FL_MAX_LAYER_PARAM][0] === "CUSTOMER"; + }; + + /** + * Reload the app inside FLP adding the parameter to skip personalization changes + * @param {map} mParsedHash URL parsed hash + * @param {sap.ushell.services.CrossApplicationNavigation} oCrossAppNav ushell service + * @return {Promise} resolving to true if reload was triggered + */ + RuntimeAuthoring.prototype._reloadWithoutPersonalizationChanges = function(mParsedHash, oCrossAppNav){ + if (!this._hasCustomerLayerParameter(mParsedHash)){ + if (!mParsedHash.params) { + mParsedHash.params = {}; + } + mParsedHash.params[FL_MAX_LAYER_PARAM] = ["CUSTOMER"]; + RuntimeAuthoring.enableRestart("CUSTOMER"); + // triggers the navigation without leaving FLP + oCrossAppNav.toExternal(this._buildNavigationArguments(mParsedHash)); + return Promise.resolve(true); + } + }; + + /** + * Reload the app inside FLP removing the parameter to skip personalization changes + * @param {map} mParsedHash URL parsed hash + * @param {sap.ushell.services.CrossApplicationNavigation} oCrossAppNav ushell service + * @return {Promise} resolving to true if reload was triggered + */ + RuntimeAuthoring.prototype._reloadWithPersonalizationChanges = function(mParsedHash, oCrossAppNav){ + if (this._hasCustomerLayerParameter(mParsedHash)) { + delete mParsedHash.params[FL_MAX_LAYER_PARAM]; + // triggers the navigation without leaving FLP + oCrossAppNav.toExternal(this._buildNavigationArguments(mParsedHash)); + return Promise.resolve(true); + } + }; + + /** + * Handler for the message box warning the user that personalization changes exist + * and the app will be reloaded + * @return {Promise} Resolving when the user clicks on OK + */ + RuntimeAuthoring.prototype._handlePersonalizationMessageBoxOnStart = function() { + return this._showMessage( + MessageBox.Icon.INFORMATION, + "HEADER_PERSONALIZATION_EXISTS", + "MSG_PERSONALIZATION_EXISTS"); + }; + + /** + * Check if there are personalization changes and restart the application without them + * Warn the user that the application will be restarted without personalization + * This is only valid when a UShell is present + * @return {Promise} Resolving to false means that reload is not necessary + */ + RuntimeAuthoring.prototype._handlePersonalizationChangesOnStart = function() { + var oUshellContainer = Utils.getUshellContainer(); + if (oUshellContainer && this.getLayer() !== "USER") { + var mParsedHash = this._getURLParsedHash(); + return this._getFlexController().isPersonalized({ignoreMaxLayerParameter : false}) + .then(function(bIsPersonalized){ + if (bIsPersonalized) { + return this._handlePersonalizationMessageBoxOnStart().then(function() { + var oCrossAppNav = sap.ushell.Container.getService("CrossApplicationNavigation"); + if (oCrossAppNav.toExternal && mParsedHash){ + return this._reloadWithoutPersonalizationChanges(mParsedHash, oCrossAppNav); + } + }.bind(this)); + } + }.bind(this)); + } else { + return Promise.resolve(false); + } + }; + + /** + * Handler for the message box asking the user if the personalization changes + * should be restored after exiting RTA + * @return {Promise} Resolves to true if the user wants to restore personalization + */ + RuntimeAuthoring.prototype._handlePersonalizationMessageBoxOnExit = function() { + return new Promise(function(resolve){ + var sMessage = this._getTextResources() + .getText("MSG_LOAD_PERSONALIZATION_CHANGES"); + var sTitle = this._getTextResources() + .getText("HEADER_LOAD_PERSONALIZATION_CHANGES"); + var sConfirmButtonText = this._getTextResources() + .getText("MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT"); + var sCancelButtonText = this._getTextResources() + .getText("MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT"); + var fnCallback = function (sAction) { + if (sAction === sConfirmButtonText) { + return resolve(true); + } else if (sAction === sCancelButtonText) { + return resolve(false); + } + }; + + MessageBox.confirm(sMessage, { + icon: MessageBox.Icon.QUESTION, + title : sTitle, + actions : [sConfirmButtonText, sCancelButtonText], + onClose : fnCallback, + styleClass: Utils.getRtaStyleClassName() + }); + }.bind(this)); + }; + + /** + * When exiting RTA and personalization changes exist, the user can choose to + * reload the app with personalization or stay in the app without the personalization + * @return {Promise} Resolving to false means that the reload is not necessary + */ + RuntimeAuthoring.prototype._handlePersonalizationChangesOnExit = function() { + var oUshellContainer = Utils.getUshellContainer(); + sap.ui.getCore().getEventBus() + .unsubscribe("sap.ushell.renderers.fiori2.Renderer", "appClosed", this._onAppClosed, this); + if (oUshellContainer && this.getLayer() !== "USER") { + // When working with RTA, the MaxLayer parameter will be present in the URL and must + // be ignored in the decision to bring up the pop-up (ignoreMaxLayerParameter = true) + return this._getFlexController().isPersonalized({ignoreMaxLayerParameter : true}) + .then(function(bIsPersonalized){ + if (bIsPersonalized) { + return this._handlePersonalizationMessageBoxOnExit().then(function(bReloadWithPersonalization){ + if (bReloadWithPersonalization) { + var oCrossAppNav = sap.ushell.Container.getService("CrossApplicationNavigation"); + var mParsedHash = this._getURLParsedHash(); + if (oCrossAppNav.toExternal && mParsedHash){ + return this._reloadWithPersonalizationChanges(mParsedHash, oCrossAppNav); + } + } + }.bind(this)); + } + }.bind(this)); + } else { + return Promise.resolve(false); + } + }; + + RuntimeAuthoring.prototype._onModeChange = function(oEvent) { + this.setMode(oEvent.getParameter('key')); + }; + + /** + * Setter for property `mode` + */ + RuntimeAuthoring.prototype.setMode = function (sNewMode) { + if (this.getProperty('mode') !== sNewMode) { + var oModeSwitcher = this._oToolsMenu.getControl('modeSwitcher'); + var bOverlaysEnabled = sNewMode === 'adaptation'; + + if (oModeSwitcher) { + // no event loop because setSelectedButton() doesn't trigger 'select' event on SegmentedButton + oModeSwitcher.setSelectedButton( + oModeSwitcher + .getItems() + .filter(function (oControl) { + return oControl.getKey() === sNewMode; + }) + .pop() + .getId() + ); + } + this._oDesignTime.setEnabled(bOverlaysEnabled); + this.getPlugins()['tabHandling'][bOverlaysEnabled ? 'removeTabIndex' : 'restoreTabIndex'](); + this.setProperty('mode', sNewMode); + this.fireModeChanged({mode: sNewMode}); + } + }; + + return RuntimeAuthoring; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/Utils.js b/resources/sap/ui/rta/Utils.js new file mode 100644 index 0000000..b52d061 --- /dev/null +++ b/resources/sap/ui/rta/Utils.js @@ -0,0 +1,549 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides object sap.ui.rta.Utils. +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/fl/Utils', + 'sap/ui/dt/OverlayUtil', + 'sap/ui/dt/OverlayRegistry', + 'sap/ui/fl/registry/Settings' +], +function( + jQuery, + FlexUtils, + OverlayUtil, + OverlayRegistry, + Settings +) { + "use strict"; + + /** + * Class for Utils. + * + * @class Utility functionality to work with controls, e.g. iterate through aggregations, find parents, etc. + * + * @author SAP SE + * @version 1.50.0 + * + * @private + * @static + * @since 1.30 + * @alias sap.ui.rta.Utils + * @experimental Since 1.30. This class is experimental and provides only limited functionality. + * API of this class might be changed in the future. + */ + + var Utils = {}; + + Utils.RESOLVED_PROMISE = Promise.resolve(true); + + Utils._sFocusableOverlayClass = ".sapUiDtOverlaySelectable"; + + Utils._sRtaStyleClassName = ""; + + /** + * Returns the rta specific Style Class + * + * @return {string} styleClass for RTA + */ + Utils.getRtaStyleClassName = function() { + return Utils._sRtaStyleClassName; + }; + + /** + * Sets the rta specific Style Class to "sapContrast", except for the User layer. + * + * @param {string} sLayer the current Layer from RTA + */ + Utils.setRtaStyleClassName = function(sLayer) { + if (sLayer === "USER") { + Utils._sRtaStyleClassName = ""; + } else if (FlexUtils.getLayerIndex(sLayer) > -1) { + if (sap.ui.getCore().getConfiguration().getTheme() === "sap_belize") { + Utils._sRtaStyleClassName = "sapContrast"; + } else if (sap.ui.getCore().getConfiguration().getTheme() === "sap_belize_plus") { + Utils._sRtaStyleClassName = "sapContrastPlus"; + } + } + }; + + /** + * Utility function to check if extensibility is enabled in the current system + * + * @param {sap.ui.core.Control} oControl - Control to be checked + * @returns {Promise} resolves a boolean + */ + Utils.isExtensibilityEnabledInSystem = function(oControl) { + var sComponentName = FlexUtils.getComponentClassName(oControl); + if (!sComponentName || sComponentName == "") { + return Promise.resolve(false); + } + return Settings.getInstance(sComponentName).then(function(oSettings) { + if (oSettings.isModelS) { + return oSettings.isModelS(); + } + return false; + }); + }; + + /** + * Utility function for retrieving designtime metadata from the relevant container for a specified overlay object + * + * @param {sap.ui.dt.Overlay} oOverlay - Overlay object + * @returns {Object|undefined} Metadata object or false if there is no aggregation + */ + Utils.getRelevantContainerDesigntimeMetadata = function(oOverlay) { + var oRelevantContainer = oOverlay.getRelevantContainer(); + if (!oRelevantContainer || !oOverlay.getParent()) { + return undefined; + } + var oRelevantContainerOverlay = OverlayRegistry.getOverlay(oRelevantContainer); + return oRelevantContainerOverlay ? oRelevantContainerOverlay.getDesignTimeMetadata() : undefined; + }; + + /** + * Utility function to check if the OData service is updated in the meantime + * + * @param {sap.ui.core.Control} oControl - Control to be checked + * @returns {Promise} resolves if service is up to date, rejects otherwise + */ + Utils.isServiceUpToDate = function(oControl) { + return this.isExtensibilityEnabledInSystem(oControl).then(function(bEnabled) { + if (bEnabled) { + jQuery.sap.require("sap.ui.fl.fieldExt.Access"); + var oModel = oControl.getModel(); + if (oModel) { + var bServiceOutdated = sap.ui.fl.fieldExt.Access.isServiceOutdated(oModel.sServiceUrl); + if (bServiceOutdated) { + sap.ui.fl.fieldExt.Access.setServiceValid(oModel.sServiceUrl); + //needs FLP to trigger UI restart popup + sap.ui.getCore().getEventBus().publish("sap.ui.core.UnrecoverableClientStateCorruption","RequestReload",{}); + return Promise.reject(); + } + } + } + }); + }; + + /** + * Utility function to check via backend calls if the custom field button shall be enabled or not + * + * @param {sap.ui.core.Control} oControl - Control to be checked + * @returns {Boolean} true if CustomFieldCreation functionality is to be enabled, false if not + */ + Utils.isCustomFieldAvailable = function(oControl) { + return this.isExtensibilityEnabledInSystem(oControl).then(function(bShowCreateExtFieldButton) { + if (!bShowCreateExtFieldButton) { + return false; + } else if (!oControl.getModel()) { + return false; + } else { + var sServiceUrl = oControl.getModel().sServiceUrl; + var sEntityType = this.getBoundEntityType(oControl).name; + try { + jQuery.sap.require("sap.ui.fl.fieldExt.Access"); + var oJQueryDeferred = sap.ui.fl.fieldExt.Access.getBusinessContexts(sServiceUrl, + sEntityType); + return Promise.resolve(oJQueryDeferred).then(function(oResult) { + if (oResult) { + if (oResult.BusinessContexts) { + if (oResult.BusinessContexts.length > 0) { + oResult.EntityType = sEntityType; + return oResult; + } + } + } else { + return false; + } + }).catch(function(oError){ + if (oError) { + if (jQuery.isArray(oError.errorMessages)) { + for (var i = 0; i < oError.errorMessages.length; i++) { + jQuery.sap.log.error(oError.errorMessages[i].text); + } + } + } + return false; + }); + } catch (oError) { + jQuery.sap.log + .error("exception occured in sap.ui.fl.fieldExt.Access.getBusinessContexts", oError); + return false; + } + } + }.bind(this)); + }; + + /** + * Opens a confirmation dialog indicating mandatory fields if necessary. + * + * @param {Object} oElement - The analyzed control + * @param {String} sText - Custom text for the dialog + * @return {Promise} The Promise which resolves when popup is closed (via Remove OR Cancel actions) + */ + Utils.openRemoveConfirmationDialog = function(oElement, sText) { + var oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + var sTitle; + return new Promise( + function(resolve, reject) { + + sTitle = oTextResources.getText("CTX_REMOVE_TITLE"); + + // create some dummy JSON data and create a Model from it + var data = { + messageText : sText, + titleText : sTitle, + icon : "sap-icon://question-mark", + removeText : oTextResources.getText("BTN_FREP_REMOVE"), + cancelText : oTextResources.getText("BTN_FREP_CANCEL") + }; + var oModel = new sap.ui.model.json.JSONModel(); + oModel.setData(data); + + var oFragmentDialog; + var fnCleanUp = function() { + if (oFragmentDialog) { + oFragmentDialog.close(); + oFragmentDialog.destroy(); + oFragmentDialog = null; + } + }; + + // create a controller for the action in the Dialog + var oFragmentController = { + removeField : function() { + fnCleanUp(); + resolve(true); + }, + closeDialog : function() { + fnCleanUp(); + resolve(false); + } + }; + + // instantiate the Fragment if not done yet + if (!oFragmentDialog) { + oFragmentDialog = sap.ui.xmlfragment("sap.ui.rta.view.RemoveElementDialog", oFragmentController); + oFragmentDialog.setModel(oModel); + } + oFragmentDialog.open(); + } + ); + }; + + /** + * Checks if overlay is selectable in RTA (selectable also means focusable for RTA) + * + * @param {sap.ui.dt.ElementOverlay} oOverlay - Overlay object + * @returns {boolean} if it's selectable + * @private + */ + Utils.isOverlaySelectable = function(oOverlay) { + // check the real DOM visibility should be preformed while oOverlay.isVisible() can be true, but if element + // has no geometry, overlay will not be visible in UI + return oOverlay.isSelectable() && oOverlay.$().is(":visible"); + }; + + /** + * Utility function for retrieving property values for a specified Element + * + * @param {sap.ui.core.Element} oElement - Any element + * @param {String} sPropertyName - Name of the property + * @returns {*} value of the property, could be any value + */ + Utils.getPropertyValue = function(oElement, sPropertyName) { + var oMetadata = oElement.getMetadata().getPropertyLikeSetting(sPropertyName); + var sPropertyGetter = oMetadata._sGetter; + return oElement[sPropertyGetter](); + }; + + /** + * Returns overlay instance for an overlay's dom element + * + * @param {document.documentElement} oDomRef - DOM Element + * @returns {sap.ui.dt.ElementOverlay} Overlay object + * @private + */ + Utils.getOverlayInstanceForDom = function(oDomRef) { + var sId = jQuery(oDomRef).attr("id"); + if (sId) { + return sap.ui.getCore().byId(sId); + } + }; + + /** + * Returns the focused overlay + * + * @returns {sap.ui.dt.ElementOverlay} Overlay object + * @private + */ + Utils.getFocusedOverlay = function() { + if (document.activeElement) { + var oElement = sap.ui.getCore().byId(document.activeElement.id); + if (oElement instanceof sap.ui.dt.ElementOverlay) { + return oElement; + } + } + }; + + /** + * Returns the focusable parent overlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay - Target overlay object + * @returns {sap.ui.dt.ElementOverlay} Found overlay object + * @private + */ + Utils.getFocusableParentOverlay = function(oOverlay) { + if (!oOverlay) { + return undefined; + } + var oFocusableParentOverlay = oOverlay.getParentElementOverlay(); + + while (oFocusableParentOverlay && !oFocusableParentOverlay.getSelectable()) { + oFocusableParentOverlay = oFocusableParentOverlay.getParentElementOverlay(); + } + return oFocusableParentOverlay; + }; + + /** + * Returns the first focusable child overlay. Loop over siblings and parents when no focusable siblings found + * + * @param {sap.ui.dt.ElementOverlay} oOverlay - Target overlay object + * @returns {sap.ui.dt.ElementOverlay} Found overlay object + * @private + */ + Utils.getFirstFocusableDescendantOverlay = function(oOverlay) { + return OverlayUtil.getFirstDescendantByCondition(oOverlay, this.isOverlaySelectable); + }; + + /** + * Returns the next focusable sibling overlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay - Target overlay object + * @returns {sap.ui.dt.ElementOverlay} Found overlay object + * @private + */ + Utils.getNextFocusableSiblingOverlay = function(oOverlay) { + var oNextFocusableSiblingOverlay = OverlayUtil.getNextSiblingOverlay(oOverlay); + + while (oNextFocusableSiblingOverlay && !this.isOverlaySelectable(oNextFocusableSiblingOverlay)) { + oNextFocusableSiblingOverlay = OverlayUtil.getNextSiblingOverlay(oNextFocusableSiblingOverlay); + } + return oNextFocusableSiblingOverlay; + }; + + /** + * Returns the previous focusable sibling overlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay - Target overlay object + * @returns {sap.ui.dt.ElementOverlay} Found overlay object + * @private + */ + Utils.getPreviousFocusableSiblingOverlay = function(oOverlay) { + var oPreviousFocusableSiblingOverlay = OverlayUtil.getPreviousSiblingOverlay(oOverlay); + + while (oPreviousFocusableSiblingOverlay && !this.isOverlaySelectable(oPreviousFocusableSiblingOverlay)) { + oPreviousFocusableSiblingOverlay = OverlayUtil + .getPreviousSiblingOverlay(oPreviousFocusableSiblingOverlay); + } + return oPreviousFocusableSiblingOverlay; + }; + + /** + * Utility function for retrieving Element position in the specified Parent + * + * @param {sap.ui.core.Element} oParentElement - Parent Element + * @param {sap.ui.core.Element} oChildElement - Element which position is being looked for + * @param {String} sAggregationName - Aggregation name + * @param {Function} [fnGetIndex] - Custom handler for retreiving index + * @returns {Number} index of the element + */ + Utils.getIndex = function(oParentElement, oChildElement, sAggregationName, fnGetIndex) { + var iIndex; + if (fnGetIndex && typeof fnGetIndex === "function") { + // fnGetIndex usually comes from designtime metadata, so aggregation name is clear and available in it + iIndex = fnGetIndex.call(null, oParentElement, oChildElement); + } else { + var oMetadata = oParentElement.getMetadata(); + var oAggregation = oMetadata.getAggregation(sAggregationName); + var sGetter = oAggregation._sGetter; + var aContainers = oParentElement[sGetter](); + + if (Array.isArray(aContainers)) { + if (oChildElement) { + iIndex = aContainers.indexOf(oChildElement) + 1; + } else { + iIndex = aContainers.length; + } + } else { + iIndex = 0; + } + } + return iIndex; + }; + + /** + * Creates a unique id for a new control based on its parent control, entityType and binding path. + * + * @param {*} oParentControl - Parent control. + * @param {String} sEntityType - EntityType which is bound to the parent control + * @param {String} sBindingPath - Binding path of the control for which a new Id should be created + * @returns {String} New string Id + * @private + */ + Utils.createFieldLabelId = function(oParentControl, sEntityType, sBindingPath) { + return (oParentControl.getId() + "_" + sEntityType + "_" + sBindingPath).replace("/", "_"); + }; + + /** + * Secure extract a label from an element + * + * @param {sap.ui.core.Element} oElement - Any Object + * @param {Function} [fnFunction] - Custom function for retrieving label + * @return {String|undefined} Label string or undefined + */ + Utils.getLabelForElement = function(oElement, fnFunction) { + // if there is a function, only the function is executed + if (fnFunction) { + return fnFunction(oElement); + } else { + // first try getText(), then getlabelText(), if not available try getLabel().getText(), then getTitle(), then getId() + var sFieldLabel = oElement.getText && oElement.getText(); + if (!sFieldLabel) { + sFieldLabel = oElement.getLabelText && oElement.getLabelText(); + } + if (!sFieldLabel) { + sFieldLabel = oElement.getLabel && oElement.getLabel(); + if (sFieldLabel && sFieldLabel.getText){ + sFieldLabel = sFieldLabel.getText(); + } + } + if (!sFieldLabel) { + sFieldLabel = oElement.getTitle && oElement.getTitle(); + } + if (!sFieldLabel) { + sFieldLabel = oElement.getId && oElement.getId(); + } + return (typeof sFieldLabel) === "string" ? sFieldLabel : undefined; + } + }; + + /** + * Get the entity type based on the binding of a control + * + * @param {sap.ui.core.Element} oElement - Any Object + * @param {sap.ui.model.odata.ODataModel} oModel - Data model + * @return {Object} Entity type without namespace + */ + Utils.getBoundEntityType = function(oElement, oModel) { + oModel || (oModel = oElement.getModel()); + + var oBindingContext = oElement.getBindingContext(); + + if (oBindingContext) { + return Utils.getEntityTypeByPath(oModel, oBindingContext.getPath()) || {}; + } + return {}; + }; + + /** + * Allow window.open to be stubbed in tests + * + * @param {String} sUrl - url string + */ + Utils.openNewWindow = function(sUrl) { + window.open(sUrl, "_blank"); + }; + + /** + * Function to find the binding paths of a given UI5 Element + * + * @param {sap.ui.core.Element} oElement - Element for which the binding info should be found + * @returns {Object} valueProperty: the name of the property which is bound + * @private + */ + Utils.getElementBindingPaths = function(oElement) { + var aPaths = {}; + if (oElement.mBindingInfos) { + for ( var oInfo in oElement.mBindingInfos) { + var sPath = oElement.mBindingInfos[oInfo].parts[0].path + ? oElement.mBindingInfos[oInfo].parts[0].path + : ""; + sPath = sPath.split("/")[sPath.split("/").length - 1]; + aPaths[sPath] = { + valueProperty : oInfo + }; + } + } + return aPaths; + }; + + /** + * Function to get the Fiori2 Renderer + * + * @returns {sap.ushell.renderers.fiori2.Renderer|undefined} renderer or null if there is no one + */ + Utils.getFiori2Renderer = function() { + var oContainer = Utils.getUshellContainer() || {}; + return typeof oContainer.getRenderer === "function" ? oContainer.getRenderer("fiori2") : undefined; + }; + + /** + * Function to get the Fiori Container + * + * @returns {Object|undefined} ushell container or null if there is no one + */ + Utils.getUshellContainer = function() { + return sap.ushell && sap.ushell.Container; + }; + + /** + * Fetching entity metadata by specified path + * @param {sap.ui.model.Model} oModel - Model + * @param {String} sPath - Path to resolve + * @returns {Object|null} - Plain object with entity description + */ + Utils.getEntityTypeByPath = function (oModel, sPath) { + return oModel.oMetadata._getEntityTypeByPath(sPath); + }; + + /** + * Merging helper (pool analog of lodash.mergeWith) which allows custom function + * for resolving merging conflicts. + * + * TODO: replace with lodash.mergeWith when it's available + * + * @param mDestination {Object} - Destionation object + * @param mSource {Object} - Source object + * @param fnCustomizer {Function} - The customizer is invoked with five arguments: + * (vDestinationValue, vSourceValue, sProperty, mDestination, mSource). + * @return {Object} - returns mDestination object + */ + Utils.mergeWith = function (mDestination, mSource, fnCustomizer) { + if (!(typeof fnCustomizer === "function")) { + throw new Error('In order to use mergeWith() utility function fnCustomizer should be provided!'); + } + + for (var sSourceProperty in mSource) { + if (mSource.hasOwnProperty(sSourceProperty)) { + mDestination[sSourceProperty] = mDestination.hasOwnProperty(sSourceProperty) + ? fnCustomizer( + mDestination[sSourceProperty], + mSource[sSourceProperty], + sSourceProperty, + mDestination, + mSource + ) + : mSource[sSourceProperty]; + } + } + + return mDestination; + }; + + return Utils; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/appVariant/ManageAppsDialog.js b/resources/sap/ui/rta/appVariant/ManageAppsDialog.js new file mode 100644 index 0000000..c203155 --- /dev/null +++ b/resources/sap/ui/rta/appVariant/ManageAppsDialog.js @@ -0,0 +1,112 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.rta.appVariant.ManageAppsDialog. +sap.ui.define([ + 'sap/ui/base/ManagedObject', + 'sap/ui/core/ComponentContainer', + 'sap/m/Dialog', + 'sap/ui/rta/appVariant/manageApps/webapp/Component', + "sap/ui/fl/Utils" +], function( + ManagedObject, + ComponentContainer, + Dialog, + ManageAppsComponent, + FlexUtils) { + + "use strict"; + + var _rootControl; + + var ManageAppsDialog = ManagedObject.extend("sap.ui.rta.appVariant.ManageAppsDialog", { + metadata : { + properties: { + rootControl: { + name: "rootControl", + type: "object" + } + }, + events : { + "opened" : {}, + "close" : {} + } + }, + constructor: function() { + _rootControl = arguments[0].rootControl; + ManagedObject.prototype.constructor.apply(this, arguments); + } + }); + + ManageAppsDialog.prototype.init = function() { + this._oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + this._oDialog = new Dialog("manageAppsDialog"); + + var oRootControl = _rootControl; + var oAdaptedAppDescriptorData = FlexUtils.getAppDescriptor(oRootControl); + var sIdAppAdapted = oAdaptedAppDescriptorData["sap.app"].id; + + var oAdaptedAppProperties = { + title : oAdaptedAppDescriptorData["sap.app"].title, + subTitle : oAdaptedAppDescriptorData["sap.app"].subTitle || '', + description : oAdaptedAppDescriptorData["sap.app"].description || '', + icon : oAdaptedAppDescriptorData["sap.ui"].icons.icon || '', + componentName : oAdaptedAppDescriptorData["sap.ui5"].componentName, + idAppAdapted : sIdAppAdapted + }; + + // Create manage apps component + this.oManageAppsComponent = new ManageAppsComponent("manageApps", { adaptedAppProperties : oAdaptedAppProperties }); + + // Place component in container and display + this.oManageAppsComponentContainer = new ComponentContainer({ + component : this.oManageAppsComponent + }); + + this._oDialog.addContent(this.oManageAppsComponentContainer); + var oButton = this._createButton(); + this._oDialog.addButton(oButton); + this._oDialog.setContentWidth("1000px"); + this._oDialog.setContentHeight("300px"); + this._oDialog.setShowHeader(false); + }; + + ManageAppsDialog.prototype.open = function() { + return new Promise(function(resolve) { + this._oDialog.oPopup.attachOpened(function (){ + this.fireOpened(); + resolve(this); + }.bind(this)); + this._oDialog.open(); + }.bind(this)); + }; + + ManageAppsDialog.prototype._createButton = function() { + var oCancelButton = new sap.m.Button({ + text : this._oTextResources.getText("MAA_CLOSE_BUTTON"), + press : [this._closeDialog, this] + }); + return oCancelButton; + }; + + ManageAppsDialog.prototype._closeDialog = function() { + return new Promise(function(resolve) { + this._oDialog.oPopup.attachClosed(function (){ + this._oDialog.destroy(); + resolve(true); + }.bind(this)); + this._oDialog.close(); + this.fireClose(); + }.bind(this)); + }; + + ManageAppsDialog.prototype.exit = function() { + this._oDialog.destroy(); + }; + + return ManageAppsDialog; + +}, /* bExport= */ true); diff --git a/resources/sap/ui/rta/appVariant/ManageAppsLoader.js b/resources/sap/ui/rta/appVariant/ManageAppsLoader.js new file mode 100644 index 0000000..161d758 --- /dev/null +++ b/resources/sap/ui/rta/appVariant/ManageAppsLoader.js @@ -0,0 +1,57 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + "jquery.sap.global", + "sap/ui/rta/Utils" +], function(jQuery, RtaUtils) { + "use strict"; + + var _oPromise; + + var oManageAppsDialog; + return { + load: function(sRootControl) { + var oRootControl = sap.ui.getCore().byId(sRootControl); + + if (!_oPromise) { + _oPromise = new Promise(function(resolve) { + sap.ui.require(["sap/ui/rta/appVariant/ManageAppsDialog"], function(ManageAppsDialog) { + return resolve(ManageAppsDialog); + }); + }); + } + + return _oPromise.then(function(ManageAppsDialog) { + + if (!oManageAppsDialog) { + oManageAppsDialog = new ManageAppsDialog({ + rootControl: oRootControl, + close: function() { + this.destroy(); + oManageAppsDialog = null; + } + }); + } + return oManageAppsDialog.open(); + + }); + }, + // App variant functionality is only supported in S/4 Hana Cloud Platform with 'sap-ui-xx-rta-save-as=true' (feature switch) as a part of url. + hasAppVariantsSupport: function(sLayer, bIsAtoAvailableAndEnabled) { + if (bIsAtoAvailableAndEnabled && RtaUtils.getUshellContainer() && sLayer === "CUSTOMER") { + var oUriParams = jQuery.sap.getUriParameters(); + var aUriLayer = oUriParams.mParams["sap-ui-xx-rta-save-as"]; + if (aUriLayer && aUriLayer.length > 0) { + return aUriLayer[0] === 'true' ? true : false; + } + } + + return false; + } + }; + +}); \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/Utils.js b/resources/sap/ui/rta/appVariant/Utils.js new file mode 100644 index 0000000..97c2de9 --- /dev/null +++ b/resources/sap/ui/rta/appVariant/Utils.js @@ -0,0 +1,87 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + "jquery.sap.global"], + function(jQuery) { + "use strict"; + + var Utils = {}; + var _sAppIndexBasedOnIdUrl = "/sap/bc/ui2/app_index/?basedOnId="; + var _sAppIndexIdUrl = "/sap/bc/ui2/app_index/?sap.app/id="; + + Utils.ajaxRequest = function(oRequestData) { + return new Promise(function(resolve, reject){ + jQuery.ajax(oRequestData).done(function(oResponseData) { + return resolve(oResponseData); + }).fail(function(oError) { + return reject(oError); + }); + }); + }; + + Utils.getAppVariants = function(sComponentName, sType) { + var oRequestData = { + url: _sAppIndexBasedOnIdUrl + sComponentName + '&fields=descriptorUrl', + type: "GET" + }; + + return this.ajaxRequest(oRequestData).then(function(oResponseData) { + var aAppVariants = oResponseData.results; + return this.getAppVariantDescriptorInfo(aAppVariants, sType); + }.bind(this)); + }; + + Utils.getAppVariantDescriptorInfo = function(aAppVariants, sType) { + var aAllAppVariants = []; + + var that = this; + + aAppVariants.some(function(oAppVariant) { + aAllAppVariants.push(that.getAppVariantsProperties(oAppVariant, sType)); + }); + + return Promise.all(aAllAppVariants).then(function(aResponses) { + return aResponses; + }); + }; + + Utils.getAppVariantsProperties = function(oAppVariant, sType) { + var oAppVariantProperties = {}, oRequestData; + + oRequestData = { + url: oAppVariant["descriptorUrl"], + type: "GET" + }; + + return this.ajaxRequest(oRequestData).then(function(oResponseData) { + var oAppVariantDescriptor = oResponseData; + + oAppVariantProperties.id = oAppVariantDescriptor["sap.app"].id; + oAppVariantProperties.title = oAppVariantDescriptor["sap.app"].title; + oAppVariantProperties.subTitle = oAppVariantDescriptor["sap.app"].subTitle; + oAppVariantProperties.description = oAppVariantDescriptor["sap.app"].description; + oAppVariantProperties.icon = oAppVariantDescriptor["sap.ui"].icons.icon; + oAppVariantProperties.componentName = oAppVariantDescriptor["sap.ui5"].componentName; + oAppVariantProperties.type = sType; + + return Promise.resolve(oAppVariantProperties); + }); + }; + + Utils.getOriginalAppProperties = function(sOriginalAppId, sType) { + var oRequestData = { + url: _sAppIndexIdUrl + sOriginalAppId + '&fields=descriptorUrl', + type: "GET" + }; + + return this.ajaxRequest(oRequestData).then(function(oResponseData) { + var aAppVariants = oResponseData.results; + return this.getAppVariantDescriptorInfo(aAppVariants, sType); + }.bind(this)); + }; + + return Utils; +}, /* bExport= */true); \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/Component.js b/resources/sap/ui/rta/appVariant/manageApps/webapp/Component.js new file mode 100644 index 0000000..83f701b --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/Component.js @@ -0,0 +1,43 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + "sap/ui/core/UIComponent" +], function(UIComponent) { + "use strict"; + + var _oAdaptedAppProperties; + + return UIComponent.extend("sap.ui.rta.appVariant.manageApps.webapp.Component", { + + metadata: { + "manifest": "json", + "library": "sap.ui.rta", + "version": "0.9", + "properties": { + adaptedAppProperties : { + type: "object" + } + } + + }, + + constructor: function() { + _oAdaptedAppProperties = arguments[1].adaptedAppProperties; + UIComponent.prototype.constructor.apply(this, arguments); + }, + + /** + * Component is automatically initialized by SAPUI5 at startup of the app and calls the init method once. + * @public + * @override + */ + init: function() { + this.setAdaptedAppProperties(_oAdaptedAppProperties); + // call the base component's init function + UIComponent.prototype.init.apply(this, arguments); + } + }); +}); \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js b/resources/sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js new file mode 100644 index 0000000..2112eca --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js @@ -0,0 +1,122 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + "jquery.sap.global", + "sap/ui/core/mvc/Controller", + "sap/ui/rta/appVariant/manageApps/webapp/model/models", + "sap/ui/rta/appVariant/Utils", + "sap/m/MessageBox" +], function(jQuery, Controller, Model, ManageAppsUtils, MessageBox) { + "use strict"; + + var _oAdaptedAppProperties, sModulePath, oI18n; + return Controller.extend("sap.ui.rta.appVariant.manageApps.webapp.controller.ManageApps", { + onInit: function() { + _oAdaptedAppProperties = this.getOwnerComponent().getAdaptedAppProperties(); + var sOriginalAppId = _oAdaptedAppProperties.componentName; + + sModulePath = jQuery.sap.getModulePath( "sap.ui.rta.appVariant.manageApps.webapp" ); + oI18n = jQuery.sap.resources({ + url : sModulePath + "/i18n/i18n.properties" + }); + + var sAppVariantType = oI18n.getText("MAA_APP_VARIANT_TYPE"); + + return ManageAppsUtils.getAppVariants(sOriginalAppId, sAppVariantType).then(function(aAppVariantsProperties) { + return this._addAppVariantsProperties(aAppVariantsProperties).then(function() { + return this._paintCurrentlyAdaptedApp(); + }.bind(this)); + }.bind(this))["catch"](function(oError) { + return this._showMessage(MessageBox.Icon.ERROR, "HEADER_MANAGE_APPS_FAILED", "MSG_MANAGE_APPS_FAILED", oError).then(function() { + return this._closeManageAppsDialog(); + }.bind(this)); + }.bind(this)); + }, + _showMessage: function(oMessageType, sTitleKey, sMessageKey, oError) { + var _oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + var sMessage = _oTextResources.getText(sMessageKey, oError ? [oError.message || oError] : undefined); + var sTitle = _oTextResources.getText(sTitleKey); + + return new Promise(function(resolve) { + MessageBox.show(sMessage, { + icon: oMessageType, + title: sTitle, + onClose: resolve + }); + }); + }, + _addAppVariantsProperties: function(aAppVariantsProperties) { + var oAdaptedAppProperties = { + title: _oAdaptedAppProperties.title, + subTitle: _oAdaptedAppProperties.subTitle, + description: _oAdaptedAppProperties.description, + icon: _oAdaptedAppProperties.icon, + id: _oAdaptedAppProperties.idAppAdapted, + componentName: _oAdaptedAppProperties.componentName, + currentStatus: oI18n.getText("MAA_CURRENTLY_ADAPTING") + }; + + if (_oAdaptedAppProperties.idAppAdapted === _oAdaptedAppProperties.componentName) { + oAdaptedAppProperties.type = oI18n.getText("MAA_ORIGINAL_TYPE"); + aAppVariantsProperties.unshift(oAdaptedAppProperties); + return this._bindModelData(aAppVariantsProperties); + } else { + var aFilteredAppVariantsProperties = aAppVariantsProperties.filter(function(oAppVariantProperty) { + return oAppVariantProperty.id !== oAdaptedAppProperties.id; + }); + + oAdaptedAppProperties.type = oI18n.getText("MAA_APP_VARIANT_TYPE"); + aFilteredAppVariantsProperties.unshift(oAdaptedAppProperties); + return ManageAppsUtils.getOriginalAppProperties(_oAdaptedAppProperties.componentName, oI18n.getText("MAA_ORIGINAL_TYPE")).then(function(aOriginalAppProperties) { + // Original app properties must be on the top of the overview list + aFilteredAppVariantsProperties.unshift(aOriginalAppProperties[0]); + return this._bindModelData(aFilteredAppVariantsProperties); + }.bind(this)); + } + }, + _bindModelData: function(aAppVariantsProperties) { + var oModelData = { + appVariants: aAppVariantsProperties + }; + var oModel = Model.createModel(oModelData); + this.getView().setModel(oModel); + return Promise.resolve(true); + + }, + _closeManageAppsDialog: function() { + var oManageAppsDialog = sap.ui.getCore().byId("manageAppsDialog"); + + oManageAppsDialog.oPopup.attachClosed(function (){ + oManageAppsDialog.destroy(); + return Promise.resolve(true); + }); + oManageAppsDialog.close(); + }, + _paintCurrentlyAdaptedApp: function() { + var oTable = this.getView().byId("Table1"); + jQuery('.maaCurrentStatus,.maaSubTitle').css("font-size", '12px'); + + function colorRows() { + var rowCount = oTable.getVisibleRowCount(); + var rowStart = oTable.getFirstVisibleRow(); + var currentRowContext; + + for (var i = 0; i < rowCount; i++) { + currentRowContext = oTable.getContextByIndex(rowStart + i); + if (currentRowContext && currentRowContext.getProperty("currentStatus") === oI18n.getText("MAA_CURRENTLY_ADAPTING")) { + var sColor = sap.ui.core.theming.Parameters.get("sapUiHighlight"); + oTable.getRows()[i].$().find("span").css({color: sColor}); + break; + } + } + + return Promise.resolve(true); + } + + return colorRows(); + } + }); +}); \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/css/style.css b/resources/sap/ui/rta/appVariant/manageApps/webapp/css/style.css new file mode 100644 index 0000000..e69de29 diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n.properties b/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n.properties new file mode 100644 index 0000000..9d5923a --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n.properties @@ -0,0 +1,27 @@ +#This is the resource bundle for the sap.ui.rta library +# __ldi.translation.uuid=9543e3db-80bd-4e11-b003-36ef4f9d36c0 + +#XTIT: manage apps dialog title +title=Overview of App Variants +#XFLD +MAA_DIALOG_ICON=Icon +#XFLD +MAA_DIALOG_TITLE=Title +#XFLD +MAA_DIALOG_SUBTITLE=Subtitle +#XFLD +MAA_DIALOG_DESCRIPTION=Description +#XFLD +MAA_DIALOG_ID=Id +#XFLD +MAA_DIALOG_BASE_APP=Base App +#XFLD +MAA_DIALOG_ACTIONS=Actions +#XFLD +MAA_DIALOG_ADAPT_UI=Adapt UI +#XFLD +MAA_CURRENTLY_ADAPTING=Currently Adapting +#XFLD +MAA_ORIGINAL_TYPE=Original +#XFLD +MAA_APP_VARIANT_TYPE=App Variant \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_en_US_sappsd.properties b/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_en_US_sappsd.properties new file mode 100644 index 0000000..b9c3ebf --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_en_US_sappsd.properties @@ -0,0 +1,25 @@ + +#XTIT: manage apps dialog title +title=[[[\u014E\u028B\u0113\u0157\u028B\u012F\u0113\u0175 \u014F\u0192 \u0100\u03C1\u03C1 \u01B2\u0105\u0157\u012F\u0105\u014B\u0163\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_DIALOG_ICON=[[[\u012C\u010B\u014F\u014B]]] +#XFLD +MAA_DIALOG_TITLE=[[[\u0162\u012F\u0163\u013A\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_DIALOG_SUBTITLE=[[[\u015C\u0171\u0183\u0163\u012F\u0163\u013A\u0113\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_DIALOG_DESCRIPTION=[[[\u010E\u0113\u015F\u010B\u0157\u012F\u03C1\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_DIALOG_ID=[[[\u012C\u018C\u2219\u2219]]] +#XFLD +MAA_DIALOG_BASE_APP=[[[\u0181\u0105\u015F\u0113 \u0100\u03C1\u03C1\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_DIALOG_ACTIONS=[[[\u0100\u010B\u0163\u012F\u014F\u014B\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_DIALOG_ADAPT_UI=[[[\u0100\u018C\u0105\u03C1\u0163 \u016E\u012C\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_CURRENTLY_ADAPTING=[[[\u0108\u0171\u0157\u0157\u0113\u014B\u0163\u013A\u0177 \u0100\u018C\u0105\u03C1\u0163\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_ORIGINAL_TYPE=[[[\u014E\u0157\u012F\u011F\u012F\u014B\u0105\u013A\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD +MAA_APP_VARIANT_TYPE=[[[\u0100\u03C1\u03C1 \u01B2\u0105\u0157\u012F\u0105\u014B\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_en_US_saptrc.properties b/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_en_US_saptrc.properties new file mode 100644 index 0000000..fd6760e --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/i18n/i18n_en_US_saptrc.properties @@ -0,0 +1,25 @@ + +#XTIT: manage apps dialog title +title=nO5QLUwCm/A4tyAcVBM6Hg_Overview of App Variants +#XFLD +MAA_DIALOG_ICON=YH6RkWOpw+V2cr1zUl/H2g_Icon +#XFLD +MAA_DIALOG_TITLE=VZp6Lp3Kk/9cNoxcfIrN6g_Title +#XFLD +MAA_DIALOG_SUBTITLE=tK2et3dUs+YNFvQQhb5qHQ_Subtitle +#XFLD +MAA_DIALOG_DESCRIPTION=TFAZEL0qg75NcxJkGPsozw_Description +#XFLD +MAA_DIALOG_ID=3WeyhgGRRN7NZs+j115myQ_Id +#XFLD +MAA_DIALOG_BASE_APP=70ZSBPazQvKFvVKZ/3QUsw_Base App +#XFLD +MAA_DIALOG_ACTIONS=4f/7imBaIEoc8L7Ud48X5w_Actions +#XFLD +MAA_DIALOG_ADAPT_UI=iejyPWEAiTcyKelntCesog_Adapt UI +#XFLD +MAA_CURRENTLY_ADAPTING=KD2hlRZ+IYlMmPC3j9QFXA_Currently Adapting +#XFLD +MAA_ORIGINAL_TYPE=yWRCcUMSL7qRh8510R3pag_Original +#XFLD +MAA_APP_VARIANT_TYPE=V5xuSC/xG3v7k1W4hpoIfw_App Variant diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/index.html b/resources/sap/ui/rta/appVariant/manageApps/webapp/index.html new file mode 100644 index 0000000..7dff1a6 --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/index.html @@ -0,0 +1,35 @@ + + + + + + + + manageApps + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/manifest.json b/resources/sap/ui/rta/appVariant/manageApps/webapp/manifest.json new file mode 100644 index 0000000..e990a92 --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/manifest.json @@ -0,0 +1,74 @@ +{ + "_version": "1.5.0", + "sap.app": { + "id": "manageApps", + "type": "application", + "i18n": "i18n/i18n.properties", + "applicationVersion": { + "version": "1.0.0" + }, + "title": "{{appTitle}}", + "description": "{{appDescription}}", + "resources": "resources.json", + "ach": "ach", + "sourceTemplate": { + "id": "ui5template.basicSAPUI5ApplicationProject", + "version": "1.40.12" + } + }, + + "sap.ui": { + "technology": "UI5", + "icons": { + "icon": "", + "favIcon": "", + "phone": "", + "phone@2": "", + "tablet": "", + "tablet@2": "" + }, + "deviceTypes": { + "desktop": true, + "tablet": true, + "phone": true + }, + "supportedThemes": [ + "sap_hcb", + "sap_belize" + + ] + }, + + "sap.ui5": { + "rootView": { + "viewName": "sap.ui.rta.appVariant.manageApps.webapp.view.ManageApps", + "type": "XML" + }, + "dependencies": { + "minUI5Version": "1.30.0", + "libs": { + "sap.ui.core": {}, + "sap.m": {}, + "sap.ui.layout": {}, + "sap.ui.rta": {} + } + }, + "contentDensities": { + "compact": true, + "cozy": true + }, + "models": { + "i18n": { + "type": "sap.ui.model.resource.ResourceModel", + "settings": { + "bundleName": "sap.ui.rta.appVariant.manageApps.webapp.i18n.i18n" + } + } + }, + "resources": { + "css": [{ + "uri": "css/style.css" + }] + } + } +} \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/model/models.js b/resources/sap/ui/rta/appVariant/manageApps/webapp/model/models.js new file mode 100644 index 0000000..15785fb --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/model/models.js @@ -0,0 +1,20 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + "sap/ui/model/json/JSONModel" +], function(JSONModel) { + "use strict"; + + return { + + createModel: function(oData) { + var oModel = new JSONModel(oData); + oModel.setDefaultBindingMode("OneWay"); + return oModel; + } + + }; +}); \ No newline at end of file diff --git a/resources/sap/ui/rta/appVariant/manageApps/webapp/view/ManageApps.view.xml b/resources/sap/ui/rta/appVariant/manageApps/webapp/view/ManageApps.view.xml new file mode 100644 index 0000000..86a83fd --- /dev/null +++ b/resources/sap/ui/rta/appVariant/manageApps/webapp/view/ManageApps.view.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/sap/ui/rta/command/AddODataProperty.js b/resources/sap/ui/rta/command/AddODataProperty.js new file mode 100644 index 0000000..3bbc802 --- /dev/null +++ b/resources/sap/ui/rta/command/AddODataProperty.js @@ -0,0 +1,63 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/rta/command/FlexCommand' +], function (FlexCommand) { + "use strict"; + + /** + * Add new OData property to a control + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.44 + * @alias sap.ui.rta.command.AddODataProperty + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var AddODataProperty = FlexCommand.extend("sap.ui.rta.command.AddODataProperty", { + metadata : { + library : "sap.ui.rta", + properties : { + index : { + type : "int" + }, + newControlId : { + type : "string" + }, + //the name "bindingPath" conflicts with getBindingPath() method from ManagedObject + bindingString : { + type : "string" + }, + parentId : { + type : "string" + }, + oDataServiceVersion : { + type : "string" + } + } + } + }); + + AddODataProperty.prototype._getChangeSpecificData = function() { + // general format + return { + changeType : this.getChangeType(), + index : this.getIndex(), + newControlId : this.getNewControlId(), + bindingPath : this.getBindingString(), + parentId : this.getParentId(), + oDataServiceVersion : this.getODataServiceVersion() + }; + }; + + return AddODataProperty; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/BaseCommand.js b/resources/sap/ui/rta/command/BaseCommand.js new file mode 100644 index 0000000..42bc4fe --- /dev/null +++ b/resources/sap/ui/rta/command/BaseCommand.js @@ -0,0 +1,83 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/base/ManagedObject'], function(ManagedObject) { + "use strict"; + + /** + * Basic implementation for the command pattern. + * + * @class + * @extends sap.ui.base.ManagedObject + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.BaseCommand + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var BaseCommand = ManagedObject.extend("sap.ui.rta.command.BaseCommand", { + metadata : { + library : "sap.ui.rta", + properties : { + name : { + type : "string" + } + }, + associations : { + element : { + type : "sap.ui.core.Element" + } + }, + events : {} + } + }); + + + /** + * @override returns element instance instead of id + */ + BaseCommand.prototype.getElement = function() { + var sId = this.getAssociation("element"); + return sap.ui.getCore().byId(sId); + }; + + /** + * @public Template Method will be called by the command factory when all data is provided to the change + */ + BaseCommand.prototype.prepare = function() { + }; + + /** + * @public Template Method to implement execute logic, with ensure precondition Element is available + */ + BaseCommand.prototype.execute = function() { + return Promise.resolve(); + }; + + /** + * @public Template Method to implement undo logic + */ + BaseCommand.prototype.undo = function() { + return Promise.resolve(); + }; + + /** + * Template Method to implement undo logic + * + * @returns {boolean} enabled boolean state + * @public + */ + BaseCommand.prototype.isEnabled = function() { + return true; + }; + + return BaseCommand; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/BindProperty.js b/resources/sap/ui/rta/command/BindProperty.js new file mode 100644 index 0000000..d078454 --- /dev/null +++ b/resources/sap/ui/rta/command/BindProperty.js @@ -0,0 +1,90 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/rta/command/FlexCommand', + "sap/ui/rta/Utils" +], function( + FlexCommand, + Utils +) { + "use strict"; + + /** + * The BindProperty command take an element and the name of a property + * (propertyName) together with a complex binding string (newBinding). + * When executed, the binding is set on the property. The binding string + * has to comply with the same rules that apply to bindings passed to properties + * in the constructor of SAPUI5 ManagedObjects. + * + * Setting the oldValue or oldBinding is optional if you are running in the + * designMode (see unit test page). + * If set these take precedence over the actual value of the control. + * You should not set both properties. + * + * + * @class + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.38 + * @alias sap.ui.rta.command.BindProperty + * @experimental Since 1.38. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var BindProperty = FlexCommand.extend("sap.ui.rta.command.BindProperty", { + metadata : { + library : "sap.ui.rta", + properties : { + propertyName : { + type : "string" + }, + newBinding : { + type : "string", + bindable : false + }, + changeType : { + type : "string", + defaultValue : "propertyBindingChange" + } + }, + associations : {}, + events : {} + } + }); + + /** + * @override to suppress the binding strings to be used as + */ + BindProperty.prototype.bindProperty = function(sName, oBindingInfo){ + if (sName === "newBinding"){ + return this.setNewBinding(oBindingInfo.bindingString); + } + return FlexCommand.prototype.bindProperty.apply(this, arguments); + }; + + BindProperty.prototype._getChangeSpecificData = function() { + var oElement = this.getElement(); + // general format + var mSpecificChangeInfo = { + changeType : this.getChangeType(), + selector : { + id : oElement.getId(), + type : oElement.getMetadata().getName() + }, + content : { + property : this.getPropertyName(), + newBinding : this.getNewBinding() + } + }; + + return mSpecificChangeInfo; + }; + + return BindProperty; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Combine.js b/resources/sap/ui/rta/command/Combine.js new file mode 100644 index 0000000..7574481 --- /dev/null +++ b/resources/sap/ui/rta/command/Combine.js @@ -0,0 +1,59 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/rta/command/FlexCommand' +], function(FlexCommand) { + "use strict"; + + /** + * Combine fields + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.46 + * @alias sap.ui.rta.command.Combine + * @experimental Since 1.46. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Combine = FlexCommand.extend("sap.ui.rta.command.Combine", { + metadata : { + library : "sap.ui.rta", + properties : { + source : { + type : "any" + }, + combineFields : { + type : "any[]" + } + }, + associations : {}, + events : {} + } + }); + + /** + * @override + */ + Combine.prototype._getChangeSpecificData = function() { + var aFieldIds = []; + this.getCombineFields().forEach(function(oField) { + aFieldIds.push(oField.getId()); + }); + var mSpecificInfo = { + changeType : this.getChangeType(), + sourceControlId : this.getSource().getId(), + combineFieldIds : aFieldIds + }; + return mSpecificInfo; + }; + + return Combine; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/CommandFactory.js b/resources/sap/ui/rta/command/CommandFactory.js new file mode 100644 index 0000000..eff4f05 --- /dev/null +++ b/resources/sap/ui/rta/command/CommandFactory.js @@ -0,0 +1,257 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/base/ManagedObject', 'sap/ui/dt/ElementUtil', 'sap/ui/dt/OverlayRegistry', 'sap/ui/fl/registry/ChangeRegistry'], + function(ManagedObject, ElementUtil, OverlayRegistry, ChangeRegistry) { + "use strict"; + + var fnConfigureActionCommand = function(oElement, oCommand, vAction){ + var sChangeType; + if (typeof (vAction) === "string"){ + sChangeType = vAction; + } else { + sChangeType = vAction && vAction.changeType; + } + + if (!sChangeType){ + return false; + } + + oCommand.setChangeType(sChangeType); + return true; + }; + + var fnConfigureCreateContainerCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oNewAddedElement = mSettings.element || sap.ui.getCore().byId(mSettings.element.id); + var oAction = oDesignTimeMetadata.getAggregationAction("createContainer", oNewAddedElement)[0]; + return oAction; + }; + + var fnConfigureMoveCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oMovedElement = mSettings.movedElements[0].element || sap.ui.getCore().byId(mSettings.movedElements[0].id); + var oAction = oDesignTimeMetadata.getAction("move", oMovedElement); + // needed for Stashed Controls + if (!oAction && oDesignTimeMetadata.getMetadata().getName() === "sap.ui.dt.ElementDesignTimeMetadata") { + var sSourceAggregation = mSettings.source.aggregation; + var oAggregationDesignTimeMetadata = oDesignTimeMetadata.createAggregationDesignTimeMetadata(sSourceAggregation); + oAction = oAggregationDesignTimeMetadata.getAction("move", oMovedElement); + oAggregationDesignTimeMetadata.destroy(); + } + return oAction; + }; + + var fnConfigureRenameCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oRenamedElement = mSettings.renamedElement; + var oAction = oDesignTimeMetadata.getAction("rename", oRenamedElement); + return oAction; + }; + + var fnConfigureRemoveCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oRemovedElement = mSettings.removedElement; + if (!oRemovedElement) { + oRemovedElement = oElement; + } else if (!(oRemovedElement instanceof ManagedObject)) { + throw new Error("No valid 'removedElement' found"); + } + var oAction = oDesignTimeMetadata.getAction("remove", oRemovedElement); + return oAction; + }; + + var fnConfigureCombineCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oCombineElement = mSettings.source; + var oAction = oDesignTimeMetadata.getAction("combine", oCombineElement); + return oAction; + }; + + var fnConfigureSplitCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oSplitElement = mSettings.source; + var oAction = oDesignTimeMetadata.getAction("split", oSplitElement); + return oAction; + }; + + var fnConfigureAddODataPropertyCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oNewAddedElement = mSettings.element; + var oAction = oDesignTimeMetadata.getAction("addODataProperty", oNewAddedElement); + return oAction; + }; + + var fnConfigureRevealCommand = function(oElement, mSettings, oDesignTimeMetadata){ + var oRevealParent = mSettings.directParent; + var oAction = oDesignTimeMetadata.getAction("reveal", oRevealParent); + return oAction; + }; + + var mCommands = { // Command names camel case with first char lower case + "composite" : { + clazz : 'sap.ui.rta.command.CompositeCommand' + }, + "property" : { + clazz : 'sap.ui.rta.command.Property' + }, + "bindProperty" : { + clazz : 'sap.ui.rta.command.BindProperty' + }, + + /* NEW COMMANDS, ALIGNED WITH A SCALABILITY CONCEPT */ + "createContainer" : { + clazz : 'sap.ui.rta.command.CreateContainer', + configure : fnConfigureCreateContainerCommand + }, + "move" : { + clazz : 'sap.ui.rta.command.Move', + configure : fnConfigureMoveCommand + }, + "remove" : { + clazz : 'sap.ui.rta.command.Remove', + configure : fnConfigureRemoveCommand + }, + "rename" : { + clazz : 'sap.ui.rta.command.Rename', + configure : fnConfigureRenameCommand + }, + "addODataProperty" : { + clazz : 'sap.ui.rta.command.AddODataProperty', + configure : fnConfigureAddODataPropertyCommand + }, + "reveal" : { + clazz : 'sap.ui.rta.command.Reveal', + configure : fnConfigureRevealCommand + }, + "combine" : { + clazz : 'sap.ui.rta.command.Combine', + configure : fnConfigureCombineCommand + }, + "split" : { + clazz : 'sap.ui.rta.command.Split', + configure : fnConfigureSplitCommand + }, + "settings" : { + clazz : 'sap.ui.rta.command.Settings' + }, + "addLibrary" : { + clazz : 'sap.ui.rta.command.appDescriptor.AddLibrary' + } + }; + + var _getCommandFor = function(vElement, sCommand, mSettings, oDesignTimeMetadata, mFlexSettings, sVariantManagementKey) { + sCommand = sCommand[0].toLowerCase() + sCommand.slice(1); // first char of command name is lower case + var mCommand = mCommands[sCommand]; + + if (!mCommand){ + throw new Error("Command '" + sCommand + "' doesn't exist, check typing"); + } + + var sClassName = mCommand.clazz; + + jQuery.sap.require(sClassName); + var Command = jQuery.sap.getObject(sClassName); + + var bIsUiElement = vElement instanceof sap.ui.base.ManagedObject; + mSettings = jQuery.extend(mSettings, { + element : bIsUiElement ? vElement : undefined, + selector : bIsUiElement ? undefined : vElement, + name : sCommand + }); + + var oAction; + if (mCommand.configure) { + oAction = mCommand.configure(vElement, mSettings, oDesignTimeMetadata); + } + + var oElementOverlay; + if (oAction && oAction.changeOnRelevantContainer) { + oElementOverlay = OverlayRegistry.getOverlay(vElement); + mSettings = jQuery.extend(mSettings, { + element : oElementOverlay.getRelevantContainer() + }); + vElement = mSettings.element; + } + + if (oAction && oAction.getState) { + mSettings = jQuery.extend(mSettings, { + fnGetState : oAction.getState + }); + } + + if (oAction && oAction.restoreState) { + mSettings = jQuery.extend(mSettings, { + fnRestoreState : oAction.restoreState + }); + } + + var oCommand = new Command(mSettings); + + var bSuccessfullConfigured = true; //configuration is optional + if (mCommand.configure) { + bSuccessfullConfigured = fnConfigureActionCommand(vElement, oCommand, oAction); + } + + if (bSuccessfullConfigured){ + oCommand.prepare(mFlexSettings, sVariantManagementKey); + return oCommand; + } else { + oCommand.destroy(); + } + }; + + /** + * Factory for commands. Shall handle the control specific command configuration. + * + * @class + * @extends sap.ui.base.ManagedObject + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.CommandFactory + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var CommandFactory = ManagedObject.extend("sap.ui.rta.command.CommandFactory", { + metadata : { + library : "sap.ui.rta", + properties : { + "flexSettings": { + type: "object" + } + }, + associations : {}, + events : {} + } + }); + + CommandFactory.prototype.init = function() { + this.setProperty("flexSettings", { + layer:"CUSTOMER", + developerMode: true + }); + }; + + /** + * Setter for flexSettings + * + * @param {Object} [mFlexSettings] property bag + * @param {String} [mFlexSettings.layer] The Layer in which RTA should be started. Default: "CUSTOMER" + * @param {Boolean} [mFlexSettings.developerMode] Whether RTA is started in DeveloperMode Mode. Whether RTA is started in DeveloperMode Mode + * @param {String} [mFlexSettings.namespace] Namespace for changes inside LREP + */ + CommandFactory.prototype.setFlexSettings = function(mFlexSettings) { + this.setProperty("flexSettings", jQuery.extend(this.getFlexSettings(), mFlexSettings)); + }; + + CommandFactory.prototype.getCommandFor = function(vElement, sCommand, mSettings, oDesignTimeMetadata, sVariantManagementKey) { + return _getCommandFor(vElement, sCommand, mSettings, oDesignTimeMetadata, this.getFlexSettings(), sVariantManagementKey); + }; + + CommandFactory.getCommandFor = function(vElement, sCommand, mSettings, oDesignTimeMetadata, mFlexSettings) { + return _getCommandFor(vElement, sCommand, mSettings, oDesignTimeMetadata, mFlexSettings); + }; + + return CommandFactory; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/CompositeCommand.js b/resources/sap/ui/rta/command/CompositeCommand.js new file mode 100644 index 0000000..7240378 --- /dev/null +++ b/resources/sap/ui/rta/command/CompositeCommand.js @@ -0,0 +1,76 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ 'sap/ui/rta/command/BaseCommand', + 'sap/ui/fl/Utils' +], function(BaseCommand, + flUtils) { + "use strict"; + + /** + * Composite command that can work on multiple simp + * + * @class + * @extends sap.ui.rta.command.BaseCommand + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.CompositeCommand + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var CompositeCommand = BaseCommand.extend("sap.ui.rta.command.CompositeCommand", { + metadata : { + library : "sap.ui.rta", + properties : {}, + aggregations : { + commands : { + type : "sap.ui.rta.command.BaseCommand", + multiple : true + } + }, + events : {} + } + }); + + /** + * Execute this composite command + * + * @returns {promise} empty promise + */ + CompositeCommand.prototype.execute = function() { + var aPromises = []; + this._forEachCommand(function(oCommand){ + aPromises.push(oCommand.execute.bind(oCommand)); + }); + return flUtils.execPromiseQueueSequentially(aPromises); + }; + + CompositeCommand.prototype.undo = function() { + var aPromises = []; + this._forEachCommandInReverseOrder(function(oCommand){ + aPromises.push(oCommand.undo.bind(oCommand)); + }); + return flUtils.execPromiseQueueSequentially(aPromises); + }; + + CompositeCommand.prototype._forEachCommand = function(fnDo) { + var aCommands = this.getCommands(); + aCommands.forEach(fnDo, this); + }; + + CompositeCommand.prototype._forEachCommandInReverseOrder = function(fnDo) { + var aCommands = this.getCommands(); + for (var i = aCommands.length - 1; i >= 0; i--) { + fnDo.call(this, aCommands[i]); + } + }; + return CompositeCommand; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/CreateContainer.js b/resources/sap/ui/rta/command/CreateContainer.js new file mode 100644 index 0000000..e2dd436 --- /dev/null +++ b/resources/sap/ui/rta/command/CreateContainer.js @@ -0,0 +1,56 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', 'sap/ui/rta/command/FlexCommand'], function(jQuery, FlexCommand) { + "use strict"; + + /** + * Create new container + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.CreateContainer + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var CreateContainer = FlexCommand.extend("sap.ui.rta.command.CreateContainer", { + metadata : { + library : "sap.ui.rta", + properties : { + index : { + type : "int" + }, + newControlId : { + type : "string" + }, + label : { + type : "string" + } + }, + associations : {}, + events : {} + } + }); + + CreateContainer.prototype._getChangeSpecificData = function(bForward) { + + var mSpecificInfo = { + changeType : this.getChangeType(), + index : this.getIndex(), + newControlId : this.getNewControlId(), + newLabel : this.getLabel() + }; + + return mSpecificInfo; + }; + + return CreateContainer; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/FlexCommand.js b/resources/sap/ui/rta/command/FlexCommand.js new file mode 100644 index 0000000..15cdaa6 --- /dev/null +++ b/resources/sap/ui/rta/command/FlexCommand.js @@ -0,0 +1,235 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/rta/command/BaseCommand', "sap/ui/fl/FlexControllerFactory", + "sap/ui/rta/ControlTreeModifier", "sap/ui/fl/Utils"], function(BaseCommand, FlexControllerFactory, + RtaControlTreeModifier, Utils) { + "use strict"; + + /** + * Basic implementation for the flexibility commands, that use a flex change handler. + * + * @class + * @extends sap.ui.rta.command.BaseCommand + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.FlexCommand + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var FlexCommand = BaseCommand.extend("sap.ui.rta.command.FlexCommand", { + metadata : { + library : "sap.ui.rta", + properties : { + changeType : { + type : "string" + }, + /** + * getState and restoreState are used for retrieving custom undo/redo implementations from design time metadata + */ + fnGetState : { + type : "any" + }, + state : { + type : "any" + }, + fnRestoreState : { + type : "any" + }, + /** + * selector object containing id, appComponent and controlType to create a command for an element, which is not instantiated + */ + selector : { + type : "object" + } + }, + associations : {}, + events : {} + } + }); + + /** + * Retrives id of element or selector + * + * @returns {string} id value + * @public + */ + FlexCommand.prototype.getElementId = function() { + var oElement = this.getElement(); + return oElement ? oElement.getId() : this.getSelector().id; + }; + + /** + * Retrives app component of element or selector + * + * @returns {sap.ui.core.UIComponent} component + * @private + */ + FlexCommand.prototype.getAppComponent = function() { + if (!this._oControlAppComponent) { + var oElement = this.getElement(); + this._oControlAppComponent = oElement ? Utils.getAppComponentForControl(oElement) : this.getSelector().appComponent; + } + return this._oControlAppComponent; + }; + + /** + * Prepares and stores change to be applied later + * (in some cases element of a command is unstable, so change needs to be created and stored upfront) + * @override + */ + FlexCommand.prototype.prepare = function(mFlexSettings, sVariantManagementKey) { + if ( + !this.getSelector() + && this.getElement() + ) { + var oSelector = { + id: this.getElement().getId(), + appComponent: this.getAppComponent(), + controlType: Utils.getControlType(this.getElement()) + }; + this.setSelector(oSelector); + } + this._oPreparedChange = this._createChange(mFlexSettings, sVariantManagementKey); + }; + + /** + * Returns a prepared change + * @returns {object} prepared change object + * @public + */ + FlexCommand.prototype.getPreparedChange = function() { + if (!this._oPreparedChange) { + this.prepare(); + } + return this._oPreparedChange; + }; + + /** + * @override + * @returns {promise} empty promise after finishing execution + */ + FlexCommand.prototype.execute = function() { + var vChange = this.getPreparedChange(); + return this._applyChange(vChange); + }; + + /** + * This method converts command constructor parameters into change specific data + * Default implementation of this method below is for commands, which do not have specific constructor parameters + * @return {object} SpecificChangeInfo for ChangeHandler + * @protected + */ + FlexCommand.prototype._getChangeSpecificData = function() { + return { + changeType : this.getChangeType(), + selector : { + id : this.getElementId() + } + }; + }; + + /** + * @param {object} mFlexSettings - map contains flex settings + * @returns {object} change object + * @private + */ + FlexCommand.prototype._createChange = function(mFlexSettings, sVariantManagementKey) { + return this._createChangeFromData(this._getChangeSpecificData(), mFlexSettings, sVariantManagementKey); + }; + + /** + * Create a Flex change from a given Change Specific Data + * (This method can be reused to retrieve an Undo Change) + * + * @param {object} mChangeSpecificData - map contains change specific data + * @param {object} mFlexSettings - map contains flex settings + * @returns {object} change object + * @private + */ + FlexCommand.prototype._createChangeFromData = function(mChangeSpecificData, mFlexSettings, sVariantManagementKey) { + if (mFlexSettings) { + jQuery.extend(mChangeSpecificData, mFlexSettings); + } + var oModel = this.getAppComponent().getModel("$FlexVariants"); + var sVariantKey; + if (oModel && sVariantManagementKey) { + sVariantKey = oModel.getCurrentVariantRef(sVariantManagementKey); + } + var oFlexController = FlexControllerFactory.createForControl(this.getAppComponent()); + var mVariantObj = { + "variantManagementKey": sVariantManagementKey, + "variantKey": sVariantKey + }; + if (sVariantKey) { + jQuery.extend(mChangeSpecificData, mVariantObj); + } + return oFlexController.createChange(mChangeSpecificData, this.getElement() || this.getSelector()); + }; + + /** + * @override + */ + FlexCommand.prototype.undo = function() { + //If the command has a "restoreState" implementation, use that to perform the undo + if (this.getFnRestoreState()){ + this.getFnRestoreState()((this.getElement() || this.getSelector()), this.getState()); + } else if (this._aRecordedUndo) { + RtaControlTreeModifier.performUndo(this._aRecordedUndo); + } else { + jQuery.sap.log.warning("Undo is not available for " + this.getElement() || this.getSelector()); + } + return Promise.resolve(); + }; + + /** + * @private + * @param {void} vChange - change object + * @param {boolean} bNotMarkAsAppliedChange - optional - apply the change without marking them as applied change in the custom Data + * @returns {promise} empty promise + */ + FlexCommand.prototype._applyChange = function(vChange, bNotMarkAsAppliedChange) { + //TODO: remove the following compatibility code when concept is implemented + var oChange = vChange.change || vChange; + + var oAppComponent = this.getAppComponent(); + var oChangeDefinition = oChange.getDefinition(); + var oSelectorElement = RtaControlTreeModifier.bySelector(oChange.getSelector(), oAppComponent); + + // If the command has a "getState" implementation, use that instead of recording the undo + if (this.getFnGetState()){ + this.setState.call(this, (this.getFnGetState()((this.getElement() || this.getSelector()), oChangeDefinition, { + modifier: RtaControlTreeModifier, + appComponent : oAppComponent + }))); + } else { + RtaControlTreeModifier.startRecordingUndo(); + } + + var oFlexController = FlexControllerFactory.createForControl(this.getAppComponent()); + + return Promise.resolve(oFlexController.checkTargetAndApplyChange(oChange, oSelectorElement, {modifier: RtaControlTreeModifier, appComponent: oAppComponent})) + + .then(function() { + if (bNotMarkAsAppliedChange) { + oFlexController.removeFromAppliedChangesOnControl(oChange, oAppComponent, oSelectorElement); + } + }) + + .then(function() { + if (!this.getFnGetState()){ + this._aRecordedUndo = RtaControlTreeModifier.stopRecordingUndo(); + } + }.bind(this)); + }; + + return FlexCommand; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/LREPSerializer.js b/resources/sap/ui/rta/command/LREPSerializer.js new file mode 100644 index 0000000..2f2a874 --- /dev/null +++ b/resources/sap/ui/rta/command/LREPSerializer.js @@ -0,0 +1,122 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/base/ManagedObject', + 'sap/ui/rta/command/Stack', + 'sap/ui/fl/FlexControllerFactory', + 'sap/ui/fl/Utils', + 'sap/ui/rta/ControlTreeModifier' +], function( + ManagedObject, + CommandStack, + FlexControllerFactory, + FlexUtils, + RtaControlTreeModifier +) { + "use strict"; + /** + * Basic implementation for the LREP Serializer. + * + * @class + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.42 + * @alias sap.ui.rta.command.LREPSerializer + * @experimental Since 1.42. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var LREPSerializer = ManagedObject.extend("sap.ui.rta.command.LREPSerializer", { + metadata : { + library : "sap.ui.rta", + associations : { + /** The root control which is needed for the Flex Controller */ + "rootControl" : { + type : "sap.ui.core.Control" + } + }, + properties : { + "commandStack" : { + type : "object" // has to be of type sap.ui.rta.command.Stack + } + }, + aggregations : {} + } + }); + + LREPSerializer.prototype.setCommandStack = function(oCommandStack) { + this.setProperty("commandStack", oCommandStack); + oCommandStack.attachCommandExecuted(function(oEvent) { + this.handleCommandExecuted(oEvent); + }.bind(this)); + }; + + LREPSerializer.prototype.handleCommandExecuted = function(oEvent) { + var oParams = oEvent.getParameters(); + var aCommands = this.getCommandStack().getSubCommands(oParams.command); + + if (oParams.undo) { + var oFlexController; + aCommands.forEach(function(oCommand) { + var oChange = oCommand.getPreparedChange(); + var oAppComponent = oCommand.getAppComponent(); + oFlexController = FlexControllerFactory.createForControl(oAppComponent); + if (oCommand instanceof sap.ui.rta.command.FlexCommand){ + var oControl = RtaControlTreeModifier.bySelector(oChange.getSelector(), oAppComponent); + oFlexController.removeFromAppliedChangesOnControl(oChange, oAppComponent, oControl); + } + oFlexController.deleteChange(oChange); + }); + } else { + var aDescriptorCreateAndAdd = []; + aCommands.forEach(function(oCommand) { + if (oCommand instanceof sap.ui.rta.command.FlexCommand){ + var oAppComponent = oCommand.getAppComponent(); + var oFlexController = FlexControllerFactory.createForControl(oAppComponent); + oFlexController.addPreparedChange(oCommand.getPreparedChange(), oAppComponent); + } else if (oCommand instanceof sap.ui.rta.command.AppDescriptorCommand) { + aDescriptorCreateAndAdd.push(oCommand.createAndStore()); + } + }); + + return Promise.all(aDescriptorCreateAndAdd); + } + + }; + + /** + * Serializes and saves all changes to LREP + * + * @returns {Promise} return empty promise + * @public + */ + LREPSerializer.prototype.saveCommands = function() { + var oRootControl = sap.ui.getCore().byId(this.getRootControl()); + if (!oRootControl) { + throw new Error("Can't save commands without root control instance!"); + } + var oFlexController = FlexControllerFactory.createForControl(oRootControl); + return oFlexController.saveAll() + + // needed because the AppDescriptorChanges are stored with a different ComponentName (without ".Component" at the end) + // -> two different ChangePersistences + .then(function() { + var sComponentName = FlexUtils.getComponentClassName(sap.ui.getCore().byId(this.getRootControl())).replace(".Component", ""); + var oRootControl = sap.ui.getCore().byId(this.getRootControl()); + var sAppVersion = FlexUtils.getAppVersionFromManifest(FlexUtils.getAppComponentForControl(oRootControl).getManifest()); + oFlexController = FlexControllerFactory.create(sComponentName, sAppVersion); + return oFlexController.saveAll(); + }.bind(this)) + + .then(function() { + jQuery.sap.log.info("UI adaptation successfully transfered changes to layered repository"); + this.getCommandStack().removeAllCommands(); + }.bind(this)); + }; + return LREPSerializer; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Move.js b/resources/sap/ui/rta/command/Move.js new file mode 100644 index 0000000..15d21e7 --- /dev/null +++ b/resources/sap/ui/rta/command/Move.js @@ -0,0 +1,88 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', 'sap/ui/rta/command/FlexCommand'], function(jQuery, FlexCommand) { + "use strict"; + + /** + * Move Element from one place to another + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.Move + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Move = FlexCommand.extend("sap.ui.rta.command.Move", { + metadata : { + library : "sap.ui.rta", + properties : { + movedElements : { + type : "any[]" + }, + target : { + type : "any" + }, + source : { + type : "any" + } + }, + associations : {}, + events : {} + } + }); + + /** + * @param {boolean} bIsUndo If is true, then it switches source and target + * @override + */ + Move.prototype._getChangeSpecificData = function(bIsUndo) { + var mSource = bIsUndo ? this.getTarget() : this.getSource(); + var mTarget = bIsUndo ? this.getSource() : this.getTarget(); + + // replace elements by their id, unify format and help with serialization + if (mSource.parent) { + mSource.id = mSource.parent.getId(); + delete mSource.parent; + } + if (mTarget.parent) { + mTarget.id = mTarget.parent.getId(); + delete mTarget.parent; + } + var mSpecificInfo = { + changeType : this.getChangeType(), + source : mSource, + target : mTarget, + movedElements : [] + }; + + this.getMovedElements().forEach(function(mMovedElement) { + mSpecificInfo.movedElements.push({ + id : mMovedElement.id || (mMovedElement.element && mMovedElement.element.getId()), + sourceIndex : bIsUndo ? mMovedElement.targetIndex : mMovedElement.sourceIndex, + targetIndex : bIsUndo ? mMovedElement.sourceIndex : mMovedElement.targetIndex + }); + }); + return mSpecificInfo; + }; + + Move.prototype.prepare = function(sLayer, bDeveloperMode) { + FlexCommand.prototype.prepare.apply(this, arguments); + + this._oPreparedUndoChange = this._createChangeFromData(this._getChangeSpecificData(true), sLayer, bDeveloperMode); + }; + + Move.prototype.undo = function() { + return this._applyChange(this._oPreparedUndoChange, true); + }; + + return Move; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Property.js b/resources/sap/ui/rta/command/Property.js new file mode 100644 index 0000000..2bb0edb --- /dev/null +++ b/resources/sap/ui/rta/command/Property.js @@ -0,0 +1,71 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/rta/command/FlexCommand', + "sap/ui/rta/Utils" +], function( + FlexCommand, + Utils +) { + "use strict"; + + /** + * Basic implementation for the command pattern. + * + * @class + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.BaseCommand + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Property = FlexCommand.extend("sap.ui.rta.command.Property", { + metadata : { + library : "sap.ui.rta", + properties : { + propertyName : { + type : "string" + }, + newValue : { + type : "any" + }, + semanticMeaning : { + type : "string" + }, + changeType : { + type : "string", + defaultValue : "propertyChange" + } + }, + associations : {}, + events : {} + } + }); + + Property.prototype._getChangeSpecificData = function() { + var oElement = this.getElement(); + // general format + return { + changeType : this.getChangeType(), + selector : { + id : oElement.getId(), + type : oElement.getMetadata().getName() + }, + content : { + property : this.getPropertyName(), + newValue : this.getNewValue(), + semantic : this.getSemanticMeaning() + } + }; + }; + + return Property; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Remove.js b/resources/sap/ui/rta/command/Remove.js new file mode 100644 index 0000000..afdf3d8 --- /dev/null +++ b/resources/sap/ui/rta/command/Remove.js @@ -0,0 +1,50 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/rta/command/FlexCommand'], function(FlexCommand) { + "use strict"; + + /** + * Remove a control/element + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.42 + * @alias sap.ui.rta.command.Remove + * @experimental Since 1.42. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Remove = FlexCommand.extend("sap.ui.rta.command.Remove", { + metadata : { + library : "sap.ui.rta", + properties : { + removedElement : { + type : "any" + } + }, + associations : {}, + events : {} + } + }); + + Remove.prototype._getChangeSpecificData = function() { + var oElement = this.getRemovedElement() || this.getElement(); + + var mSpecificInfo = { + changeType : this.getChangeType(), + removedElement : { + id : oElement.getId() + } + }; + return mSpecificInfo; + }; + + return Remove; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Rename.js b/resources/sap/ui/rta/command/Rename.js new file mode 100644 index 0000000..ba31fac --- /dev/null +++ b/resources/sap/ui/rta/command/Rename.js @@ -0,0 +1,58 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', 'sap/ui/rta/command/FlexCommand'], function(jQuery, FlexCommand) { + "use strict"; + + /** + * Rename Element from one place to another + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.Rename + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Rename = FlexCommand.extend("sap.ui.rta.command.Rename", { + metadata : { + library : "sap.ui.rta", + properties : { + renamedElement : { + type : "object" + }, + newValue : { + type : "string", + defaultValue : "new text" + } + }, + associations : {}, + events : {} + } + }); + + Rename.prototype._getChangeSpecificData = function() { + + var mSpecificInfo = { + changeType : this.getChangeType(), + selector : { + id : this.getElement().getId() + }, + renamedElement : { + id : this.getRenamedElement().getId() + }, + value : this.getNewValue() + }; + + return mSpecificInfo; + }; + + return Rename; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Reveal.js b/resources/sap/ui/rta/command/Reveal.js new file mode 100644 index 0000000..d9e8f26 --- /dev/null +++ b/resources/sap/ui/rta/command/Reveal.js @@ -0,0 +1,47 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/rta/command/FlexCommand'], function(FlexCommand) { + "use strict"; + + /** + * Reveal controls by setting visible to true or unstash them + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.44 + * @alias sap.ui.rta.command.Reveal + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Reveal = FlexCommand.extend("sap.ui.rta.command.Reveal", { + metadata : { + library : "sap.ui.rta", + properties : { + revealedElementId : { + type : "string" + }, + directParent : "object" + } + } + }); + + Reveal.prototype._getChangeSpecificData = function() { + var mSpecificChangeInfo = { + changeType : this.getChangeType() + }; + if (this.getRevealedElementId()) { + mSpecificChangeInfo.revealedElementId = this.getRevealedElementId(); + } + return mSpecificChangeInfo; + }; + + return Reveal; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Settings.js b/resources/sap/ui/rta/command/Settings.js new file mode 100644 index 0000000..f8cbe70 --- /dev/null +++ b/resources/sap/ui/rta/command/Settings.js @@ -0,0 +1,72 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/rta/command/FlexCommand'], function(FlexCommand) { + "use strict"; + + /** + * Basic implementation for the command pattern. + * + * @class + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.44 + * @alias sap.ui.rta.command.BaseCommand + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Settings = FlexCommand.extend("sap.ui.rta.command.Settings", { + metadata : { + library : "sap.ui.rta", + properties : { + content : { + type : "any" + } + }, + associations : {}, + events : {} + } + }); + + + Settings.prototype._getChangeSpecificData = function(bForward) { + + var mSpecificInfo = { + changeType : this.getChangeType(), + content : this.getContent() + }; + + return mSpecificInfo; + }; + + + /** + * @override + */ + Settings.prototype.execute = function() { + if (this.getElement()) { + return FlexCommand.prototype.execute.apply(this, arguments); + } else { + return Promise.resolve(); + } + }; + + /** + * @override + */ + Settings.prototype.undo = function() { + if (this.getElement()) { + return FlexCommand.prototype.undo.apply(this, arguments); + } else { + return Promise.resolve(); + } + }; + + return Settings; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Split.js b/resources/sap/ui/rta/command/Split.js new file mode 100644 index 0000000..d5a1e15 --- /dev/null +++ b/resources/sap/ui/rta/command/Split.js @@ -0,0 +1,59 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/rta/command/FlexCommand' +], function(FlexCommand) { + "use strict"; + + /** + * Split a control/element + * + * @class + * @extends sap.ui.rta.command.FlexCommand + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.46 + * @alias sap.ui.rta.command.Split + * @experimental Since 1.46. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Split = FlexCommand.extend("sap.ui.rta.command.Split", { + metadata : { + library : "sap.ui.rta", + properties : { + newElementIds : { + type : "string[]" + }, + source : { + type : "any" + }, + parentElement : { + type : "any" + } + }, + associations : {}, + events : {} + } + }); + + /** + * @override + */ + Split.prototype._getChangeSpecificData = function() { + var mSpecificInfo = { + newElementIds : this.getNewElementIds(), + sourceControlId : this.getSource().getId(), + changeType : this.getChangeType(), + parentId : this.getParentElement().getId() + }; + return mSpecificInfo; + }; + + return Split; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/Stack.js b/resources/sap/ui/rta/command/Stack.js new file mode 100644 index 0000000..afeff3b --- /dev/null +++ b/resources/sap/ui/rta/command/Stack.js @@ -0,0 +1,220 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/base/ManagedObject' +], function( + ManagedObject +) { + "use strict"; + + /** + * Basic implementation for the command stack pattern. + * + * @class + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.command.Stack + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Stack = ManagedObject.extend("sap.ui.rta.command.Stack", { + metadata : { + library : "sap.ui.rta", + properties : {}, + aggregations : { + commands : { + type : "sap.ui.rta.command.BaseCommand", + multiple : true + } + }, + events : { + modified : {}, + commandExecuted : { + parameters: { + command : {type: "object"}, + undo: {type: "boolean"} + } + } + + } + } + }); + + Stack.prototype._toBeExecuted = -1; + Stack.prototype._oLastCommand = Promise.resolve(); + + Stack.prototype._getCommandToBeExecuted = function() { + return this.getCommands()[this._toBeExecuted]; + }; + + /** + * Allows to push a command on the stack that has already been executed and shouldn't be executed next + * + * @param {sap.ui.rta.command.FlexCommand} oCommand command to push to the stack + * @public + */ + Stack.prototype.pushExecutedCommand = function(oCommand) { + this.push(oCommand, true); + }; + + Stack.prototype.push = function(oCommand, bExecuted) { + // undone commands have to be removed as a new command is added + if (this._bUndoneCommands) { + this._bUndoneCommands = false; // distinguish undone commands from not yet executed commands + while (this._toBeExecuted > -1) { + this.pop(); + } + } + this.insertCommand(oCommand, 0); + if (!bExecuted) { + this._toBeExecuted++; + } + this.fireModified(); + }; + + Stack.prototype.top = function() { + return this.getCommands()[0]; + }; + + Stack.prototype.pop = function() { + if (this._toBeExecuted > -1) { + this._toBeExecuted--; + } + return this.removeCommand(0); + }; + + Stack.prototype.removeCommand = function(vObject, bSuppressInvalidate) { + var oRemovedCommand = this.removeAggregation("commands", vObject, bSuppressInvalidate); + this.fireModified(); + return oRemovedCommand; + }; + + Stack.prototype.removeAllCommands = function(bSuppressInvalidate) { + var aCommands = this.removeAllAggregation("commands", bSuppressInvalidate); + this._toBeExecuted = -1; + this.fireModified(); + return aCommands; + }; + + Stack.prototype.isEmpty = function() { + return this.getCommands().length === 0; + }; + + Stack.prototype.execute = function() { + this._oLastCommand = this._oLastCommand.catch(function(){ + //continue also if previous command failed + }).then(function(){ + var oCommand = this._getCommandToBeExecuted(); + if (oCommand) { + return oCommand.execute() + + .then(function(){ + this._toBeExecuted--; + this.fireCommandExecuted({ + command: oCommand, + undo: false + }); + this.fireModified(); + }.bind(this)) + + .catch(function(oError) { + this.pop(); // remove failing command + return Promise.reject(oError); + }.bind(this)); + } + }.bind(this)); + return this._oLastCommand; + + }; + + Stack.prototype._unExecute = function() { + if (this.canUndo()) { + this._bUndoneCommands = true; + this._toBeExecuted++; + var oCommand = this._getCommandToBeExecuted(); + if (oCommand) { + return oCommand.undo() + + .then(function() { + this.fireCommandExecuted({ + command: oCommand, + undo: true + }); + this.fireModified(); + }.bind(this)); + } else { + return Promise.resolve(); + } + } else { + return Promise.resolve(); + } + }; + + Stack.prototype.canUndo = function() { + return (this._toBeExecuted + 1) < this.getCommands().length; + }; + + Stack.prototype.undo = function() { + return this._unExecute(); + }; + + Stack.prototype.canRedo = function() { + return !!this._getCommandToBeExecuted(); + }; + + Stack.prototype.redo = function() { + return this.execute(); + }; + + Stack.prototype.pushAndExecute = function(oCommand) { + this.push(oCommand); + return this.execute(); + }; + + /** + * Decomposite all executed commands from the stack + * + * @returns {object} list of all executed commands + * @public + */ + Stack.prototype.getAllExecutedCommands = function() { + var aAllExecutedCommands = []; + var aCommands = this.getCommands(); + for (var i = aCommands.length - 1; i > this._toBeExecuted; i--) { + var aSubCommands = this.getSubCommands(aCommands[i]); + aAllExecutedCommands = aAllExecutedCommands.concat(aSubCommands); + } + return aAllExecutedCommands; + }; + + /** + * Decomposite command to subcommands (composite commands will be splitted into array of regular commands) + * + * @param {sap.ui.rta.command.FlexCommand} oCommand command to push to the stack + * @returns {object} aCommands - list of sub commands + * @private + */ + Stack.prototype.getSubCommands = function(oCommand) { + var aCommands = []; + if (oCommand.getCommands) { + oCommand.getCommands().forEach(function(oSubCommand) { + var aSubCommands = this.getSubCommands(oSubCommand); + aCommands = aCommands.concat(aSubCommands); + }, this); + } else { + aCommands.push(oCommand); + } + + return aCommands; + }; + + return Stack; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/appDescriptor/AddLibrary.js b/resources/sap/ui/rta/command/appDescriptor/AddLibrary.js new file mode 100644 index 0000000..817f8f1 --- /dev/null +++ b/resources/sap/ui/rta/command/appDescriptor/AddLibrary.js @@ -0,0 +1,82 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'sap/ui/rta/command/appDescriptor/AppDescriptorCommand', + 'sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory' +], function( + AppDescriptorCommand, + DescriptorInlineChangeFactory +) { + "use strict"; + + /** + * Implementation of a command for Add Library change on App Descriptor + * + * @class + * @extends sap.ui.rta.command.appDescriptor.AppDescriptorCommand + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.49 + * @alias sap.ui.rta.command.appDescriptor.AddLibrary + * @experimental Since 1.49. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var AddLibrary = AppDescriptorCommand.extend("sap.ui.rta.command.appDescriptor.AddLibrary", { + metadata : { + library : "sap.ui.rta", + properties : { + // The libraries to be added to the app descriptor + requiredLibraries : { + type : "object" + }, + layer : { + type : "string" + } + }, + events : {} + } + }); + + /** + * Prepare the change for the app descriptor + * + * @param {object} mFlexSettings - map of Flex Settings including the layer + */ + AddLibrary.prototype.prepare = function(mFlexSettings){ + this.setLayer(mFlexSettings.layer); + }; + + /** + * Execute the change (load the required libraries) + * @return {promise} resolved if libraries could be loaded; rejected if not + */ + AddLibrary.prototype.execute = function(){ + var aPromises = []; + + if (this.getRequiredLibraries()){ + var aLibraries = Object.keys(this.getRequiredLibraries()); + aLibraries.forEach(function(sLibrary){ + aPromises.push(sap.ui.getCore().loadLibrary(sLibrary, true)); + }); + } + + return Promise.all(aPromises); + }; + + AddLibrary.prototype._create = function(){ + var mParameters = {}; + mParameters.libraries = this.getRequiredLibraries(); + + return DescriptorInlineChangeFactory.create_ui5_addLibraries(mParameters); + }; + + return AddLibrary; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/command/appDescriptor/AppDescriptorCommand.js b/resources/sap/ui/rta/command/appDescriptor/AppDescriptorCommand.js new file mode 100644 index 0000000..33c97ff --- /dev/null +++ b/resources/sap/ui/rta/command/appDescriptor/AppDescriptorCommand.js @@ -0,0 +1,72 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/rta/command/BaseCommand', + 'sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory', + 'sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory'], + function(BaseCommand, + DescriptorInlineChangeFactory, + DescriptorChangeFactory) { + "use strict"; + + /** + * Implementation of a command template for App Descriptor changes + * + * @class + * @extends sap.ui.rta.command.BaseCommand + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.49 + * @alias sap.ui.rta.command.appDescriptor.AppDescriptorCommand + * @experimental Since 1.49. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var AppDescriptorCommand = BaseCommand.extend("sap.ui.rta.command.AppDescriptorCommand", { + metadata : { + library : "sap.ui.rta", + properties : { + reference : { + type : "string" + }, + appComponent: { + type: "object" + } + }, + events : {} + } + }); + + AppDescriptorCommand.prototype.getPreparedChange = function() { + return this._oPreparedChange; + }; + + /** + * Template method to create the app descriptor change which is used in the createAndStore function + * @return {Promise} with app descriptor inline change content e.g. from DescriptorInlineChangeFactory.create_xyz + */ + AppDescriptorCommand.prototype._create = function(){}; + + /** + * Create the change for the app descriptor and add it to the ChangePersistence + * @return {Promise} resolving after all changes have been created + */ + AppDescriptorCommand.prototype.createAndStore = function(){ + return this._create() + .then(function(oAppDescriptorChangeContent){ + return new DescriptorChangeFactory().createNew(this.getReference(), + oAppDescriptorChangeContent, this.getLayer(), this.getAppComponent()); + }.bind(this)) + .then(function(oAppDescriptorChange){ + var oChange = oAppDescriptorChange.store(); + this._oPreparedChange = oChange; + }.bind(this)); + }; + return AppDescriptorCommand; + +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/library-preload.js b/resources/sap/ui/rta/library-preload.js new file mode 100644 index 0000000..b3c7aab --- /dev/null +++ b/resources/sap/ui/rta/library-preload.js @@ -0,0 +1,65 @@ +jQuery.sap.registerPreloadedModules({ + "version": "2.0", + "name": "sap.ui.rta.library-preload", + "modules": { + "sap/ui/rta/ControlTreeModifier.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/fl/changeHandler/JsControlTreeModifier\"],function(t){\"use strict\";var e,i={startRecordingUndo:function(){e=[]},stopRecordingUndo:function(){var t=e;return e=void 0,t},performUndo:function(t){for(;t.length;){var e=t.pop();this[e.name].apply(this,e.properties)}},_saveUndoOperation:function(t,i){e&&e.push({name:t,properties:i})},setVisible:function(e,i){var r=this.getVisible(e),n=t.setVisible.apply(this,arguments);return r!==this.getVisible(e)&&this._saveUndoOperation(\"setVisible\",[e,r]),n},setStashed:function(e,i){var r,n=e.getId();r=e.getVisible?!e.getVisible():e.getStashed(),t.setStashed.apply(this,arguments);var o=sap.ui.getCore().byId(n);r!==i&&this._saveUndoOperation(\"setStashed\",[o,!i])},bindProperty:function(e,i,r){var n,o=e.getBindingInfo(i),a=e.getMetadata().getPropertyLikeSetting(i);if(a){n=e[a._sGetter]()}t.bindProperty.apply(this,arguments),o?this._saveUndoOperation(\"bindProperty\",[e,i,o]):this._saveUndoOperation(\"unbindProperty\",[e,i]),n&&this._saveUndoOperation(\"setProperty\",[e,i,n])},unbindProperty:function(e,i){var r=e.getBindingInfo(i);t.unbindProperty.apply(this,arguments),r&&this._saveUndoOperation(\"bindProperty\",[e,i,r])},setProperty:function(e,i,r){var n,o=e.getMetadata().getPropertyLikeSetting(i);if(o){n=e[o._sGetter]()}var a=t.setProperty.apply(this,arguments);return n!==r&&this._saveUndoOperation(\"setProperty\",[e,i,n]),a},setPropertyBinding:function(e,i,r){var n,o=e.getMetadata().getPropertyLikeSetting(i);if(o){n=e[o._sGetter]()}t.setPropertyBinding.apply(this,arguments),n!==r&&this._saveUndoOperation(\"setPropertyBinding\",[e,i,n])},createControl:function(e,i,r,n){var o=this.bySelector(n,i),a=t.createControl.apply(this,arguments);if(!o){var s=this.bySelector(n,i);this._saveUndoOperation(\"destroy\",[s])}return a},destroy:function(t){t&&t.destroy()},insertAggregation:function(e,i,r,n){var o=t.getAggregation.call(this,e,i);if(t.insertAggregation.apply(this,arguments),e&&e.getMetadata){var a=e.getMetadata(),s=a.getAllAggregations();if(s){var g=s[i];g&&(g.multiple?this._saveUndoOperation(\"removeAggregation\",[e,i,r]):this._saveUndoOperation(\"insertAggregation\",[e,i,o]))}}},removeAggregation:function(e,i,r){var n,o;e&&r&&(o=t.getAggregation.call(this,e,i))&&o.some(function(t,e){if(t===r)return n=e,!0}),t.removeAggregation.apply(this,arguments),(n||0===n)&&this._saveUndoOperation(\"insertAggregation\",[e,i,r,n])},removeAllAggregation:function(e,i){var r,n=[];e&&(r=t.getAggregation.call(this,e,i)),r&&r instanceof Array?n=r.slice():r&&r instanceof Object&&(n[0]=r),t.removeAllAggregation(e,i),n&&n.forEach(function(t){this._saveUndoOperation(\"insertAggregation\",[e,i,t])},this)}};return jQuery.sap.extend(!0,{},t,i)},!0);", + "sap/ui/rta/RuntimeAuthoring.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/base/ManagedObject\",\"sap/ui/rta/toolbar/Fiori\",\"sap/ui/rta/toolbar/Standalone\",\"sap/ui/rta/toolbar/Personalization\",\"sap/ui/dt/ElementUtil\",\"sap/ui/dt/DesignTime\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/dt/Overlay\",\"sap/ui/rta/command/Stack\",\"sap/ui/rta/command/CommandFactory\",\"sap/ui/rta/command/LREPSerializer\",\"sap/ui/rta/plugin/Rename\",\"sap/ui/rta/plugin/DragDrop\",\"sap/ui/rta/plugin/RTAElementMover\",\"sap/ui/rta/plugin/CutPaste\",\"sap/ui/rta/plugin/Remove\",\"sap/ui/rta/plugin/CreateContainer\",\"sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin\",\"sap/ui/rta/plugin/additionalElements/AddElementsDialog\",\"sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer\",\"sap/ui/rta/plugin/Combine\",\"sap/ui/rta/plugin/Split\",\"sap/ui/rta/plugin/Selection\",\"sap/ui/rta/plugin/Settings\",\"sap/ui/dt/plugin/ContextMenu\",\"sap/ui/dt/plugin/TabHandling\",\"sap/ui/fl/FlexControllerFactory\",\"sap/ui/rta/ui/SettingsDialog\",\"./Utils\",\"sap/ui/fl/transport/Transports\",\"sap/ui/fl/transport/TransportSelection\",\"sap/ui/fl/Utils\",\"sap/ui/fl/registry/Settings\",\"sap/m/MessageBox\",\"sap/m/MessageToast\",\"sap/ui/rta/util/PopupManager\",\"sap/ui/core/BusyIndicator\",\"sap/ui/dt/DOMUtil\",\"sap/ui/rta/util/StylesLoader\",\"sap/ui/rta/appVariant/ManageAppsLoader\"],function(t,e,n,i,o,s,a,r,l,u,h,d,g,p,c,m,_,f,C,b,y,S,P,R,T,E,v,x,M,A,D,O,w,I,N,L,U,F,k,G,z){\"use strict\";var H=e.extend(\"sap.ui.rta.RuntimeAuthoring\",{metadata:{library:\"sap.ui.rta\",associations:{rootControl:{type:\"sap.ui.core.Control\"}},properties:{customFieldUrl:\"string\",showCreateCustomField:\"boolean\",showToolbars:{type:\"boolean\",defaultValue:!0},triggeredFromDialog:{type:\"boolean\",defaultValue:!1},showSettingsDialog:{type:\"boolean\",defaultValue:!0},showWindowUnloadDialog:{type:\"boolean\",defaultValue:!0},commandStack:{type:\"any\"},plugins:{type:\"any\",defaultValue:{}},flexSettings:{type:\"object\"},mode:{type:\"string\",defaultValue:\"adaptation\"}},events:{start:{parameters:{editablePluginsCount:{type:\"int\"}}},stop:{},failed:{},selectionChange:{parameters:{selection:{type:\"sap.ui.dt.Overlay[]\"}}},modeChanged:{},undoRedoStackModified:{}}},_sAppTitle:null});H.prototype.getDefaultPlugins=function(){if(!this._mDefaultPlugins){var e=new h({flexSettings:this.getFlexSettings()});this._mDefaultPlugins={},this._mDefaultPlugins.selection=new R({commandFactory:e,multiSelectionRequiredPlugins:[S.getMetadata().getName(),_.getMetadata().getName()],elementEditableChange:this._onElementEditableChange.bind(this)});var n=new c({commandFactory:e});this._mDefaultPlugins.dragDrop=new p({elementMover:n,commandFactory:e,dragStarted:this._handleStopCutPaste.bind(this)}),this._mDefaultPlugins.cutPaste=new m({elementMover:n,commandFactory:e}),this._mDefaultPlugins.remove=new _({commandFactory:e}),this._mDefaultPlugins.additionalElements=new C({commandFactory:e,analyzer:y,dialog:new b}),this._mDefaultPlugins.rename=new g({commandFactory:e,editable:this._handleStopCutPaste.bind(this)}),this._mDefaultPlugins.settings=new T({commandFactory:e}),this._mDefaultPlugins.createContainer=new f({commandFactory:e}),this._mDefaultPlugins.combine=new S({commandFactory:e}),this._mDefaultPlugins.split=new P({commandFactory:e}),this._mDefaultPlugins.contextMenu=new E({styleClass:A.getRtaStyleClassName()}),this._mDefaultPlugins.tabHandling=new v}return t.extend({},this._mDefaultPlugins)},H.prototype._destroyDefaultPlugins=function(t){for(var e in this._mDefaultPlugins){var n=this._mDefaultPlugins[e];n&&!n.bIsDestroyed&&(t&&t[e]===n||n.destroy())}t||(this._mDefaultPlugins=null)},H.prototype.init=function(){this._onCommandStackModified=this._onStackModified.bind(this),this.iEditableOverlaysCount=0,this.setFlexSettings({layer:\"CUSTOMER\",developerMode:!0}),this.oPopupManager=new U({open:this.onPopupOpen.bind(this),close:this.onPopupClose.bind(this)})},H.prototype.onPopupOpen=function(t){t.getParameters()instanceof sap.m.Dialog&&this._oToolsMenu instanceof n&&this._oToolsMenu.setColor(\"contrast\"),this._oToolsMenu.bringToFront()},H.prototype.onPopupClose=function(t){t.getParameters()instanceof sap.m.Dialog&&this._oToolsMenu.setColor()},H.prototype.setPlugins=function(t){if(this._oDesignTime)throw new Error(\"Cannot replace plugins: runtime authoring already started\");this.setProperty(\"plugins\",t)},H.prototype.setFlexSettings=function(e){var n=t.sap.getUriParameters(),i=n.mParams[\"sap-ui-layer\"];i&&i.length>0&&(e.layer=i[0]),A.setRtaStyleClassName(e.layer),this.setProperty(\"flexSettings\",t.extend(this.getFlexSettings(),e))},H.prototype.getLayer=function(t){return this.getFlexSettings().layer},H.prototype._getFlexController=function(){var t=this._oRootControl||sap.ui.getCore().byId(this.getRootControl());return x.createForControl(t)},H.prototype._getTextResources=function(){return sap.ui.getCore().getLibraryResourceBundle(\"sap.ui.rta\")},H.prototype.start=function(){if(!this._oDesignTime)return this._oRootControl=sap.ui.getCore().byId(this.getRootControl()),this._handlePersonalizationChangesOnStart().then(function(e){if(!e){this.getPlugins()&&Object.keys(this.getPlugins()).length||this.setPlugins(this.getDefaultPlugins()),this._destroyDefaultPlugins(this.getPlugins()),Object.keys(this.getPlugins()).forEach(function(t){this.getPlugins()[t].attachElementModified&&this.getPlugins()[t].attachElementModified(this._handleElementModified,this)}.bind(this)),this.getPlugins().settings&&this.getPlugins().settings.setCommandStack(this.getCommandStack()),this._buildContextMenu(),this._oSerializer=new d({commandStack:this.getCommandStack(),rootControl:this.getRootControl()});var n=Object.keys(this.getPlugins()),i=n.map(function(t){return this.getPlugins()[t]},this);t.sap.measure.start(\"rta.dt.startup\",\"Measurement of RTA: DesignTime start up\"),this._oDesignTime=new a({rootElements:[this._oRootControl],plugins:i}),t(l.getOverlayContainer()).addClass(\"sapUiRta\"),\"USER\"===this.getLayer()&&t(l.getOverlayContainer()).addClass(\"sapUiRtaPersonalize\"),this._oRootControl.addStyleClass(\"sapUiRtaRoot\"),this._oDesignTime.attachSelectionChange(function(t){this.fireSelectionChange({selection:t.getParameter(\"selection\")})},this),this._oDesignTime.attachEventOnce(\"synced\",function(){this.fireStart({editablePluginsCount:this.iEditableOverlaysCount}),t.sap.measure.end(\"rta.dt.startup\",\"Measurement of RTA: DesignTime start up\")},this),this._oDesignTime.attachEventOnce(\"syncFailed\",function(){this.fireFailed()},this),this._$document=t(document),this.fnKeyDown=this._onKeyDown.bind(this),this._$document.on(\"keydown\",this.fnKeyDown),this._oldUnloadHandler=window.onbeforeunload,window.onbeforeunload=this._onUnload.bind(this),sap.ui.getCore().getEventBus().subscribe(\"sap.ushell.renderers.fiori2.Renderer\",\"appClosed\",this._onAppClosed,this)}return Promise.resolve(e)}.bind(this)).then(function(t){var e;if(this.getShowToolbars()&&!t)return I.getInstance(w.getComponentClassName(this._oRootControl)).then(function(t){return e=z.hasAppVariantsSupport(this.getLayer(),t.isAtoEnabled()&&t.isAtoAvailable()),!t.isProductiveSystem()&&!t.hasMergeErrorOccured()}.bind(this)).catch(function(t){return!1}).then(function(t){return this._createToolsMenu(t,e),this._oToolsMenu.show()}.bind(this)).then(function(){this.oPopupManager.setRta(this)}.bind(this))}.bind(this)).then(function(){var t=this.oPopupManager.getRelevantPopups();return!t.aDialogs&&!t.aPopovers||this._oToolsMenu.bringToFront()}.bind(this)).then(function(){return G.loadStyles(\"InPageStyles\").then(function(t){var e=t.replace(/%scrollWidth%/g,k.getScrollbarWidth()+\"px\");k.insertStyles(e)}),!0})};var X=function(e){var n=e.stack||e.message||e.status||e,i=sap.ui.getCore().getLibraryResourceBundle(\"sap.ui.rta\");t.sap.log.error(\"Failed to transfer runtime adaptation changes to layered repository\",n);var o=i.getText(\"MSG_LREP_TRANSFER_ERROR\")+\"\\n\"+i.getText(\"MSG_ERROR_REASON\",n);N.error(o,{styleClass:A.getRtaStyleClassName()})};H.prototype._onAppClosed=function(){this.stop(!0,!0)},H.prototype.setCommandStack=function(t){var e=this.getProperty(\"commandStack\");e&&e.detachModified(this._onCommandStackModified),this._oInternalCommandStack&&(this._oInternalCommandStack.destroy(),delete this._oInternalCommandStack);var n=this.setProperty(\"commandStack\",t);return t&&t.attachModified(this._onCommandStackModified),this.getPlugins()&&this.getPlugins().settings&&this.getPlugins().settings.setCommandStack(t),n},H.prototype.getCommandStack=function(){var t=this.getProperty(\"commandStack\");return t||(t=new u,this._oInternalCommandStack=t,this.setCommandStack(t)),t},H.prototype._onStackModified=function(){var t=this.getCommandStack(),e=t.canUndo(),n=t.canRedo(),i=A.getUshellContainer();this.getShowToolbars()&&this._oToolsMenu&&(this._oToolsMenu.setUndoRedoEnabled(e,n),this._oToolsMenu.setPublishEnabled(this._bChangesExist||e),this._oToolsMenu.setRestoreEnabled(this._bChangesExist||e)),this.fireUndoRedoStackModified(),i&&(e?i.setDirtyFlag(!0):i.setDirtyFlag(!1))},H.prototype._closeToolBars=function(){return this.getShowToolbars()&&this._oToolsMenu?this._oToolsMenu.hide():Promise.resolve()},H.prototype.getSelection=function(){return this._oDesignTime?this._oDesignTime.getSelection():[]},H.prototype.stop=function(t,e){return(t?Promise.resolve():this._serializeToLrep()).then(this._closeToolBars.bind(this)).then(e?Promise.resolve():this._handlePersonalizationChangesOnExit.bind(this)).then(function(){this.exit(),this.fireStop()}.bind(this)).catch(X)},H.prototype.restore=function(){this._onRestore()},H.prototype.transport=function(){this._onTransport()},H.prototype.undo=function(){return this._onUndo()},H.prototype.redo=function(){return this._onRedo()},H.prototype.canUndo=function(){return this.getCommandStack().canUndo()},H.prototype.canRedo=function(){return this.getCommandStack().canRedo()},H.prototype._onKeyDown=function(e){var n=sap.ui.Device.os.macintosh?e.metaKey:e.ctrlKey;e.keyCode===t.sap.KeyCodes.Z&&!1===e.shiftKey&&!1===e.altKey&&!0===n?this._onUndo().then(e.stopPropagation.bind(e)):e.keyCode===t.sap.KeyCodes.Y&&!1===e.shiftKey&&!1===e.altKey&&!0===n&&this._onRedo().then(e.stopPropagation.bind(e))},H.prototype._onUnload=function(){var t=this.getCommandStack();if((t.canUndo()||t.canRedo())&&this.getShowWindowUnloadDialog())return this._getTextResources().getText(\"MSG_UNSAVED_CHANGES\");window.onbeforeunload=this._oldUnloadHandler},H.prototype._serializeToLrep=function(){return this._oSerializer.saveCommands()},H.prototype._onUndo=function(){return this._handleStopCutPaste(),this.getCommandStack().undo()},H.prototype._onRedo=function(){return this._handleStopCutPaste(),this.getCommandStack().redo()},H.prototype._createToolsMenu=function(t,e){if(!this._oToolsMenu){var s;s=\"USER\"===this.getLayer()?o:A.getFiori2Renderer()?n:i,\"USER\"===this.getLayer()?this._oToolsMenu=new s({textResources:this._getTextResources(),exit:this.stop.bind(this,!1,!1),restore:this._onRestore.bind(this)}):this._oToolsMenu=new s({modeSwitcher:this.getMode(),publishVisible:t,textResources:this._getTextResources(),manageAppsVisible:e,exit:this.stop.bind(this,!1,!1),transport:this._onTransport.bind(this),restore:this._onRestore.bind(this),undo:this._onUndo.bind(this),redo:this._onRedo.bind(this),modeChange:this._onModeChange.bind(this),manageApps:z.load.bind(null,this.getRootControl())}),this._checkChangesExist().then(function(t){this._bChangesExist=t,this._oToolsMenu.setPublishEnabled(t),this._oToolsMenu.setRestoreEnabled(t)}.bind(this))}},H.prototype.exit=function(){this._oDesignTime&&(t(l.getOverlayContainer()).removeClass(\"sapUiRta\"),this._oDesignTime.destroy(),this._oDesignTime=null,this._$document.off(\"keydown\",this.fnKeyDown),this._destroyDefaultPlugins(),this.setPlugins(null)),this._oRootControl&&this._oRootControl.removeStyleClass(\"sapUiRtaRoot\"),this._oToolsMenu&&(this._oToolsMenu.destroy(),this._oToolsMenu=null),this.setCommandStack(null);var e=A.getUshellContainer();e&&e.setDirtyFlag(!1),this.oPopupManager&&this.oPopupManager.destroy(),window.onbeforeunload=this._oldUnloadHandler,sap.ui.getCore().getEventBus().unsubscribe(\"sap.ushell.renderers.fiori2.Renderer\",\"appClosed\",this._onAppClosed,this)},H.prototype._onTransport=function(){var t=function(t){if(F.hide(),\"createAndApply failed\"!==t.message)return w.log.error(\"transport error\"+t),this._showMessage(N.Icon.ERROR,\"HEADER_TRANSPORT_ERROR\",\"MSG_TRANSPORT_ERROR\",t)}.bind(this);return this._handleStopCutPaste(),this._openSelection().then(this._checkTransportInfo).then(function(e){if(e)return this._serializeToLrep().then(function(){return this._getFlexController().getComponentChanges({currentLayer:this.getLayer()}).then(function(n){if(n.length>0)return F.show(0),this._createAndApplyChanges(n).then(this._transportAllLocalChanges.bind(this,e)).catch(t)}.bind(this))}.bind(this)).catch(X)}.bind(this))},H.prototype._checkTransportInfo=function(t){return!(!t||!t.transport||\"$TMP\"===t.packageName)&&t},H.prototype._openSelection=function(){return(new O).openTransportSelection(null,this._oRootControl,A.getRtaStyleClassName())},H.prototype._createAndApplyChanges=function(t){var e=[];return Promise.resolve().then(function(){function n(t){return t&&t.selector&&t.selector.id}return t.filter(n).forEach(function(t){var n=sap.ui.getCore().byId(t.selector.id);e.push(function(){return Promise.resolve().then(function(){return this._getFlexController().createAndApplyChange(t,n)}.bind(this))}.bind(this))}.bind(this)),w.execPromiseQueueSequentially(e)}.bind(this)).catch(function(t){return w.log.error(\"Create and apply error: \"+t),t}).then(function(t){return this._getFlexController().saveAll().then(function(){if(t)throw t})}.bind(this)).catch(function(t){return w.log.error(\"Create and apply and/or save error: \"+t),this._showMessage(N.Icon.ERROR,\"HEADER_TRANSPORT_APPLYSAVE_ERROR\",\"MSG_TRANSPORT_APPLYSAVE_ERROR\",t)}.bind(this))},H.prototype._deleteChanges=function(){var t=new O,e=this.getLayer();this._getFlexController().getComponentChanges({currentLayer:e}).then(function(n){return I.getInstance(w.getComponentClassName(this._oRootControl)).then(function(e){if(!e.isProductiveSystem()&&!e.hasMergeErrorOccured())return t.setTransports(n,this._oRootControl)}.bind(this)).then(function(){return this._getFlexController().discardChanges(n,\"USER\"===e)}.bind(this)).then(function(){return window.location.reload()})}.bind(this)).catch(function(t){return this._showMessage(N.Icon.ERROR,\"HEADER_RESTORE_FAILED\",\"MSG_RESTORE_FAILED\",t)}.bind(this))},H.prototype._showMessage=function(t,e,n,i){var o=this._getTextResources().getText(n,i?[i.message||i]:void 0),s=this._getTextResources().getText(e);return new Promise(function(e){N.show(o,{icon:t,title:s,onClose:e,styleClass:A.getRtaStyleClassName()})})},H.prototype._showMessageToast=function(t){var e=this._getTextResources().getText(t);L.show(e)},H.needsRestart=function(t){return!!window.localStorage.getItem(\"sap.ui.rta.restart.\"+t)},H.enableRestart=function(t){window.localStorage.setItem(\"sap.ui.rta.restart.\"+t,!0)},H.disableRestart=function(t){window.localStorage.removeItem(\"sap.ui.rta.restart.\"+t)},H.prototype._onRestore=function(){var t=\"USER\"===this.getLayer()?this._getTextResources().getText(\"FORM_PERS_RESET_MESSAGE_PERSONALIZATION\"):this._getTextResources().getText(\"FORM_PERS_RESET_MESSAGE\"),e=\"USER\"===this.getLayer()?this._getTextResources().getText(\"BTN_RESTORE\"):this._getTextResources().getText(\"FORM_PERS_RESET_TITLE\"),n=function(t){\"OK\"===t&&(this.getCommandStack().removeAllCommands(),H.enableRestart(this.getLayer()),this._deleteChanges())}.bind(this);this._handleStopCutPaste(),N.confirm(t,{icon:N.Icon.WARNING,title:e,onClose:n,styleClass:A.getRtaStyleClassName()})},H.prototype._transportAllLocalChanges=function(t){return this._getFlexController().getComponentChanges({currentLayer:this.getLayer()}).then(function(e){var n=new D,i=n._convertToChangeTransportData(e),o={};return o.package=t.packageName,o.transportId=t.transport,o.changeIds=i,n.makeChangesTransportable(o).then(function(){e.forEach(function(e){if(\"$TMP\"===e.getPackage()){var n=e.getDefinition();n.packageName=t.packageName,e.setResponse(n)}})}).then(function(){F.hide(),this._showMessageToast(\"MSG_TRANSPORT_SUCCESS\")}.bind(this))}.bind(this))},H.prototype._isEqualParentInfo=function(t,e){var n=!!t&&!!e;return n&&t.parent&&e.parent&&(n=t.parent.getId()===e.parent.getId()),n&&(t.index||e.index)&&(n=t.index===e.index),n&&(t.aggregation||e.aggregation)&&(n=t.aggregation===e.aggregation),n},H.prototype._handleElementModified=function(t){this._handleStopCutPaste();var e=t.getParameter(\"command\");return e instanceof sap.ui.rta.command.BaseCommand?this.getCommandStack().pushAndExecute(e):Promise.resolve()},H.prototype._onElementEditableChange=function(t){t.getParameter(\"editable\")?this.iEditableOverlaysCount+=1:this.iEditableOverlaysCount-=1},H.prototype._handleRemoveElement=function(t){this.getPlugins().remove.removeElement(t)},H.prototype._openSettingsDialog=function(t){var e=t.mParameters?t.getParameter(\"selectedOverlays\"):t,n=e[0].getElementInstance();this._handleStopCutPaste(),this._oSettingsDialog||(this._oSettingsDialog=new M),this._oSettingsDialog.setCommandStack(this.getCommandStack()),this._oSettingsDialog.open(n)};var B=function(t){return this._oDesignTime.getSelection().length<2},K=function(t){return t.getMovable()},V=function(t){return this.getPlugins().remove.isRemoveAvailable(t)},W=function(t){return this.getPlugins().remove.isRemoveEnabled(t)},j=function(t){return this.getPlugins().rename.isRenameAvailable(t)},Z=function(t){return this.getPlugins().rename.isRenameEnabled(t)},$=function(t){return this.getPlugins().settings.isSettingsAvailable(t)},q=function(t){return this.getPlugins().settings.isSettingsEnabled(t)},Y=function(t){return this.getPlugins().combine.isCombineAvailable(t)},Q=function(t){return this.getPlugins().combine.isCombineEnabled(t)},J=function(t){return this.getPlugins().split.isSplitAvailable(t)},tt=function(t){return this.getPlugins().split.isSplitEnabled(t)};return H.prototype._buildContextMenu=function(){var t=this.getPlugins().contextMenu;if(t){var e=this.getPlugins().additionalElements,n=this.getPlugins().createContainer;this.getPlugins().rename&&t.addMenuItem({id:\"CTX_RENAME_LABEL\",text:this._getTextResources().getText(\"CTX_RENAME\"),handler:this._handleRename.bind(this),available:j.bind(this),enabled:function(t){return B.call(this,t)&&Z.call(this,t)}.bind(this)}),e&&(t.addMenuItem({id:\"CTX_ADD_ELEMENTS_AS_SIBLING\",text:e.getContextMenuTitle.bind(e,!0),handler:e.showAvailableElements.bind(e,!0),available:e.isAvailable.bind(e,!0),enabled:function(t){return B.call(this,t)&&e.isEnabled(!0,t)}.bind(this)}),t.addMenuItem({id:\"CTX_ADD_ELEMENTS_AS_CHILD\",text:e.getContextMenuTitle.bind(e,!1),handler:e.showAvailableElements.bind(e,!1),available:e.isAvailable.bind(e,!1),enabled:function(t){return B.call(this,t)&&e.isEnabled(!1,t)}.bind(this)})),n&&(t.addMenuItem({id:\"CTX_CREATE_CHILD_CONTAINER\",text:n.getCreateContainerText.bind(n,!1),handler:this._createContainer.bind(this,!1),available:n.isCreateAvailable.bind(n,!1),enabled:n.isCreateEnabled.bind(n,!1)}),t.addMenuItem({id:\"CTX_CREATE_SIBLING_CONTAINER\",text:n.getCreateContainerText.bind(n,!0),handler:this._createContainer.bind(this,!0),available:n.isCreateAvailable.bind(n,!0),enabled:n.isCreateEnabled.bind(n,!0)})),this.getPlugins().remove&&t.addMenuItem({id:\"CTX_REMOVE\",text:this._getTextResources().getText(\"CTX_REMOVE\"),handler:this._handleRemoveElement.bind(this),available:V.bind(this),enabled:W.bind(this)}),t.addMenuItem({id:\"CTX_CUT\",text:this._getTextResources().getText(\"CTX_CUT\"),handler:this._handleCutElement.bind(this),available:K,enabled:function(){return 1===this._oDesignTime.getSelection().length}.bind(this)}),this.getPlugins().cutPaste&&t.addMenuItem({id:\"CTX_PASTE\",text:this._getTextResources().getText(\"CTX_PASTE\"),handler:this._handlePasteElement.bind(this),available:K,enabled:function(t){return this.getPlugins().cutPaste.isElementPasteable(t)}.bind(this)}),t.addMenuItem({id:\"CTX_GROUP_FIELDS\",text:this._getTextResources().getText(\"CTX_GROUP_FIELDS\"),handler:this._handleCombineElements.bind(this),available:Y.bind(this),enabled:Q.bind(this)}),t.addMenuItem({id:\"CTX_UNGROUP_FIELDS\",text:this._getTextResources().getText(\"CTX_UNGROUP_FIELDS\"),handler:this._handleSplitElements.bind(this),available:J.bind(this),enabled:tt.bind(this)}),this.getPlugins().settings&&t.addMenuItem({id:\"CTX_SETTINGS\",text:this._getTextResources().getText(\"CTX_SETTINGS\"),handler:this._handleSettings.bind(this),available:$.bind(this),enabled:q.bind(this)})}},H.prototype._createContainer=function(t,e){this._handleStopCutPaste();var n=e[0],i=this.getPlugins().createContainer.handleCreate(t,n);if(this.getPlugins().rename){var o={onAfterRendering:function(){setTimeout(function(){this.getPlugins().rename.startEdit(i)}.bind(this),0),i.removeEventDelegate(o)}.bind(this)};i.addEventDelegate(o)}},H.prototype._handleRename=function(t){var e=t[0];this.getPlugins().rename.startEdit(e)},H.prototype._handleCutElement=function(t){var e=t[0];this.getPlugins().cutPaste.cut(e)},H.prototype._handlePasteElement=function(t){var e=t[0];this.getPlugins().cutPaste.paste(e)},H.prototype._handleStopCutPaste=function(){this.getPlugins().cutPaste.stopCutAndPaste()},H.prototype._handleCombineElements=function(){this._handleStopCutPaste();var t=this.getPlugins().contextMenu.getContextElement();this.getPlugins().combine.handleCombine(t)},H.prototype._handleSplitElements=function(){this._handleStopCutPaste();var t=this.getPlugins().contextMenu.getContextElement();this.getPlugins().split.handleSplit(t)},H.prototype._handleSettings=function(t){this.getPlugins().settings.handleSettings(t)},H.prototype._getApplicationTitle=function(){var t=\"\",e=sap.ui.core.Component.getOwnerComponentFor(this._oRootControl);return e&&(t=e.getMetadata().getManifestEntry(\"sap.app\").title),t},H.prototype._checkChangesExist=function(){return this._getFlexController().getComponentName().length>0?this._getFlexController().getComponentChanges({currentLayer:this.getLayer()}).then(function(t){return t.length>0}):Promise.resolve(!1)},H.prototype._getURLParsedHash=function(){var t=sap.ushell.Container.getService(\"URLParsing\");if(t.parseShellHash&&t.getHash)return t.parseShellHash(t.getHash(window.location.href))},H.prototype._buildNavigationArguments=function(t){return{target:{semanticObject:t.semanticObject,action:t.action,context:t.contextRaw},params:t.params,appSpecificRoute:t.appSpecificRoute}},H.prototype._hasCustomerLayerParameter=function(t){return t.params&&t.params[\"sap-ui-fl-max-layer\"]&&\"CUSTOMER\"===t.params[\"sap-ui-fl-max-layer\"][0]},H.prototype._reloadWithoutPersonalizationChanges=function(t,e){if(!this._hasCustomerLayerParameter(t))return t.params||(t.params={}),t.params[\"sap-ui-fl-max-layer\"]=[\"CUSTOMER\"],H.enableRestart(\"CUSTOMER\"),e.toExternal(this._buildNavigationArguments(t)),Promise.resolve(!0)},H.prototype._reloadWithPersonalizationChanges=function(t,e){if(this._hasCustomerLayerParameter(t))return delete t.params[\"sap-ui-fl-max-layer\"],e.toExternal(this._buildNavigationArguments(t)),Promise.resolve(!0)},H.prototype._handlePersonalizationMessageBoxOnStart=function(){return this._showMessage(N.Icon.INFORMATION,\"HEADER_PERSONALIZATION_EXISTS\",\"MSG_PERSONALIZATION_EXISTS\")},H.prototype._handlePersonalizationChangesOnStart=function(){if(A.getUshellContainer()&&\"USER\"!==this.getLayer()){var t=this._getURLParsedHash();return this._getFlexController().isPersonalized({ignoreMaxLayerParameter:!1}).then(function(e){if(e)return this._handlePersonalizationMessageBoxOnStart().then(function(){var e=sap.ushell.Container.getService(\"CrossApplicationNavigation\");if(e.toExternal&&t)return this._reloadWithoutPersonalizationChanges(t,e)}.bind(this))}.bind(this))}return Promise.resolve(!1)},H.prototype._handlePersonalizationMessageBoxOnExit=function(){return new Promise(function(t){var e=this._getTextResources().getText(\"MSG_LOAD_PERSONALIZATION_CHANGES\"),n=this._getTextResources().getText(\"HEADER_LOAD_PERSONALIZATION_CHANGES\"),i=this._getTextResources().getText(\"MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT\"),o=this._getTextResources().getText(\"MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT\"),s=function(e){return e===i?t(!0):e===o?t(!1):void 0};N.confirm(e,{icon:N.Icon.QUESTION,title:n,actions:[i,o],onClose:s,styleClass:A.getRtaStyleClassName()})}.bind(this))},H.prototype._handlePersonalizationChangesOnExit=function(){var t=A.getUshellContainer();return sap.ui.getCore().getEventBus().unsubscribe(\"sap.ushell.renderers.fiori2.Renderer\",\"appClosed\",this._onAppClosed,this),t&&\"USER\"!==this.getLayer()?this._getFlexController().isPersonalized({ignoreMaxLayerParameter:!0}).then(function(t){if(t)return this._handlePersonalizationMessageBoxOnExit().then(function(t){if(t){var e=sap.ushell.Container.getService(\"CrossApplicationNavigation\"),n=this._getURLParsedHash();if(e.toExternal&&n)return this._reloadWithPersonalizationChanges(n,e)}}.bind(this))}.bind(this)):Promise.resolve(!1)},H.prototype._onModeChange=function(t){this.setMode(t.getParameter(\"key\"))},H.prototype.setMode=function(t){if(this.getProperty(\"mode\")!==t){var e=this._oToolsMenu.getControl(\"modeSwitcher\"),n=\"adaptation\"===t;e&&e.setSelectedButton(e.getItems().filter(function(e){return e.getKey()===t}).pop().getId()),this._oDesignTime.setEnabled(n),this.getPlugins().tabHandling[n?\"removeTabIndex\":\"restoreTabIndex\"](),this.setProperty(\"mode\",t),this.fireModeChanged({mode:t})}},H},!0);", + "sap/ui/rta/Utils.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/fl/Utils\",\"sap/ui/dt/OverlayUtil\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/fl/registry/Settings\"],function(e,t,n,r,i){\"use strict\";var a={};return a.RESOLVED_PROMISE=Promise.resolve(!0),a._sFocusableOverlayClass=\".sapUiDtOverlaySelectable\",a._sRtaStyleClassName=\"\",a.getRtaStyleClassName=function(){return a._sRtaStyleClassName},a.setRtaStyleClassName=function(e){\"USER\"===e?a._sRtaStyleClassName=\"\":t.getLayerIndex(e)>-1&&(\"sap_belize\"===sap.ui.getCore().getConfiguration().getTheme()?a._sRtaStyleClassName=\"sapContrast\":\"sap_belize_plus\"===sap.ui.getCore().getConfiguration().getTheme()&&(a._sRtaStyleClassName=\"sapContrastPlus\"))},a.isExtensibilityEnabledInSystem=function(e){var n=t.getComponentClassName(e);return n&&\"\"!=n?i.getInstance(n).then(function(e){return!!e.isModelS&&e.isModelS()}):Promise.resolve(!1)},a.getRelevantContainerDesigntimeMetadata=function(e){var t=e.getRelevantContainer();if(t&&e.getParent()){var n=r.getOverlay(t);return n?n.getDesignTimeMetadata():void 0}},a.isServiceUpToDate=function(t){return this.isExtensibilityEnabledInSystem(t).then(function(n){if(n){e.sap.require(\"sap.ui.fl.fieldExt.Access\");var r=t.getModel();if(r){if(sap.ui.fl.fieldExt.Access.isServiceOutdated(r.sServiceUrl))return sap.ui.fl.fieldExt.Access.setServiceValid(r.sServiceUrl),sap.ui.getCore().getEventBus().publish(\"sap.ui.core.UnrecoverableClientStateCorruption\",\"RequestReload\",{}),Promise.reject()}}})},a.isCustomFieldAvailable=function(t){return this.isExtensibilityEnabledInSystem(t).then(function(n){if(!n)return!1;if(!t.getModel())return!1;var r=t.getModel().sServiceUrl,i=this.getBoundEntityType(t).name;try{e.sap.require(\"sap.ui.fl.fieldExt.Access\");var a=sap.ui.fl.fieldExt.Access.getBusinessContexts(r,i);return Promise.resolve(a).then(function(e){return!!e&&(e.BusinessContexts&&e.BusinessContexts.length>0?(e.EntityType=i,e):void 0)}).catch(function(t){if(t&&e.isArray(t.errorMessages))for(var n=0;n0)return\"true\"===i[0]}return!1}}});", + "sap/ui/rta/appVariant/Utils.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\"],function(t){\"use strict\";var e={};return e.ajaxRequest=function(e){return new Promise(function(r,n){t.ajax(e).done(function(t){return r(t)}).fail(function(t){return n(t)})})},e.getAppVariants=function(t,e){var r={url:\"/sap/bc/ui2/app_index/?basedOnId=\"+t+\"&fields=descriptorUrl\",type:\"GET\"};return this.ajaxRequest(r).then(function(t){var r=t.results;return this.getAppVariantDescriptorInfo(r,e)}.bind(this))},e.getAppVariantDescriptorInfo=function(t,e){var r=[],n=this;return t.some(function(t){r.push(n.getAppVariantsProperties(t,e))}),Promise.all(r).then(function(t){return t})},e.getAppVariantsProperties=function(t,e){var r,n={};return r={url:t.descriptorUrl,type:\"GET\"},this.ajaxRequest(r).then(function(t){var r=t;return n.id=r[\"sap.app\"].id,n.title=r[\"sap.app\"].title,n.subTitle=r[\"sap.app\"].subTitle,n.description=r[\"sap.app\"].description,n.icon=r[\"sap.ui\"].icons.icon,n.componentName=r[\"sap.ui5\"].componentName,n.type=e,Promise.resolve(n)})},e.getOriginalAppProperties=function(t,e){var r={url:\"/sap/bc/ui2/app_index/?sap.app/id=\"+t+\"&fields=descriptorUrl\",type:\"GET\"};return this.ajaxRequest(r).then(function(t){var r=t.results;return this.getAppVariantDescriptorInfo(r,e)}.bind(this))},e},!0);", + "sap/ui/rta/appVariant/manageApps/webapp/Component.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/core/UIComponent\"],function(t){\"use strict\";var p;return t.extend(\"sap.ui.rta.appVariant.manageApps.webapp.Component\",{metadata:{manifest:\"json\",library:\"sap.ui.rta\",version:\"0.9\",properties:{adaptedAppProperties:{type:\"object\"}}},constructor:function(){p=arguments[1].adaptedAppProperties,t.prototype.constructor.apply(this,arguments)},init:function(){this.setAdaptedAppProperties(p),t.prototype.init.apply(this,arguments)}})});", + "sap/ui/rta/appVariant/manageApps/webapp/controller/ManageApps.controller.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/core/mvc/Controller\",\"sap/ui/rta/appVariant/manageApps/webapp/model/models\",\"sap/ui/rta/appVariant/Utils\",\"sap/m/MessageBox\"],function(e,t,n,i,a){\"use strict\";var r,s,o;return t.extend(\"sap.ui.rta.appVariant.manageApps.webapp.controller.ManageApps\",{onInit:function(){r=this.getOwnerComponent().getAdaptedAppProperties();var t=r.componentName;s=e.sap.getModulePath(\"sap.ui.rta.appVariant.manageApps.webapp\"),o=e.sap.resources({url:s+\"/i18n/i18n.properties\"});var n=o.getText(\"MAA_APP_VARIANT_TYPE\");return i.getAppVariants(t,n).then(function(e){return this._addAppVariantsProperties(e).then(function(){return this._paintCurrentlyAdaptedApp()}.bind(this))}.bind(this)).catch(function(e){return this._showMessage(a.Icon.ERROR,\"HEADER_MANAGE_APPS_FAILED\",\"MSG_MANAGE_APPS_FAILED\",e).then(function(){return this._closeManageAppsDialog()}.bind(this))}.bind(this))},_showMessage:function(e,t,n,i){var r=sap.ui.getCore().getLibraryResourceBundle(\"sap.ui.rta\"),s=r.getText(n,i?[i.message||i]:void 0),o=r.getText(t);return new Promise(function(t){a.show(s,{icon:e,title:o,onClose:t})})},_addAppVariantsProperties:function(e){var t={title:r.title,subTitle:r.subTitle,description:r.description,icon:r.icon,id:r.idAppAdapted,componentName:r.componentName,currentStatus:o.getText(\"MAA_CURRENTLY_ADAPTING\")};if(r.idAppAdapted===r.componentName)return t.type=o.getText(\"MAA_ORIGINAL_TYPE\"),e.unshift(t),this._bindModelData(e);var n=e.filter(function(e){return e.id!==t.id});return t.type=o.getText(\"MAA_APP_VARIANT_TYPE\"),n.unshift(t),i.getOriginalAppProperties(r.componentName,o.getText(\"MAA_ORIGINAL_TYPE\")).then(function(e){return n.unshift(e[0]),this._bindModelData(n)}.bind(this))},_bindModelData:function(e){var t={appVariants:e},i=n.createModel(t);return this.getView().setModel(i),Promise.resolve(!0)},_closeManageAppsDialog:function(){var e=sap.ui.getCore().byId(\"manageAppsDialog\");e.oPopup.attachClosed(function(){return e.destroy(),Promise.resolve(!0)}),e.close()},_paintCurrentlyAdaptedApp:function(){var t=this.getView().byId(\"Table1\");return e(\".maaCurrentStatus,.maaSubTitle\").css(\"font-size\",\"12px\"),function(){for(var e,n=t.getVisibleRowCount(),i=t.getFirstVisibleRow(),a=0;a=0;a--)e.call(this,t[a])},a},!0);", + "sap/ui/rta/command/CreateContainer.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/command/FlexCommand\"],function(e,t){\"use strict\";var n=t.extend(\"sap.ui.rta.command.CreateContainer\",{metadata:{library:\"sap.ui.rta\",properties:{index:{type:\"int\"},newControlId:{type:\"string\"},label:{type:\"string\"}},associations:{},events:{}}});return n.prototype._getChangeSpecificData=function(e){return{changeType:this.getChangeType(),index:this.getIndex(),newControlId:this.getNewControlId(),newLabel:this.getLabel()}},n},!0);", + "sap/ui/rta/command/FlexCommand.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/BaseCommand\",\"sap/ui/fl/FlexControllerFactory\",\"sap/ui/rta/ControlTreeModifier\",\"sap/ui/fl/Utils\"],function(e,t,n,o){\"use strict\";var r=e.extend(\"sap.ui.rta.command.FlexCommand\",{metadata:{library:\"sap.ui.rta\",properties:{changeType:{type:\"string\"},fnGetState:{type:\"any\"},state:{type:\"any\"},fnRestoreState:{type:\"any\"},selector:{type:\"object\"}},associations:{},events:{}}});return r.prototype.getElementId=function(){var e=this.getElement();return e?e.getId():this.getSelector().id},r.prototype.getAppComponent=function(){if(!this._oControlAppComponent){var e=this.getElement();this._oControlAppComponent=e?o.getAppComponentForControl(e):this.getSelector().appComponent}return this._oControlAppComponent},r.prototype.prepare=function(e,t){if(!this.getSelector()&&this.getElement()){var n={id:this.getElement().getId(),appComponent:this.getAppComponent(),controlType:o.getControlType(this.getElement())};this.setSelector(n)}this._oPreparedChange=this._createChange(e,t)},r.prototype.getPreparedChange=function(){return this._oPreparedChange||this.prepare(),this._oPreparedChange},r.prototype.execute=function(){var e=this.getPreparedChange();return this._applyChange(e)},r.prototype._getChangeSpecificData=function(){return{changeType:this.getChangeType(),selector:{id:this.getElementId()}}},r.prototype._createChange=function(e,t){return this._createChangeFromData(this._getChangeSpecificData(),e,t)},r.prototype._createChangeFromData=function(e,n,o){n&&jQuery.extend(e,n);var r,a=this.getAppComponent().getModel(\"$FlexVariants\");a&&o&&(r=a.getCurrentVariantRef(o));var i=t.createForControl(this.getAppComponent()),p={variantManagementKey:o,variantKey:r};return r&&jQuery.extend(e,p),i.createChange(e,this.getElement()||this.getSelector())},r.prototype.undo=function(){return this.getFnRestoreState()?this.getFnRestoreState()(this.getElement()||this.getSelector(),this.getState()):this._aRecordedUndo?n.performUndo(this._aRecordedUndo):jQuery.sap.log.warning(\"Undo is not available for \"+this.getElement()||this.getSelector()),Promise.resolve()},r.prototype._applyChange=function(e,o){var r=e.change||e,a=this.getAppComponent(),i=r.getDefinition(),p=n.bySelector(r.getSelector(),a);this.getFnGetState()?this.setState.call(this,this.getFnGetState()(this.getElement()||this.getSelector(),i,{modifier:n,appComponent:a})):n.startRecordingUndo();var s=t.createForControl(this.getAppComponent());return Promise.resolve(s.checkTargetAndApplyChange(r,p,{modifier:n,appComponent:a})).then(function(){o&&s.removeFromAppliedChangesOnControl(r,a,p)}).then(function(){this.getFnGetState()||(this._aRecordedUndo=n.stopRecordingUndo())}.bind(this))},r},!0);", + "sap/ui/rta/command/LREPSerializer.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/base/ManagedObject\",\"sap/ui/rta/command/Stack\",\"sap/ui/fl/FlexControllerFactory\",\"sap/ui/fl/Utils\",\"sap/ui/rta/ControlTreeModifier\"],function(e,t,o,a,n){\"use strict\";var r=e.extend(\"sap.ui.rta.command.LREPSerializer\",{metadata:{library:\"sap.ui.rta\",associations:{rootControl:{type:\"sap.ui.core.Control\"}},properties:{commandStack:{type:\"object\"}},aggregations:{}}});return r.prototype.setCommandStack=function(e){this.setProperty(\"commandStack\",e),e.attachCommandExecuted(function(e){this.handleCommandExecuted(e)}.bind(this))},r.prototype.handleCommandExecuted=function(e){var t=e.getParameters(),a=this.getCommandStack().getSubCommands(t.command);if(!t.undo){var r=[];return a.forEach(function(e){if(e instanceof sap.ui.rta.command.FlexCommand){var t=e.getAppComponent();o.createForControl(t).addPreparedChange(e.getPreparedChange(),t)}else e instanceof sap.ui.rta.command.AppDescriptorCommand&&r.push(e.createAndStore())}),Promise.all(r)}var i;a.forEach(function(e){var t=e.getPreparedChange(),a=e.getAppComponent();if(i=o.createForControl(a),e instanceof sap.ui.rta.command.FlexCommand){var r=n.bySelector(t.getSelector(),a);i.removeFromAppliedChangesOnControl(t,a,r)}i.deleteChange(t)})},r.prototype.saveCommands=function(){var e=sap.ui.getCore().byId(this.getRootControl());if(!e)throw new Error(\"Can't save commands without root control instance!\");var t=o.createForControl(e);return t.saveAll().then(function(){var e=a.getComponentClassName(sap.ui.getCore().byId(this.getRootControl())).replace(\".Component\",\"\"),n=sap.ui.getCore().byId(this.getRootControl()),r=a.getAppVersionFromManifest(a.getAppComponentForControl(n).getManifest());return t=o.create(e,r),t.saveAll()}.bind(this)).then(function(){jQuery.sap.log.info(\"UI adaptation successfully transfered changes to layered repository\"),this.getCommandStack().removeAllCommands()}.bind(this))},r},!0);", + "sap/ui/rta/command/Move.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/command/FlexCommand\"],function(e,t){\"use strict\";var a=t.extend(\"sap.ui.rta.command.Move\",{metadata:{library:\"sap.ui.rta\",properties:{movedElements:{type:\"any[]\"},target:{type:\"any\"},source:{type:\"any\"}},associations:{},events:{}}});return a.prototype._getChangeSpecificData=function(e){var t=e?this.getTarget():this.getSource(),a=e?this.getSource():this.getTarget();t.parent&&(t.id=t.parent.getId(),delete t.parent),a.parent&&(a.id=a.parent.getId(),delete a.parent);var r={changeType:this.getChangeType(),source:t,target:a,movedElements:[]};return this.getMovedElements().forEach(function(t){r.movedElements.push({id:t.id||t.element&&t.element.getId(),sourceIndex:e?t.targetIndex:t.sourceIndex,targetIndex:e?t.sourceIndex:t.targetIndex})}),r},a.prototype.prepare=function(e,a){t.prototype.prepare.apply(this,arguments),this._oPreparedUndoChange=this._createChangeFromData(this._getChangeSpecificData(!0),e,a)},a.prototype.undo=function(){return this._applyChange(this._oPreparedUndoChange,!0)},a},!0);", + "sap/ui/rta/command/Property.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/FlexCommand\",\"sap/ui/rta/Utils\"],function(e,t){\"use strict\";var a=e.extend(\"sap.ui.rta.command.Property\",{metadata:{library:\"sap.ui.rta\",properties:{propertyName:{type:\"string\"},newValue:{type:\"any\"},semanticMeaning:{type:\"string\"},changeType:{type:\"string\",defaultValue:\"propertyChange\"}},associations:{},events:{}}});return a.prototype._getChangeSpecificData=function(){var e=this.getElement();return{changeType:this.getChangeType(),selector:{id:e.getId(),type:e.getMetadata().getName()},content:{property:this.getPropertyName(),newValue:this.getNewValue(),semantic:this.getSemanticMeaning()}}},a},!0);", + "sap/ui/rta/command/Remove.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/FlexCommand\"],function(e){\"use strict\";var t=e.extend(\"sap.ui.rta.command.Remove\",{metadata:{library:\"sap.ui.rta\",properties:{removedElement:{type:\"any\"}},associations:{},events:{}}});return t.prototype._getChangeSpecificData=function(){var e=this.getRemovedElement()||this.getElement();return{changeType:this.getChangeType(),removedElement:{id:e.getId()}}},t},!0);", + "sap/ui/rta/command/Rename.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/command/FlexCommand\"],function(e,t){\"use strict\";var a=t.extend(\"sap.ui.rta.command.Rename\",{metadata:{library:\"sap.ui.rta\",properties:{renamedElement:{type:\"object\"},newValue:{type:\"string\",defaultValue:\"new text\"}},associations:{},events:{}}});return a.prototype._getChangeSpecificData=function(){return{changeType:this.getChangeType(),selector:{id:this.getElement().getId()},renamedElement:{id:this.getRenamedElement().getId()},value:this.getNewValue()}},a},!0);", + "sap/ui/rta/command/Reveal.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/FlexCommand\"],function(e){\"use strict\";var t=e.extend(\"sap.ui.rta.command.Reveal\",{metadata:{library:\"sap.ui.rta\",properties:{revealedElementId:{type:\"string\"},directParent:\"object\"}}});return t.prototype._getChangeSpecificData=function(){var e={changeType:this.getChangeType()};return this.getRevealedElementId()&&(e.revealedElementId=this.getRevealedElementId()),e},t},!0);", + "sap/ui/rta/command/Settings.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/FlexCommand\"],function(t){\"use strict\";var e=t.extend(\"sap.ui.rta.command.Settings\",{metadata:{library:\"sap.ui.rta\",properties:{content:{type:\"any\"}},associations:{},events:{}}});return e.prototype._getChangeSpecificData=function(t){return{changeType:this.getChangeType(),content:this.getContent()}},e.prototype.execute=function(){return this.getElement()?t.prototype.execute.apply(this,arguments):Promise.resolve()},e.prototype.undo=function(){return this.getElement()?t.prototype.undo.apply(this,arguments):Promise.resolve()},e},!0);", + "sap/ui/rta/command/Split.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/FlexCommand\"],function(e){\"use strict\";var t=e.extend(\"sap.ui.rta.command.Split\",{metadata:{library:\"sap.ui.rta\",properties:{newElementIds:{type:\"string[]\"},source:{type:\"any\"},parentElement:{type:\"any\"}},associations:{},events:{}}});return t.prototype._getChangeSpecificData=function(){return{newElementIds:this.getNewElementIds(),sourceControlId:this.getSource().getId(),changeType:this.getChangeType(),parentId:this.getParentElement().getId()}},t},!0);", + "sap/ui/rta/command/Stack.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/base/ManagedObject\"],function(t){\"use strict\";var e=t.extend(\"sap.ui.rta.command.Stack\",{metadata:{library:\"sap.ui.rta\",properties:{},aggregations:{commands:{type:\"sap.ui.rta.command.BaseCommand\",multiple:!0}},events:{modified:{},commandExecuted:{parameters:{command:{type:\"object\"},undo:{type:\"boolean\"}}}}}});return e.prototype._toBeExecuted=-1,e.prototype._oLastCommand=Promise.resolve(),e.prototype._getCommandToBeExecuted=function(){return this.getCommands()[this._toBeExecuted]},e.prototype.pushExecutedCommand=function(t){this.push(t,!0)},e.prototype.push=function(t,e){if(this._bUndoneCommands)for(this._bUndoneCommands=!1;this._toBeExecuted>-1;)this.pop();this.insertCommand(t,0),e||this._toBeExecuted++,this.fireModified()},e.prototype.top=function(){return this.getCommands()[0]},e.prototype.pop=function(){return this._toBeExecuted>-1&&this._toBeExecuted--,this.removeCommand(0)},e.prototype.removeCommand=function(t,e){var o=this.removeAggregation(\"commands\",t,e);return this.fireModified(),o},e.prototype.removeAllCommands=function(t){var e=this.removeAllAggregation(\"commands\",t);return this._toBeExecuted=-1,this.fireModified(),e},e.prototype.isEmpty=function(){return 0===this.getCommands().length},e.prototype.execute=function(){return this._oLastCommand=this._oLastCommand.catch(function(){}).then(function(){var t=this._getCommandToBeExecuted();if(t)return t.execute().then(function(){this._toBeExecuted--,this.fireCommandExecuted({command:t,undo:!1}),this.fireModified()}.bind(this)).catch(function(t){return this.pop(),Promise.reject(t)}.bind(this))}.bind(this)),this._oLastCommand},e.prototype._unExecute=function(){if(this.canUndo()){this._bUndoneCommands=!0,this._toBeExecuted++;var t=this._getCommandToBeExecuted();return t?t.undo().then(function(){this.fireCommandExecuted({command:t,undo:!0}),this.fireModified()}.bind(this)):Promise.resolve()}return Promise.resolve()},e.prototype.canUndo=function(){return this._toBeExecuted+1this._toBeExecuted;o--){var n=this.getSubCommands(e[o]);t=t.concat(n)}return t},e.prototype.getSubCommands=function(t){var e=[];return t.getCommands?t.getCommands().forEach(function(t){var o=this.getSubCommands(t);e=e.concat(o)},this):e.push(t),e},e},!0);", + "sap/ui/rta/command/appDescriptor/AddLibrary.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/appDescriptor/AppDescriptorCommand\",\"sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory\"],function(e,r){\"use strict\";var i=e.extend(\"sap.ui.rta.command.appDescriptor.AddLibrary\",{metadata:{library:\"sap.ui.rta\",properties:{requiredLibraries:{type:\"object\"},layer:{type:\"string\"}},events:{}}});return i.prototype.prepare=function(e){this.setLayer(e.layer)},i.prototype.execute=function(){var e=[];if(this.getRequiredLibraries()){Object.keys(this.getRequiredLibraries()).forEach(function(r){e.push(sap.ui.getCore().loadLibrary(r,!0))})}return Promise.all(e)},i.prototype._create=function(){var e={};return e.libraries=this.getRequiredLibraries(),r.create_ui5_addLibraries(e)},i},!0);", + "sap/ui/rta/command/appDescriptor/AppDescriptorCommand.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/command/BaseCommand\",\"sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory\",\"sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory\"],function(e,t,r){\"use strict\";var n=e.extend(\"sap.ui.rta.command.AppDescriptorCommand\",{metadata:{library:\"sap.ui.rta\",properties:{reference:{type:\"string\"},appComponent:{type:\"object\"}},events:{}}});return n.prototype.getPreparedChange=function(){return this._oPreparedChange},n.prototype._create=function(){},n.prototype.createAndStore=function(){return this._create().then(function(e){return(new r).createNew(this.getReference(),e,this.getLayer(),this.getAppComponent())}.bind(this)).then(function(e){var t=e.store();this._oPreparedChange=t}.bind(this))},n},!0);", + "sap/ui/rta/library.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/core/Core\",\"sap/ui/core/library\"],function(e,i,s){\"use strict\";return sap.ui.getCore().initLibrary({name:\"sap.ui.rta\",version:\"1.50.0\",dependencies:[\"sap.ui.core\",\"sap.m\",\"sap.ui.fl\",\"sap.ui.dt\"],types:[],interfaces:[],controls:[],elements:[]}),sap.ui.rta},!0);", + "sap/ui/rta/plugin/Combine.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/plugin/Plugin\",\"sap/ui/dt/Selection\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/rta/Utils\"],function(e,t,n,i){\"use strict\";var a=e.extend(\"sap.ui.rta.plugin.Combine\",{metadata:{library:\"sap.ui.rta\",properties:{},associations:{},events:{}}});return a.prototype._isEditable=function(e){if(!i.getRelevantContainerDesigntimeMetadata(e))return!1;var t=this._getCombineAction(e);return!!(t&&t.changeType&&t.changeOnRelevantContainer)&&(this.hasChangeHandler(t.changeType,e.getRelevantContainer())&&this.hasStableId(e))},a.prototype._getCombineAction=function(e){return e.getDesignTimeMetadata().getAction(\"combine\",e.getElementInstance())},a.prototype._checkForSameRelevantContainer=function(e){for(var t=[],n=[],i=0,a=e.length;i0&&(n[0]!==n[i]||t[0].getMetadata().getName()!==t[i].getMetadata().getName()))return!1;return!0},a.prototype.isCombineAvailable=function(e){var t=this.getDesignTime().getSelection();return!(t.length<=1)&&(this._isEditableByPlugin(e)&&this._checkForSameRelevantContainer(t))},a.prototype.isCombineEnabled=function(e){var t=this.getDesignTime().getSelection();if(!this.isCombineAvailable(e)||t.length<=1)return!1;var n=t.map(function(e){return e.getElementInstance()});return t.every(function(e){var t=this._getCombineAction(e);return!!t&&(void 0===t.isEnabled||(\"function\"==typeof t.isEnabled?t.isEnabled(n):t.isEnabled))},this)},a.prototype.handleCombine=function(e){for(var t=n.getOverlay(e),i=t.getDesignTimeMetadata(),a=[],r=this.getDesignTime().getSelection(),o=0;o-1&&i.$(\"sectionsContainer\").addClass(\"sapUiRtaPaddingTop\"),n&&s(a,a.$(),!0,a.getDesignTimeMetadata().getName().singular)}else if(a.$().hasClass(\"sapUiRtaPersAddTop\")&&a.getAggregationOverlay(\"sections\").$().children(\".sapUiRtaPersAddIconOuter\").length<=0){var d=a.getAggregationOverlay(\"sections\").$();s(a,d,!1,a.getDesignTimeMetadata().getAggregation(\"sections\").childNames.singular)}a.removeEventDelegate(this._oDelegate,this)}};var s=a.getElementInstance();\"sap.uxap.ObjectPageSection\"===s.getMetadata().getName()&&this.hasStableId(a)?(a.addStyleClass(\"sapUiRtaPersAdd\"),s.addStyleClass(\"sapUiRtaMarginBottom\")):\"sap.uxap.ObjectPageLayout\"===s.getMetadata().getName()&&this.hasStableId(a)&&(a.addStyleClass(\"sapUiRtaPersAddTop\"),s.$(\"sectionsContainer\").addClass(\"sapUiRtaPaddingTop\")),a.addEventDelegate(this._oDelegate,this),e.prototype.registerElementOverlay.apply(this,arguments)},a.prototype.deregisterElementOverlay=function(e){var t=e.getElementInstance();e._oAddButton&&e._oAddButton.destroy(),\"sap.uxap.ObjectPageSection\"===t.getMetadata().getName()?(e.removeStyleClass(\"sapUiRtaPersAdd\"),t.removeStyleClass(\"sapUiRtaMarginBottom\"),e.removeEventDelegate(this._oDelegate,this)):\"sap.uxap.ObjectPageLayout\"===t.getMetadata().getName()&&(e.removeStyleClass(\"sapUiRtaPersAddTop\"),t.$(\"sectionsContainer\").removeClass(\"sapUiRtaPaddingTop\"))},a.prototype._addButton=function(e,t,a,s){var n=e.getId()+\"-AddButton\",i=jQuery(\"
\");e._oAddButton=new sap.m.Button(n,{text:\"Add \"+s,icon:\"sap-icon://add\",press:t}).placeAt(i.get(0)),a.append(i),i[0].addEventListener(\"mouseover\",function(e){e.stopPropagation();var t=e.fromElement?sap.ui.getCore().byId(e.fromElement.id):null;if(t&&\"sap.ui.dt.ElementOverlay\"===t.getMetadata().getName()){t.getParentElementOverlay().$().removeClass(\"sapUiRtaOverlayHover\")}}),i[0].addEventListener(\"mouseleave\",function(e){e.stopPropagation();var t=e.toElement?sap.ui.getCore().byId(e.toElement.id):null;if(t&&\"sap.ui.dt.ElementOverlay\"===t.getMetadata().getName()){var a=t.getParentElementOverlay();a.getMovable()&&a.$().addClass(\"sapUiRtaOverlayHover\")}}),i[0].addEventListener(\"dragstart\",function(e){e.stopPropagation(),e.preventDefault()})},a},!0);", + "sap/ui/rta/plugin/EasyRemove.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/plugin/Remove\"],function(e){\"use strict\";var t=e.extend(\"sap.ui.rta.plugin.EasyRemove\",{metadata:{library:\"sap.ui.rta\",properties:{},associations:{},events:{}}});return t.prototype.registerElementOverlay=function(t){this._oDelegate={onAfterRendering:function(){var e=function(e){this._handleRemove([e])}.bind(this);if(t.$().hasClass(\"sapUiRtaPersDelete\")&&t.$().children(\".sapUiRtaPersDeleteClick\").length<=0){var a=t.getId()+\"-DeleteIcon\",n=jQuery(\"
\"),s=jQuery(\"
\");t._oDeleteIcon=new sap.ui.core.Icon(a,{src:\"sap-icon://decline\",tooltip:sap.ui.getCore().getLibraryResourceBundle(\"sap.ui.rta\").getText(\"CTX_REMOVE\"),press:function(t){var a=sap.ui.getCore().byId(t.getSource().getId().replace(\"-DeleteIcon\",\"\"));e(a),t.cancelBubble()},noTabStop:!0}).placeAt(s.get(0)),n.append(s),t.$().append(n),t._oDeleteIcon.attachBrowserEvent(\"contextmenu\",function(e){e.stopPropagation(),e.preventDefault()}),n[0].addEventListener(\"dragstart\",function(e){e.stopPropagation(),e.preventDefault()})}t.removeEventDelegate(this._oDelegate,this)}},\"sap.uxap.ObjectPageSection\"===t.getElementInstance().getMetadata().getName()&&this.hasStableId(t)&&t.addStyleClass(\"sapUiRtaPersDelete\"),t.addEventDelegate(this._oDelegate,this),e.prototype.registerElementOverlay.apply(this,arguments)},t.prototype.deregisterElementOverlay=function(e){\"sap.uxap.ObjectPageSection\"===e.getElementInstance().getMetadata().getName()&&(e.removeStyleClass(\"sapUiRtaPersDelete\"),e.removeEventDelegate(this._oDelegate,this),e._oDeleteIcon&&e._oDeleteIcon.destroy())},t},!0);", + "sap/ui/rta/plugin/Plugin.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/dt/Plugin\",\"sap/ui/fl/Utils\",\"sap/ui/fl/registry/ChangeRegistry\"],function(e,t,a){\"use strict\";var n=e.extend(\"sap.ui.rta.plugin.Plugin\",{metadata:{abstract:!0,library:\"sap.ui.rta\",properties:{commandFactory:{type:\"object\",multiple:!1}},events:{elementModified:{command:{type:\"sap.ui.rta.command.BaseCommand\"}}}}});return n.prototype._isEditable=function(){},n.prototype._isEditableByPlugin=function(e){var t=this.getMetadata().getName();return e.getEditableByPlugins().indexOf(t)>-1},n.prototype.registerElementOverlay=function(e){this._isEditable(e)&&this.addToPluginsList(e)},n.prototype.deregisterElementOverlay=function(e){this.removeFromPluginsList(e)},n.prototype.hasStableId=function(e){if(!e)return!1;if(!e.getDesignTimeMetadata())return t.checkControlId(e.getElementInstance());var a=!1,n=e.getDesignTimeMetadata(),i=e.getElementInstance(),r=n.getData().getStableElements;if(r){var g=r(i);a=!(!g||g.some(function(e){var a=e.id||e;if(!t.checkControlId(a,e.appComponent))return!0}))}else a=t.checkControlId(i);return a},n.prototype.getVariantManagementKey=function(e,t,a){var n;return e.getVariantManagement&&this._hasVariantChangeHandler(a,t)&&(n=e.getVariantManagement()),n},n.prototype._hasVariantChangeHandler=function(e,t){var a=this._getChangeHandler(e,t);return a.revertChange=!0,a&&a.revertChange},n.prototype.checkAggregationsOnSelf=function(e,t){var a=e.getDesignTimeMetadata(),n=e.getElementInstance(),i=!1,r=a.getAggregationAction(t,e.getElementInstance())[0],g=r?r.changeType:null;return r&&r.changeOnRelevantContainer&&(n=e.getRelevantContainer()),g&&this.hasChangeHandler(g,n)&&(i=!0),i},n.prototype.removeFromPluginsList=function(e){e.removeEditableByPlugin(this.getMetadata().getName()),e.getEditableByPlugins().length||e.setEditable(!1)},n.prototype.addToPluginsList=function(e){e.addEditableByPlugin(this.getMetadata().getName()),e.setEditable(!0)},n.prototype.hasChangeHandler=function(e,t){return!!this._getChangeHandler(e,t)},n.prototype._getChangeHandler=function(e,t){var n=t.getMetadata().getName(),i=a.getInstance().getRegistryItems({controlType:n,changeTypeName:e,layer:this.getCommandFactory().getFlexSettings().layer});if(i&&i[n]&&i[n][e]){return i[n][e].getChangeTypeMetadata().getChangeHandler()}},n},!0);", + "sap/ui/rta/plugin/RTAElementMover.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/dt/plugin/ElementMover\",\"sap/ui/dt/OverlayUtil\",\"sap/ui/dt/ElementUtil\",\"sap/ui/fl/Utils\",\"sap/ui/rta/Utils\",\"sap/ui/rta/command/CommandFactory\",\"sap/ui/rta/plugin/Plugin\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/rta/util/BindingsExtractor\"],function(e,t,n,a,i,r,o,g,s){\"use strict\";function l(e){var t,n=!1,a=e.getDesignTimeMetadata(),r=e.getParentElementOverlay();if(!a||!r)return!1;var o=e.getRelevantContainer(),g=sap.ui.dt.OverlayRegistry.getOverlay(o);if(!i.getRelevantContainerDesigntimeMetadata(e))return!1;var s=this._getMoveAction(e);return s&&s.changeType&&(t=e.getRelevantContainer(),n=this.oBasePlugin.hasChangeHandler(s.changeType,t)),n&&(n=this.oBasePlugin.hasStableId(e)&&this.oBasePlugin.hasStableId(r)&&this.oBasePlugin.hasStableId(g)),n}function u(e,t,n){var a=e.getDesignTimeMetadata(),i=a.getAction(\"move\",t);return!!i&&this.oBasePlugin.hasChangeHandler(i.changeType,n)}var d=e.extend(\"sap.ui.rta.plugin.RTAElementMover\",{metadata:{library:\"sap.ui.rta\",properties:{commandFactory:{type:\"any\",defaultValue:r},movableTypes:{type:\"string[]\",defaultValue:[\"sap.ui.core.Element\"]}},associations:{},events:{}}});return d.prototype.init=function(){this.oBasePlugin=new o({commandFactory:this.getCommandFactory()})},d.prototype.exit=function(){this.oBasePlugin.destroy()},d.prototype.setCommandFactory=function(e){this.setProperty(\"commandFactory\",e),this.oBasePlugin.setCommandFactory(e)},e.prototype._getMoveAction=function(e){var t,n=e.getParentAggregationOverlay();return n&&(t=n.getDesignTimeMetadata()),t?t.getAction(\"move\",e.getElementInstance()):void 0},e.prototype.isMovableType=function(e){return!0},d.prototype.checkMovable=function(e){return l.call(this,e)},d.prototype.checkTargetZone=function(t){if(!e.prototype.checkTargetZone.call(this,t))return!1;var n=this.getMovedOverlay(),a=n.getElementInstance(),r=t.getParent(),g=n.getRelevantContainer(),l=r.getElementInstance(),d=t.getDesignTimeMetadata().getRelevantContainerForPropagation(a);if(d=d||l,!g||!d||!o.prototype.hasStableId(r)||g!==d)return!1;if(n.getParent().getElementInstance()!==l){var c=s.getBindings(a,a.getModel());if(Object.keys(c).length>0&&l.getBindingContext()){if(i.getEntityTypeByPath(a.getModel(),a.getBindingContext().getPath())!==i.getEntityTypeByPath(l.getModel(),l.getBindingContext().getPath()))return!1}}return u.call(this,t,a,d)},d.prototype.buildMoveCommand=function(){var e=this.getMovedOverlay(),n=e.getParentAggregationOverlay(),a=e.getElementInstance(),i=this._getSource(),r=e.getRelevantContainer(),o=t.getParentInformation(e),g=i.index,s=o.index;if(!this._compareSourceAndTarget(i,o))return delete i.index,delete o.index,this.getCommandFactory().getCommandFor(r,\"Move\",{movedElements:[{element:a,sourceIndex:g,targetIndex:s}],source:i,target:o},n.getDesignTimeMetadata())},d},!0);", + "sap/ui/rta/plugin/Remove.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/plugin/Plugin\",\"sap/ui/rta/Utils\",\"sap/ui/rta/command/CompositeCommand\"],function(e,t,n){\"use strict\";var i=e.extend(\"sap.ui.rta.plugin.Remove\",{metadata:{library:\"sap.ui.rta\",properties:{},associations:{},events:{}}});return i.prototype.registerElementOverlay=function(t){t.attachBrowserEvent(\"keydown\",this._onKeyDown,this),e.prototype.registerElementOverlay.apply(this,arguments)},i.prototype._isEditable=function(e){var n=!1,i=e.getElementInstance();if(!t.getRelevantContainerDesigntimeMetadata(e))return!1;var o=this._getRemoveAction(e);return o&&o.changeType&&(o.changeOnRelevantContainer&&(i=e.getRelevantContainer()),n=this.hasChangeHandler(o.changeType,i)),n?this.hasStableId(e):n},i.prototype._getRemoveAction=function(e){return e.getDesignTimeMetadata().getAction(\"remove\",e.getElementInstance())},i.prototype.isRemoveAvailable=function(e){return this._isEditableByPlugin(e)},i.prototype.isRemoveEnabled=function(e){var t=this._getRemoveAction(e);return!!t&&(void 0===t.isEnabled||(\"function\"==typeof t.isEnabled?t.isEnabled(e.getElementInstance()):t.isEnabled))},i.prototype._getConfirmationText=function(e){var t=this._getRemoveAction(e);if(t&&t.getConfirmationText)return t.getConfirmationText(e.getElementInstance())},i.prototype.deregisterElementOverlay=function(t){t.detachBrowserEvent(\"keydown\",this._onKeyDown,this),e.prototype.deregisterElementOverlay.apply(this,arguments)},i.prototype._onKeyDown=function(e){e.keyCode===jQuery.sap.KeyCodes.DELETE&&(e.stopPropagation(),this.removeElement())},i.prototype.removeElement=function(e){var t;if(e)t=e;else{t=this.getDesignTime().getSelection()}t.length>0&&this._handleRemove(t)},i.prototype._getRemoveCommand=function(e,t,n){return this.getCommandFactory().getCommandFor(e,\"Remove\",{removedElement:e},t,n)},i.prototype._fireElementModified=function(e){e.getCommands().length&&this.fireElementModified({command:e})},i.prototype._handleRemove=function(e){var i=[],o=new n;e.forEach(function(e){var n,a,r=e.getElementInstance(),s=e.getDesignTimeMetadata(),m=this._getRemoveAction(e);a=m.changeOnRelevantContainer?e.getRelevantContainer():r;var l=this.getVariantManagementKey(e,a,m.changeType);if(this.isRemoveEnabled(e)){var g=this._getConfirmationText(e);g?i.push(t.openRemoveConfirmationDialog(r,g).then(function(e){e&&(n=this._getRemoveCommand(r,s,l),o.addCommand(n))}.bind(this))):(n=this._getRemoveCommand(r,s,l),o.addCommand(n))}},this),i.length?Promise.all(i).then(function(){this._fireElementModified(o)}.bind(this)):this._fireElementModified(o)},i},!0);", + "sap/ui/rta/plugin/Rename.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/plugin/Plugin\",\"sap/ui/dt/ElementUtil\",\"sap/ui/dt/OverlayUtil\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/rta/Utils\",\"sap/ui/dt/DOMUtil\"],function(e,t,i,o,a,n,s){\"use strict\";var l=t.extend(\"sap.ui.rta.plugin.Rename\",{metadata:{library:\"sap.ui.rta\",properties:{oldValue:\"string\"},associations:{},events:{editable:{},nonEditable:{}}}});return l.prototype.exit=function(){t.prototype.exit.apply(this,arguments),this._$oEditableControlDomRef&&this._stopEdit(),clearTimeout(this._iStopTimeout)},l.prototype.setDesignTime=function(e){this._aSelection=[];var i=this.getDesignTime();i&&i.detachSelectionChange(this._onDesignTimeSelectionChange,this),t.prototype.setDesignTime.apply(this,arguments),e&&(e.attachSelectionChange(this._onDesignTimeSelectionChange,this),this._aSelection=e.getSelection())},l.prototype._getRenameAction=function(e){var t=e.getDesignTimeMetadata();if(t&&t.getAction)return t.getAction(\"rename\",e.getElementInstance())},l.prototype.isRenameAvailable=function(e){return this._isEditableByPlugin(e)},l.prototype.isRenameEnabled=function(e){var t=!0,i=this._getRenameAction(e);if(i||(t=!1),t&&void 0!==i.isEnabled&&(t=\"function\"==typeof i.isEnabled?i.isEnabled(e.getElementInstance()):i.isEnabled),t){e.getDesignTimeMetadata().getAssociatedDomRef(e.getElementInstance(),i.domRef)||(t=!1)}return t},l.prototype.registerElementOverlay=function(e){e.attachEvent(\"editableChange\",this._manageClickEvent,this),t.prototype.registerElementOverlay.apply(this,arguments)},l.prototype._isEditable=function(e){var t=!1,i=e.getElementInstance();if(!n.getRelevantContainerDesigntimeMetadata(e))return!1;var o=this._getRenameAction(e);return o&&o.changeType&&(o.changeOnRelevantContainer&&(i=e.getRelevantContainer()),t=this.hasChangeHandler(o.changeType,i)),t?this.hasStableId(e):t},l.prototype.deregisterElementOverlay=function(e){e.detachEvent(\"editableChange\",this._manageClickEvent,this),e.detachBrowserEvent(\"click\",this._onClick,this),this.removeFromPluginsList(e)},l.prototype._onClick=function(e){var t=sap.ui.getCore().byId(e.currentTarget.id);!this.isRenameEnabled(t)||e.metaKey||e.ctrlKey||(this.startEdit(t),e.preventDefault())},l.prototype._onDesignTimeSelectionChange=function(e){var t=e.getParameter(\"selection\");this._aSelection.forEach(this._manageClickEvent,this),t.forEach(this._manageClickEvent,this),this._aSelection=t},l.prototype._manageClickEvent=function(e){var t=e.getSource?e.getSource():e;t.isSelected()&&this.isRenameAvailable(t)?t.attachBrowserEvent(\"click\",this._onClick,this):t.detachBrowserEvent(\"click\",this._onClick,this)},l.prototype.startEdit=function(t){this._oEditedOverlay=t;var i=t.getElementInstance(),o=this._oEditedOverlay.getDesignTimeMetadata(),a=o.getAction(\"rename\",i).domRef,n=o.getAssociatedDomRef(i,a);this._$oEditableControlDomRef=e(n);var l=sap.ui.dt.OverlayRegistry.getOverlay(n.id)||t,d=e(\"
\").appendTo(l.$());this._$editableField=e(\"
\").appendTo(d),\"\"===this._$oEditableControlDomRef.text()?(this._$oEditableControlDomRef.text(\"_?_\"),this._$editableField.text(\"\")):this._$editableField.text(this._$oEditableControlDomRef.text()),s.copyComputedStyle(this._$oEditableControlDomRef,this._$editableField),this._$editableField.children().remove(),this._$editableField.offset({left:this._$oEditableControlDomRef.offset().left}),this._$editableField.offset({top:this._$oEditableControlDomRef.offset().top}),this._$editableField.css({\"-moz-user-modify\":\"read-write\",\"-webkit-user-modify\":\"read-write\",\"-ms-user-modify\":\"read-write\",\"user-modify\":\"read-write\",\"text-overflow\":\"clip\"}),this._$oEditableControlDomRef.css(\"visibility\",\"hidden\"),this._$editableField.one(\"focus\",this._onEditableFieldFocus.bind(this)),this._$editableField.on(\"blur\",this._onEditableFieldBlur.bind(this)),this._$editableField.on(\"keydown\",this._onEditableFieldKeydown.bind(this)),this._$editableField.on(\"dragstart\",this._stopPropagation.bind(this)),this._$editableField.on(\"drag\",this._stopPropagation.bind(this)),this._$editableField.on(\"dragend\",this._stopPropagation.bind(this)),this._$editableField.on(\"click\",this._stopPropagation.bind(this)),this._$editableField.on(\"mousedown\",this._stopPropagation.bind(this)),this._$editableField.focus(),t.setSelected(!0),this.setOldValue(this._getCurrentEditableFieldText())},l.prototype._stopPropagation=function(e){e.stopPropagation()},l.prototype._onEditableFieldFocus=function(e){this._oEditedOverlay.setSelected(!1);var t=e.target,i=document.createRange();i.selectNodeContents(t);var o=window.getSelection();o.removeAllRanges(),o.addRange(i)},l.prototype._stopEdit=function(e){if(\"_?_\"===this._$oEditableControlDomRef.text()&&this._$oEditableControlDomRef.text(\"\"),this._oEditedOverlay.$().find(\".sapUiRtaEditableField\").remove(),this._$oEditableControlDomRef.css(\"visibility\",\"visible\"),e){var t=this._oEditedOverlay;this._iStopTimeout=setTimeout(function(){t.setSelected(!0),t.focus()},500)}this._oEditedOverlay.setSelected(!1),delete this._$editableField,delete this._$oEditableControlDomRef,delete this._oEditedOverlay},l.prototype._onEditableFieldBlur=function(e){this._emitLabelChangeEvent(),this._stopEdit()},l.prototype._onEditableFieldKeydown=function(t){switch(t.keyCode){case e.sap.KeyCodes.ENTER:this._emitLabelChangeEvent(),this._stopEdit(!0),t.preventDefault();break;case e.sap.KeyCodes.ESCAPE:this._stopEdit(!0),t.preventDefault();break;case e.sap.KeyCodes.DELETE:t.stopPropagation()}},l.prototype._emitLabelChangeEvent=function(){var t=this._getCurrentEditableFieldText();if(this.getOldValue()!==t){this._$oEditableControlDomRef.text(t);try{var i,o=this._oEditedOverlay.getElementInstance(),a=this._oEditedOverlay.getDesignTimeMetadata();i=this.getCommandFactory().getCommandFor(o,\"rename\",{renamedElement:o,newValue:t},a),this.fireElementModified({command:i})}catch(t){e.sap.log.error(\"Error during rename : \",t)}}},l.prototype._getCurrentEditableFieldText=function(){var e=this._$editableField.text();return\"\"===e&&(e=\" \"),e},l},!0);", + "sap/ui/rta/plugin/Selection.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/plugin/Plugin\",\"sap/ui/rta/Utils\",\"sap/ui/fl/Utils\"],function(e,t,i){\"use strict\";function n(e,t){var i=t;return e.forEach(function(e){var t=e.getEditableByPlugins();i=i.reduce(function(e,i){return-1!==t.indexOf(i)&&e.push(i),e},[])}),i.length>0}function a(e){var t=e[e.length-1],i=e[e.length-2];return t.getRelevantContainer()===i.getRelevantContainer()}var s=e.extend(\"sap.ui.rta.plugin.Selection\",{metadata:{library:\"sap.ui.rta\",properties:{multiSelectionRequiredPlugins:{type:\"string[]\"}},associations:{},events:{elementEditableChange:{parameters:{editable:{type:\"boolean\"}}}}}});return s.prototype._checkDeveloperMode=function(e){if(e.getDesignTimeMetadata()){if(this.getCommandFactory().getFlexSettings().developerMode&&this.hasStableId(e))return e.setEditable(!0),e.setSelectable(!0),this.fireElementEditableChange({editable:!0}),!0}return!1},s.prototype.registerElementOverlay=function(e){this._checkDeveloperMode(e)||(e.attachEditableChange(this._onEditableChange,this),this._adaptSelectable(e)),e.attachBrowserEvent(\"click\",this._selectOverlay,this),e.attachBrowserEvent(\"keydown\",this._onKeyDown,this),e.attachBrowserEvent(\"mousedown\",this._onMouseDown,this)},s.prototype._onEditableChange=function(e){var t=e.getSource();this._adaptSelectable(t)},s.prototype._adaptSelectable=function(e){var t=e.getEditable();e.getSelectable()!==t&&(e.setSelectable(t),this.fireElementEditableChange({editable:t}))},s.prototype.deregisterElementOverlay=function(e){e.detachBrowserEvent(\"click\",this._selectOverlay,this),e.detachBrowserEvent(\"keydown\",this._onKeyDown,this),e.detachBrowserEvent(\"mousedown\",this._onMouseDown,this),e.detachEditableChange(this._onEditableChange,this)},s.prototype._setFocusOnOverlay=function(e,t){e&&e.getSelectable()&&(e.focus(),t.stopPropagation())},s.prototype._onKeyDown=function(e){var i=t.getFocusedOverlay();if(e.keyCode===jQuery.sap.KeyCodes.ENTER)this._selectOverlay(e);else if(e.keyCode===jQuery.sap.KeyCodes.ARROW_UP&&!1===e.shiftKey&&!1===e.altKey){if(i){var n=t.getFocusableParentOverlay(i);this._setFocusOnOverlay(n,e),e.preventDefault()}}else if(e.keyCode===jQuery.sap.KeyCodes.ARROW_DOWN&&!1===e.shiftKey&&!1===e.altKey){if(i){var a=t.getFirstFocusableDescendantOverlay(i);this._setFocusOnOverlay(a,e),e.preventDefault()}}else if(e.keyCode===jQuery.sap.KeyCodes.ARROW_LEFT&&!1===e.shiftKey&&!1===e.altKey){if(i){var s=t.getPreviousFocusableSiblingOverlay(i);this._setFocusOnOverlay(s,e),e.preventDefault()}}else if(e.keyCode===jQuery.sap.KeyCodes.ARROW_RIGHT&&!1===e.shiftKey&&!1===e.altKey&&i){var o=t.getNextFocusableSiblingOverlay(i);this._setFocusOnOverlay(o,e),e.preventDefault()}},s.prototype._selectOverlay=function(e){var t=sap.ui.getCore().byId(e.currentTarget.id),i=e.metaKey||e.ctrlKey,n=e.target.className;t.getSelectable()&&n.indexOf(\"sapUiDtOverlay\")>-1&&(i&&this.getDesignTime().setSelectionMode(sap.ui.dt.SelectionMode.Multi),t.setSelected(!t.getSelected()),i&&this.getDesignTime().setSelectionMode(sap.ui.dt.SelectionMode.Single),e.preventDefault(),e.stopPropagation())},s.prototype._onMouseDown=function(e){if(\"ie\"==sap.ui.Device.browser.name){var t=sap.ui.getCore().byId(e.currentTarget.id);t.getSelectable()?(t.focus(),e.stopPropagation()):t.getDomRef().blur()}},s.prototype.setDesignTime=function(t){this.getDesignTime()&&this.getDesignTime().detachSelectionChange(this._onDesignTimeSelectionChange,this),e.prototype.setDesignTime.apply(this,arguments),this.getDesignTime()&&this.getDesignTime().attachSelectionChange(this._onDesignTimeSelectionChange,this)},s.prototype._onDesignTimeSelectionChange=function(e){if(this.getDesignTime().getSelectionMode()!==sap.ui.dt.SelectionMode.Single){var t=e.getParameter(\"selection\")[e.getParameter(\"selection\").length-1],i=this.getDesignTime().getSelection();if(i&&1===i.length)return void t.setSelected(!0);if(t&&this.getDesignTime().getSelectionMode()!==sap.ui.dt.SelectionMode.Single){var s=n(i,this.getMultiSelectionRequiredPlugins())&&a(i);t.setSelected(s)}}},s},!0);", + "sap/ui/rta/plugin/Settings.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/plugin/Plugin\",\"sap/ui/rta/Utils\"],function(t,e){\"use strict\";var n=t.extend(\"sap.ui.rta.plugin.Settings\",{metadata:{library:\"sap.ui.rta\",properties:{commandStack:{type:\"any\"}},associations:{},events:{}}});return n.prototype._isEditable=function(t){if(!e.getRelevantContainerDesigntimeMetadata(t))return!1;var n=this._getSettingsAction(t);return!(!n||!n.handler)&&this.hasStableId(t)},n.prototype._getUnsavedChanges=function(t,e){var n;return this.getCommandStack().getAllExecutedCommands().filter(function(i){if((n=i.getElementId())===t&&e.indexOf(i.getChangeType())>=0)return!0}).map(function(t){return t.getPreparedChange()})},n.prototype._getSettingsAction=function(t){return t.getDesignTimeMetadata().getAction(\"settings\",t.getElementInstance())},n.prototype.isSettingsAvailable=function(t){return this._isEditableByPlugin(t)},n.prototype.isSettingsEnabled=function(t){var e=this._getSettingsAction(t);return!!e&&(void 0===e.isEnabled||(\"function\"==typeof e.isEnabled?e.isEnabled(t.getElementInstance()):e.isEnabled))},n.prototype.handleSettings=function(t){var n,i=t[0].getElementInstance(),a={getUnsavedChanges:this._getUnsavedChanges.bind(this),styleClass:e.getRtaStyleClassName()};return t[0].getDesignTimeMetadata().getAction(\"settings\").handler(i,this._getUnsavedChanges.bind(this),a).then(function(t){t.forEach(function(t){n=this.getCommandFactory().getCommandFor(t.selectorControl,\"settings\",t.changeSpecificData),this.fireElementModified({command:n})},this)}.bind(this)).catch(function(t){if(t)throw t})},n},!0);", + "sap/ui/rta/plugin/Split.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/rta/plugin/Plugin\",\"sap/ui/dt/Selection\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/rta/Utils\",\"sap/ui/fl/Utils\"],function(t,e,i,n,a){\"use strict\";var r=t.extend(\"sap.ui.rta.plugin.Split\",{metadata:{library:\"sap.ui.rta\",properties:{},associations:{},events:{}}});return r.prototype._isEditable=function(t){if(!n.getRelevantContainerDesigntimeMetadata(t))return!1;var e=this._getSplitAction(t);return!!(e&&e.changeType&&e.changeOnRelevantContainer)&&(this.hasStableId(t)&&this.hasChangeHandler(e.changeType,t.getRelevantContainer()))},r.prototype._getSplitAction=function(t){return t.getDesignTimeMetadata().getAction(\"split\",t.getElementInstance())},r.prototype.isSplitAvailable=function(t){if(!this._isEditableByPlugin(t))return!1;var e=this.getDesignTime().getSelection();if(1!==e.length)return!1;var i=this._getSplitAction(t),n=e[0].getElementInstance();return!(i&&i.getControlsCount(n)<=1)},r.prototype.isSplitEnabled=function(t){var e=this._getSplitAction(t);if(!e||!this.isSplitAvailable(t))return!1;var i=!0;return void 0!==e.isEnabled&&(i=\"function\"==typeof e.isEnabled?e.isEnabled(t.getElementInstance()):e.isEnabled),i},r.prototype.handleSplit=function(t){for(var e=t.getParent(),n=i.getOverlay(t),r=n.getDesignTimeMetadata(),s=this._getSplitAction(n).getControlsCount(t),l=a.getViewForControl(t),o=[],p=0;p0}function b(e,t,n,a){var r=v(e)&&e.some(function(e){var n=e.trim().replace(/^\\//gi,\"\").split(\"/\");if(n.length>1)return-1!==t.indexOf(n.shift())}),i=a.some(function(e){return e=e.match(/^\\/?([A-Za-z0-9_]+)/)[0],n.indexOf(e)>=0});return r||i}function y(e,t){return t.filter(function(t){return-1!==e.indexOf(t.bindingPath)}).pop()}function h(e,t){e.labelFromOData=t.fieldLabel,e.fieldLabel!==e.labelFromOData&&(e.renamedLabel=!0),t.referencedComplexPropertyName&&(e.referencedComplexPropertyName=t.referencedComplexPropertyName)}function P(e,t,n,a){var r,i=e.bindingPaths,o=e.bindingContextPaths;return!v(i)||b(i,n,a,o)||(r=y(i,t))&&(h(e,r)||!0)}return{enhanceInvisibleElements:function(e,t){var n=e.getModel(),r=t.reveal,i=t.addODataProperty;return Promise.resolve().then(function(){return p(e)}).then(function(e){var t=e.property,o=e.navigationProperty.map(function(e){return e.name}),l=e.navigationEntityNames;t=f(t);var u=[];return(r.elements||[]).forEach(function(e){var p=e.getMetadata().getName(),m=r.types[p].action;e=s(e,n),e.fieldLabel=a.getLabelForElement(e,m.getLabel),e.duplicateComplexName=g(e,t);var c=!0;i&&t.length>0&&(c=P(e,t,o,l)),c&&u.push({element:e,action:m})}),u}).then(function(e){return e.map(c)})},getUnboundODataProperties:function(e,t){var n=e.getModel();return Promise.resolve().then(function(){return p(e)}).then(function(a){var i=a.property,o=d(e,t.relevantContainer),l=[];o.forEach(function(e){l=l.concat(r.getBindings(e,n))});var u=t.action.filter?t.action.filter:function(){return!0};return i=i.filter(function(e){var n=!1;return l&&(n=l.some(function(t){return!!t.getPath&&t.getPath()===e.bindingPath})),!n&&u(t.relevantContainer,e)}),i=f(i)}).then(function(e){return e.map(m)})}}});", + "sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/plugin/Plugin\",\"sap/ui/dt/ElementUtil\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/rta/Utils\",\"sap/ui/fl/Utils\",\"sap/ui/core/StashedControlSupport\",\"sap/ui/dt/ElementDesignTimeMetadata\"],function(e,t,a,n,r,i,o,g){\"use strict\";function s(e,t){var a,r=t.getRelevantContainer(),i=n.getOverlay(r);return a=e?t.getParentElementOverlay():t,{relevantContainerOverlay:i,parentOverlay:a,relevantContainer:r,parent:a.getElementInstance()}}function l(e,t){return t.sParentAggregationName}function d(e,t){var r=a.getAggregation(e,t).filter(function(t){var a=n.getOverlay(t);return e.getVisible&&!e.getVisible()?t.getVisible&&sap.ui.rta.plugin.Plugin.prototype.hasStableId(a):t.getVisible&&!t.getVisible()&&sap.ui.rta.plugin.Plugin.prototype.hasStableId(a)}),i=o.getStashedControls(e.getId());return r.concat(i)}function u(e,t,a,n,r){var i,o,g=[];if(t.addODataProperty){var s=t.aggregation,l=t.addODataProperty.designTimeMetadata;i=l.getAggregationDescription(s,a),i&&(o=n?i.singular:i.plural,g.push(o))}t.reveal&&Object.keys(t.reveal.types).forEach(function(e){var r=t.reveal.types[e];(i=r.designTimeMetadata.getName(a))&&(o=n?i.singular:i.plural,g.push(o))});var d=g.reduce(function(e,t){return-1===e.indexOf(t)&&e.push(t),e},[]),u=sap.ui.getCore().getLibraryResourceBundle(\"sap.ui.rta\");return o=1===d.length?d[0]:r||u.getText(\"MULTIPLE_CONTROL_NAME\"),u.getText(e,o)}function c(){return{designTimeMetadata:new g({data:{name:{singular:function(){return sap.uxap.i18nModel.getResourceBundle().getText(\"SECTION_CONTROL_NAME\")},plural:function(){return sap.uxap.i18nModel.getResourceBundle().getText(\"SECTION_CONTROL_NAME_PLURAL\")}},actions:{reveal:{changeType:\"unstashControl\",getAggregationName:l}}}}),action:{changeType:\"unstashControl\",getAggregationName:l}}}function p(e,t){var a=!1;if(!r.getRelevantContainerDesigntimeMetadata(e))return!1;var n=this._getActions(t,e),i=s(t,e);if(n.addODataProperty){var o=n.addODataProperty.action;a=o&&o.aggregation===e.getParentAggregationOverlay().getAggregationName()}return!a&&n.reveal&&(a=!0),a||t||(a=this._hasRevealActionsOnChildren(e)||this.checkAggregationsOnSelf(i.parentOverlay,\"addODataProperty\")),!!a&&this.hasStableId(e)}function v(e){return Promise.all(e).then(function(e){var t=e[0]||[];return t&&e[1]&&(t=t.concat(e[1])),t})}function m(e,t){var a=e.getParent();return!a&&e.sParentId?a=sap.ui.getCore().byId(e.sParentId):a||(a=t.parent),a}function h(e,t,a,n){return e===t&&a-1?n-1:n}return t.extend(\"sap.ui.rta.plugin.additionalElements.AdditionalElementsPlugin\",{metadata:{library:\"sap.ui.rta\",properties:{analyzer:\"object\",dialog:\"object\",commandFactory:\"object\"},associations:{},events:{}},getContextMenuTitle:function(e,t){var a=s(e,t);return u(\"CTX_ADD_ELEMENTS\",this._getActions(e,t),a.parent,!0)},isAvailable:function(e,t){return this._isEditable(t,e)},isEnabled:function(e,t){var a;if(e)return!(!(a=t.getParentElementOverlay())||!this.hasStableId(a));var n=this._getActions(e,t);return!(n.reveal&&0===n.reveal.elements.length&&!n.addODataProperty)},_getRevealActions:function(e,t){var a=s(e,t),n=this._getTypes(n,a,e,t);return n},_getTypes:function(e,t,r,i){var o=[t.parentOverlay],g=i.getRelevantContainer();g!==t.parent&&(o=a.findAllSiblingsInContainer(t.parent,g).map(function(e){return n.getOverlay(e)}));var s;return s=r?[i.getParentAggregationOverlay().getAggregationName()]:t.parentOverlay.getAggregationOverlays().filter(function(e){return!e.getDesignTimeMetadata().isIgnored(t.parent)}).map(function(e){return e.getAggregationName()}),s.reduce(this._getRevealActionFromAggregations.bind(this,o),{})},_getRevealActionFromAggregations:function(e,t,a){var r=e.reduce(function(e,t){return t?e.concat(d(t.getElementInstance(),a)):e},[]),i=function(e,t){var a=t.getMetadata().getName();if(!e[a])if(\"sap.ui.core._StashedControl\"===a)e[a]=c();else{var r=n.getOverlay(t);if(r){var i=r.getDesignTimeMetadata(),o=i&&i.getAction(\"reveal\",t);o&&o.changeType&&(o.changeOnRelevantContainer&&(t=r.getRelevantContainer()),this.hasChangeHandler(o.changeType,t)&&(o.getAggregationName||(o.getAggregationName=l),e[a]={designTimeMetadata:i,action:o}))}}return e},o=r.reduce(i.bind(this),{});return r=r.filter(function(e){return!!o[e.getMetadata().getName()]}),r.length>0&&Object.keys(o).length>0&&(t[a]={reveal:{elements:r,types:o}}),t},_getAddODataPropertyActions:function(e,t){var a=s(e,t),n=a.parentOverlay.getDesignTimeMetadata(),r=n.getAggregationAction(\"addODataProperty\",a.parent),i=a.parent,o=function(e,t){if(t)return t.changeOnRelevantContainer&&(i=a.relevantContainer),t.changeType&&this.hasChangeHandler(t.changeType,i)&&(e[t.aggregation]={addODataProperty:{designTimeMetadata:n,action:t}}),e};if(r&&r.length>0)return r.reduce(o.bind(this),{})},_getActions:function(t,a){var n=this._getRevealActions(t,a),r=this._getAddODataPropertyActions(t,a),i=e.extend(!0,n,r),o=Object.keys(i);if(0===o.length)return{};o.length>1&&e.sap.log.error(\"reveal or addODataProperty action defined for more than 1 aggregation, that is not yet possible\");var g=o[0];return i[g].aggregation=g,i[g]},_hasRevealActionsOnChildren:function(e){var t=this._getRevealActions(!1,e);return!!t&&Object.keys(t).length>0},showAvailableElements:function(t,a,n,i){var o=a[0],g=s(t,o),l=t&&o.getElementInstance(),d=[],u=this._getActions(t,o);return u.reveal&&d.push(this.getAnalyzer().enhanceInvisibleElements(g.parent,u)),u.addODataProperty&&(u.addODataProperty.relevantContainer=o.getRelevantContainer(),d.push(this.getAnalyzer().getUnboundODataProperties(g.parent,u.addODataProperty))),(u.aggregation||i)&&this._setDialogTitle(u,g.parent,i),Promise.resolve().then(function(){if(u.addODataProperty)return r.isServiceUpToDate(g.parent)}).then(function(){if(u.addODataProperty)return this.getDialog()._oCustomFieldButton.setVisible(!0),r.isCustomFieldAvailable(g.parent);this.getDialog()._oCustomFieldButton.setVisible(!1)}.bind(this)).then(function(e){e&&(this._oCurrentFieldExtInfo=e,this.getDialog().setCustomFieldEnabled(!0),this.getDialog().detachEvent(\"openCustomField\",this._onOpenCustomField,this),this.getDialog().attachEvent(\"openCustomField\",null,this._onOpenCustomField,this))}.bind(this)).then(v.bind(null,d)).then(function(e){return this.getDialog().setElements(e),this.getDialog().open().then(function(){this._createCommands(t,o,g,l,u.designTimeMetadata,u,n)}.bind(this)).catch(function(e){if(e instanceof Error)throw e})}.bind(this)).catch(function(t){if(t instanceof Error)throw t;e.sap.log.info(\"Service not up to date, skipping add dialog\",\"sap.ui.rta\")})},_setDialogTitle:function(e,t,a){var n=u(\"HEADER_ADDITIONAL_ELEMENTS\",e,t,!1,a);this.getDialog().setTitle(n),a&&this.getDialog()._oList.setNoDataText(this.getDialog()._oTextResources.getText(\"MSG_NO_FIELDS\",a.toLowerCase()))},_onOpenCustomField:function(e){var t=sap.ushell&&sap.ushell.Container&&sap.ushell.Container.getService(\"CrossApplicationNavigation\"),a=t&&t.hrefForExternal({target:{semanticObject:\"CustomField\",action:\"develop\"},params:{businessContexts:this._oCurrentFieldExtInfo.BusinessContexts,serviceName:this._oCurrentFieldExtInfo.ServiceName,serviceVersion:this._oCurrentFieldExtInfo.ServiceVersion,entityType:this._oCurrentFieldExtInfo.EntityType}});r.openNewWindow(a)},_createCommands:function(t,a,n,r,i,o,g){var s=this.getDialog().getSelectedElements();if(s.length>0){var l=this.getCommandFactory().getCommandFor(n.parent,\"composite\");s.forEach(function(t){var a;switch(t.type){case\"invisible\":a=this._createRevealCommandForInvisible(t,o,n,r),l.addCommand(a),a=this._createMoveCommandForInvisible(t,o,n,r,g),a?l.addCommand(a):e.sap.log.warning(\"No move action configured for \"+n.parent.getMetadata().getName()+\", aggregation: \"+o.aggregation,\"sap.ui.rta\");break;case\"odata\":var i,s=n.parentOverlay.getAggregationOverlay(o.aggregation),d=s.getDesignTimeMetadata(),u=d.getAction(\"addODataProperty\",n.parent),c=u.changeHandlerSettings;if(c&&c.content&&(i=c.content.requiredLibraries),i){var p=this._createCommandForAddLibrary(n,o,i,d);l.addCommand(p)}a=this._createCommandsForOData(t,o,n,r,g),l.addCommand(a);break;default:e.sap.log.error(\"Can't create command for untreated element.type \"+t.type)}},this),this.fireElementModified({command:l})}},_createCommandsForOData:function(e,t,a,n,i){var o,g=a.parentOverlay.getAggregationOverlay(t.aggregation),s=g.getDesignTimeMetadata(),l=s.getAction(\"addODataProperty\",a.parent),d=l.changeHandlerSettings;d&&d.key&&(o=d.key.oDataServiceVersion);var u=a.parent;l.changeOnRelevantContainer&&(u=a.relevantContainer);var c=r.getIndex(a.parent,n,t.aggregation,s.getData().getIndex);return this.getCommandFactory().getCommandFor(a.parent,\"addODataProperty\",{newControlId:r.createFieldLabelId(u,e.entityType,e.bindingPath),index:void 0!==i?i:c,bindingString:e.bindingPath,parentId:a.parent.getId(),oDataServiceVersion:o},s)},_createCommandForAddLibrary:function(e,t,a,n){var r=i.getAppComponentForControl(e.relevantContainer),o=r.getManifest(),g=o[\"sap.app\"].id;return this.getCommandFactory().getCommandFor(e.publicParent,\"addLibrary\",{reference:g,requiredLibraries:a,appComponent:r},n)},_createRevealCommandForInvisible:function(e,t,a,n){var r=e.element,i=r.getMetadata().getName(),o=t.reveal.types[i],g=o.designTimeMetadata;return g.getAction(\"reveal\").changeOnRelevantContainer?this.getCommandFactory().getCommandFor(r,\"reveal\",{revealedElementId:r.getId(),directParent:a.parent},g):this.getCommandFactory().getCommandFor(r,\"reveal\",{},g)},_createMoveCommandForInvisible:function(e,t,a,i,o){var g=e.element,s=g.getMetadata().getName(),l=t.reveal.types[s],d=l.action.getAggregationName(a.parent,g),u=m(g,a),c=a.parent,p=r.getIndex(a.parent,i,d),v=r.getIndex(u,g,d)-1;p=void 0!==o?o:h(u,c,v,p);var f;if(p!==v||a.parent!==g.getParent()){var y=n.getOverlay(g)?n.getOverlay(g).getParentAggregationOverlay():a.relevantContainerOverlay,C=y.getDesignTimeMetadata();f=this.getCommandFactory().getCommandFor(a.relevantContainer,\"move\",{movedElements:[{element:g,sourceIndex:v,targetIndex:p}],source:{publicParent:a.relevantContainer,parent:u,aggregation:d},target:{publicParent:a.relevantContainer,parent:c,aggregation:d}},C)}return f},_isEditable:function(e,t){return void 0===t||null===t?p.call(this,e,!0)||p.call(this,e,!1):p.call(this,e,t)}})});", + "sap/ui/rta/test/controlEnablingCheck.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/core/UIComponent\",\"sap/ui/core/ComponentContainer\",\"sap/ui/core/mvc/XMLView\",\"sap/ui/rta/command/CommandFactory\",\"sap/ui/dt/DesignTime\",\"sap/ui/dt/ElementUtil\",\"sap/ui/dt/ElementDesignTimeMetadata\",\"sap/ui/fl/ChangePersistenceFactory\",\"sap/ui/fl/ChangePersistence\",\"sap/ui/model/Model\",\"sap/ui/fl/FlexControllerFactory\",\"sap/ui/rta/ControlTreeModifier\",\"sap/ui/fl/library\"],function(e,t,n,o,i,a,r,s,h,c,m,d){\"use strict\";var p=function(n,s){p._only&&n.indexOf(p._only)<0||(QUnit.module(n,{}),QUnit.test(\"When using the 'controlEnablingCheck' function to test if your control is ready for UI adaptation at runtime\",function(e){e.ok(s.afterAction,\"then you implement a function to check if your action has been successful: See the afterAction parameter.\"),e.ok(s.afterUndo,\"then you implement a function to check if the undo has been successful: See the afterUndo parameter.\"),e.ok(s.afterRedo,\"then you implement a function to check if the redo has been successful: See the afterRedo parameter.\"),e.ok(s.xmlView,\"then you provide an XML view to test on: See the.xmlView parameter.\");var t=(new DOMParser).parseFromString(s.xmlView,\"application/xml\").childNodes[0];e.ok(t.tagName.match(\"View$\"),\"then you use the sap.ui.core.mvc View tag as the first tag in your view\"),e.ok(s.action,\"then you provide an action: See the action parameter.\"),e.ok(s.action.name,\"then you provide an action name: See the action.name parameter.\"),e.ok(s.action.controlId,\"then you provide the id of the control to operate the action on: See the action.controlId.\")}),QUnit.module(n,{beforeEach:function(n){var h=e.extend(\"sap.ui.rta.control.enabling.comp\",{metadata:{manifest:{\"sap.app\":{id:\"sap.ui.rta.control.enabling.comp\",type:\"application\"}}},createContent:function(){return sap.ui.xmlview({id:this.createId(\"view\"),viewContent:s.xmlView})}});return this.oUiComponent=new h(\"comp\"),this.oUiComponentContainer=new t({component:this.oUiComponent}),this.oUiComponentContainer.placeAt(s.placeAt||\"content\"),this.oView=this.oUiComponent.getRootControl(),s.model instanceof c&&this.oView.setModel(s.model),sap.ui.getCore().applyChanges(),this.oControl=this.oView.byId(s.action.controlId),a.loadDesignTimeMetadata(this.oControl).then(function(e){var t,a=new r({data:e});t=s.action.parameter?\"function\"==typeof s.action.parameter?s.action.parameter(this.oView):s.action.parameter:{},sap.ui.getCore().applyChanges(),this.oDesignTime=new i({rootElements:[this.oView]});var h=n.async();this.oDesignTime.attachEventOnce(\"synced\",function(){this.oControlOverlay=sap.ui.dt.OverlayRegistry.getOverlay(this.oControl);var e=new o({flexSettings:{layer:s.layer||\"CUSTOMER\"}});if(\"move\"===s.action.name){var i=sap.ui.dt.OverlayRegistry.getOverlay(t.movedElements[0].element),r=i.getRelevantContainer();this.oControl=r,a=i.getParentAggregationOverlay().getDesignTimeMetadata()}else if(\"addODataProperty\"===s.action.name){var c=a.getAggregationAction(\"addODataProperty\",this.oControl);n.equal(c.length,1,\"there should be only one aggregation with the possibility to do addODataProperty action\");var m=this.oControlOverlay.getAggregationOverlay(c[0].aggregation);a=m.getDesignTimeMetadata()}this.oCommand=e.getCommandFor(this.oControl,s.action.name,t,a),n.ok(this.oCommand,\"then the registration for action to change type, the registration for change and control type to change handler is available and \"+s.action.name+\" is a valid action\"),h()}.bind(this))}.bind(this))},afterEach:function(){this.oUiComponentContainer.destroy(),this.oDesignTime.destroy()}}),QUnit.test(\"When executing the underlying command on the control at runtime\",function(e){var t=e.async();this.oCommand.execute().then(function(){sap.ui.getCore().applyChanges(),s.afterAction(this.oUiComponent,this.oView,e),t()}.bind(this))}),QUnit.test(\"When executing and undoing the command\",function(e){var t=e.async();this.oCommand.execute().then(this.oCommand.undo.bind(this.oCommand)).then(function(){var e=this.oCommand.getPreparedChange();if(this.oCommand.getAppComponent){var t=this.oCommand.getAppComponent(),n=d.bySelector(e.getSelector(),t);m.createForControl(t).removeFromAppliedChangesOnControl(e,t,n)}}.bind(this)).then(function(){sap.ui.getCore().applyChanges(),s.afterUndo(this.oUiComponent,this.oView,e),t()}.bind(this))}),QUnit.test(\"When executing, undoing and redoing the command\",function(e){var t=e.async();this.oCommand.execute().then(this.oCommand.undo.bind(this.oCommand)).then(function(){var e=this.oCommand.getPreparedChange();if(this.oCommand.getAppComponent){var t=this.oCommand.getAppComponent(),n=d.bySelector(e.getSelector(),t);return m.createForControl(t).removeFromAppliedChangesOnControl(e,t,n)}}.bind(this)).then(this.oCommand.execute.bind(this.oCommand)).then(function(){sap.ui.getCore().applyChanges(),s.afterRedo(this.oUiComponent,this.oView,e),t()}.bind(this))}))};return p.skip=function(){},p.only=function(e){p._only=e},p});", + "sap/ui/rta/toolbar/Adaptation.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/m/ToolbarSpacer\",\"sap/m/Button\",\"sap/m/SegmentedButton\",\"sap/m/SegmentedButtonItem\",\"./Base\"],function(e,t,n,s,a){\"use strict\";var o=a.extend(\"sap.ui.rta.toolbar.Adaptation\",{renderer:\"sap.ui.rta.toolbar.BaseRenderer\",animation:!0,metadata:{events:{undo:{},redo:{},exit:{},restore:{},transport:{},modeChange:{},manageApps:{}},properties:{publishVisible:{type:\"boolean\",defaultValue:!1},modeSwitcher:{type:\"string\",defaultValue:\"adaptation\"},manageAppsVisible:{type:\"boolean\",defaultValue:!1}}}});return o.prototype.onAfterRendering=function(){var t=-1,n=!1,s=this.getAggregation(\"content\").reduce(function(s,a){switch(a.data(\"name\")){case\"spacerLeft\":t=1,n=!0;break;case\"spacerRight\":n=!1}return a instanceof e||n?s:s+t*a.$().outerWidth(!0)},0);s>0&&this.getControl(\"spacerBalancer\").setWidth(s+\"px\"),a.prototype.onAfterRendering.apply(this,arguments)},o.prototype.buildControls=function(){return[(new e).data(\"name\",\"spacerBalancer\"),(new e).data(\"name\",\"spacerLeft\"),new n({width:\"auto\",selectedKey:this.getModeSwitcher(),items:[new s({text:this.getTextResources().getText(\"BTN_ADAPTATION\"),tooltip:this.getTextResources().getText(\"BTN_ADAPTATION\"),width:\"auto\",key:\"adaptation\"}),new s({text:this.getTextResources().getText(\"BTN_NAVIGATION\"),tooltip:this.getTextResources().getText(\"BTN_NAVIGATION\"),width:\"auto\",key:\"navigation\"})],select:this.eventHandler.bind(this,\"ModeChange\")}).data(\"name\",\"modeSwitcher\"),(new e).data(\"name\",\"spacerRight\"),new t({type:\"Transparent\",icon:\"sap-icon://undo\",enabled:!1,tooltip:this.getTextResources().getText(\"BTN_UNDO\"),press:this.eventHandler.bind(this,\"Undo\")}).data(\"name\",\"undo\"),new t({type:\"Transparent\",icon:\"sap-icon://redo\",iconFirst:!1,enabled:!1,tooltip:this.getTextResources().getText(\"BTN_REDO\"),press:this.eventHandler.bind(this,\"Redo\")}).data(\"name\",\"redo\"),new t({type:\"Transparent\",icon:\"sap-icon://message-information\",visible:this.getManageAppsVisible(),tooltip:this.getTextResources().getText(\"BTN_MANAGE_APPS\"),press:this.eventHandler.bind(this,\"ManageApps\")}).data(\"name\",\"manageApps\"),new t({type:\"Transparent\",text:this.getTextResources().getText(\"BTN_RESTORE\"),visible:!0,enabled:!1,tooltip:this.getTextResources().getText(\"BTN_RESTORE\"),press:this.eventHandler.bind(this,\"Restore\")}).data(\"name\",\"restore\"),new sap.m.Button({type:\"Transparent\",enabled:!1,visible:this.getPublishVisible(),text:this.getTextResources().getText(\"BTN_PUBLISH\"),tooltip:this.getTextResources().getText(\"BTN_PUBLISH\"),press:this.eventHandler.bind(this,\"Transport\")}).data(\"name\",\"publish\"),new t({type:\"Transparent\",text:this.getTextResources().getText(\"BTN_EXIT\"),tooltip:this.getTextResources().getText(\"BTN_EXIT\"),press:this.eventHandler.bind(this,\"Exit\")}).data(\"name\",\"exit\")]},o.prototype.setUndoRedoEnabled=function(e,t){this.getControl(\"undo\").setEnabled(e),this.getControl(\"redo\").setEnabled(t)},o.prototype.setPublishEnabled=function(e){this.getControl(\"publish\").setEnabled(e)},o.prototype.setRestoreEnabled=function(e){this.getControl(\"restore\").setEnabled(e)},o.prototype.show=function(){return a.prototype.show.apply(this,arguments)},o.prototype.hide=function(){return a.prototype.hide.apply(this,arguments)},o},!0);", + "sap/ui/rta/toolbar/Base.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/library\",\"sap/ui/core/Popup\",\"sap/m/Toolbar\",\"sap/ui/core/BusyIndicator\",\"sap/ui/rta/util/Animation\"],function(t,e,i,n,o,r){\"use strict\";var s=n.extend(\"sap.ui.rta.toolbar.Base\",{metadata:{library:\"sap.ui.rta\",properties:{color:{type:\"string\",defaultValue:\"default\"},zIndex:{type:\"int\"},textResources:\"object\"}},constructor:function(){n.apply(this,arguments),this.setVisible(!1),this.placeToContainer(),this.buildContent()},type:null,animation:!1});return s.prototype.init=function(){n.prototype.init.apply(this,arguments)},s.prototype.onBeforeRendering=function(){n.prototype.onBeforeRendering.apply(this,arguments)},s.prototype.onAfterRendering=function(){n.prototype.onAfterRendering.apply(this,arguments)},s.prototype.eventHandler=function(t,e){this[\"fire\"+t](e.getParameters())},s.prototype.buildControls=function(){return[]},s.prototype.placeToContainer=function(){this.placeAt(t(\"#sap-ui-static\").get(0))},s.prototype.buildContent=function(){this.buildControls().forEach(this.addContent,this)},s.prototype.show=function(){return new Promise(function(t){var e={onAfterRendering:function(){this.removeEventDelegate(e),t()}};this.addEventDelegate(e,this),this.bringToFront(),this.setVisible(!0)}.bind(this)).then(function(){return this.animation?r.waitTransition(this.$(),this.addStyleClass.bind(this,\"is_visible\")):Promise.resolve()}.bind(this)).then(function(){this.focus()}.bind(this))},s.prototype.hide=function(){return(this.animation?r.waitTransition(this.$(),this.removeStyleClass.bind(this,\"is_visible\")):Promise.resolve()).then(function(){this.setVisible(!1)}.bind(this))},s.prototype.getControl=function(t){return this.getAggregation(\"content\").filter(function(e){return e.data(\"name\")===t}).pop()},s.prototype.bringToFront=function(){var t,e=o.oPopup;return t=e&&e.isOpen()&&e.getModal()?e._iZIndex-3:i.getNextZIndex(),this.setZIndex(t)},s.prototype.setUndoRedoEnabled=function(){},s.prototype.setPublishEnabled=function(){},s.prototype.setRestoreEnabled=function(){},s},!0);", + "sap/ui/rta/toolbar/BaseRenderer.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/core/Renderer\",\"sap/m/ToolbarRenderer\"],function(e,a){\"use strict\";var t=e.extend(\"sap.ui.rta.toolbar.BaseRenderer\",a);return t.decorateRootElement=function(e,t){e.addClass(\"sapUiRtaToolbar\"),e.addClass(\"sapContrastPlus\"),e.addClass(\"color_\"+t.getColor()),t.type&&e.addClass(\"type_\"+t.type);var r=t.getZIndex();r&&e.addStyle(\"z-index\",r),a.decorateRootElement(e,t)},t});", + "sap/ui/rta/toolbar/Fiori.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/m/Image\",\"./Adaptation\",\"../Utils\"],function(e,t,i){\"use strict\";var o=t.extend(\"sap.ui.rta.toolbar.Fiori\",{renderer:\"sap.ui.rta.toolbar.BaseRenderer\",type:\"fiori\"});return o.prototype.init=function(){t.prototype.init.apply(this,arguments),this._oRenderer=i.getFiori2Renderer(),this._oFioriHeader=this._oRenderer.getRootControl().getOUnifiedShell().getHeader()},o.prototype.show=function(){return this._oFioriHeader.addStyleClass(\"sapUiRtaFioriHeaderInvisible\"),t.prototype.show.apply(this,arguments)},o.prototype.buildControls=function(){var i=t.prototype.buildControls.apply(this,arguments),o=this._oFioriHeader.getLogo();return this._oFioriHeader.getShowLogo()&&o&&i.unshift(new e({src:o}).data(\"name\",\"logo\")),i},o.prototype.hide=function(){return t.prototype.hide.apply(this,arguments).then(function(){this._oFioriHeader.removeStyleClass(\"sapUiRtaFioriHeaderInvisible\")}.bind(this))},o},!0);", + "sap/ui/rta/toolbar/Personalization.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"./Base\",\"sap/m/ToolbarSpacer\"],function(e,t){\"use strict\";var s=e.extend(\"sap.ui.rta.toolbar.Personalization\",{renderer:\"sap.ui.rta.toolbar.BaseRenderer\",type:\"personalization\",metadata:{events:{exit:{},restore:{}}}});return s.prototype.buildControls=function(){return[new t,new sap.m.Button({type:\"Transparent\",text:this.getTextResources().getText(\"BTN_RESTORE\"),tooltip:this.getTextResources().getText(\"BTN_RESTORE\"),visible:!0,press:this.eventHandler.bind(this,\"Restore\")}).data(\"name\",\"restore\"),new sap.m.Button({type:\"Emphasized\",text:this.getTextResources().getText(\"BTN_DONE\"),tooltip:this.getTextResources().getText(\"BTN_DONE_TOOLTIP\"),press:this.eventHandler.bind(this,\"Exit\")}).data(\"name\",\"exit\")]},s.prototype.setUndoRedoEnabled=function(){},s.prototype.setPublishEnabled=function(){},s.prototype.setRestoreEnabled=function(e){this.getControl(\"restore\").setEnabled(e)},s},!0);", + "sap/ui/rta/toolbar/Standalone.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"./Adaptation\"],function(e){\"use strict\";return e.extend(\"sap.ui.rta.toolbar.Standalone\",{renderer:\"sap.ui.rta.toolbar.BaseRenderer\",type:\"standalone\"})},!0);", + "sap/ui/rta/ui/SettingsDialog.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/rta/library\",\"sap/ui/core/Control\",\"sap/m/Dialog\",\"sap/ui/layout/VerticalLayout\",\"sap/m/Label\",\"sap/m/Input\",\"sap/m/Select\",\"sap/ui/core/Item\",\"sap/m/Button\",\"sap/m/CheckBox\",\"sap/ui/rta/command/CommandFactory\",\"sap/ui/rta/command/CompositeCommand\",\"sap/ui/dt/ElementUtil\"],function(t,e,a,o,n,i,s,r,p,d,c,l,m,u){\"use strict\";var h=a.extend(\"sap.ui.rta.ui.SettingsDialog\",{metadata:{library:\"sap.ui.rta\",properties:{commandStack:{type:\"sap.ui.core.Control\"}},associations:{element:{type:\"sap.ui.core.Element\"}}}});return h.prototype.init=function(){this._oTextResources=sap.ui.getCore().getLibraryResourceBundle(\"sap.ui.rta\"),this._oDialog=this._createDialog()},h.prototype._createDialog=function(){return new o({title:this._oTextResources.getText(\"HEADER_SETTINGS\"),contentHeight:\"500px\",draggable:!0,buttons:[new d({text:this._oTextResources.getText(\"BTN_FREP_OK\"),press:[this._applyChangesAndClose,this]}),new d({text:this._oTextResources.getText(\"BTN_FREP_CANCEL\"),press:[this._cancelDialog,this]})]}).addStyleClass(\"sapUiPopupWithPadding\").addStyleClass(\"sapUiSizeCompact\")},h.prototype._applyChangesAndClose=function(){this._applyChanges(),this._oDialog.close()},h.prototype._iterateExecutedCommands=function(t){Object.keys(this._mCommands).forEach(function(e){t(this._mCommands[e])},this)},h.prototype._applyChanges=function(){var t=new m;this._iterateExecutedCommands(function(e){t.addCommand(e)}),t.getCommands().length&&this.getCommandStack().pushExecutedCommand(t)},h.prototype._cancelDialog=function(){this._iterateExecutedCommands(function(t){t.undo()}),this._oDialog.close()},h.prototype._executePropertyChangeCommand=function(t,e,a,o){if(this._mCommands[e])this._mCommands[e].undo(),delete this._mCommands[e];else{var n=l.getCommandFor(t,\"property\",{propertyName:e,newValue:a,oldValue:o});this._mCommands[e]=n,n.execute()}},h.prototype._createBooleanEditor=function(t,e,a){var o=new c({text:e,selected:a});return o.attachSelect(function(a){var o=a.getParameter(\"selected\"),n=!o;this._executePropertyChangeCommand(t,e,o,n)},this),o},h.prototype._createStringEditor=function(t,e,a){var o=new s({value:a});return o.attachChange(function(o){var n=o.getParameter(\"value\"),i=a;this._executePropertyChangeCommand(t,e,n,i)},this),o},h.prototype._createEnumEditor=function(t,e,a,o){var n=new r;return Object.keys(e).forEach(function(t){n.addItem(new p({text:t,key:e[t]}))}),n.setSelectedKey(o),n.attachChange(function(e){var n=e.getParameter(\"selectedItem\");if(n){var i=n.getKey(),s=o;this._executePropertyChangeCommand(t,a,i,s)}},this),n},h.prototype._updateDialogContent=function(e){this._oDialog.removeAllContent();var a=new n,o=e.getMetadata().getAllProperties();Object.keys(o).forEach(function(s){var r,p=o[s],d=e[p._sGetter]();if(\"boolean\"===p.type)r=this._createBooleanEditor(e,s,d),a.addContent(r);else if(\"string\"===p.type||\"sap.ui.core.CSSSize\"===p.type){r=new n;var c=this._createStringEditor(e,s,d);r.addContent(new i({text:s,labelFor:c.getId()})),r.addContent(c),r.addStyleClass(\"sapUiRtaDialogEntryWithMargin\")}else{var l=t.sap.getObject(p.type);if(l){r=new n;var m=this._createEnumEditor(e,l,s,d);r.addContent(new i({text:s,labelFor:m.getId()})),r.addContent(m),r.addStyleClass(\"sapUiRtaDialogEntryWithMargin\")}}r&&a.addContent(r)},this),this._oDialog.addContent(a)},h.prototype.open=function(t){this._mCommands={},this._updateDialogContent(t),this._oDialog.open()},h},!0);", + "sap/ui/rta/util/Animation.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\"],function(n){\"use strict\";var e={};return e.waitTransition=function(e,i){if(!(e instanceof n))throw new Error(\"$element should be wrapped into jQuery object\");if(!n.isFunction(i))throw new Error(\"fnCallback should be a function\");return new Promise(function(n){e.one(\"transitionend\",n);var r,o=function(n){r||(r=n),n!==r?i():window.requestAnimationFrame(o)};window.requestAnimationFrame(o)})},e},!0);", + "sap/ui/rta/util/BindingsExtractor.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"sap/ui/dt/ElementUtil\",\"sap/ui/rta/Utils\"],function(t,e){\"use strict\";function i(e,n){var r=[];for(var o in e.getMetadata().getAllAggregations())t.getAggregation(e,o).forEach(function(t){t.getMetadata&&(r=r.concat(a(t,n),i(t,n)))});return r}function n(t,e){var i=[],a=t.getMetadata().getName();return\"sap.ui.model.CompositeBinding\"===a?t.getBindings().forEach(function(t){i=i.concat(n(t,e))}):(\"sap.ui.model.odata.ODataPropertyBinding\"===a||\"sap.ui.model.odata.v2.ODataPropertyBinding\"===a||\"sap.ui.model.odata.v4.ODataPropertyBinding\"===a||\"sap.ui.model.json.JSONPropertyBinding\"===a||\"sap.ui.model.json.XMLPropertyBinding\"===a||\"sap.ui.model.resource.ResourcePropertyBinding\"===a)&&t.getModel()===e&&t.isRelative()&&jQuery.isFunction(t.getPath)&&t.getPath()&&i.push(t),i}function a(t,e){return Object.keys(t.getMetadata().getAllProperties()).filter(t.getBinding.bind(t)).reduce(function(i,a){return i.concat(n(t.getBinding(a),e))},[])}return{getBindings:i,flattenBindings:n,getBindingsFromProperties:a}},!0);", + "sap/ui/rta/util/PopupManager.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\",\"sap/ui/base/ManagedObject\",\"sap/m/Dialog\",\"sap/m/Popover\",\"sap/m/InstanceManager\",\"sap/ui/core/Popup\",\"sap/ui/dt/OverlayRegistry\",\"sap/ui/dt/Overlay\",\"sap/ui/fl/Utils\",\"sap/ui/core/Component\"],function(e,t,o,n,i,p,r,s,a,u){\"use strict\";var c={add:\"_addFocusEventListeners\",remove:\"_removeFocusEventListeners\"},g=t.extend(\"sap.ui.rta.util.PopupManager\",{metadata:{properties:{rta:\"any\"},events:{open:{parameters:{oControl:{type:\"sap.ui.core.Control\"}}},close:{parameters:{oControl:{type:\"sap.ui.core.Control\"}}}},library:\"sap.ui.rta\"}});return g.prototype._overrideInstanceFunctions=function(){this._applyPopupMethods(this._createPopupOverlays),this._overrideAddPopupInstance(),this._overrideRemovePopupInstance()},g.prototype.getRelevantPopups=function(){var e,t;return e=i.getOpenDialogs(),t=i.getOpenPopovers(),{aDialogs:this._getValidatedPopups(e),aPopovers:this._getValidatedPopups(t)}},g.prototype._getValidatedPopups=function(e){return e.forEach(function(t,o){this._isSupportedPopup(t)&&(this.oRtaRootAppComponent===this._getAppComponentForControl(t)||this._isComponentInsidePopup(t))||e.splice(o,1)}.bind(this)),e.length>0&&e},g.prototype._isComponentInsidePopup=function(e){return e.getContent().some(function(e){if(e instanceof sap.ui.core.ComponentContainer)return this.oRtaRootAppComponent===this._getAppComponentForControl(sap.ui.getCore().getComponent(e.getComponent()))}.bind(this))},g.prototype._isSupportedPopup=function(e){return e instanceof sap.m.Dialog||e instanceof sap.m.Popover},g.prototype.setRta=function(e){if(e&&e._oDesignTime){this.setProperty(\"rta\",e);var t=sap.ui.getCore().byId(e.getRootControl());this.oRtaRootAppComponent=this._getAppComponentForControl(t),this._overrideInstanceFunctions();var o=this._onModeChange.bind(this);e.attachModeChanged(o)}},g.prototype._onModeChange=function(e){var t,o=e.getParameters().mode,n=function(e){e.oPopup[t]()};\"navigation\"===o?(t=this._getFocusEventName(\"add\"),this._applyFocusEventsToOpenPopups(n)):(t=this._getFocusEventName(\"remove\"),this._removeFocusEventsFromOpenPopups(n))},g.prototype._applyFocusEventsToOpenPopups=function(e){this._applyPopupMethods(e,!0)},g.prototype._removeFocusEventsFromOpenPopups=function(e){this._applyPopupMethods(e)},g.prototype._getFocusEventName=function(e){return c[e]},g.prototype._overrideAddPopupInstance=function(){this._fnOriginalAddDialogInstance=i.addDialogInstance,i.addDialogInstance=this._overrideAddFunctions(this._fnOriginalAddDialogInstance),this._fnOriginalAddPopoverInstance=i.addPopoverInstance,i.addPopoverInstance=this._overrideAddFunctions(this._fnOriginalAddPopoverInstance)},g.prototype._overrideAddFunctions=function(e){return function(t){var o=e.apply(i,arguments);return this.getRta()._oDesignTime&&this.oRtaRootAppComponent===this._getAppComponentForControl(t)&&this._isSupportedPopup(t)&&(t.attachAfterOpen(this._createPopupOverlays,this),this.fireOpen(t)),o}.bind(this)},g.prototype._applyPopupMethods=function(t,o){var n=this.getRelevantPopups();Object.keys(n).forEach(function(i){n[i]&&(o&&e.sap.focus(n[i][0].oPopup.oContent),n[i].forEach(function(e){t.call(this,e)}.bind(this)))}.bind(this))},g.prototype._applyPopupPatch=function(e){var t=r.getOverlay(e),o=s.getOverlayContainer(t),n=e.oPopup;n.setAutoCloseAreas([this.getRta()._oToolsMenu.getDomRef(),n.oContent.getDomRef(),o]),this.fnOriginalPopupOnAfterRendering||(this.fnOriginalPopupOnAfterRendering=n.onAfterRendering),n.onAfterRendering=function(){var e=this.fnOriginalPopupOnAfterRendering.apply(n,arguments);return n[this._getFocusEventName(\"remove\")](),e}.bind(this),\"adaptation\"===this.getRta().getMode()&&n[this._getFocusEventName(\"remove\")]()},g.prototype._overrideRemovePopupInstance=function(){this._fnOriginalRemoveDialogInstance=i.removeDialogInstance,i.removeDialogInstance=this._overrideRemoveFunctions(this._fnOriginalRemoveDialogInstance),this._fnOriginalRemovePopoverInstance=i.removePopoverInstance,i.removePopoverInstance=this._overrideRemoveFunctions(this._fnOriginalRemovePopoverInstance)},g.prototype._overrideRemoveFunctions=function(e){return function(t){var o=e.apply(i,arguments);return this.getRta()._oDesignTime&&this.oRtaRootAppComponent===this._getAppComponentForControl(t)&&this._isSupportedPopup(t)&&(this.getRta()._oDesignTime.removeRootElement(t),this.fireClose(t)),o}.bind(this)},g.prototype._getAppComponentForControl=function(e){var t,o;return t=e instanceof sap.ui.core.Component?e:this._getComponentForControl(e),t&&(o=a.getAppComponentForControl(t)),o},g.prototype._getComponentForControl=function(e){var t;return e&&((t=u.getOwnerComponentFor(e))||\"function\"!=typeof e.getParent||e.getParent()instanceof sap.ui.core.UIArea||(e=e.getParent(),t=this._getComponentForControl(e))),t},g.prototype._createPopupOverlays=function(e){if(e){var t=e instanceof sap.ui.core.Control?e:e.getSource();-1!==this.getRta()._oDesignTime.getRootElements().indexOf(t.getId())||this._isComponentInsidePopup(t)||this.getRta()._oDesignTime.addRootElement(t),t.detachAfterOpen(this._createPopupOverlays,this),this._applyPopupPatch(t)}},g.prototype._restoreInstanceFunctions=function(){this._fnOriginalAddDialogInstance&&(i.addDialogInstance=this._fnOriginalAddDialogInstance),this._fnOriginalRemoveDialogInstance&&(i.removeDialogInstance=this._fnOriginalRemoveDialogInstance),this._fnOriginalAddPopoverInstance&&(i.addPopoverInstance=this._fnOriginalAddPopoverInstance),this._fnOriginalRemovePopoverInstance&&(i.removePopoverInstance=this._fnOriginalRemovePopoverInstance),this._applyPopupMethods(this._removePopupPatch)},g.prototype._removePopupPatch=function(e){var t=e.oPopup;t[this._getFocusEventName(\"add\")](),this.fnOriginalPopupOnAfterRendering&&(t.onAfterRendering=this.fnOriginalPopupOnAfterRendering)},g.prototype.exit=function(){this._restoreInstanceFunctions()},g},!0);", + "sap/ui/rta/util/StylesLoader.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([\"jquery.sap.global\"],function(e){\"use strict\";var t={};return t.loadStyles=function(t){return e.get(e.sap.getModulePath(\"sap.ui.rta.themes.base.\"+t)+\".css\").then(function(e){return sap.ui.getCore().getConfiguration().getRTL()?e.replace(/right/g,\"left\"):e})},t},!0);", + "sap/ui/rta/util/UrlParser.js": "/*!\n * UI development toolkit for HTML5 (OpenUI5)\n * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company.\n * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */\nsap.ui.define([],function(e){\"use strict\";var r={};return r.getParam=function(e){return r.getParams()[e]},r.getParams=function(){return document.location.search.replace(/^\\?/,\"\").split(\"&\").reduce(function(e,r){var t=r.split(\"=\"),a=t[1];switch(a){case\"true\":a=!0;break;case\"false\":a=!1}return e[t[0]]=a,e},{})},r},!0);" + } +}); \ No newline at end of file diff --git a/resources/sap/ui/rta/library.js b/resources/sap/ui/rta/library.js new file mode 100644 index 0000000..24d9dc1 --- /dev/null +++ b/resources/sap/ui/rta/library.js @@ -0,0 +1,41 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +/** + * Initialization Code and shared classes of library sap.ui.rta. + */ +sap.ui.define(['jquery.sap.global', 'sap/ui/core/Core', 'sap/ui/core/library'], + function(jQuery, Core, coreLibrary) { + "use strict"; + + /** + * SAPUI5 library with RTA controls. + * + * @namespace + * @name sap.ui.rta + * @author SAP SE + * @version 1.50.0 + * @private + * @experimental This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + + + // delegate further initialization of this library to the Core + sap.ui.getCore().initLibrary({ + name : "sap.ui.rta", + version: "1.50.0", + dependencies : ["sap.ui.core","sap.m", "sap.ui.fl", "sap.ui.dt"], + types: [ + ], + interfaces: [], + controls: [], + elements: [ + ] + }); + + return sap.ui.rta; + +}, /* bExport= */ true); \ No newline at end of file diff --git a/resources/sap/ui/rta/messagebundle.properties b/resources/sap/ui/rta/messagebundle.properties new file mode 100644 index 0000000..a14db10 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle.properties @@ -0,0 +1,129 @@ +#This is the resource bundle for the sap.ui.rta library +# __ldi.translation.uuid=c9d357c0-cf03-11e4-8830-0800200c9a66 + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adapt UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalize App +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Save & Exit +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Done +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Save Changes +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=More ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Remove +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Remove +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Add {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Content +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Cut +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Paste +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combine +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Split +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Create {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=New {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Rename +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Settings +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigate To +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Remove +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Cancel +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Create custom field, association, or logic +#XMIT: Label for the original name of a renamed label +LBL_FREP=was {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Settings +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Available {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Share +#XTOL: Tooltip for 'i' Button in RTA Toolbar +BTN_MANAGE_APPS=Overview of App Variants +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Undo +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Redo +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publish +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Reset +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI Adaptation +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigation +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Error +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Sorry, your UI changes can't be discarded at this time. Please try again later or contact your administrator\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Error +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Sorry, your UI changes can't be transported at this time. Please try again later or contact your administrator\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Sorry, your UI changes can't be published at this time. Please try again later or contact your administrator\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Your UI changes were included in the transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Your UI changes are scheduled for publishing +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=All UI changes are already included in a transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Error +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Error while applying or saving UI changes. Exit adaptation mode and restart the app\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reset to Standard Version +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Do you want to discard all UI changes and reset the app to the standard version? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Do you want to discard all your personalization changes and reset the app? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Sorry, a technical error occurred. Please retry later. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Reason\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=If you confirm, all your UI changes will be lost. To save them, close this dialog box and exit the UI adaptation mode. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=The header of this group contains additional elements. If you remove the group, they will be lost. Do you want to remove the group anyway? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=No more {0} available +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Information +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=You have personalized the app. In UI adaptation mode, the app will reload without your personalization settings. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Display Personalized Version +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=If you would like to see your personalization changes again, you can reload the app +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Display Personalized Version +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Cancel +#XMSG: Manage applications MessageBox cancel button +MAA_CLOSE_BUTTON=Close +#XHED: dialog title for failed manage apps +HEADER_MANAGE_APPS_FAILED=Error +#XMSG: dialog message for failed manage apps +MSG_MANAGE_APPS_FAILED=Sorry, the overview of the app variants is temporarily not available. Please contact your administrator. \ No newline at end of file diff --git a/resources/sap/ui/rta/messagebundle_ar.properties b/resources/sap/ui/rta/messagebundle_ar.properties new file mode 100644 index 0000000..3ca7a3b --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ar.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u062A\u0647\u064A\u0626\u0629 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u062D\u0641\u0638 \u0648\u062E\u0631\u0648\u062C +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u062A\u0645 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u0627\u0644\u0645\u0632\u064A\u062F... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0625\u0632\u0627\u0644\u0629 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0625\u0632\u0627\u0644\u0629 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u0625\u0636\u0627\u0641\u0629 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0627\u0644\u0645\u062D\u062A\u0648\u0649 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0642\u0635 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u0644\u0635\u0642 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u062A\u062C\u0645\u064A\u0639 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u062A\u0642\u0633\u064A\u0645 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u0625\u0646\u0634\u0627\u0621 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\ {0} \u200F\u062C\u062F\u064A\u062F\u0629 +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u0625\u0639\u0627\u062F\u0629 \u062A\u0633\u0645\u064A\u0629 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u062A\u0646\u0642\u0644 \u0625\u0644\u0649 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u0645\u0648\u0627\u0641\u0642 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0625\u0632\u0627\u0644\u0629 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0625\u0644\u063A\u0627\u0621 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0625\u0646\u0634\u0627\u0621 \u062D\u0642\u0644 \u0623\u0648 \u0627\u0631\u062A\u0628\u0627\u0637 \u0623\u0648 \u0645\u0646\u0637\u0642 \u0645\u062E\u0635\u0635 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u0643\u0627\u0646 {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u0645\u062A\u0648\u0641\u0631 {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0645\u0634\u0627\u0631\u0643\u0629 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u062A\u0631\u0627\u062C\u0639 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u0625\u0639\u0627\u062F\u0629 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u0646\u0634\u0631 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u0646\u0642\u0644 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u062A\u0647\u064A\u0626\u0629 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u062A\u0646\u0642\u0644 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u062E\u0637\u0623 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u0646\u0623\u0633\u0641\u060C \u0644\u0627 \u064A\u0645\u0643\u0646 \u062A\u062C\u0627\u0647\u0644 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062A. \u0628\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627 \u0623\u0648 \u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0627\u0644\u0645\u0633\u0624\u0648\u0644\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u062E\u0637\u0623 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u0646\u0623\u0633\u0641\u060C \u0644\u0627 \u064A\u0645\u0643\u0646 \u0646\u0642\u0644 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062A. \u0628\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627 \u0623\u0648 \u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0627\u0644\u0645\u0633\u0624\u0648\u0644 {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u0646\u0623\u0633\u0641\u060C \u0644\u0627 \u064A\u0645\u0643\u0646 \u0646\u0634\u0631 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062A. \u0628\u0631\u062C\u0627\u0621 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627 \u0623\u0648 \u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0627\u0644\u0645\u0633\u0624\u0648\u0644 {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u062A\u0645 \u062A\u0636\u0645\u064A\u0646 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0644\u062F\u064A\u0643 \u0641\u064A \u0627\u0644\u0646\u0642\u0644. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u062A\u0645\u062A \u062C\u062F\u0648\u0644\u0629 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0644\u0646\u0634\u0631\u0647\u0627 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u0645\u0639\u0644\u0648\u0645\u0627\u062A +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u062A\u0645 \u062A\u0636\u0645\u064A\u0646 \u062C\u0645\u064A\u0639 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0628\u0627\u0644\u0641\u0639\u0644 \u0641\u064A \u0627\u0644\u0646\u0642\u0644 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u062E\u0637\u0623 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u062A\u0637\u0628\u064A\u0642 \u0623\u0648 \u062D\u0641\u0638 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645. \u0627\u0644\u062E\u0631\u0648\u062C \u0645\u0646 \u0646\u0645\u0637 \u0627\u0644\u062A\u0647\u064A\u0626\u0629 \u0648\u0625\u0639\u0627\u062F\u0629 \u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0639\u064A\u064A\u0646 \u0644\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0642\u064A\u0627\u0633\u064A +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0647\u0644 \u062A\u0631\u064A\u062F \u062A\u062C\u0627\u0647\u0644 \u062C\u0645\u064A\u0639 \u0639\u0645\u0644\u064A\u0627\u062A \u062A\u0647\u064A\u0626\u0629 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 \u0648\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0644\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0642\u064A\u0627\u0633\u064A\u061F +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0647\u0644 \u062A\u0631\u064A\u062F \u062A\u062C\u0627\u0647\u0644 \u0643\u0644 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u062E\u0635\u064A\u0635 \u0648\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0627\u0644\u062A\u0637\u0628\u064A\u0642\u061F +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u0646\u0623\u0633\u0641\u060C \u062D\u062F\u062B \u062E\u0637\u0623 \u062A\u0642\u0646\u064A. \u0628\u0631\u062C\u0627\u0621 \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0644\u0627\u062D\u0642\u064B\u0627. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u0627\u0644\u0633\u0628\u0628\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u0641\u064A \u062D\u0627\u0644\u0629 \u0627\u0644\u062A\u0623\u0643\u064A\u062F\u060C \u0633\u064A\u062A\u0645 \u0641\u0642\u0637 \u0643\u0644 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645. \u0644\u062D\u0641\u0638\u0647\u0627\u060C \u0623\u063A\u0644\u0642 \u0645\u0631\u0628\u0639 \u0627\u0644\u062D\u0648\u0627\u0631 \u0647\u0630\u0627 \u0648\u0642\u0645 \u0628\u0627\u0644\u062E\u0631\u0648\u062C \u0645\u0646 \u0646\u0645\u0637 \u062A\u0647\u064A\u0626\u0629 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u062A\u062D\u062A\u0648\u064A \u0645\u0642\u062F\u0645\u0629 \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0639\u0644\u0649 \u0639\u0646\u0627\u0635\u0631 \u0625\u0636\u0627\u0641\u064A\u0629 \u0641\u064A \u062D\u0627\u0644\u0629 \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\u060C \u0633\u064A\u062A\u0645 \u0641\u0642\u062F\u0647\u0627. \u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0639\u0644\u0649 \u0623\u064A \u062D\u0627\u0644\u061F +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u0644\u0627 \u064A\u062A\u0648\u0641\u0631 \u0645\u0632\u064A\u062F \u0645\u0646 {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u0645\u0639\u0644\u0648\u0645\u0627\u062A +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u0644\u0642\u062F \u0642\u0645\u062A \u0628\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. \u0641\u064A \u0646\u0645\u0637 \u062A\u0647\u064A\u0626\u0629 \u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u060C \u0633\u062A\u062A\u0645 \u0625\u0639\u0627\u062F\u0629 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u062F\u0648\u0646 \u0625\u0639\u062F\u0627\u062F\u062A \u0627\u0644\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u0639\u0631\u0636 \u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0630\u064A \u062A\u0645 \u062A\u062E\u0635\u064A\u0635\u0647 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u0625\u0630\u0627 \u0623\u0631\u062F\u062A \u0627\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u062E\u0635\u064A\u0635 \u0627\u0644\u062A\u064A \u0623\u062C\u0631\u064A\u062A\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649\u060C \u064A\u0645\u0643\u0646\u0643 \u0625\u0639\u0627\u062F\u0629 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u0639\u0631\u0636 \u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0630\u064A \u062A\u0645 \u062A\u062E\u0635\u064A\u0635\u0647 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0625\u0644\u063A\u0627\u0621 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_bg.properties b/resources/sap/ui/rta/messagebundle_bg.properties new file mode 100644 index 0000000..18b706e --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_bg.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u0410\u0434\u0430\u043F\u0442\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u0441\u043A\u0438 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u041F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0417\u0430\u043F\u0438\u0441 & \u0418\u0437\u0445\u043E\u0434 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u0418\u0437\u043F\u044A\u043B\u043D\u0435\u043D +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u0417\u0430\u043F\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u043F\u0440\u043E\u043C\u0435\u043D\u0438 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u041E\u0449\u0435 ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u041E\u0442\u0441\u0442\u0440\u0430\u043D\u044F\u0432\u0430\u043D\u0435 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u041E\u0442\u0441\u0442\u0440\u0430\u043D\u044F\u0432\u0430\u043D\u0435 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u0414\u043E\u0431\u0430\u0432\u044F\u043D\u0435 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0421\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0418\u0437\u0440\u044F\u0437\u0432\u0430\u043D\u0435 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u0412\u043C\u044A\u043A\u0432\u0430\u043D\u0435 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u041A\u043E\u043C\u0431\u0438\u043D\u0438\u0440\u0430\u043D\u0435 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0420\u0430\u0437\u0434\u0435\u043B\u044F\u043D\u0435 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u043D\u0435 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u041D\u043E\u0432 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u041F\u0440\u0435\u0438\u043C\u0435\u043D\u0443\u0432\u0430\u043D\u0435 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u041D\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u043D\u0435 \u0434\u043E +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u041E\u0442\u0441\u0442\u0440\u0430\u043D\u044F\u0432\u0430\u043D\u0435 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u041E\u0442\u043A\u0430\u0437 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u043D\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0441\u043A\u043E \u043F\u043E\u043B\u0435, \u0430\u0441\u043E\u0446\u0438\u0430\u0446\u0438\u044F \u0438\u043B\u0438 \u043B\u043E\u0433\u0438\u043A\u0430 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u0431\u0435\u0448\u0435 {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u041D\u0430\u043B\u0438\u0447\u0435\u043D {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0414\u044F\u043B +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u041E\u0442\u043C\u044F\u043D\u0430 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u041F\u043E\u0432\u0442\u0430\u0440\u044F\u043D\u0435 \u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u041F\u0443\u0431\u043B\u0438\u043A\u0443\u0432\u0430\u043D\u0435 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0437\u0430\u0434\u0430\u0432\u0430\u043D\u0435 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u0422\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI \u0430\u0434\u0430\u043F\u0442\u0438\u0440\u0430\u043D\u0435 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u0413\u0440\u0435\u0448\u043A\u0430 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u0421\u044A\u0436\u0430\u043B\u044F\u0432\u0430\u043C\u0435, \u043D\u043E \u0432\u0430\u0448\u0438\u0442\u0435 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u043D\u0435 \u043C\u043E\u0433\u0430\u0442 \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u043E\u0442\u0445\u0432\u044A\u0440\u043B\u0435\u043D\u0438 \u0432 \u0442\u043E\u0437\u0438 \u043C\u043E\u043C\u0435\u043D\u0442. \u041C\u043E\u043B\u044F, \u043E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u043E\u0442\u043D\u043E\u0432\u043E \u043F\u043E-\u043A\u044A\u0441\u043D\u043E \u0438\u043B\u0438 \u0441\u0435 \u0441\u0432\u044A\u0440\u0436\u0435\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u044F \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u0413\u0440\u0435\u0448\u043A\u0430 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u0421\u044A\u0436\u0430\u043B\u044F\u0432\u0430\u043C\u0435, \u043D\u043E \u0432\u0430\u0448\u0438\u0442\u0435 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u043D\u0435 \u043C\u043E\u0433\u0430\u0442 \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u0430\u043D\u0438 \u0432 \u0442\u043E\u0437\u0438 \u043C\u043E\u043C\u0435\u043D\u0442. \u041C\u043E\u043B\u044F, \u043E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u043E\u0442\u043D\u043E\u0432\u043E \u043F\u043E-\u043A\u044A\u0441\u043D\u043E \u0438\u043B\u0438 \u0441\u0435 \u0441\u0432\u044A\u0440\u0436\u0435\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u044F \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u0421\u044A\u0436\u0430\u043B\u044F\u0432\u0430\u043C\u0435, \u043D\u043E \u0432\u0430\u0448\u0438\u0442\u0435 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u043D\u0435 \u043C\u043E\u0433\u0430\u0442 \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0432\u0430\u043D\u0438 \u0432 \u0442\u043E\u0437\u0438 \u043C\u043E\u043C\u0435\u043D\u0442. \u041C\u043E\u043B\u044F, \u043E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u043E\u0442\u043D\u043E\u0432\u043E \u043F\u043E-\u043A\u044A\u0441\u043D\u043E \u0438\u043B\u0438 \u0441\u0435 \u0441\u0432\u044A\u0440\u0436\u0435\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u044F \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u0412\u0430\u0448\u0438\u0442\u0435 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0441\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438 \u0432 \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442\u0430. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u0412\u0430\u0448\u0438\u0442\u0435 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0441\u0430 \u043F\u043B\u0430\u043D\u0438\u0440\u0430\u043D\u0438 \u0437\u0430 \u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0432\u0430\u043D\u0435 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u0412\u0441\u0438\u0447\u043A\u0438 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0432\u0435\u0447\u0435 \u0441\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438 \u0432 \u0442\u0440\u0430\u043D\u0441\u043F\u043E\u0440\u0442. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u0413\u0440\u0435\u0448\u043A\u0430 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u0413\u0440\u0435\u0448\u043A\u0430 \u043F\u0440\u0438 \u043F\u0440\u0438\u043B\u0430\u0433\u0430\u043D\u0435 \u0438\u043B\u0438 \u0437\u0430\u043F\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438. \u0418\u0437\u0445\u043E\u0434 \u043E\u0442 \u0440\u0435\u0436\u0438\u043C \u043D\u0430 \u0430\u0434\u0430\u043F\u0442\u0430\u0446\u0438\u044F \u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0441\u0442\u0440\u0430\u0442\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0437\u0430\u0434\u0430\u0432\u0430\u043D\u0435 \u043D\u0430 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u044F +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0416\u0435\u043B\u0430\u0435\u0442\u0435 \u043B\u0438 \u0434\u0430 \u043E\u0442\u0445\u0432\u044A\u0440\u043B\u0438\u0442\u0435 \u0432\u0441\u0438\u0447\u043A\u0438 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0438 \u0434\u0430 \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0430\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044F \u043D\u0430 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0416\u0435\u043B\u0430\u0435\u0442\u0435 \u043B\u0438 \u0434\u0430 \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u0435 \u0432\u0441\u0438\u0447\u043A\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0432 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0438 \u0434\u0430 \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u0421\u044A\u0436\u0430\u043B\u044F\u0432\u0430\u043C\u0435, \u043D\u043E \u0435 \u0432\u044A\u0437\u043D\u0438\u043A\u043D\u0430\u043B\u0430 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0430 \u0433\u0440\u0435\u0448\u043A\u0430. \u041C\u043E\u043B\u044F, \u043E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u043E\u0442\u043D\u043E\u0432\u043E \u043F\u043E-\u043A\u044A\u0441\u043D\u043E. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u041F\u0440\u0438\u0447\u0438\u043D\u0430\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u0410\u043A\u043E \u043F\u043E\u0442\u0432\u044A\u0440\u0434\u0438\u0442\u0435, \u0432\u0441\u0438\u0447\u043A\u0438 \u0432\u0430\u0448\u0438 UI \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0449\u0435 \u0431\u044A\u0434\u0430\u0442 \u0438\u0437\u0433\u0443\u0431\u0435\u043D\u0438. \u0417\u0430 \u0434\u0430 \u0433\u0438 \u0437\u0430\u043F\u0430\u0437\u0438\u0442\u0435, \u0437\u0430\u0442\u0432\u0430\u0440\u0435\u0442\u0435 \u0442\u043E\u0437\u0438 \u0434\u0438\u0430\u043B\u043E\u0433\u043E\u0432 \u043F\u0440\u043E\u0437\u043E\u0440\u0435\u0446 \u0438 \u0438\u0437\u043B\u0435\u0437\u0442\u0435 \u043E\u0442 \u0440\u0435\u0436\u0438\u043C \u0437\u0430 UI \u0430\u0434\u0430\u043F\u0442\u0438\u0440\u0430\u043D\u0435. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0417\u0430\u0433\u043B\u0430\u0432\u0438\u0435\u0442\u043E \u043D\u0430 \u0442\u0430\u0437\u0438 \u0433\u0440\u0443\u043F\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 \u0434\u043E\u043F\u044A\u043B\u043D\u0438\u0442\u0435\u043B\u043D\u0438 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438. \u0410\u043A\u043E \u043E\u0442\u0441\u0442\u0440\u0430\u043D\u0438\u0442\u0435 \u0433\u0440\u0443\u043F\u0430\u0442\u0430 \u0442\u0435 \u0449\u0435 \u0431\u044A\u0434\u0430\u0442 \u0438\u0437\u0433\u0443\u0431\u0435\u043D\u0438. \u0416\u0435\u043B\u0430\u0435\u0442\u0435 \u043B\u0438 \u0434\u0430 \u043E\u0442\u0441\u0442\u0440\u0430\u043D\u0438\u0442\u0435 \u0433\u0440\u0443\u043F\u0430\u0442\u0430 \u0432\u044A\u043F\u0440\u0435\u043A\u0438 \u0442\u043E\u0432\u0430? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u041D\u044F\u043C\u0430 \u043F\u043E\u0432\u0435\u0447\u0435 {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u0412\u0438\u0435 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u0430\u0445\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E. \u0412 \u0440\u0435\u0436\u0438\u043C \u0437\u0430 UI \u0430\u0434\u0430\u043F\u0442\u0438\u0440\u0430\u043D\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E \u0449\u0435 \u0431\u044A\u0434\u0435 \u043F\u0440\u0435\u0437\u0430\u0440\u0435\u0434\u0435\u043D\u043E \u0431\u0435\u0437 \u0432\u0430\u0448\u0438\u0442\u0435 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u0430\u043D\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u0430\u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u044F +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u0410\u043A\u043E \u0438\u0441\u043A\u0430\u0442\u0435 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u043E\u0442\u043D\u043E\u0432\u043E \u0432\u0430\u0448\u0438\u0442\u0435 \u043F\u0440\u043E\u043C\u0435\u043D\u0438 \u0437\u0430 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F, \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u0430 \u043F\u0440\u0435\u0437\u0430\u0440\u0435\u0434\u0438\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u0430\u043D\u0430 \u0432\u0435\u0440\u0441\u0438\u044F +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u041E\u0442\u043A\u0430\u0437 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_ca.properties b/resources/sap/ui/rta/messagebundle_ca.properties new file mode 100644 index 0000000..c9d41e4 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ca.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Ajustar IU +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalitzar aplicaci\u00F3 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Desar i finalitzar +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Concl\u00F2s +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Desar modificacions +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=M\u00E9s... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Eliminar +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Eliminar +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Afegir {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Contingut +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Retallar +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Inserir +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combinar +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Compartir +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Crear {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER={0} nou +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Reanomenar +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Configuracions +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navegar a +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=D'acord +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Eliminar +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Cancel\u00B7lar +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Crear camp personalitzat, associaci\u00F3 o l\u00F2gica +#XMIT: Label for the original name of a renamed label +LBL_FREP=era {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Configuracions +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Disponible\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Compartir +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Reinicialitzar +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Repetir +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publicar +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Reinicialitzar +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportar +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Ajust d'IU +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navegaci\u00F3 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Error +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Les vostres modificacions d'IU no poden rebutjar-se.Intenteu-ho de nou m\u00E9s tard o poseu-vos en contacte amb l'administrador\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Error +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Les vostres modificacions d'IU no poden transportar-se.Intenteu-ho de nou m\u00E9s tard o poseu-vos en contacte amb l'administrador\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Les vostres modificacions d'IU no poden publicar-se.Intenteu-ho de nou m\u00E9s tard o poseu-vos en contacte amb l'administrador\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=S'han aplicat les vostres modificacions d'IU al transport +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Les vostres modificacions d'IU estan planificades per a publicaci\u00F3 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informaci\u00F3 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Totes les modificacions d'IU ja s'han aplicat a un transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Error +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Error en aplicar o desar les modificacions d''IU. Sortiu del mode d''ajust i torneu a iniciar l''aplicaci\u00F3\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reinicialitzar a versi\u00F3 est\u00E0ndard +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Voleu rebutjar totes les modificacions d'IU i reinicialitzar l'aplicaci\u00F3 a la versi\u00F3 est\u00E0ndard? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Voleu rebutjar totes les personalitzacions i reinicialitzar l'aplicaci\u00F3? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=S'ha produ\u00EFt un error t\u00E8cnic.Intenteu-ho de nou m\u00E9s tard +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Motiu\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Si confirmeu es perdran les modificacions col\u00B7lectives.Per desar-les, tanqueu aquest di\u00E0leg i sortiu del mode d'ajust d'IU +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=La cap\u00E7alera d'aquest grup cont\u00E9 elements addicionals. Si elimineu el grup, aquests se suprimir\u00E0n. Voleu eliminar el grup igualment? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=No hi ha m\u00E9s {0} disponibles +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informaci\u00F3 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Heu personalitzat l'aplicaci\u00F3.En mode d'ajust d'IU es recarregar\u00E0 l'aplicaci\u00F3 sense personalitzaci\u00F3 +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Visualitzar versi\u00F3 personalitzada +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Recarregueu l'aplicaci\u00F3 per visualitzar les modificacions de la vostra personalitzaci\u00F3 +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Visualitzar versi\u00F3 personalitzada +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Cancel\u00B7lar +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_cs.properties b/resources/sap/ui/rta/messagebundle_cs.properties new file mode 100644 index 0000000..afdd7a6 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_cs.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Upravit UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizace app +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Ulo\u017Een\u00ED a konec +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Vy\u0159\u00EDzeno +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Ulo\u017Eit zm\u011Bny +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=V\u00EDce... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Odstran\u011Bn\u00ED +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Odstran\u011Bn\u00ED +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} p\u0159idat +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Obsah +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Vyjmout +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Vlo\u017Eit +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombinovat +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Rozd\u011Blit +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} zalo\u017Eit +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nov\u00E9 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=P\u0159ejmenov\u00E1n\u00ED +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Nastaven\u00ED +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigace k +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Odstran\u011Bn\u00ED +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Zru\u0161en\u00ED +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Zalo\u017Eit u\u017Eivatelsky definovan\u00E9 pole, asociaci nebo logiku +#XMIT: Label for the original name of a renamed label +LBL_FREP=bylo {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Nastaven\u00ED +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=K dispozici\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Uvoln\u011Bn\u00ED +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Reset +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Opakov\u00E1n\u00ED +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Zve\u0159ejnit +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Reset +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportovat +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u00DAprava UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigace +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Chyba +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Va\u0161e zm\u011Bny nelze odm\u00EDtnout. Pokuste se znova pozd\u011Bji, nebo po\u017E\u00E1dejte o pomoc administr\u00E1tora\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Chyba +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Va\u0161e zm\u011Bny UI nelze transportovat. Pokuste se znova pozd\u011Bji, nebo po\u017E\u00E1dejte o pomoc administr\u00E1tora\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Va\u0161e zm\u011Bny UI nelze zve\u0159ejnit. Pokuste se znova pozd\u011Bji, nebo po\u017E\u00E1dejte o pomoc administr\u00E1tora\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Va\u0161e zm\u011Bny UI byly p\u0159evzaty do transportu. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Va\u0161e zm\u011Bny uI byly napl\u00E1nov\u00E1ny pro zve\u0159ejn\u011Bn\u00ED. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informace +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=V\u0161echny zm\u011Bny UI byly ji\u017E p\u0159evzaty do transportu. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Chyba +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Chyba p\u0159i aplikaci nebo ulo\u017Een\u00ED zm\u011Bn UI. Opus\u0165te re\u017Eim \u00FAprav a spus\u0165te aplikaci znova\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reset na standardn\u00ED verzi +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Chcete zam\u00EDtnout v\u0161echny \u00FApravy UI a resetovat aplikaci na standardn\u00ED verzi? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Chcete personalizace zam\u00EDtnout a aplikaci resetovat? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Do\u0161lo k technick\u00E9 chyb\u011B. Pokuste se znova pozd\u011Bji. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=D\u016Fvod\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Pokud provedete potvrzen\u00ED, ve\u0161ker\u00E9 zm\u011Bny se ztrat\u00ED. Chcete-li je ulo\u017Eit, zav\u0159ete tento dialog a opus\u0165te re\u017Eim \u00FApravy UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Hlavi\u010Dka t\u00E9to skupiny obsahuje dopl\u0148kov\u00E9 prvky. Pokud skupinu odstran\u00EDte, vyma\u017Eou se. Chcete skupinu p\u0159esto odstranit? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u017D\u00E1dn\u00E9 dal\u0161\u00ED {0} nejsou k dispozici +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informace +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Personalizovali jste aplikaci. V re\u017Eimu \u00FAprav UI se aplikace znovu zavede bez personalizace. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Zobrazit pesonalizovanou verzi +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Zave\u010Fte aplikaci znova, aby se zobrazily zm\u011Bny ve va\u0161\u00ED personalizaci. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Zobrazit pesonalizovanou verzi +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Zru\u0161it +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_da.properties b/resources/sap/ui/rta/messagebundle_da.properties new file mode 100644 index 0000000..ba52b6c --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_da.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Tilpas UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personaliser app +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Gem & afslut +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=F\u00E6rdig +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Gem \u00E6ndringer +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Mere... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Fjern +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Fjern +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Tilf\u00F8j {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Indhold +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Klip +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Inds\u00E6t +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombiner +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Del +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Opret {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Ny(t) {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Omd\u00F8b +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Indstillinger +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Naviger til +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Fjern +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Afbryd +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Opret brugerdefineret felt, associering eller logik +#XMIT: Label for the original name of a renamed label +LBL_FREP=Var {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Indstillinger +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Tilg\u00E6ngelig\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Del +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Nulstil +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Gentag +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publicer +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Nulstil +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport\u00E9r +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI-tilpasning +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigation +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Fejl +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Dine UI-\u00E6ndringer kan ikke forkastes. Fors\u00F8g igen senere, eller kontakt administrator\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Fejl +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Dine UI-\u00E6ndringer kan ikke transporteres. Fors\u00F8g igen senere, eller kontakt administrator\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Dine UI-\u00E6ndringer kan ikke publiceres. Fors\u00F8g igen senere, eller kontakt administrator\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Dine UI-\u00E6ndringer blev inkluderet i transport +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Dine UI-\u00E6ndringer er planlagt til publicering +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Alle UI-\u00E6ndringer er allerede inkluderet i en transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Fejl +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Fejl ved anvendelse eller lagring af UI-\u00E6ndringer. Forlad tilpasningsmode og start app p\u00E5 ny\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Nulstil til standardversion +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Forkast alle UI-\u00E6ndringer, og nulstil app til standardversion? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Forkast alle personaliseringer, og nulstil app? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Der er opst\u00E5et en teknisk fejl. Fors\u00F8g igen senere. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u00C5rsag\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Hvis du bekr\u00E6fter, mistes samtlige \u00E6ndringer. Luk denne dialog, og afslut UI-tilpasningsmode for at gemme \u00E6ndringerne. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Toppen for denne gruppe indeholder yderligere elementer. Ved fjernelse af gruppen slettes disse elementer. Vil du fjerne gruppen alligevel? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Ingen yderligere {0} tilg\u00E6ngelige +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informationer +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Du har personaliseret appen. I UI-tilpasningsmoden genindl\u00E6ses appen uden personalisering. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Vis personaliseret version +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Genindl\u00E6s app for at vise \u00E6ndringer af din personalisering +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Vis personaliseret version +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Afbryd +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_de.properties b/resources/sap/ui/rta/messagebundle_de.properties new file mode 100644 index 0000000..7c0e309 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_de.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=UI anpassen +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=App personalisieren +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Sichern & Beenden +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Erledigt +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u00C4nderungen sichern +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Mehr... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Entfernen +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Entfernen +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} hinzuf\u00FCgen +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Inhalt +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Ausschneiden +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Einf\u00FCgen +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombinieren +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Teilen +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} anlegen +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Neu {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Umbenennen +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Einstellungen +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigieren zu +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Entfernen +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Abbrechen +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Benutzerdefiniertes Feld, Assoziation oder Logik anlegen +#XMIT: Label for the original name of a renamed label +LBL_FREP=war {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Einstellungen +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Verf\u00FCgbar\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Freigeben +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Zur\u00FCcksetzen +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Wiederholen +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Ver\u00F6ffentlichen +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Zur\u00FCcksetzen +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportieren +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI-Anpassung +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigation +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Fehler +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Ihre UI-\u00C4nderungen k\u00F6nnen nicht verworfen werden. Bitte versuchen Sie es sp\u00E4ter erneut, oder wenden sich an den Administrator\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Fehler +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Ihre UI-\u00C4nderungen k\u00F6nnen nicht transportiert werden. Bitte versuchen Sie es sp\u00E4ter erneut, oder wenden sich an den Administrator\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Ihre UI-\u00C4nderungen k\u00F6nnen nicht ver\u00F6ffentlicht werden. Bitte versuchen Sie es sp\u00E4ter erneut, oder wenden sich an den Administrator\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Ihre UI-\u00C4nderungen wurden in den Transport aufgenommen. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Ihre UI-\u00C4nderungen wurden sind zur Ver\u00F6ffentlichung eingeplant. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Alle UI-\u00C4nderungen wurden bereits in einen Transport aufgenommen. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Fehler +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Fehler beim Anwenden oder Sichern der UI-\u00C4nderungen. Verlassen Sie den Anpassungsmodus und starten Sie die App erneut\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Auf Standardversion zur\u00FCcksetzen +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Wollen Sie alle UI-\u00C4nderungen verwerfen und die App in die Standardversion zur\u00FCcksetzen? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Wollen Sie alle Personalisierungen verwerfen und die App zur\u00FCcksetzen? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Ein technischer Fehler ist aufgetreten. Bitte versuchen Sie es sp\u00E4ter erneut. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Grund\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Wenn Sie best\u00E4tigen, gehen s\u00E4mtliche \u00C4nderungen verloren. Um diese zu sichern, schlie\u00DFen Sie diesen Dialog und verlassen den UI-Anpassungsmodus. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Der Header dieser Gruppe enth\u00E4lt zus\u00E4tzliche Elemente. Wenn Sie die Gruppe entfernen, werden diese gel\u00F6scht. Wollen Sie die Gruppe dennoch entfernen? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Keine weiteren {0} verf\u00FCgbar +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informationen +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Sie haben die App personalisiert. Im UI-Anpassungsmodus wird die App ohne Personalisierung neu geladen. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Personalisierte Version anzeigen +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Laden Sie die App neu, um die \u00C4nderungen an Ihrer Personalisierung anzuzeigen. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Personalisierte Version anzeigen +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Abbrechen +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_el.properties b/resources/sap/ui/rta/messagebundle_el.properties new file mode 100644 index 0000000..bcc1cc7 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_el.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u0395\u03BE\u03B1\u03C4\u03BF\u03BC\u03AF\u03BA\u03B5\u03C5\u03C3\u03B7 \u0395\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 & \u0395\u03BE\u03BF\u03B4\u03BF\u03C2 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u0395\u03C4\u03BF\u03B9\u03BC\u03BF +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA.\u0391\u03BB\u03BB\u03B1\u03B3. +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u0395\u03C0\u03B9\u03C0\u03BB\u03AD\u03BF\u03BD \u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u03A0\u03B5\u03C1\u03B9\u03B5\u03C7. +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0391\u03C0\u03BF\u03BA\u03BF\u03C0\u03AE +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u0395\u03C0\u03B9\u03BA\u03CC\u03BB\u03BB\u03B7\u03C3\u03B7 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u03A3\u03C5\u03BD\u03B4\u03C5\u03B1\u03C3\u03BC\u03CC\u03C2 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0394\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u039D\u03AD\u03BF {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u039C\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u03A0\u03BB\u03BF\u03AE\u03B3\u03B7\u03C3\u03B7 \u03A3\u03B5 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u039F\u039A +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03C0\u03B5\u03B4\u03AF\u03BF\u03C5 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2, \u03C3\u03C5\u03C3\u03C7\u03AD\u03C4\u03B9\u03C3\u03B7\u03C2 \u03AE \u03BB\u03BF\u03B3\u03B9\u03BA\u03AE\u03C2 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u03AE\u03C4\u03B1\u03BD {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u0394\u03B9\u03B1\u03B8\u03AD\u03C3\u03B9\u03BC\u03BF {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u039A\u03BF\u03B9\u03BD\u03AE \u03A7\u03C1\u03AE\u03C3\u03B7 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u0391\u03BD\u03AC\u03BA\u03BB\u03B7\u03C3\u03B7 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u0394\u03B7\u03BC\u03BF\u03C3. +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u039C\u03B5\u03C4\u03B1\u03C6\u03BF\u03C1\u03AC +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u03A0\u03BB\u03BF\u03AE\u03B3\u03B7\u03C3\u03B7 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u039C\u03B1\u03C2 \u03C3\u03C5\u03B3\u03C7\u03C9\u03C1\u03B5\u03AF\u03C4\u03B5, \u03BF\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03B1\u03C2 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C1\u03C1\u03B9\u03C6\u03B8\u03BF\u03CD\u03BD \u03C4\u03CE\u03C1\u03B1. \u0394\u03BF\u03BA\u03B9\u03BC\u03AC\u03C3\u03C4\u03B5 \u03BE\u03B1\u03BD\u03AC \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1 \u03AE \u03B5\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD\u03AE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03BF\u03BD \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE \u03C3\u03B1\u03C2\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u039C\u03B1\u03C2 \u03C3\u03C5\u03B3\u03C7\u03C9\u03C1\u03B5\u03AF\u03C4\u03B5, \u03BF\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03B1\u03C2 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03BD\u03B1 \u03BC\u03B5\u03C4\u03B1\u03C6\u03B5\u03C1\u03B8\u03BF\u03CD\u03BD \u03C4\u03CE\u03C1\u03B1. \u0394\u03BF\u03BA\u03B9\u03BC\u03AC\u03C3\u03C4\u03B5 \u03BE\u03B1\u03BD\u03AC \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1 \u03AE \u03B5\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD\u03AE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03BF\u03BD \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE \u03C3\u03B1\u03C2\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u039C\u03B1\u03C2 \u03C3\u03C5\u03B3\u03C7\u03C9\u03C1\u03B5\u03AF\u03C4\u03B5, \u03BF\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03B1\u03C2 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03BD\u03B1 \u03B4\u03B7\u03BC\u03BF\u03C3\u03B9\u03B5\u03C5\u03B8\u03BF\u03CD\u03BD \u03C4\u03CE\u03C1\u03B1. \u0394\u03BF\u03BA\u03B9\u03BC\u03AC\u03C3\u03C4\u03B5 \u03BE\u03B1\u03BD\u03AC \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1 \u03AE \u03B5\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD.\u03BC\u03B5 \u03C4\u03BF\u03BD \u03B4\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE \u03C3\u03B1\u03C2\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u039F\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03B1\u03C2 \u03C3\u03C5\u03BC\u03C0\u03B5\u03C1\u03B9\u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B1\u03BD \u03C3\u03C4\u03B7\u03BD \u03BC\u03B5\u03C4\u03B1\u03C6\u03BF\u03C1\u03AC. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u039F\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03B1\u03C2 \u03C0\u03C1\u03BF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03AF\u03C3\u03C4\u03B7\u03BA\u03B1\u03BD \u03B3\u03B9\u03B1 \u03B4\u03B7\u03BC\u03BF\u03C3\u03AF\u03B5\u03C5\u03C3\u03B7 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u039F\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03C5\u03BC\u03C0\u03B5\u03C1\u03B9\u03BB\u03B1\u03BC\u03B2\u03AC\u03BD\u03BF\u03BD\u03C4\u03B1\u03B9 \u03AE\u03B4\u03B7 \u03C3\u03B5 \u03BC\u03B5\u03C4\u03B1\u03C6\u03BF\u03C1\u03AC +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03AE \u03B1\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03CE\u03BD UI. \u0395\u03BE\u03BF\u03B4\u03BF\u03C2 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2 \u03BA\u03B1\u03B9 \u03B5\u03C0\u03B1\u03BD\u03B5\u03BA\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7\u03C2 \u03C4\u03B7\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC \u03C3\u03B5 \u03A0\u03C1\u03CC\u03C4\u03C5\u03C0\u03B7 \u0388\u03BA\u03B4\u03BF\u03C3\u03B7 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C1\u03C1\u03AF\u03C8.\u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03BA\u03B1\u03B9 \u03BD\u03B1 \u03B5\u03C0\u03B1\u03BD\u03B1\u03C6.\u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3.\u03C3\u03C4\u03B7\u03BD \u03C0\u03C1\u03CC\u03C4\u03C5\u03C0\u03B7 \u03AD\u03BA\u03B4\u03BF\u03C3\u03B7; +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C1\u03C1\u03AF\u03C8\u03B5\u03C4\u03B5 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 \u03B5\u03BE\u03B1\u03C4\u03BF\u03BC\u03AF\u03BA\u03B5\u03C5\u03C3\u03B7\u03C2 \u03BA\u03B1\u03B9 \u03BD\u03B1 \u03B5\u03C0\u03B1\u03BD\u03B1\u03C6\u03AD\u03C1\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE; +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u03A0\u03C1\u03BF\u03AD\u03BA\u03C5\u03C8\u03B5 \u03C4\u03B5\u03C7\u03BD\u03B9\u03BA\u03CC \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1. \u03A3\u03C5\u03BD\u03B4\u03B5\u03B8\u03B5\u03AF\u03C4\u03B5 \u03BE\u03B1\u03BD\u03AC \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u0391\u03B9\u03C4\u03AF\u03B1\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u0391\u03BD \u03B5\u03C0\u03B1\u03BB\u03B7\u03B8\u03B5\u03CD\u03C3\u03B5\u03C4\u03B5, \u03CC\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 UI \u03C3\u03B1\u03C2 \u03B8\u03B1 \u03C7\u03B1\u03B8\u03BF\u03CD\u03BD. \u0393\u03B9\u03B1 \u03BD\u03B1 \u03C4\u03B9\u03C2 \u03B1\u03C0\u03BF\u03B8\u03B7\u03BA.\u03BA\u03BB\u03B5\u03AF\u03C3\u03C4\u03B5 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C0\u03BB\u03B1\u03AF\u03C3.\u03B4\u03B9\u03B1\u03BB\u03CC\u03B3\u03BF\u03C5 \u03BA\u03B1\u03B9 \u03B2\u03B3\u03B5\u03AF\u03C4\u03B5 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BB\u03B5\u03B9\u03C4.\u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC.UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0397 \u03BA\u03B5\u03C6\u03B1\u03BB\u03AF\u03B4\u03B1 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03C0\u03C1\u03CC\u03C3\u03B8\u03B5\u03C4\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1. \u0391\u03BD \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1, \u03B8\u03B1 \u03C7\u03B1\u03B8\u03BF\u03CD\u03BD. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1; +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u0394\u03B5\u03BD \u03B4\u03B9\u03B1\u03C4\u03AF\u03B8\u03B5\u03C4\u03B1\u03B9 \u03C0\u03BB\u03AD\u03BF\u03BD {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u0395\u03BE\u03B1\u03C4\u03BF\u03BC\u03B9\u03BA\u03B5\u03CD\u03C3\u03B1\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE. \u03A3\u03C4\u03B7 \u03BB\u03B5\u03B9\u03C4.\u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2 UI \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03B8\u03B1 \u03B5\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03C4\u03C9\u03B8\u03B5\u03AF \u03C7\u03C9\u03C1\u03AF\u03C2 \u03C4\u03B9\u03C2 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3.\u03B5\u03BE\u03B1\u03C4\u03BF\u03BC\u03AF\u03BA\u03B5\u03C5\u03C3\u03AE\u03C2 \u03C3\u03B1\u03C2. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u0395\u03BE\u03B1\u03C4\u03BF\u03BC\u03B9\u03BA\u03B5\u03C5\u03BC\u03AD\u03BD\u03B7\u03C2 \u0395\u03BA\u03B4\u03BF\u03C3\u03B7\u03C2 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u0391\u03BD \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03BE\u03B1\u03BD\u03B1\u03B4\u03B5\u03AF\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 \u03C3\u03C4\u03B7\u03BD \u03B5\u03BE\u03B1\u03C4\u03BF\u03BC\u03AF\u03BA\u03B5\u03C5\u03C3\u03AE \u03C3\u03B1\u03C2 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF\u03C4\u03B5 \u03BD\u03B1 \u03BE\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03C4\u03CE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u0395\u03BE\u03B1\u03C4\u03BF\u03BC\u03B9\u03BA\u03B5\u03C5\u03BC\u03AD\u03BD\u03B7\u03C2 \u0395\u03BA\u03B4\u03BF\u03C3\u03B7\u03C2 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_en.properties b/resources/sap/ui/rta/messagebundle_en.properties new file mode 100644 index 0000000..e690207 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_en.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adapt UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalize App +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Save & Exit +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Done +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Save Changes +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=More ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Remove +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Remove +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Add {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Content +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Cut +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Paste +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combine +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Split +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Create {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=New {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Rename +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Settings +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigate To +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Remove +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Cancel +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Create custom field, association, or logic +#XMIT: Label for the original name of a renamed label +LBL_FREP=was {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Settings +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Available {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Share +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Undo +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Redo +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publish +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Reset +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI Adaptation +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigation +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Error +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Sorry, your UI changes can't be discarded at this time. Please try again later or contact your administrator\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Error +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Sorry, your UI changes can't be transported at this time. Please try again later or contact your administrator\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Sorry, your UI changes can't be published at this time. Please try again later or contact your administrator\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Your UI changes were included in the transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Your UI changes are scheduled for publishing +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=All UI changes are already included in a transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Error +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Error while applying or saving UI changes. Exit adaptation mode and restart the app\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reset to Standard Version +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Do you want to discard all UI changes and reset the app to the standard version? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Do you want to discard all your personalization changes and reset the app? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Sorry, a technical error occurred. Please retry later. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Reason\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=If you confirm, all your UI changes will be lost. To save them, close this dialog box and exit the UI adaptation mode. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=The header of this group contains additional elements. If you remove the group, they will be lost. Do you want to remove the group anyway? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=No more {0} available +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Information +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=You have personalized the app. In UI adaptation mode, the app will reload without your personalization settings. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Display Personalized Version +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=If you would like to see your personalization changes again, you can reload the app +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Display Personalized Version +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Cancel +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_en_US_sappsd.properties b/resources/sap/ui/rta/messagebundle_en_US_sappsd.properties new file mode 100644 index 0000000..3034e24 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_en_US_sappsd.properties @@ -0,0 +1,127 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=[[[\u0100\u018C\u0105\u03C1\u0163 \u016E\u012C\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=[[[\u01A4\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0113 \u0100\u03C1\u03C1\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=[[[\u015C\u0105\u028B\u0113 & \u0114\u03C7\u012F\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=[[[\u010E\u014F\u014B\u0113]]] +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=[[[\u015C\u0105\u028B\u0113 \u0108\u0125\u0105\u014B\u011F\u0113\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=[[[\u039C\u014F\u0157\u0113 ...\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=[[[\u0158\u0113\u0271\u014F\u028B\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=[[[\u0158\u0113\u0271\u014F\u028B\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=[[[\u0100\u018C\u018C {0}]]] +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=[[[\u0108\u014F\u014B\u0163\u0113\u014B\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=[[[\u0108\u0171\u0163\u2219]]] +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=[[[\u01A4\u0105\u015F\u0163\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=[[[\u0108\u014F\u0271\u0183\u012F\u014B\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=[[[\u015C\u03C1\u013A\u012F\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=[[[\u0108\u0157\u0113\u0105\u0163\u0113 {0}]]] +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=[[[\u0143\u0113\u0175 {0}]]] +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=[[[\u0158\u0113\u014B\u0105\u0271\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=[[[\u015C\u0113\u0163\u0163\u012F\u014B\u011F\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=[[[\u0143\u0105\u028B\u012F\u011F\u0105\u0163\u0113 \u0162\u014F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=[[[\u014E\u0136\u2219\u2219]]] +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=[[[\u0158\u0113\u0271\u014F\u028B\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=[[[\u0108\u0157\u0113\u0105\u0163\u0113 \u010B\u0171\u015F\u0163\u014F\u0271 \u0192\u012F\u0113\u013A\u018C, \u0105\u015F\u015F\u014F\u010B\u012F\u0105\u0163\u012F\u014F\u014B, \u014F\u0157 \u013A\u014F\u011F\u012F\u010B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMIT: Label for the original name of a renamed label +LBL_FREP=[[[\u0175\u0105\u015F {0}]]] +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=[[[\u015C\u0113\u0163\u0163\u012F\u014B\u011F\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=[[[\u0100\u028B\u0105\u012F\u013A\u0105\u0183\u013A\u0113 {0}]]] +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=[[[\u015C\u0125\u0105\u0157\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTOL: Tooltip for 'i' Button in RTA Toolbar +BTN_MANAGE_APPS=[[[\u014E\u028B\u0113\u0157\u028B\u012F\u0113\u0175 \u014F\u0192 \u0100\u03C1\u03C1 \u01B2\u0105\u0157\u012F\u0105\u014B\u0163\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=[[[\u016E\u014B\u018C\u014F]]] +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=[[[\u0158\u0113\u018C\u014F]]] +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=[[[\u01A4\u0171\u0183\u013A\u012F\u015F\u0125\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=[[[\u0158\u0113\u015F\u0113\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=[[[\u0162\u0157\u0105\u014B\u015F\u03C1\u014F\u0157\u0163\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=[[[\u016E\u012C \u0100\u018C\u0105\u03C1\u0163\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=[[[\u0143\u0105\u028B\u012F\u011F\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219]]] +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=[[[\u0114\u0157\u0157\u014F\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=[[[\u015C\u014F\u0157\u0157\u0177, \u0177\u014F\u0171\u0157 \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u010B\u0105\u014B'\u0163 \u0183\u0113 \u018C\u012F\u015F\u010B\u0105\u0157\u018C\u0113\u018C \u0105\u0163 \u0163\u0125\u012F\u015F \u0163\u012F\u0271\u0113. \u01A4\u013A\u0113\u0105\u015F\u0113 \u0163\u0157\u0177 \u0105\u011F\u0105\u012F\u014B \u013A\u0105\u0163\u0113\u0157 \u014F\u0157 \u010B\u014F\u014B\u0163\u0105\u010B\u0163 \u0177\u014F\u0171\u0157 \u0105\u018C\u0271\u012F\u014B\u012F\u015F\u0163\u0157\u0105\u0163\u014F\u0157\: {0}\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=[[[\u0114\u0157\u0157\u014F\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=[[[\u015C\u014F\u0157\u0157\u0177, \u0177\u014F\u0171\u0157 \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u010B\u0105\u014B'\u0163 \u0183\u0113 \u0163\u0157\u0105\u014B\u015F\u03C1\u014F\u0157\u0163\u0113\u018C \u0105\u0163 \u0163\u0125\u012F\u015F \u0163\u012F\u0271\u0113. \u01A4\u013A\u0113\u0105\u015F\u0113 \u0163\u0157\u0177 \u0105\u011F\u0105\u012F\u014B \u013A\u0105\u0163\u0113\u0157 \u014F\u0157 \u010B\u014F\u014B\u0163\u0105\u010B\u0163 \u0177\u014F\u0171\u0157 \u0105\u018C\u0271\u012F\u014B\u012F\u015F\u0163\u0157\u0105\u0163\u014F\u0157\: {0}\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=[[[\u015C\u014F\u0157\u0157\u0177, \u0177\u014F\u0171\u0157 \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u010B\u0105\u014B'\u0163 \u0183\u0113 \u03C1\u0171\u0183\u013A\u012F\u015F\u0125\u0113\u018C \u0105\u0163 \u0163\u0125\u012F\u015F \u0163\u012F\u0271\u0113. \u01A4\u013A\u0113\u0105\u015F\u0113 \u0163\u0157\u0177 \u0105\u011F\u0105\u012F\u014B \u013A\u0105\u0163\u0113\u0157 \u014F\u0157 \u010B\u014F\u014B\u0163\u0105\u010B\u0163 \u0177\u014F\u0171\u0157 \u0105\u018C\u0271\u012F\u014B\u012F\u015F\u0163\u0157\u0105\u0163\u014F\u0157\: {0}\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=[[[\u0176\u014F\u0171\u0157 \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0175\u0113\u0157\u0113 \u012F\u014B\u010B\u013A\u0171\u018C\u0113\u018C \u012F\u014B \u0163\u0125\u0113 \u0163\u0157\u0105\u014B\u015F\u03C1\u014F\u0157\u0163.\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=[[[\u0176\u014F\u0171\u0157 \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0105\u0157\u0113 \u015F\u010B\u0125\u0113\u018C\u0171\u013A\u0113\u018C \u0192\u014F\u0157 \u03C1\u0171\u0183\u013A\u012F\u015F\u0125\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=[[[\u012C\u014B\u0192\u014F\u0157\u0271\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=[[[\u0100\u013A\u013A \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0105\u0157\u0113 \u0105\u013A\u0157\u0113\u0105\u018C\u0177 \u012F\u014B\u010B\u013A\u0171\u018C\u0113\u018C \u012F\u014B \u0105 \u0163\u0157\u0105\u014B\u015F\u03C1\u014F\u0157\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=[[[\u0114\u0157\u0157\u014F\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=[[[\u0114\u0157\u0157\u014F\u0157 \u0175\u0125\u012F\u013A\u0113 \u0105\u03C1\u03C1\u013A\u0177\u012F\u014B\u011F \u014F\u0157 \u015F\u0105\u028B\u012F\u014B\u011F \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F. \u0114\u03C7\u012F\u0163 \u0105\u018C\u0105\u03C1\u0163\u0105\u0163\u012F\u014F\u014B \u0271\u014F\u018C\u0113 \u0105\u014B\u018C \u0157\u0113\u015F\u0163\u0105\u0157\u0163 \u0163\u0125\u0113 \u0105\u03C1\u03C1\: {0}]]] +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=[[[\u0158\u0113\u015F\u0113\u0163 \u0163\u014F \u015C\u0163\u0105\u014B\u018C\u0105\u0157\u018C \u01B2\u0113\u0157\u015F\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=[[[\u010E\u014F \u0177\u014F\u0171 \u0175\u0105\u014B\u0163 \u0163\u014F \u018C\u012F\u015F\u010B\u0105\u0157\u018C \u0105\u013A\u013A \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0105\u014B\u018C \u0157\u0113\u015F\u0113\u0163 \u0163\u0125\u0113 \u0105\u03C1\u03C1 \u0163\u014F \u0163\u0125\u0113 \u015F\u0163\u0105\u014B\u018C\u0105\u0157\u018C \u028B\u0113\u0157\u015F\u012F\u014F\u014B?\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=[[[\u010E\u014F \u0177\u014F\u0171 \u0175\u0105\u014B\u0163 \u0163\u014F \u018C\u012F\u015F\u010B\u0105\u0157\u018C \u0105\u013A\u013A \u0177\u014F\u0171\u0157 \u03C1\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0105\u0163\u012F\u014F\u014B \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0105\u014B\u018C \u0157\u0113\u015F\u0113\u0163 \u0163\u0125\u0113 \u0105\u03C1\u03C1?\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=[[[\u015C\u014F\u0157\u0157\u0177, \u0105 \u0163\u0113\u010B\u0125\u014B\u012F\u010B\u0105\u013A \u0113\u0157\u0157\u014F\u0157 \u014F\u010B\u010B\u0171\u0157\u0157\u0113\u018C. \u01A4\u013A\u0113\u0105\u015F\u0113 \u0157\u0113\u0163\u0157\u0177 \u013A\u0105\u0163\u0113\u0157.\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=[[[\u0158\u0113\u0105\u015F\u014F\u014B\:{0}]]] +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=[[[\u012C\u0192 \u0177\u014F\u0171 \u010B\u014F\u014B\u0192\u012F\u0157\u0271, \u0105\u013A\u013A \u0177\u014F\u0171\u0157 \u016E\u012C \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0175\u012F\u013A\u013A \u0183\u0113 \u013A\u014F\u015F\u0163. \u0162\u014F \u015F\u0105\u028B\u0113 \u0163\u0125\u0113\u0271, \u010B\u013A\u014F\u015F\u0113 \u0163\u0125\u012F\u015F \u018C\u012F\u0105\u013A\u014F\u011F \u0183\u014F\u03C7 \u0105\u014B\u018C \u0113\u03C7\u012F\u0163 \u0163\u0125\u0113 \u016E\u012C \u0105\u018C\u0105\u03C1\u0163\u0105\u0163\u012F\u014F\u014B \u0271\u014F\u018C\u0113.\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=[[[\u0162\u0125\u0113 \u0125\u0113\u0105\u018C\u0113\u0157 \u014F\u0192 \u0163\u0125\u012F\u015F \u011F\u0157\u014F\u0171\u03C1 \u010B\u014F\u014B\u0163\u0105\u012F\u014B\u015F \u0105\u018C\u018C\u012F\u0163\u012F\u014F\u014B\u0105\u013A \u0113\u013A\u0113\u0271\u0113\u014B\u0163\u015F. \u012C\u0192 \u0177\u014F\u0171 \u0157\u0113\u0271\u014F\u028B\u0113 \u0163\u0125\u0113 \u011F\u0157\u014F\u0171\u03C1, \u0163\u0125\u0113\u0177 \u0175\u012F\u013A\u013A \u0183\u0113 \u013A\u014F\u015F\u0163. \u010E\u014F \u0177\u014F\u0171 \u0175\u0105\u014B\u0163 \u0163\u014F \u0157\u0113\u0271\u014F\u028B\u0113 \u0163\u0125\u0113 \u011F\u0157\u014F\u0171\u03C1 \u0105\u014B\u0177\u0175\u0105\u0177?\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=[[[\u0143\u014F \u0271\u014F\u0157\u0113 {0} \u0105\u028B\u0105\u012F\u013A\u0105\u0183\u013A\u0113]]] +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=[[[\u012C\u014B\u0192\u014F\u0157\u0271\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=[[[\u0176\u014F\u0171 \u0125\u0105\u028B\u0113 \u03C1\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0113\u018C \u0163\u0125\u0113 \u0105\u03C1\u03C1. \u012C\u014B \u016E\u012C \u0105\u018C\u0105\u03C1\u0163\u0105\u0163\u012F\u014F\u014B \u0271\u014F\u018C\u0113, \u0163\u0125\u0113 \u0105\u03C1\u03C1 \u0175\u012F\u013A\u013A \u0157\u0113\u013A\u014F\u0105\u018C \u0175\u012F\u0163\u0125\u014F\u0171\u0163 \u0177\u014F\u0171\u0157 \u03C1\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0105\u0163\u012F\u014F\u014B \u015F\u0113\u0163\u0163\u012F\u014B\u011F\u015F.\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=[[[\u010E\u012F\u015F\u03C1\u013A\u0105\u0177 \u01A4\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0113\u018C \u01B2\u0113\u0157\u015F\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=[[[\u012C\u0192 \u0177\u014F\u0171 \u0175\u014F\u0171\u013A\u018C \u013A\u012F\u0137\u0113 \u0163\u014F \u015F\u0113\u0113 \u0177\u014F\u0171\u0157 \u03C1\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0105\u0163\u012F\u014F\u014B \u010B\u0125\u0105\u014B\u011F\u0113\u015F \u0105\u011F\u0105\u012F\u014B, \u0177\u014F\u0171 \u010B\u0105\u014B \u0157\u0113\u013A\u014F\u0105\u018C \u0163\u0125\u0113 \u0105\u03C1\u03C1\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=[[[\u010E\u012F\u015F\u03C1\u013A\u0105\u0177 \u01A4\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0113\u018C \u01B2\u0113\u0157\u015F\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: Manage applications MessageBox cancel button +MAA_CLOSE_BUTTON=[[[\u0108\u013A\u014F\u015F\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XHED: dialog title for failed manage apps +HEADER_MANAGE_APPS_FAILED=[[[\u0114\u0157\u0157\u014F\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XMSG: dialog message for failed manage apps +MSG_MANAGE_APPS_FAILED=[[[\u015C\u014F\u0157\u0157\u0177, \u0163\u0125\u0113 \u014F\u028B\u0113\u0157\u028B\u012F\u0113\u0175 \u014F\u0192 \u0163\u0125\u0113 \u0105\u03C1\u03C1 \u028B\u0105\u0157\u012F\u0105\u014B\u0163\u015F \u012F\u015F \u0163\u0113\u0271\u03C1\u014F\u0157\u0105\u0157\u012F\u013A\u0177 \u014B\u014F\u0163 \u0105\u028B\u0105\u012F\u013A\u0105\u0183\u013A\u0113. \u01A4\u013A\u0113\u0105\u015F\u0113 \u010B\u014F\u014B\u0163\u0105\u010B\u0163 \u0177\u014F\u0171\u0157 \u0105\u018C\u0271\u012F\u014B\u012F\u015F\u0163\u0157\u0105\u0163\u014F\u0157.\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] diff --git a/resources/sap/ui/rta/messagebundle_en_US_saptrc.properties b/resources/sap/ui/rta/messagebundle_en_US_saptrc.properties new file mode 100644 index 0000000..79c2ea3 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_en_US_saptrc.properties @@ -0,0 +1,127 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=1nqWivnuCcDvT4oI96oCbg_Adapt UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=tLXW1t6VXumAAx+Rk1Wvaw_Personalize App +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=w2ud9Egmo7yu4UtkJTQWIQ_Save & Exit +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=xslp6wFoJNTe2vyHhoJY9Q_Done +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=3LYCPcEbHhN247X1/O+qlQ_Save Changes +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=ITAFHZmbXE9tX2DwF5VC4g_More ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=+u6DsJDD48khJP8XlTmj/g_Remove +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=lj9mc7FZcS2/ZMg88xlU5Q_Remove +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=41OgwGem2fhfLNPrKUgtuA_Add {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=2P+1v31+1PXO7aYyKpcQOA_Content +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=XqLczV+dmBEGWc1fWNiDOQ_Cut +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=2dR9jSB159BLPZI1M4GGOA_Paste +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=KLlSyoj4lFkUH5GzlQ1egA_Combine +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=emLFBkw3Z3pV2pm/vcZXHw_Split +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=IATk6xizhBRBvwUsaHTb6A_Create {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=m4OEeDSXmANk6kNRsgrffA_New {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=BAXCbzed+8aac/28TBzxLQ_Rename +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=b2E6ONevKvKnwFdDE0mGvA_Settings +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=GXMVzIQgweUlTGwd9FP2UA_Navigate To +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=ukVSVYm5hZhQtah+x45s7Q_OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=QZ/uKrHUBDTKZjJJHKWH5g_Remove +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=ib6Xp1l/sTBuryfcnX0c/Q_Cancel +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=nfM0DljEXYUxzaB28Jnkxw_Create custom field, association, or logic +#XMIT: Label for the original name of a renamed label +LBL_FREP=vpUooPaIab0Pbi4MJmxwrQ_was {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=c6YJeCIbykjqEElVXtkHkw_Settings +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=aRWm8ar/PobeQ8nX7viR7A_Available {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=qxsVZteLHiDiMyJ+Ia2Ppw_Share +#XTOL: Tooltip for 'i' Button in RTA Toolbar +BTN_MANAGE_APPS=O6bgAKwiGIcu18ZLo/3iXw_Overview of App Variants +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=8NB+DWzqBnsHdGv3xNnh1g_Undo +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=FTOUGpI3pozWwE0p3ToZvw_Redo +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=/Hs7VjryzNHDW0daE4aBwA_Publish +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=MUYGRyqP5uAYOYHjj8Mrdw_Reset +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=TUExDaaxJnXlJtMjgPm3vw_Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=B1T08hxApKDKeGZteC2mnA_UI Adaptation +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=sCL/5PhBKa9pkeEuCaUc0w_Navigation +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=+3N0jcvWjs5WQBr3Vqlc+A_Error +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=xG7AXlp7TGgr2d43fAty8w_Sorry, your UI changes can't be discarded at this time. Please try again later or contact your administrator\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=EoPLqnhAEMZ69Q0SitynUw_Error +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=liQnDJqfI/f1GZbo7xHfeA_Sorry, your UI changes can't be transported at this time. Please try again later or contact your administrator\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=FSlr9F0JMWPO+IrT936hHw_Sorry, your UI changes can't be published at this time. Please try again later or contact your administrator\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=97CwDl3kugAW2Dmi8YJMiA_Your UI changes were included in the transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=KYCW4IT9Vma1ki6upeFDdw_Your UI changes are scheduled for publishing +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=xB2sSoUzCUKnEJ0sOenqbQ_Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=awRIVd2PDOE0oFUy51WmAg_All UI changes are already included in a transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Y3Dec625M1BjxtLhIYCUJQ_Error +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=KmnTZrRoDoy1FidXErrfrg_Error while applying or saving UI changes. Exit adaptation mode and restart the app\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=EGGjYkUXeHFpNMz7YD5gYA_Reset to Standard Version +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Y+zzyhxo4QhoYJQ0LU1V8w_Do you want to discard all UI changes and reset the app to the standard version? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=rKY0drFwILC5+PRZkIKGlA_Do you want to discard all your personalization changes and reset the app? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=1ftI6PeULIL++ptnIYqbvw_Sorry, a technical error occurred. Please retry later. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=70IfixQbkkeQkmUapxcnDw_Reason\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=0OBma8w01lfdbqZSqsQZzA_If you confirm, all your UI changes will be lost. To save them, close this dialog box and exit the UI adaptation mode. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=3DuE53CwX32N73nloGutgw_The header of this group contains additional elements. If you remove the group, they will be lost. Do you want to remove the group anyway? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=I2Tn1gVmOCMAFOsMLMZTKA_No more {0} available +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=/4frqL0D1XyB8TKyemHf/Q_Information +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=A+HJ4BdEDgQa7v0HY9bPww_You have personalized the app. In UI adaptation mode, the app will reload without your personalization settings. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=YdfYoCzEPL9OJszysgj4hg_Display Personalized Version +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=QRKYWZLzAnk8xmaltbagkg_If you would like to see your personalization changes again, you can reload the app +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Z5PFlaGb9TbUq9yp5jqQ/w_Display Personalized Version +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=b0TupwMHxlwN02PVjRiT7g_Cancel +#XMSG: Manage applications MessageBox cancel button +MAA_CLOSE_BUTTON=8tjajg3n+dDvdn6tcV5sng_Close +#XHED: dialog title for failed manage apps +HEADER_MANAGE_APPS_FAILED=oqMnP9A3Ez/TxI40is4IqQ_Error +#XMSG: dialog message for failed manage apps +MSG_MANAGE_APPS_FAILED=h2z5+gMw3RJkRMIxcEjzLA_Sorry, the overview of the app variants is temporarily not available. Please contact your administrator. diff --git a/resources/sap/ui/rta/messagebundle_es.properties b/resources/sap/ui/rta/messagebundle_es.properties new file mode 100644 index 0000000..d6a70ae --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_es.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adaptar IU +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizar aplicaci\u00F3n +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Grabar y finalizar +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Finalizado +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Grabar modificaciones +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=M\u00E1s... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Eliminar +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Eliminar +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=A\u00F1adir {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Contenido +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Cortar +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Insertar +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Agrupar +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Desagrupar +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Crear {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nuevo {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Renombrar +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Opciones +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navegar a +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Eliminar +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Cancelar +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Crear campo personalizado, asociaci\u00F3n o l\u00F3gica +#XMIT: Label for the original name of a renamed label +LBL_FREP=era {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Parametrizaciones +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Disponible\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Compartir +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Reinicializar +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Repetir +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publicar +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Reinicializar +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportar +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Ajuste de IU +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navegaci\u00F3n +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Error +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Sis modificaciones de IU no pueden rechazarse.Int\u00E9ntelo de nuevo m\u00E1s tarde o p\u00F3ngase en contacto con el administrador\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Error +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Sus modificaciones de IU no pueden transportarse.Int\u00E9ntelo de nuevo m\u00E1s tarde o p\u00F3ngase en contacto con el administrador\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Sus modificaciones de IU no pueden transportarse.Int\u00E9ntelo de nuevo m\u00E1s tarde o p\u00F3ngase en contacto con el administrador\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Sus modificaciones de IU se han transferido al transporte +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Sus modificaciones de IU se han planificado para la publicaci\u00F3n +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informaci\u00F3n +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Todas las modificaciones de IU se han transferido ya a un transporte +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Error +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Error al aplicar o grabar las modificaciones de IU. Abandone el modo de ajuste e inicie la aplicaci\u00F3n de nuevo\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reinicializar a la versi\u00F3n est\u00E1ndar +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u00BFDesea rechazar todas las modificaciones de IU y reinicializar la aplicaci\u00F3n a la versi\u00F3n est\u00E1ndar? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u00BFDesea rechazar todas las personalizaciones y reinicializar la aplicaci\u00F3n? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Se ha producido un error interno.Int\u00E9ntelo de nuevo m\u00E1s tarde +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Motivo\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Si confirma, se perder\u00E1n las modificaciones colectivas.Para grabarlas, cierre este di\u00E1logo y salga del modo de ajuste de IU +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=La cabecera de este grupo contiene elementos adicionales. Si elimina el grupo, estos se borrar\u00E1n. \u00BFDesea eliminar el grupo igualmente? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=No hay m\u00E1s {0} disponibles +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informaci\u00F3n +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Ha personalizado la aplicaci\u00F3n.En el modo de ajuste de IU se recargar\u00E1 la aplicaci\u00F3n sin personalizaci\u00F3n +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Visualizar versi\u00F3n personalizada +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Recargue la aplicaci\u00F3n para visualizar las modificaciones en su personalizaci\u00F3n +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Visualizar versi\u00F3n personalizada +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Cancelar +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_et.properties b/resources/sap/ui/rta/messagebundle_et.properties new file mode 100644 index 0000000..7640457 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_et.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Kohanda UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Isikup\u00E4rasta rakendus +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Salvesta ja v\u00E4lju +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Valmis +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Salvesta muudatused +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Veel... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Eemalda +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Eemalda +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Lisa {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Sisu +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=L\u00F5ika +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Kleebi +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombineeri +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=T\u00FCkelda +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Loo {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Uus {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Nimeta \u00FCmber +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=S\u00E4tted +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigeerimise sihtkoht +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Eemalda +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=T\u00FChista +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Loo kohandatud v\u00E4li, seos v\u00F5i loogika +#XMIT: Label for the original name of a renamed label +LBL_FREP=oli {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=S\u00E4tted +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Saadaolev {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Anna \u00FChiskasutusse +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=V\u00F5ta tagasi +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Tee uuesti +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Avalda +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=L\u00E4htesta +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transpordi +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Ui kohandamine +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigeerimine +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=T\u00F5rge +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Teie UI muudatusi ei saa kahjuks praegu h\u00FCljata. Proovige hiljem uuesti v\u00F5i p\u00F6\u00F6rduge oma administraatori poole\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=T\u00F5rge +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Teie UI muudatusi ei saa kahjuks praegu transportida. Proovige hiljem uuesti v\u00F5i p\u00F6\u00F6rduge oma administraatori poole\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Teie UI muudatusi ei saa kahjuks praegu avaldada. Proovige hiljem uuesti v\u00F5i p\u00F6\u00F6rduge oma administraatori poole\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Teie UI muudatused kaasati transporti. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Teie UI muudatused on ajastatud avaldamiseks +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Teave +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=K\u00F5ik UI muudatused on juba kaasatud transporti. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=T\u00F5rge +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=UI muudatuste rakendamisel v\u00F5i salvestamisel ilmnes t\u00F5rge. V\u00E4ljuge kohandamisre\u017Eiimist ja taask\u00E4ivitage rakendus\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Taasta standardversioon +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Kas soovite k\u00F5ik UI muudatused h\u00FCljata ja taastada rakenduse standardversiooni? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Kas soovite k\u00F5ik oma isikup\u00E4rastamismuudatused h\u00FCljata ja rakenduse l\u00E4htestada? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Kahjuks ilmnes tehniline t\u00F5rge. Proovige hiljem uuesti. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=P\u00F5hjus\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Kinnitamise korral l\u00E4hevad k\u00F5ik teie UI muudatused kaotsi. Nende salvestamiseks sulgege see dialoogiaken ja v\u00E4ljuge UI kohandamise re\u017Eiimist. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Selle grupi p\u00E4is sisaldab lisaelemente. Kui grupi eemaldate, l\u00E4hevad need kaotsi. Kas soovite siiski grupi eemaldada? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Rohkem {0} pole saadaval +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Teave +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Olete rakenduse isikup\u00E4rastanud. UI kohandamise re\u017Eiimis laaditakse rakendus uuesti ilma teie isikup\u00E4rastamiss\u00E4teteta. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Kuva isikup\u00E4rastatud versioon +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Kui soovite oma isikup\u00E4rastamismuudatusi uuesti n\u00E4ha, saate rakenduse uuesti k\u00E4ivitada +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Kuva isikup\u00E4rastatud versioon +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=T\u00FChista +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_fi.properties b/resources/sap/ui/rta/messagebundle_fi.properties new file mode 100644 index 0000000..8ab32ea --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_fi.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Mukauta UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Yksil\u00F6llist\u00E4 sovellus +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Tallenna & lopeta +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=K\u00E4sitelty +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Tallenna muutokset +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Lis\u00E4\u00E4... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Poista +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Poista +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Lis\u00E4\u00E4 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Sis\u00E4lt\u00F6 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Leikkaa +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Liit\u00E4 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Yhdist\u00E4 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Jaa +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Luo {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Uusi {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Nime\u00E4 uudelleen +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Asetukset +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigoi kohteeseen +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Poista +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Keskeyt\u00E4 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Luo k\u00E4ytt\u00E4j\u00E4n m\u00E4\u00E4ritt\u00E4m\u00E4 kentt\u00E4, yhteenkuuluvuus tai logiikka +#XMIT: Label for the original name of a renamed label +LBL_FREP=oli {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Asetukset +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=K\u00E4ytett\u00E4viss\u00E4\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Vapauta +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Palauta +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Tee uudelleen +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Julkaise +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Palauta +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Siirr\u00E4 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI\:n mukautus +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigointi +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Virhe +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=K\u00E4ytt\u00F6liittym\u00E4n muutoksia ei voi hyl\u00E4t\u00E4. Yrit\u00E4 my\u00F6hemmin uudelleen tai k\u00E4\u00E4nny p\u00E4\u00E4k\u00E4ytt\u00E4j\u00E4n puoleen\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Virhe +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=K\u00E4ytt\u00F6liittym\u00E4n muutoksia ei voi siirt\u00E4\u00E4. Yrit\u00E4 my\u00F6hemmin uudelleen tai k\u00E4\u00E4nny p\u00E4\u00E4k\u00E4ytt\u00E4j\u00E4n puoleen\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=K\u00E4ytt\u00F6liittym\u00E4n muutoksia ei voi julkaista. Yrit\u00E4 my\u00F6hemmin uudelleen tai k\u00E4\u00E4nny p\u00E4\u00E4k\u00E4ytt\u00E4j\u00E4n puoleen\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=K\u00E4ytt\u00F6liittym\u00E4n muutokset sis\u00E4llytettiin siirtoon. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=K\u00E4ytt\u00F6liittym\u00E4n muutokset on ajoitettu julkaisua varten. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informaatio +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Kaikki k\u00E4ytt\u00F6liitty\u00E4m muutokset on jo sis\u00E4llytetty siirtoon. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Virhe +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Virhe UI-muutosten k\u00E4yt\u00F6ss\u00E4 tai tallennuksessa. Poistu mukautustilasta ja k\u00E4ynnist\u00E4 sovellus uudelleen\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Palauta vakioversioon +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Haluatko hyl\u00E4t\u00E4 kaikki k\u00E4ytt\u00F6liittym\u00E4n muutokset ja palauttaa sovelluksen vakioversioon? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Haluatko hyl\u00E4t\u00E4 kaikki yksil\u00F6llist\u00E4miset ja palauttaaa sovelluksen? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=On tapahtunut tekninen virhe. Yrit\u00E4 my\u00F6hemmin uudelleen. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Syy\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Jos vahvistat, kaikki muutokset h\u00E4vi\u00E4v\u00E4t. Jos haluat tallentaa muutokset, sulje t\u00E4m\u00E4 ikkuna ja poistu k\u00E4ytt\u00F6liittym\u00E4n mukautustilasta. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=T\u00E4m\u00E4n ryhm\u00E4n otsikko sis\u00E4lt\u00E4\u00E4 lis\u00E4elementtej\u00E4. Jos poistat ryhm\u00E4n, ne poistetaan. Haluatko silti poistaa ryhm\u00E4n? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Muita {0} ei k\u00E4ytett\u00E4viss\u00E4 +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Tiedot +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Olet yksil\u00F6llist\u00E4nyt sovelluksen. UI-mukautustilassa sovellus ladataan uudelleen ilman yksil\u00F6llist\u00E4mist\u00E4. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=N\u00E4yt\u00E4 yksil\u00F6llinen versio +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Lataa sovellus uudelleen mukautuksesi muutosten n\u00E4ytt\u00E4miseksi. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=N\u00E4yt\u00E4 yksil\u00F6llinen versio +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Keskeyt\u00E4 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_fr.properties b/resources/sap/ui/rta/messagebundle_fr.properties new file mode 100644 index 0000000..f8c62be --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_fr.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adapter interface utilisateur +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personnaliser application +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Sauvegarder et terminer +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Cl\u00F4tur\u00E9 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Sauvegarder modifications +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Plus... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Supprimer +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Supprimer +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=ajouter {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Contenu +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Couper +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Ins\u00E9rer +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combiner +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Fractionner +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Cr\u00E9er {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nouveau {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Renommer +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Options +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Naviguer vers +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Supprimer +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Interrompre +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Cr\u00E9er zone personnalis\u00E9e, association ou logique +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u00E9tait {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Options +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Disponible \: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Partager +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=R\u00E9initialiser +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=R\u00E9p\u00E9ter +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publier +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=R\u00E9initialiser +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transporter +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Adaptation d'interface utilisateur +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigation +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Erreurs +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Les modifications de l'IU ne peuvent pas \u00EAtre rejet\u00E9es. R\u00E9essayez ult\u00E9rieurement ou contactez votre administrateur \: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Erreurs +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Les modifications de l'IU ne peuvent pas \u00EAtre transport\u00E9es. R\u00E9essayez ult\u00E9rieurement ou contactez votre administrateur \: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Les modifications de l'IU ne peuvent pas \u00EAtre publi\u00E9es. R\u00E9essayez ult\u00E9rieurement ou contactez votre administrateur \: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Les modifications de l'IU ont \u00E9t\u00E9 incluses dans le transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Vos modifications de l'IU sont planifi\u00E9es pour la publication. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Toutes les modifications de l'IU ont d\u00E9j\u00E0 \u00E9t\u00E9 incluses dans un transport. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Erreurs +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Erreur lors de l''application ou de la sauvegarde des modifications de l''IU. Quittez le mode d''ajustement et relancez l''application \: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=R\u00E9initaliser \u00E0 la version standard +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Voulez-vous rejeter toutes les modifications de l'IU et r\u00E9initaliser l'application \u00E0 sa version initiale ? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Voulez-vous rejeter toutes les personnalisations et r\u00E9initialiser l'application ? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Une erreur technique est survenue. R\u00E9essayez ult\u00E9rieurement. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Motif \: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Si vous confirmez, toutes les modifications seront perdues. Pour les sauvegarder, fermez le dialogue et quittez le mode d'agencement de l'IU. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=L'en-t\u00EAte de ce groupe contient des \u00E9l\u00E9ments suppl\u00E9mentaires. Ces derniers seront supprim\u00E9s si vous supprimez le groupe. Voulez-vous quand m\u00EAme supprimer le groupe ? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Aucune autre {0} disponible +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informations +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Vous avez personnalis\u00E9 l'application ; en mode d'ajustement de l'IU, l'application est recharg\u00E9e sans personnalisation. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Afficher la version personnalis\u00E9e +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Pour afficher les modifications apport\u00E9es \u00E0 votre personnalisation, rechargez l'application. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Afficher la version personnalis\u00E9e +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Interrompre +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_hi.properties b/resources/sap/ui/rta/messagebundle_hi.properties new file mode 100644 index 0000000..d6373ed --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_hi.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u090F\u0921\u093E\u092A\u094D\u091F\u0930 UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u0928\u093F\u091C\u0940\u0915\u0943\u0924 \u090F\u092A\u094D\u0932\u093F\u0915\u0947\u0936\u0928 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0938\u0939\u0947\u091C\u0947\u0902 \u0914\u0930 \u0928\u093F\u0915\u093E\u0932\u0947\u0902 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u0938\u0902\u092A\u0928\u094D\u0928 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928 \u0938\u0939\u0947\u091C\u0947\u0902 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u0905\u0927\u093F\u0915 ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0928\u093F\u0915\u093E\u0932\u0947\u0902 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0928\u093F\u0915\u093E\u0932\u0947\u0902 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} \u091C\u094B\u095C\u0947\u0902 +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0938\u093E\u092E\u0917\u094D\u0930\u0940 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0915\u093E\u091F\u0947\u0902 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u091A\u093F\u092A\u0915\u093E\u090F\u0902 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u0938\u0902\u092F\u0941\u0915\u094D\u0924 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0935\u093F\u092D\u093E\u091C\u0928 \u0915\u0930\u0947\u0902 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u092C\u0928\u093E\u090F\u0902 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u0928\u090F {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u0928\u093E\u092E \u092C\u0926\u0932\u0947\u0902 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u0938\u0947\u091F\u093F\u0902\u0917 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u0907\u0938\u0915\u0947 \u0932\u093F\u090F \u0928\u0947\u0935\u093F\u0917\u0947\u0936\u0928 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u0920\u0940\u0915 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0928\u093F\u0915\u093E\u0932\u0947\u0902 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0915\u0938\u094D\u091F\u092E \u092B\u093C\u0940\u0932\u094D\u0921, \u0938\u0902\u092C\u0902\u0927, \u092F\u093E \u0924\u0930\u094D\u0915 \u092C\u0928\u093E\u090F\u0902 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u0925\u093E {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u0938\u0947\u091F\u093F\u0902\u0917 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u0909\u092A\u0932\u092C\u094D\u0927 {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0938\u093E\u091D\u093E \u0915\u0930\u0947\u0902 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0915\u0930\u0947\u0902 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u092B\u093F\u0930 \u0938\u0947 \u0915\u0930\u0947\u0902 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u0938\u093E\u0930\u094D\u0935\u091C\u0928\u093F\u0915 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0930\u0940\u0938\u0947\u091F \u0915\u0930\u0947\u0902 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u092A\u0930\u093F\u0935\u0939\u0928 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI \u0905\u0928\u0941\u0915\u0942\u0932\u0928 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u0928\u0947\u0935\u093F\u0917\u0947\u0936\u0928 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u0924\u094D\u0930\u0941\u091F\u093F +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u0915\u094D\u0937\u092E\u093E \u0915\u0930\u0947\u0902, \u0905\u092A\u0928\u0947 UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0907\u0938 \u0938\u092E\u092F \u092A\u0930 \u0928\u093F\u0930\u0938\u094D\u0924 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E. \u0915\u0943\u092A\u092F\u093E \u0926\u0941\u092C\u093E\u0930\u093E \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902 \u092F\u093E \u0905\u092A\u0928\u0947 \u0935\u094D\u092F\u0935.\u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0915\u0930\u0947\u0902\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u0924\u094D\u0930\u0941\u091F\u093F +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u0915\u094D\u0937\u092E\u093E \u0915\u0930\u0947\u0902, \u0905\u092A\u0928\u0947 UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0907\u0938 \u0938\u092E\u092F \u092A\u0930 \u092A\u0930\u093F\u0935\u0939\u0928 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E. \u0915\u0943\u092A\u092F\u093E \u0926\u0941\u092C\u093E\u0930\u093E \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902 \u092F\u093E \u0905\u092A\u0928\u0947 \u0935\u094D\u092F\u0935.\u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0915\u0930\u0947\u0902\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u0915\u094D\u0937\u092E\u093E \u0915\u0930\u0947\u0902, \u0905\u092A\u0928\u0947 UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0907\u0938 \u0938\u092E\u092F \u092A\u0930 \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E. \u0915\u0943\u092A\u092F\u093E \u0926\u0941\u092C\u093E\u0930\u093E \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902 \u092F\u093E \u0905\u092A\u0928\u0947 \u0935\u094D\u092F\u0935.\u0938\u0947 \u0938\u0902\u092A\u0930\u094D\u0915 \u0915\u0930\u0947\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u0905\u092A\u0928\u0947 UI \u092A\u0930\u093F\u0935\u0939\u0928 \u092E\u0947\u0902 \u0936\u093E\u092E\u093F\u0932 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0925\u093E. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u0905\u092A\u0928\u0947 UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B \u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0936\u0947\u0921\u094D\u092F\u0942\u0932 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u091C\u093E\u0928\u0915\u093E\u0930\u0940 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u0938\u092D\u0940 UI \u092A\u0930\u093F\u0935\u0939\u0928 \u092E\u0947\u0902 \u092A\u0939\u0932\u0947 \u0938\u0947 \u0939\u0940\u0902 \u0936\u093E\u092E\u093F\u0932 \u0939\u0948 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u0924\u094D\u0930\u0941\u091F\u093F +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u0932\u093E\u0917\u0942 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0926\u094C\u0930\u093E\u0928 \u0924\u094D\u0930\u0941\u091F\u093F \u092F\u093E UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0938\u0939\u0947\u091C\u0947\u0902. \u0905\u0928\u0941\u0915\u0942\u0932\u0928 \u092E\u094B\u0921 \u0938\u0947 \u092C\u093E\u0939\u0930 \u0928\u093F\u0915\u0932\u0928\u0947 \u0914\u0930 \u090F\u092A\u094D\u0932\u093F\u0915\u0947\u0936\u0928 \u0915\u094B \u092A\u0941\u0928\u0903\u0906\u0930\u0902\u092D \u0915\u0930\u0947\u0902\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u092E\u093E\u0928\u0915 \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u0915\u094B \u0930\u0940\u0938\u0947\u091F \u0915\u0930\u0947\u0902 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0915\u094D\u092F\u093E \u0906\u092A \u0938\u092D\u0940 UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0928\u093F\u0930\u0938\u094D\u0924 \u0915\u0930\u0928\u093E \u0914\u0930 \u092E\u093E\u0928\u0915 \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u0915\u0947 \u0932\u093F\u090F \u090F\u092A \u0930\u0940\u0938\u0947\u091F \u0915\u0930\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0915\u094D\u092F\u093E \u0906\u092A \u0905\u092A\u0928\u0947 \u0938\u092D\u0940 \u0928\u093F\u091C\u0940\u0915\u0930\u0923 \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0928\u093F\u0930\u0938\u094D\u0924 \u0915\u0930\u0928\u093E \u0914\u0930? \u090F\u092A\u094D\u0932\u093F\u0915\u0947\u0936\u0928 \u0915\u094B \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u093F\u0924 \u0915\u0930\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902 +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u0915\u094D\u0937\u092E\u093E \u0915\u0930\u0947\u0902, \u0924\u0915\u0928\u0940\u0915\u0940 \u0924\u094D\u0930\u0941\u091F\u093F \u0909\u0924\u094D\u092A\u0928\u094D\u0928 \u0939\u0941\u0908. \u0915\u0943\u092A\u092F\u093E \u0926\u0941\u092C\u093E\u0930\u093E \u0915\u094B\u0936\u093F\u0936 \u0915\u0930\u0947\u0902. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u0915\u093E\u0930\u0923\u0903 {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u092F\u0926\u093F \u0906\u092A \u0907\u0938\u0915\u0940 \u092A\u0941\u0937\u094D\u091F\u093F \u0915\u0930\u0924\u0947 \u0939\u0948\u0902, \u0938\u092D\u0940 \u0905\u092A\u0928\u093E UI \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928 \u0916\u094B \u091C\u093E\u090F\u0917\u093E. \u0909\u0938\u0947 \u0938\u0939\u0947\u091C\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F, \u0907\u0938 \u0921\u093E\u090F\u0932\u0949\u0917 \u092C\u0949\u0915\u094D\u0938 \u0915\u094B \u092C\u0902\u0926 \u0915\u0930\u0947\u0902 \u0914\u0930 UI \u0905\u0928\u0941\u0915\u0942\u0932\u0928 \u092E\u094B\u0921 \u092E\u094C\u091C\u0942\u0926 \u0939\u0948. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0907\u0938 \u0938\u092E\u0942\u0939 \u0915\u0947 \u0936\u0940\u0930\u094D\u0937 \u0932\u0947\u0916 \u092E\u0947\u0902 \u0905\u0924\u093F\u0930\u093F\u0915\u094D\u0924 \u0924\u0924\u094D\u0935 \u0936\u093E\u092E\u093F\u0932 \u0939\u0948\u0902. \u092F\u0926\u093F \u0906\u092A \u0938\u092E\u0942\u0939 \u0915\u094B \u0928\u093F\u0915\u0932\u0924\u0947 \u0939\u0948\u0902, \u0924\u094B \u0935\u0947 \u0917\u0941\u092E \u0939\u094B \u091C\u093E\u090F\u0902\u0917\u0947. \u0915\u094D\u092F\u093E \u0906\u092A \u092B\u093F\u0930 \u092D\u0940 \u0938\u092E\u0942\u0939 \u0928\u093F\u0915\u093E\u0932\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u0915\u094B\u0908 \u0905\u0927\u093F\u0915 {0} \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u091C\u093E\u0928\u0915\u093E\u0930\u0940 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u0906\u092A\u0928\u0947 \u090F\u092A\u094D\u0932\u093F\u0915\u0947\u0936\u0928 \u0915\u094B \u0928\u093F\u091C\u0940\u0915\u0943\u0924 \u0915\u093F\u092F\u093E \u0939\u0948. UI \u0905\u0928\u0941\u0915\u0942\u0932\u0928 \u092E\u094B\u0921 \u092E\u0947\u0902, \u090F\u092A\u094D\u0932\u093F\u0915\u0947\u0936\u0928 \u0906\u092A\u0915\u0947 \u0928\u093F\u091C\u0940\u0915\u0930\u0923 \u0938\u0947\u091F\u093F\u0902\u0917 \u0915\u0947 \u092C\u0940\u0928\u093E \u092A\u0941\u0928\u0903\u0932\u094B\u0921 \u0939\u094B\u0917\u093E. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u0928\u093F\u091C\u0940\u0915\u0943\u0924 \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u092A\u094D\u0930\u0926\u0930\u094D\u0936\u093F\u0924 \u0915\u0930\u0947\u0902 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u092F\u0926\u093F \u0906\u092A \u0905\u092A\u0928\u0947 \u0928\u093F\u091C\u0940\u0915\u0943\u0924 \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u0928\u094B\u0902 \u0915\u094B \u0926\u0941\u092C\u093E\u0930\u093E \u0926\u0947\u0916\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902, \u0924\u094B \u0906\u092A \u090F\u092A\u094D\u0932\u093F\u0915\u0947\u0936\u0928 \u092A\u0941\u0928\u0903\u0932\u094B\u0921 \u0915\u0930\u0947\u0902 +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u0928\u093F\u091C\u0940\u0915\u0943\u0924 \u0938\u0902\u0938\u094D\u0915\u0930\u0923 \u092A\u094D\u0930\u0926\u0930\u094D\u0936\u093F\u0924 \u0915\u0930\u0947\u0902 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_hr.properties b/resources/sap/ui/rta/messagebundle_hr.properties new file mode 100644 index 0000000..38f72c2 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_hr.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Prilagodi korisni\u010Dko su\u010Delje +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personaliziraj aplikaciju +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Snimi i iza\u0111i +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Izvr\u0161eno +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Snimi promjene +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Vi\u0161e... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Ukloni +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Ukloni +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Dodaj {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Sadr\u017Eaj +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Izre\u017Ei +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Zalijepi +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombiniraj +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Podijeli +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Kreiraj {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Novo {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Preimenuj +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Postave +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Usmjeri na +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Ukloni +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Otka\u017Ei +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Kreiraj korisni\u010Dki definirano polje ili logiku +#XMIT: Label for the original name of a renamed label +LBL_FREP=bilo je {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Postave +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Raspolo\u017Eivo {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Otpusti +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Poni\u0161ti +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Ponovi radnju +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Objavi +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Ponovno postavi +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Prilagodba korisni\u010Dkog su\u010Delja +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Usmjeravanje +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Gre\u0161ka +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Na\u017Ealost, va\u0161e promjene korisni\u010Dkog su\u010Delja ne mogu se sada odbaciti. Molimo, poku\u0161ajte ponovno kasnije ili kontaktirajte administratora\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Gre\u0161ka +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Na\u017Ealost, va\u0161e promjene korisni\u010Dkog su\u010Delja ne mogu se sada transportirati. Molimo, poku\u0161ajte ponovno kasnije ili kontaktirajte administratora\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Na\u017Ealost, va\u0161e promjene korisni\u010Dkog su\u010Delja ne mogu se sada objaviti. Molimo, poku\u0161ajte ponovno kasnije ili kontaktirajte administratora\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Promjene korisni\u010Dkog su\u010Delja uklju\u010Dene su u transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Va\u0161e promjene korisni\u010Dkog su\u010Delja planirane su za objavljivanje +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informacije +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Sve promjene korisni\u010Dkog su\u010Delja ve\u0107 su uklju\u010Dene u transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Gre\u0161ka +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Gre\u0161ka tijekom primjene ili snimanja promjena korisni\u010Dkog su\u010Delja. Iza\u0111i iz moda uskla\u0111enja i ponovno pokreni aplikaciju\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Ponovno postavi na standardnu verziju +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u017Delite li odbaciti sva uskla\u0111enja korisni\u010Dkog su\u010Delja i ponovno postaviti aplikaciju na standardnu verziju? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u017Delite li odbaciti sve svoje promjene personalizacije i ponovno postaviti aplikaciju? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Na\u017Ealost se pojavila tehni\u010Dka gre\u0161ka. Molimo, poku\u0161ajte ponovno kasnije. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Razlog\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Ako potvrdite, sve promjene korisni\u010Dkog su\u010Delja izgubit \u0107e se. Kako biste ih snimili zatvorite ovaj okvir dijaloga i iza\u0111ite iz moda uskla\u0111enja korisni\u010Dkog su\u010Delja. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Zaglavlje ove grupe sadr\u017Ei dodatne elemente. Ako uklonite grupu, elementi \u0107e se izgubiti. \u017Delite li ipak ukloniti grupu? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Nema vi\u0161e raspolo\u017Eivih {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informacije +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Personalizirali ste aplikaciju. U modu uskla\u0111enja korisni\u010Dkog su\u010Delja aplikacija \u0107e se ponovo u\u010Ditati bez va\u0161ih postava personalizacije. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Prika\u017Ei personaliziranu verziju +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Ako \u017Eelite ponovo prikazati svoje promjene personalizacije, mo\u017Eete ponovo u\u010Ditati aplikaciju +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Prika\u017Ei personaliziranu verziju +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Otka\u017Ei +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_hu.properties b/resources/sap/ui/rta/messagebundle_hu.properties new file mode 100644 index 0000000..130ea89 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_hu.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Fel\u00FClet adapt\u00E1l\u00E1sa +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Alkalmaz\u00E1s szem\u00E9lyre szab\u00E1sa +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Ment\u00E9s \u00E9s kil\u00E9p\u00E9s +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=K\u00E9sz +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=M\u00F3dos\u00EDt\u00E1sok ment\u00E9se +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Egyebek... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Elt\u00E1vol\u00EDt\u00E1s +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Elt\u00E1vol\u00EDt\u00E1s +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} hozz\u00E1ad\u00E1sa +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Tartalom +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Kiv\u00E1g\u00E1s +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Besz\u00FAr\u00E1s +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombin\u00E1l\u00E1s +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Feloszt\u00E1s +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} l\u00E9trehoz\u00E1sa +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u00DAj {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u00C1tnevez\u00E9s +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Be\u00E1ll\u00EDt\u00E1sok +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navig\u00E1l\u00E1s +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Elt\u00E1vol\u00EDt\u00E1s +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Megszak\u00EDt\u00E1s +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Felhaszn\u00E1l\u00F3i mez\u0151, t\u00E1rs\u00EDt\u00E1s vagy logika l\u00E9trehoz\u00E1sa +#XMIT: Label for the original name of a renamed label +LBL_FREP=volt {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Be\u00E1ll\u00EDt\u00E1sok +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=El\u00E9rhet\u0151\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Enged\u00E9lyez\u00E9s +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Vissza\u00E1ll\u00EDt\u00E1s +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Ism\u00E9tl\u00E9s +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publik\u00E1l\u00E1s +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Vissza\u00E1ll\u00EDt\u00E1s +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transzport\u00E1l\u00E1s +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Fel\u00FClet adapt\u00E1l\u00E1sa +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navig\u00E1l\u00E1s +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Hiba +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Az UI-m\u00F3dos\u00EDt\u00E1sai nem vethet\u0151k el jelenleg. K\u00E9rj\u00FCk, pr\u00F3b\u00E1lja meg k\u00E9s\u0151bb \u00FAjra vagy forduljon az adminisztr\u00E1torhoz\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Hiba +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Az UI-m\u00F3dos\u00EDt\u00E1sai nem transzport\u00E1lhat\u00F3k jelenleg. K\u00E9rj\u00FCk, pr\u00F3b\u00E1lja meg k\u00E9s\u0151bb \u00FAjra vagy forduljon az adminisztr\u00E1torhoz\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Az UI-m\u00F3dos\u00EDt\u00E1sai nem publik\u00E1lhat\u00F3k jelenleg. K\u00E9rj\u00FCk, pr\u00F3b\u00E1lja meg k\u00E9s\u0151bb \u00FAjra vagy forduljon az adminisztr\u00E1torhoz\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=A UI-illeszt\u00E9sek fel lettek v\u00E9ve a transzportba. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Az UI-m\u00F3dos\u00EDt\u00E1sai \u00FCtemezve vannak publik\u00E1l\u00E1sra. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Inform\u00E1ci\u00F3 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=M\u00E1r minden UI-illeszt\u00E9s fel van v\u00E9ve egy transzportba +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Hiba +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Hiba a UI-m\u00F3dos\u00EDt\u00E1sok alkalmaz\u00E1sakor vagy ment\u00E9sekor. L\u00E9pjen ki kiigaz\u00EDt\u00E1si m\u00F3db\u00F3l, \u00E9s ind\u00EDtsa \u00FAjra az alkalmaz\u00E1st\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Standard verzi\u00F3 vissza\u00E1ll\u00EDt\u00E1sa +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Elveti az \u00F6sszes UI-m\u00F3dos\u00EDt\u00E1st, \u00E9s vissza\u00E1ll\u00EDtja az alkalmaz\u00E1st a standard verzi\u00F3ra? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Elveti a testreszab\u00E1sokat, \u00E9s vissza\u00E1ll\u00EDtja az alkalmaz\u00E1st? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=M\u0171szaki hiba t\u00F6rt\u00E9nt. Pr\u00F3b\u00E1lja \u00FAjra k\u00E9s\u0151bb. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Ok\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=J\u00F3v\u00E1hagy\u00E1sa eset\u00E9n az \u00F6sszes m\u00F3dos\u00EDt\u00E1s elveszik. Ahhoz, hogy mentse ezeket, z\u00E1rja be ezt a dial\u00F3gust \u00E9s l\u00E9pjen ki az UI-illeszt\u00E9si m\u00F3duszb\u00F3l. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=A csoport fejl\u00E9ce tov\u00E1bbi elemeket tartalmaz. Ezek t\u00F6rl\u00E9sre ker\u00FClnek, ha elt\u00E1vol\u00EDtja a csoportot. Ennek ellen\u00E9re elt\u00E1vol\u00EDtja a csoportot? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Nincs t\u00F6bb el\u00E9rhet\u0151 {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Inform\u00E1ci\u00F3k +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Testreszabta az alkalmaz\u00E1st. UI-adapt\u00E1l\u00E1si m\u00F3dban az alkalmaz\u00E1s testreszab\u00E1si be\u00E1ll\u00EDt\u00E1sok n\u00E9lk\u00FCl t\u00F6lt\u0151dik \u00FAjra. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Testreszabott verzi\u00F3 megjelen\u00EDt\u00E9se +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=T\u00F6ltse \u00FAjra az alkalmaz\u00E1st a testreszab\u00E1si m\u00F3dos\u00EDt\u00E1sok megjelen\u00EDt\u00E9s\u00E9hez. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Testreszabott verzi\u00F3 megjelen\u00EDt\u00E9se +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Megszak\u00EDt\u00E1s +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_it.properties b/resources/sap/ui/rta/messagebundle_it.properties new file mode 100644 index 0000000..ce635cf --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_it.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adatta UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizza app +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Salva & termina +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Completato +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Salva modifiche +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Altro... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Rimuovi +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Rimuovi +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Aggiungi {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Contenuto +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Taglia +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Incolla +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combina +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Suddividi +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Crea {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nuovo {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Ridenomina +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Impostazioni +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigare a +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Rimuovi +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Annulla +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Crea campo definito dall'utente, associazione o logica +#XMIT: Label for the original name of a renamed label +LBL_FREP=era {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Impostazioni +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Disponibili\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Rilascia +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Resetta +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Ripeti +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Pubblica +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Resetta +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Trasporta +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Adattamento UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigazione +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Errore +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Impossibile scartare le modifiche UI. Riprova pi\u00F9 tardi o rivolgiti all'amministratore\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Errore +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Impossibile trasportare le modifiche UI. Riprova pi\u00F9 tardi o rivolgiti all'amministratore\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Impossibile pubblicare le modifiche UI. Riprova pi\u00F9 tardi o rivolgiti all'amministratore\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Le modifiche UI sono state rilevate nel trasporto. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Le modifiche UI sono state pianificate per la pubblicazione. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informazioni +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Tutte le modifiche UI sono state gi\u00E0 rilevate in un trasporto. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Errore +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Errore durante l''applicazione o il salvataggio delle modifiche UI. Esci dalla modalit\u00E0 di adattamento e riavvia l''app\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Resetta alla versione standard +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Scartare tutte le modifiche UI e resettare l'app alla versione standard? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Scartare tutte le personalizzazioni e resettare l'app? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Si \u00E8 verificato un errore tecnico. Riprova pi\u00F9 tardi. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Causa\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Confermando, tutte le modifiche andranno perse. Per salvarle chiudi questa finestra di dialogo e esci dalla modalit\u00E0 di adattamento UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=La testata di questo gruppo contiene elementi supplementari. Se rimuovi il gruppo, verranno eliminati. Rimuovere ugualmente il gruppo? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Non sono disponibili ulteriori {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informazioni +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=L'app \u00E8 stata personalizzata. Nella sessione di adeguamento UI l'app viene ricaricata senza personalizzazione. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Visualizzare versione personalizzata +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Ricarica l'app per visualizzare le modifiche alla tua personalizzazione. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Visualizza la versione personalizzata +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Interrompi +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_iw.properties b/resources/sap/ui/rta/messagebundle_iw.properties new file mode 100644 index 0000000..0ef4227 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_iw.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u05D4\u05EA\u05D0\u05DD \u05DE\u05DE\u05E9\u05E7 \u05DE\u05E9\u05EA\u05DE\u05E9 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u05D4\u05EA\u05D0\u05DD \u05D0\u05D9\u05E9\u05D9\u05EA \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u05E9\u05DE\u05D5\u05E8 \u05D5\u05E6\u05D0 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u05D1\u05D5\u05E6\u05E2 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u05E9\u05DE\u05D5\u05E8 \u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u05E2\u05D5\u05D3... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u05D4\u05E1\u05E8 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u05D4\u05E1\u05E8 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u05D4\u05D5\u05E1\u05E3 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u05EA\u05D5\u05DB\u05DF +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u05D2\u05D6\u05D5\u05E8 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u05D4\u05D3\u05D1\u05E7 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u05E9\u05DC\u05D1 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u05E4\u05E6\u05DC +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u05E6\u05D5\u05E8 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\ {0} \u05D7\u05D3\u05E9 +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u05E9\u05E0\u05D4 \u05E9\u05DD +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u05E0\u05D5\u05D5\u05D8 \u05D0\u05DC +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u05D4\u05E1\u05E8 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u05D1\u05D8\u05DC +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u05E6\u05D5\u05E8 \u05E9\u05D3\u05D4 \u05DE\u05D5\u05EA\u05D0\u05DD, \u05E9\u05D9\u05D5\u05DA \u05D0\u05D5 \u05DC\u05D5\u05D2\u05D9\u05E7\u05D4 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u05D4\u05D9\u05D4 {0}. +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS={0} \u05D6\u05DE\u05D9\u05E0\u05D9\u05DD +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u05E9\u05EA\u05E3 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u05D1\u05D8\u05DC \u05E4\u05E2\u05D5\u05DC\u05D4 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u05D1\u05E6\u05E2 \u05DE\u05D7\u05D3\u05E9 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u05E4\u05E8\u05E1\u05DD +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u05D0\u05E4\u05E1 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u05D4\u05E2\u05D1\u05E8\u05D4 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u05D4\u05EA\u05D0\u05DE\u05EA \u05DE\u05DE\u05E9\u05E7 \u05DE\u05E9\u05EA\u05DE\u05E9 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u05E0\u05D9\u05D5\u05D5\u05D8 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u05E9\u05D2\u05D9\u05D0\u05D4 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u05D0\u05D9\u05DF \u05D0\u05E4\u05E9\u05E8\u05D5\u05EA \u05DC\u05D4\u05E1\u05D9\u05E8 \u05DB\u05E2\u05EA \u05D0\u05EA \u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05D1-UI. \u05E0\u05E1\u05D4 \u05E9\u05D5\u05D1 \u05DE\u05D0\u05D5\u05D7\u05E8 \u05D9\u05D5\u05EA\u05E8 \u05D0\u05D5 \u05E6\u05D5\u05E8 \u05E7\u05E9\u05E8 \u05E2\u05DD \u05D4\u05DE\u05E0\u05D4\u05DC\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u05E9\u05D2\u05D9\u05D0\u05D4 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u05D0\u05D9\u05DF \u05D0\u05E4\u05E9\u05E8\u05D5\u05EA \u05DC\u05D4\u05E2\u05D1\u05D9\u05E8 \u05DB\u05E2\u05EA \u05D0\u05EA \u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05D1-UI. \u05E0\u05E1\u05D4 \u05E9\u05D5\u05D1 \u05DE\u05D0\u05D5\u05D7\u05E8 \u05D9\u05D5\u05EA\u05E8 \u05D0\u05D5 \u05E6\u05D5\u05E8 \u05E7\u05E9\u05E8 \u05E2\u05DD \u05D4\u05DE\u05E0\u05D4\u05DC\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u05D0\u05D9\u05DF \u05D0\u05E4\u05E9\u05E8\u05D5\u05EA \u05DC\u05E4\u05E8\u05E1\u05DD \u05DB\u05E2\u05EA \u05D0\u05EA \u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05D1-UI. \u05E0\u05E1\u05D4 \u05E9\u05D5\u05D1 \u05DE\u05D0\u05D5\u05D7\u05E8 \u05D9\u05D5\u05EA\u05E8 \u05D0\u05D5 \u05E6\u05D5\u05E8 \u05E7\u05E9\u05E8 \u05E2\u05DD \u05D4\u05DE\u05E0\u05D4\u05DC\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05D1-UI \u05E0\u05DB\u05DC\u05DC\u05D5 \u05D1\u05D8\u05E8\u05E0\u05E1\u05E4\u05D5\u05E8\u05D8. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05D1-UI \u05EA\u05D5\u05D6\u05DE\u05E0\u05D5 \u05DC\u05E4\u05E8\u05E1\u05D5\u05DD. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u05DE\u05D9\u05D3\u05E2 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u05DB\u05DC \u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05D1-UI \u05DB\u05D1\u05E8 \u05DB\u05DC\u05D5\u05DC\u05D9\u05DD \u05D1\u05D8\u05E8\u05E0\u05E1\u05E4\u05D5\u05E8\u05D8 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u05E9\u05D2\u05D9\u05D0\u05D4 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u05E9\u05D2\u05D9\u05D0\u05D4 \u05D1\u05E2\u05EA \u05D4\u05D7\u05DC\u05D4 \u05D0\u05D5 \u05E9\u05DE\u05D9\u05E8\u05D4 \u05E9\u05DC \u05E9\u05D9\u05E0\u05D5\u05D9\u05D9 UI. \u05E6\u05D0 \u05DE\u05DE\u05E6\u05D1 \u05D4\u05EA\u05D0\u05DE\u05D4 \u05D5\u05D0\u05EA\u05D7\u05DC \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u05D0\u05E4\u05E1 \u05DC\u05D2\u05E8\u05E1\u05D4 \u05EA\u05E7\u05E0\u05D9\u05EA +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u05D4\u05D0\u05DD \u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05D4\u05E1\u05D9\u05E8 \u05D0\u05EA \u05DB\u05DC \u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05D1-UI \u05D5\u05DC\u05D0\u05E4\u05E1 \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD \u05DC\u05D2\u05E8\u05E1\u05D4 \u05D4\u05EA\u05E7\u05E0\u05D9\u05EA? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u05D4\u05D0\u05DD \u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05D1\u05D8\u05DC \u05D0\u05EA \u05DB\u05DC \u05E9\u05D9\u05E0\u05D5\u05D9\u05D9 \u05D4\u05D4\u05EA\u05D0\u05DE\u05D4 \u05D4\u05D0\u05D9\u05E9\u05D9\u05EA \u05D5\u05DC\u05D0\u05E4\u05E1 \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u05D0\u05D9\u05E8\u05E2\u05D4 \u05E9\u05D2\u05D9\u05D0\u05D4 \u05D8\u05DB\u05E0\u05D9\u05EA. \u05E0\u05E1\u05D4 \u05E9\u05D5\u05D1 \u05DE\u05D0\u05D5\u05D7\u05E8 \u05D9\u05D5\u05EA\u05E8. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u05E1\u05D9\u05D1\u05D4\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u05D0\u05DD \u05EA\u05D0\u05E9\u05E8, \u05DB\u05DC \u05D4\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05D1-UI \u05D9\u05D0\u05D1\u05D3\u05D5. \u05DB\u05D3\u05D9 \u05DC\u05E9\u05DE\u05D5\u05E8 \u05D0\u05D5\u05EA\u05DD, \u05E1\u05D2\u05D5\u05E8 \u05D0\u05EA \u05EA\u05D9\u05D1\u05EA \u05D4\u05D3\u05D9\u05D0\u05DC\u05D5\u05D2 \u05D4\u05D6\u05D5 \u05D5\u05E6\u05D0 \u05DE\u05DE\u05E6\u05D1 \u05D4\u05EA\u05D0\u05DE\u05D4 \u05E9\u05DC \u05D4-UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u05DB\u05D5\u05EA\u05E8\u05EA \u05E7\u05D1\u05D5\u05E6\u05D4 \u05D6\u05D5 \u05DE\u05DB\u05D9\u05DC\u05D4 \u05D0\u05DC\u05DE\u05E0\u05D8\u05D9\u05DD \u05E0\u05D5\u05E1\u05E4\u05D9\u05DD. \u05D0\u05DD \u05EA\u05E1\u05D9\u05E8 \u05D0\u05EA \u05D4\u05E7\u05D1\u05D5\u05E6\u05D4, \u05D4\u05DD \u05D9\u05D0\u05D1\u05D3\u05D5. \u05D4\u05D0\u05DD \u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05D4\u05E1\u05D9\u05E8 \u05D0\u05EA \u05D4\u05E7\u05D1\u05D5\u05E6\u05D4 \u05D1\u05DB\u05DC \u05D6\u05D0\u05EA? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS={0} \u05DC\u05D0 \u05D6\u05DE\u05D9\u05E0\u05D9\u05DD \u05E2\u05D5\u05D3 +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u05DE\u05D9\u05D3\u05E2 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u05D4\u05EA\u05D0\u05DE\u05EA \u05D0\u05D9\u05E9\u05D9\u05EA \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD. \u05D1\u05DE\u05E6\u05D1 \u05D4\u05EA\u05D0\u05DE\u05EA \u05DE\u05DE\u05E9\u05E7 \u05DE\u05E9\u05EA\u05DE\u05E9, \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD \u05D9\u05D9\u05D8\u05E2\u05DF \u05DE\u05D7\u05D3\u05E9 \u05D1\u05DC\u05D9 \u05D4\u05D2\u05D3\u05E8\u05D5\u05EA \u05D4\u05D4\u05EA\u05D0\u05DE\u05D4 \u05D4\u05D0\u05D9\u05E9\u05D9\u05EA \u05E9\u05DC\u05DA. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u05D4\u05E6\u05D2 \u05D2\u05E8\u05E1\u05D4 \u05DE\u05D5\u05EA\u05D0\u05DE\u05EA \u05D0\u05D9\u05E9\u05D9\u05EA +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u05D0\u05DD \u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05D4\u05E6\u05D9\u05D2 \u05D0\u05EA \u05E9\u05D9\u05E0\u05D5\u05D9\u05D9 \u05D4\u05D4\u05EA\u05D0\u05DE\u05D4 \u05D4\u05D0\u05D9\u05E9\u05D9\u05EA \u05E9\u05D1\u05D9\u05E6\u05E2\u05EA \u05E9\u05D5\u05D1, \u05EA\u05D5\u05DB\u05DC \u05DC\u05D8\u05E2\u05D5\u05DF \u05DE\u05D7\u05D3\u05E9 \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u05D4\u05E6\u05D2 \u05D2\u05E8\u05E1\u05D4 \u05DE\u05D5\u05EA\u05D0\u05DE\u05EA \u05D0\u05D9\u05E9\u05D9\u05EA +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u05D1\u05D8\u05DC +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_ja.properties b/resources/sap/ui/rta/messagebundle_ja.properties new file mode 100644 index 0000000..f466007 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ja.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=UI \u9069\u5FDC +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u30A2\u30D7\u30EA\u306E\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u4FDD\u5B58\u3057\u3066\u7D42\u4E86 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u51E6\u7406\u6E08 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u5909\u66F4\u3092\u4FDD\u5B58 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u7D9A\u304D... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u524A\u9664 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u524A\u9664 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} \u8FFD\u52A0 +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u30B3\u30F3\u30C6\u30F3\u30C4 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u30AB\u30C3\u30C8 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u30DA\u30FC\u30B9\u30C8 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u7D50\u5408 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u5206\u5272 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} \u306E\u767B\u9332 +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u65B0\u898F {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u540D\u79F0\u5909\u66F4 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u8A2D\u5B9A +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u30CA\u30D3\u30B2\u30FC\u30C8\u5148 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u524A\u9664 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u4E2D\u6B62 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u30AB\u30B9\u30BF\u30E0\u9805\u76EE\u3001\u30A2\u30BD\u30B7\u30A8\u30FC\u30B7\u30E7\u30F3\u307E\u305F\u306F\u30ED\u30B8\u30C3\u30AF\u3092\u767B\u9332 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u306F {0} \u3067\u3057\u305F +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u8A2D\u5B9A +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u5229\u7528\u53EF\u80FD {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u5171\u6709 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u5143\u306B\u623B\u3059 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u3084\u308A\u76F4\u3057 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u516C\u958B +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u30EA\u30BB\u30C3\u30C8 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u79FB\u9001 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI \u9069\u5FDC +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u30A8\u30E9\u30FC +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u5B9F\u884C\u3057\u305F UI \u5909\u66F4\u3092\u3053\u306E\u6642\u70B9\u3067\u306F\u7834\u68C4\u3067\u304D\u307E\u305B\u3093\u3002\u5F8C\u3067\u518D\u8A66\u884C\u3059\u308B\u304B\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u30A8\u30E9\u30FC +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u5B9F\u884C\u3057\u305F UI \u5909\u66F4\u3092\u3053\u306E\u6642\u70B9\u3067\u306F\u79FB\u9001\u3067\u304D\u307E\u305B\u3093\u3002\u5F8C\u3067\u518D\u8A66\u884C\u3059\u308B\u304B\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u5B9F\u884C\u3057\u305F UI \u5909\u66F4\u3092\u3053\u306E\u6642\u70B9\u3067\u306F\u516C\u958B\u3067\u304D\u307E\u305B\u3093\u3002\u5F8C\u3067\u518D\u8A66\u884C\u3059\u308B\u304B\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u5B9F\u884C\u3057\u305F UI \u5909\u66F4\u304C\u79FB\u9001\u306B\u7D44\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F\u3002 +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u5B9F\u884C\u3057\u305F UI \u5909\u66F4\u304C\u516C\u958B\u5411\u3051\u306B\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u307E\u3057\u305F\u3002 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u60C5\u5831 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u3059\u3079\u3066\u306E UI \u5909\u66F4\u304C\u3059\u3067\u306B\u79FB\u9001\u306B\u7D44\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u3059\u3002 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u30A8\u30E9\u30FC +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=UI \u5909\u66F4\u306E\u9069\u7528\u6642\u307E\u305F\u306F\u4FDD\u5B58\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 \u9069\u5FDC\u30E2\u30FC\u30C9\u3092\u7D42\u4E86\u3057\u3001\u30A2\u30D7\u30EA\u3092\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002 {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u6A19\u6E96\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u30EA\u30BB\u30C3\u30C8 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u3059\u3079\u3066\u306E UI \u5909\u66F4\u3092\u7834\u68C4\u3057\u3001\u30A2\u30D7\u30EA\u3092\u6A19\u6E96\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3059\u304B\u3002 +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u5909\u66F4\u3092\u3059\u3079\u3066\u7834\u68C4\u3057\u30A2\u30D7\u30EA\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3059\u304B\u3002 +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u6280\u8853\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u5F8C\u3067\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002 +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u7406\u7531\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u78BA\u8A8D\u3059\u308B\u3068\u5B9F\u884C\u3057\u305F UI \u5909\u66F4\u306F\u3059\u3079\u3066\u5931\u308F\u308C\u307E\u3059\u3002\u4FDD\u5B58\u3059\u308B\u306B\u306F\u3001\u3053\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u30DC\u30C3\u30AF\u30B9\u3092\u9589\u3058\u3066 UI \u9069\u5FDC\u30E2\u30FC\u30C9\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002 +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u30D8\u30C3\u30C0\u306B\u306F\u3001\u8FFD\u52A0\u306E\u30A8\u30EC\u30E1\u30F3\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 \u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664\u3059\u308B\u3068\u3001\u305D\u308C\u3089\u306E\u30A8\u30EC\u30E1\u30F3\u30C8\u306F\u524A\u9664\u3055\u308C\u307E\u3059\u3002 \u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664\u3057\u307E\u3059\u304B\u3002 +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS={0} \u3092\u3053\u308C\u4EE5\u4E0A\u5229\u7528\u3067\u304D\u307E\u305B\u3093 +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u60C5\u5831 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u3053\u306E\u30A2\u30D7\u30EA\u3092\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BA\u3057\u307E\u3057\u305F\u3002UI \u9069\u5FDC\u30E2\u30FC\u30C9\u3067\u306F\u3001\u3053\u306E\u30A2\u30D7\u30EA\u306F\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u8A2D\u5B9A\u306A\u3057\u3067\u30EA\u30ED\u30FC\u30C9\u3055\u308C\u307E\u3059\u3002 +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BA\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u8868\u793A +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u5909\u66F4\u3092\u518D\u8868\u793A\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u30A2\u30D7\u30EA\u3092\u30EA\u30ED\u30FC\u30C9\u3067\u304D\u307E\u3059 +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BA\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u8868\u793A +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u4E2D\u6B62 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_kk.properties b/resources/sap/ui/rta/messagebundle_kk.properties new file mode 100644 index 0000000..af448e7 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_kk.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=UI \u0431\u0435\u0439\u0456\u043C\u0434\u0435\u0443 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u049A\u043E\u043B\u0434\u0430\u043D\u0431\u0430\u043D\u044B \u049B\u0430\u043B\u0430\u0443 \u0431\u043E\u0439\u044B\u043D\u0448\u0430 \u0440\u0435\u0442\u0442\u0435\u0443 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0421\u0430\u049B\u0442\u0430\u0443 \u0436\u04D9\u043D\u0435 \u0448\u044B\u0493\u0443 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u041E\u0440\u044B\u043D\u0434\u0430\u043B\u0434\u044B +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u04E8\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0434\u0456 \u0441\u0430\u049B\u0442\u0430\u0443 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u049A\u043E\u0441\u044B\u043C\u0448\u0430... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0416\u043E\u044E +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0416\u043E\u044E +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} \u049B\u043E\u0441\u0443 +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u041C\u0430\u0437\u043C\u04B1\u043D +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u049A\u0438\u044B\u043F \u0430\u043B\u0443 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u049A\u043E\u044E +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u0411\u0456\u0440\u0456\u043A\u0442\u0456\u0440\u0443 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0411\u04E9\u043B\u0443 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} \u0436\u0430\u0441\u0430\u0443 +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u0416\u0430\u04A3\u0430 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u0410\u0442\u044B\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043B\u0435\u0440 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u041A\u0435\u043B\u0435\u0441\u0456\u0433\u0435 \u04E9\u0442\u0443\: +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0416\u043E\u044E +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0411\u043E\u043B\u0434\u044B\u0440\u043C\u0430\u0443 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u041F\u0430\u0439\u0434\u0430\u043B\u0430\u043D\u0443\u0448\u044B \u04E9\u0440\u0456\u0441\u0456\u043D, \u049B\u0430\u0443\u044B\u043C\u0434\u0430\u0441\u0442\u044B\u049B\u0442\u044B \u043D\u0435 \u043B\u043E\u0433\u0438\u043A\u0430\u043D\u044B \u0436\u0430\u0441\u0430\u0443 +#XMIT: Label for the original name of a renamed label +LBL_FREP={0} \u0431\u043E\u043B\u0493\u0430\u043D +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043B\u0435\u0440 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u049A\u043E\u043B \u0436\u0435\u0442\u0456\u043C\u0434\u0456 {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0411\u04E9\u043B\u0456\u0441\u0443 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u0411\u043E\u043B\u0434\u044B\u0440\u043C\u0430\u0443 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u049A\u0430\u0439\u0442\u0430 \u0456\u0441\u0442\u0435\u0443 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u0416\u0430\u0440\u0438\u044F\u043B\u0430\u0443 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0411\u0430\u0441\u0442\u0430\u043F\u049B\u044B \u049B\u0430\u043B\u043F\u044B\u043D\u0430 \u043A\u0435\u043B\u0442\u0456\u0440\u0443 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u0422\u0430\u0441\u044B\u043C\u0430\u043B\u0434\u0430\u0443 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI \u0431\u0435\u0439\u0456\u043C\u0434\u0435\u0443\u0456 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u049A\u0430\u0442\u0435 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437\u0434\u0456 \u0431\u04B1\u043B \u0436\u043E\u043B\u044B \u049B\u0430\u043B\u043F\u044B\u043D\u0430 \u043A\u0435\u043B\u0442\u0456\u0440\u0443 \u043C\u04AF\u043C\u043A\u0456\u043D \u0435\u043C\u0435\u0441. \u04D8\u0440\u0435\u043A\u0435\u0442\u0442\u0456 \u043A\u0435\u0439\u0456\u043D \u049B\u0430\u0439\u0442\u0430\u043B\u0430\u04A3\u044B\u0437 \u043D\u0435\u043C\u0435\u0441\u0435 \u04D9\u043A\u0456\u043C\u0448\u0456\u04A3\u0456\u0437\u0433\u0435 \u0445\u0430\u0431\u0430\u0440\u043B\u0430\u0441\u044B\u04A3\u044B\u0437\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u049A\u0430\u0442\u0435 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437\u0434\u0456 \u0431\u04B1\u043B \u0436\u043E\u043B\u044B \u0442\u0430\u0441\u044B\u043C\u0430\u043B\u0434\u0430\u0443 \u043C\u04AF\u043C\u043A\u0456\u043D \u0435\u043C\u0435\u0441. \u04D8\u0440\u0435\u043A\u0435\u0442\u0442\u0456 \u043A\u0435\u0439\u0456\u043D \u049B\u0430\u0439\u0442\u0430\u043B\u0430\u04A3\u044B\u0437 \u043D\u0435\u043C\u0435\u0441\u0435 \u04D9\u043A\u0456\u043C\u0448\u0456\u04A3\u0456\u0437\u0433\u0435 \u0445\u0430\u0431\u0430\u0440\u043B\u0430\u0441\u044B\u04A3\u044B\u0437\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437\u0434\u0456 \u0431\u04B1\u043B \u0436\u043E\u043B\u044B \u0436\u0430\u0440\u0438\u044F\u043B\u0430\u0443 \u043C\u04AF\u043C\u043A\u0456\u043D \u0435\u043C\u0435\u0441. \u04D8\u0440\u0435\u043A\u0435\u0442\u0442\u0456 \u043A\u0435\u0439\u0456\u043D \u049B\u0430\u0439\u0442\u0430\u043B\u0430\u04A3\u044B\u0437 \u043D\u0435\u043C\u0435\u0441\u0435 \u04D9\u043A\u0456\u043C\u0448\u0456\u04A3\u0456\u0437\u0433\u0435 \u0445\u0430\u0431\u0430\u0440\u043B\u0430\u0441\u044B\u04A3\u044B\u0437\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437 \u0442\u0430\u0441\u044B\u043C\u0430\u043B\u0434\u0430\u0443\u0493\u0430 \u049B\u043E\u0441\u044B\u043B\u0434\u044B. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437 \u0436\u0430\u0440\u0438\u044F\u043B\u0430\u0443 \u0436\u043E\u0441\u043F\u0430\u0440\u044B\u043D\u0430 \u049B\u043E\u0441\u044B\u043B\u0434\u044B +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u0410\u049B\u043F\u0430\u0440\u0430\u0442 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u0411\u0430\u0440\u043B\u044B\u049B UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440 \u0442\u0430\u0441\u044B\u043C\u0430\u043B\u0434\u0430\u0443\u0493\u0430 \u0431\u04B1\u0440\u044B\u043D\u043D\u0430\u043D \u049B\u043E\u0441\u044B\u043B\u0493\u0430\u043D. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u049A\u0430\u0442\u0435 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u041F\u0418 \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u043D \u049B\u043E\u043B\u0434\u0430\u043D\u0443 \u043D\u0435 \u0441\u0430\u049B\u0442\u0430\u0443 \u043A\u0435\u0437\u0456\u043D\u0434\u0435 \u049B\u0430\u0442\u0435 \u043E\u0440\u044B\u043D \u0430\u043B\u0434\u044B\: \u0421\u04D9\u0439\u043A\u0435\u0441\u0442\u0435\u043D\u0434\u0456\u0440\u0443 \u0440\u0435\u0436\u0438\u043C\u0456\u043D\u0435\u043D \u0448\u044B\u0493\u0443 \u0436\u04D9\u043D\u0435 \u049B\u043E\u043B\u0434\u0430\u043D\u0431\u0430\u043D\u044B \u0431\u0430\u0441\u0442\u0430\u043F\u049B\u044B \u049B\u0430\u043B\u043F\u044B\u043D\u0430 \u043A\u0435\u043B\u0442\u0456\u0440\u0443\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0442\u044B \u043D\u04B1\u0441\u049B\u0430\u043D\u044B \u049B\u0430\u043B\u043F\u044B\u043D\u0430 \u043A\u0435\u043B\u0442\u0456\u0440\u0443 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0411\u0430\u0440\u043B\u044B\u049B UI \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u043D\u0435\u043D \u0431\u0430\u0441 \u0442\u0430\u0440\u0442\u044B\u043F, \u049B\u043E\u043B\u0434\u0430\u043D\u0431\u0430\u043D\u044B \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0442\u044B \u043D\u04B1\u0441\u049B\u0430\u0441\u044B\u043D\u0430 \u049B\u0430\u0439\u0442\u0430\u0440\u0443 \u043A\u0435\u0440\u0435\u043A \u043F\u0435? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0411\u0430\u0440\u043B\u044B\u049B \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0431\u043E\u0439\u044B\u043D\u0448\u0430 \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437\u0434\u0456 \u0436\u043E\u0439\u044B\u043F, \u049B\u043E\u043B\u0430\u043D\u0431\u0430\u043D\u044B \u049B\u0430\u0439\u0442\u0430 \u043E\u0440\u043D\u0430\u0442\u0443 \u043A\u0435\u0440\u0435\u043A \u043F\u0435? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u041A\u0435\u0448\u0456\u0440\u0456\u04A3\u0456\u0437, \u0442\u0435\u0445\u043D\u0438\u043A\u0430\u043B\u044B\u049B \u049B\u0430\u0442\u0435 \u043E\u0440\u044B\u043D \u0430\u043B\u0434\u044B. \u04D8\u0440\u0435\u043A\u0435\u0442\u0442\u0456 \u043A\u0435\u0439\u0456\u043D \u049B\u0430\u0439\u0442\u0430\u043B\u0430\u04A3\u044B\u0437. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u0421\u0435\u0431\u0435\u043F\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u04D8\u0440\u0435\u043A\u0435\u0442 \u0440\u0430\u0441\u0442\u0430\u043B\u0441\u0430, \u0431\u0430\u0440\u043B\u044B\u049B UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440\u0456\u043D\u0435 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0456\u04A3\u0456\u0437 \u0436\u043E\u0493\u0430\u043B\u0430\u0434\u044B. \u041E\u043B\u0430\u0440\u0434\u044B \u0441\u0430\u049B\u0442\u0430\u0443 \u04AF\u0448\u0456\u043D, \u0434\u0438\u0430\u043B\u043E\u0433\u0442\u044B\u049B \u0442\u0435\u0440\u0435\u0437\u0435\u043D\u0456 \u0436\u0430\u0443\u044B\u043F, UI \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u043D \u0431\u0435\u0439\u0456\u043C\u0434\u0435\u0443 \u0440\u0435\u0436\u0438\u043C\u0456\u043D\u0435\u043D \u0448\u044B\u0493\u044B\u04A3\u044B\u0437. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0411\u04B1\u043B \u0442\u043E\u043F\u0442\u044B\u04A3 \u0442\u0430\u049B\u044B\u0440\u044B\u0431\u044B \u049B\u043E\u0441\u044B\u043C\u0448\u0430 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0442\u0435\u0440 \u049B\u0430\u043C\u0442\u0438\u0434\u044B. \u0422\u043E\u043F\u0442\u044B \u04E9\u0448\u0456\u0440\u0441\u0435\u04A3\u0456\u0437, \u043E\u043B\u0430\u0440 \u0436\u043E\u0493\u0430\u043B\u0430\u0434\u044B. \u0422\u043E\u043F\u0442\u044B \u0431\u04D9\u0440\u0456\u0431\u0456\u0440 \u0436\u043E\u044E \u043A\u0435\u0440\u0435\u043A \u043F\u0435? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u0411\u0430\u0441\u049B\u0430 {0} \u0436\u043E\u049B +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u0410\u049B\u043F\u0430\u0440\u0430\u0442 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u049A\u043E\u043B\u0434\u0430\u043D\u0431\u0430 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0441\u044B \u0436\u0430\u0441\u0430\u043B\u0434\u044B. UI \u0431\u0435\u0439\u0456\u043C\u0434\u0435\u0443 \u0440\u0435\u0436\u0438\u043C\u0456\u043D\u0434\u0435 \u049B\u043E\u043B\u0434\u0430\u043D\u0431\u0430 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043B\u0435\u0440\u0456\u043D\u0441\u0456\u0437 \u049B\u0430\u0439\u0442\u0430 \u0436\u04AF\u043A\u0442\u0435\u043B\u0435\u0434\u0456. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u0414\u0435\u0440\u0431\u0435\u0441\u0442\u0435\u043B\u0433\u0435\u043D \u043D\u04B1\u0441\u049B\u0430\u043D\u044B \u043A\u04E9\u0440\u0441\u0435\u0442\u0443 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u041F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\u0493\u0430 \u0436\u0430\u0441\u0430\u043B\u0493\u0430\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443\u043B\u0435\u0440\u0434\u0456 \u049B\u0430\u0439\u0442\u0430 \u043A\u04E9\u0440\u0443 \u04AF\u0448\u0456\u043D \u049B\u043E\u043B\u0434\u0430\u043D\u0431\u0430\u043D\u044B \u049B\u0430\u0439\u0442\u0430 \u0436\u04AF\u043A\u0442\u0435\u0443\u0433\u0435 \u0431\u043E\u043B\u0430\u0434\u044B +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u0414\u0435\u0440\u0431\u0435\u0441\u0442\u0435\u043B\u0433\u0435\u043D \u043D\u04B1\u0441\u049B\u0430\u043D\u044B \u043A\u04E9\u0440\u0441\u0435\u0442\u0443 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0411\u043E\u043B\u0434\u044B\u0440\u043C\u0430\u0443 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_ko.properties b/resources/sap/ui/rta/messagebundle_ko.properties new file mode 100644 index 0000000..608f9f9 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ko.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=UI \uC801\uC6A9 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\uC571 \uAC1C\uC778 \uC124\uC815 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\uC800\uC7A5 \uD6C4 \uC885\uB8CC +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\uC644\uB8CC +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\uBCC0\uACBD\uC0AC\uD56D \uC800\uC7A5 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\uCD94\uAC00... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\uC81C\uAC70 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\uC81C\uAC70 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} \uCD94\uAC00 +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\uCEE8\uD150\uD2B8 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\uC798\uB77C\uB0B4\uAE30 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\uBD99\uC5EC\uB123\uAE30 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\uACB0\uD569 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\uBD84\uD560 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} \uC0DD\uC131 +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\uC2E0\uADDC {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\uC774\uB984 \uBC14\uAFB8\uAE30 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\uC124\uC815 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\uD0D0\uC0C9 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\uD655\uC778 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\uC81C\uAC70 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\uCDE8\uC18C +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\uC0AC\uC6A9\uC790 \uC815\uC758 \uD544\uB4DC, \uC5F0\uAD00 \uAD00\uACC4, \uB85C\uC9C1 \uC0DD\uC131 +#XMIT: Label for the original name of a renamed label +LBL_FREP={0}\uC784 +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\uC124\uC815 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\uC0AC\uC6A9 \uAC00\uB2A5\uD55C {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\uACF5\uC720 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\uC2E4\uD589 \uCDE8\uC18C +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\uC7AC\uC2E4\uD589 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\uAC8C\uC2DC +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\uC7AC\uC124\uC815 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\uC804\uC1A1 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI \uC801\uC6A9 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\uD0D0\uC0C9 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\uC624\uB958 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\uC9C0\uAE08\uC740 UI \uBCC0\uACBD\uC0AC\uD56D\uC744 \uCDE8\uC18C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB098\uC911\uC5D0 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uAC70\uB098 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC2ED\uC2DC\uC624. {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\uC624\uB958 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\uC9C0\uAE08\uC740 UI \uBCC0\uACBD\uC0AC\uD56D\uC744 \uC804\uC1A1\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB098\uC911\uC5D0 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uAC70\uB098 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC2ED\uC2DC\uC624. {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\uC9C0\uAE08\uC740 UI \uBCC0\uACBD\uC0AC\uD56D\uC744 \uAC8C\uC2DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB098\uC911\uC5D0 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uAC70\uB098 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uBB38\uC758\uD558\uC2ED\uC2DC\uC624. {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=UI \uBCC0\uACBD\uC0AC\uD56D\uC774 \uC804\uC1A1\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=UI \uBCC0\uACBD\uC0AC\uD56D\uC774 \uAC8C\uC2DC\uB420 \uC608\uC815\uC785\uB2C8\uB2E4. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\uC815\uBCF4 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\uBAA8\uB4E0 UI \uBCC0\uACBD\uC0AC\uD56D\uC774 \uC774\uBBF8 \uC804\uC1A1\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\uC624\uB958 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=UI \uBCC0\uACBD\uC0AC\uD56D\uC744 \uC801\uC6A9\uD558\uAC70\uB098 \uC800\uC7A5\uD558\uB294 \uB3D9\uC548 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC801\uC6A9 \uBAA8\uB4DC\uB97C \uC885\uB8CC\uD55C \uD6C4 \uC571 \uB2E4\uC2DC \uC2DC\uC791\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\uD45C\uC900 \uBC84\uC804\uC73C\uB85C \uC7AC\uC124\uC815 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\uBAA8\uB4E0 UI \uBCC0\uACBD\uC0AC\uD56D\uC744 \uCDE8\uC18C\uD558\uACE0 \uC571\uC744 \uD45C\uC900 \uBC84\uC804\uC73C\uB85C \uC7AC\uC124\uC815\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\uAC1C\uC778 \uC124\uC815 \uBCC0\uACBD\uC744 \uBAA8\uB450 \uCDE8\uC18C\uD558\uACE0 \uC571\uC744 \uC7AC\uC124\uC815\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\uAE30\uC220\uC801 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uB098\uC911\uC5D0 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\uC0AC\uC720\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\uD655\uC778\uD558\uB294 \uACBD\uC6B0 \uBAA8\uB4E0 UI \uBCC0\uACBD\uC0AC\uD56D\uC740 \uC9C0\uC6CC\uC9D1\uB2C8\uB2E4. \uBCC0\uACBD\uC0AC\uD56D\uC744 \uC800\uC7A5\uD558\uB824\uBA74 \uC774 \uB300\uD654\uC0C1\uC790\uB97C \uB2EB\uACE0 UI \uC801\uC6A9 \uBAA8\uB4DC\uB97C \uC885\uB8CC\uD558\uC2ED\uC2DC\uC624. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\uC774 \uADF8\uB8F9\uC758 \uD5E4\uB354\uC5D0 \uCD94\uAC00 \uC694\uC18C\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. \uADF8\uB8F9\uC744 \uC81C\uAC70\uD558\uBA74 \uC694\uC18C\uAC00 \uC190\uC2E4\uB429\uB2C8\uB2E4. \uADF8\uB8F9\uC744 \uC81C\uAC70\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\uB354 \uC774\uC0C1 {0}\uC744(\uB97C) \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\uC815\uBCF4 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\uC571\uC744 \uAC1C\uC778 \uC124\uC815\uD588\uC2B5\uB2C8\uB2E4. UI \uC801\uC6A9 \uBAA8\uB4DC\uC5D0\uC11C \uC571\uC740 \uAC1C\uC778 \uC124\uC815 \uC5C6\uC774 \uB2E4\uC2DC \uB85C\uB4DC\uB429\uB2C8\uB2E4. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\uAC1C\uC778 \uC124\uC815\uB41C \uBC84\uC804 \uC870\uD68C +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\uAC1C\uC778 \uC124\uC815 \uBCC0\uACBD\uC0AC\uD56D\uC744 \uB2E4\uC2DC \uD655\uC778\uD558\uB824\uBA74 \uC571\uC744 \uB2E4\uC2DC \uB85C\uB4DC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\uAC1C\uC778 \uC124\uC815\uB41C \uBC84\uC804 \uC870\uD68C +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\uCDE8\uC18C +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_lt.properties b/resources/sap/ui/rta/messagebundle_lt.properties new file mode 100644 index 0000000..89fd4db --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_lt.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adaptuoti UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizuoti program\u0105 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u012Era\u0161yti ir i\u0161eiti +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Atlikta +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u012Era\u0161yti keitimus +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Daugiau... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Pa\u0161alinti +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Pa\u0161alinti +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Prid\u0117ti {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Turinys +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=I\u0161kirpti +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u012Eklijuoti +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Jungti +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Skaidyti +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Kurti {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Naujas {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Pervardyti +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Parametrai +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Pereiti \u012F +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=Gerai +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Pa\u0161alinti +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=At\u0161aukti +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Kurti pasirinktin\u012F lauk\u0105, susiejim\u0105 ar logik\u0105 +#XMIT: Label for the original name of a renamed label +LBL_FREP=buvo {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Parametrai +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Pasiekiamas {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Bendrinti +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Anuliuoti +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Perdaryti +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publikuoti +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Nustatyti i\u0161 naujo +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Perkelti +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI adaptacija +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Nar\u0161ymas +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Klaida +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Deja, \u0161iuo metu UI pakeitim\u0173 atmesti negalima. Bandykite v\u0117liau arba susisiekite su savo administratoriumi\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Klaida +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Deja, \u0161iuo metu UI pakeitim\u0173 perkelti negalima. Bandykite v\u0117liau arba susisiekite su savo administratoriumi\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Deja, \u0161iuo metu UI pakeitim\u0173 publikuoti negalima. Bandykite v\u0117liau arba susisiekite su savo administratoriumi\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=UI pakeitimai \u012Ftraukti \u012F perk\u0117lim\u0105. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=UI pakeitimai suplanuoti publikuoti +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informacija +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Visi UI pakeitimai jau \u012Ftraukti \u012F perk\u0117lim\u0105 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Klaida +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Klaida taikant arba \u012Fra\u0161ant UI pakeitimus. I\u0161eiti i\u0161 adaptavimo re\u017Eimo ir i\u0161 naujo paleisti taikom\u0105j\u0105 program\u0105\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=I\u0161 naujo nustatyti standartin\u0119 versij\u0105 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Ar norite atmesti visus UI pakeitimus ir i\u0161 naujo nustatyti standartin\u0119 taikomosios programos versij\u0105? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Ar norite atmesti visus savo personalizavimo keitimus ir i\u0161 naujo nustatyti program\u0105? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Deja, \u012Fvyko technin\u0117 klaida. Bandykite dar kart\u0105 v\u0117liau. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Prie\u017Eastis\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Jei patvirtinsite visi j\u016Bs\u0173 UI pakeitimai bus prarasti. Nor\u0117dami juos \u012Fra\u0161yti, u\u017Edarykite \u0161\u012F dialogo lang\u0105 ir i\u0161eikite i\u0161 UI adaptavimo re\u017Eimo. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0160ios grup\u0117s antra\u0161t\u0117je yra papildom\u0173 element\u0173. Pa\u0161alin\u0119 grup\u0119, prarasite elementus. Ar vis tiek norite pa\u0161alinti grup\u0119? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS={0} daugiau n\u0117ra +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informacija +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Personalizavote taikom\u0105j\u0105 program\u0105. UI adaptavimo re\u017Eimu programa pakartotinai \u012Fkels j\u016Bs\u0173 personalizavimo parametrus. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Rodyti personalizuot\u0105 versij\u0105 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Jei v\u0117l norite per\u017Ei\u016Br\u0117ti personalizavimo pakeitimus, galite pakartotinai \u012Fkelti taikom\u0105j\u0105 program\u0105 +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Rodyti personalizuot\u0105 versij\u0105 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=At\u0161aukti +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_lv.properties b/resources/sap/ui/rta/messagebundle_lv.properties new file mode 100644 index 0000000..60f7600 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_lv.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Adapt\u0113t UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Lietojumprogrammas personaliz\u0113\u0161ana +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Saglab\u0101t un iziet +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Pabeigts +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Saglab\u0101t izmai\u0146as +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=V\u0113l... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=No\u0146emt +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=No\u0146emt +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Pievienot {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Saturs +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Izgriezt +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Iel\u012Bm\u0113t +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombin\u0113t +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Sadal\u012Bt +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Izveidot {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Jauns {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=P\u0101rd\u0113v\u0113t +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Iestat\u012Bjumi +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navi\u0123\u0113t uz +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=Labi +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=No\u0146emt +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Atcelt +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Izveidot piel\u0101gotu lauku, saist\u012Bbu vai lo\u0123iku +#XMIT: Label for the original name of a renamed label +LBL_FREP=bija {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Iestat\u012Bjumi +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Pieejams {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Koplietot +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Atsaukt +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Atcelt atsauk\u0161anu +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Public\u0113t +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Atiestat\u012Bt +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport\u0113t +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI adapt\u0113\u0161ana +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navig\u0101cija +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=K\u013C\u016Bda +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Diem\u017E\u0113l j\u016Bsu UI izmai\u0146as \u0161oreiz nevar noraid\u012Bt. L\u016Bdzu, v\u0113l\u0101k m\u0113\u0123iniet v\u0113lreiz vai sazinieties ar savu administratoru\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=K\u013C\u016Bda +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Diem\u017E\u0113l j\u016Bsu UI izmai\u0146as \u0161oreiz nevar transport\u0113t. L\u016Bdzu, v\u0113l\u0101k m\u0113\u0123iniet v\u0113lreiz vai sazinieties ar savu administratoru\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Diem\u017E\u0113l j\u016Bsu UI izmai\u0146as \u0161oreiz nevar public\u0113t. L\u016Bdzu, v\u0113l\u0101k m\u0113\u0123iniet v\u0113lreiz vai sazinieties ar savu administratoru\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=J\u016Bsu UI izmai\u0146as tika iek\u013Cautas transport\u0113\u0161an\u0101. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=J\u016Bsu UI izmai\u0146as ir iepl\u0101notas public\u0113\u0161anai +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Inform\u0101cija +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Visas UI izmai\u0146as jau ir iek\u013Cautas transport\u0113\u0161an\u0101 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=K\u013C\u016Bda +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Lietojot vai saglab\u0101jot UI izmai\u0146as, rad\u0101s k\u013C\u016Bda. Izejiet no adapt\u0101cijas re\u017E\u012Bma un restart\u0113jiet lietojumprogrammu\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Atiestat\u012Bt uz standarta versiju +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Vai v\u0113laties noraid\u012Bt visas UI izmai\u0146as un atiestat\u012Bt lietojumprogrammas standarta versiju? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Vai v\u0113laties atmest visas savas personaliz\u0113\u0161anas izmai\u0146as un atiestat\u012Bt lietojumprogrammu? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Diem\u017E\u0113l rad\u0101s tehniska k\u013C\u016Bda. L\u016Bdzu, m\u0113\u0123iniet v\u0113l\u0101k. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Iemesls\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Ja apstiprin\u0101sit, visas j\u016Bsu veikt\u0101s UI izmai\u0146as tiks zaud\u0113tas. Lai t\u0101s saglab\u0101tu, aizveriet \u0161o dialoglodzi\u0146u un izejiet no UI adapt\u0113\u0161anas re\u017E\u012Bma. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0160\u012Bs grupas galven\u0113 ir ietverti papildu elementi. Ja no\u0146emsit grupu, tie tiks zaud\u0113ti. Vai vienalga v\u0113laties no\u0146emt grupu? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Vairs nav pieejams neviens {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Inform\u0101cija +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=J\u016Bs personaliz\u0113j\u0101t lietojumprogrmamu. UI adapt\u0101cijas re\u017E\u012Bm\u0101 lietojumprogramma tiks v\u0113lreiz iel\u0101d\u0113ta bez j\u016Bsu veiktajiem personaliz\u0101cijas iestat\u012Bjumiem. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Par\u0101d\u012Bt personaliz\u0113to versiju +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Ja v\u0113lreiz v\u0113laties apskat\u012Bt personaliz\u0101cijas izmai\u0146as, kuras veic\u0101t, varat v\u0113lreiz iel\u0101d\u0113t lietojumprogrammu +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Par\u0101d\u012Bt personaliz\u0113to versiju +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Atcelt +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_ms.properties b/resources/sap/ui/rta/messagebundle_ms.properties new file mode 100644 index 0000000..e78259a --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ms.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Menyesuaikan UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Peribadikan Aplikasi +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Simpan & Keluar +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Selesai +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Simpan Perubahan +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Selanjutnya ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Keluarkan +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Keluarkan +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Tambah {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Kandungan +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Potong +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Tampal +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Gabungkan +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Pisahan +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Cipta {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER={0} baru +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Namakan Semula +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Tetapan +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigasi ke +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Keluarkan +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Batal +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Cipta medan tersuai, perkaitan atau logik +#XMIT: Label for the original name of a renamed label +LBL_FREP=adalah {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Tetapan +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Tersedia {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Kongsi +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Buat Asal +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Buat semula +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Menerbitkan +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Set Semula +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Hantar +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Penyesuaian Antara Muka +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigasi +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Ralat +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Maaf, perubahan UI anda tidak boleh dibuang pada masa ini. Sila cuba lagi nanti atau hubungi pentadbir anda\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Ralat +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Maaf, perubahan UI anda tidak boleh dipindahkan pada masa ini. Sila cuba lagi nanti atau hubungi pentadbir anda\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Maaf, perubahan UI anda tidak boleh diterbitkan pada masa ini. Sila cuba lagi nanti atau hubungi pentadbir anda\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Perubahan UI anda termasuk dalam pindahan. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Perubahan UI anda dijadualkan untuk penerbitan +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Maklumat +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Semua perubahan UI sudah termasuk dalam pindahan +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Ralat +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Ralat semasa menggunakan atau menyimpan perubahan UI. Keluar dari mod penyesuaian dan mula semula aplikasi\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Tetapan Semula untuk Versi Piawai +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Adakah anda ingin buang semua perubahan UI dan tetapan semula aplikasi ke versi piawai? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Adakah anda ingin membuang semua perubahan pemeribadian anda dan tetapkan semula aplikasi? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Maaf, ralat teknikal berlaku. Sila cubaan semula nanti. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Sebab\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Jika anda sah, semua perubahan UI anda akan hilang. Utk menyimpannya, tutup kotak dialog ini dan kluar mod pysuaian UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Pengepala kumpulan ini mengandungi elemen tambahan. Jika anda keluarkan kumpulan, ia akan hilang. Adakah anda tetap ingin mengeluarkan kumpulan? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Tiada lagi {0} tersedia +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Maklumat +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Anda telah peribadikan aplikasi. Dalam mod penyesuaian UI, aplikasi akan dimuat semula tanpa tetapan pemeribadian anda. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Papar Versi Diperibadikan +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Jika anda ingin untuk lihat perubahan pemeribadian anda lagi, anda boleh muat semula aplikasi +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Papar Versi Diperibadikan +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Batal +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_nl.properties b/resources/sap/ui/rta/messagebundle_nl.properties new file mode 100644 index 0000000..a409ac7 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_nl.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=UI aanpassen +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=App personaliseren +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Be\u00EBindigen +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Afgehandeld +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Wijzigingen opslaan +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Meer... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Verwijderen +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Verwijderen +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} toevoegen +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Inhoud +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Knippen +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Invoegen +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Groeperen +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Groepering opheffen +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} cre\u00EBren +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nieuw {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Hernoemen +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Instellingen +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigeren naar +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Verwijderen +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Afbreken +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Door gebruiker gedefinieerd(e) veld, associatie of logica cre\u00EBren +#XMIT: Label for the original name of a renamed label +LBL_FREP=was {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Instellingen +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Beschikbaar\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Vrijgeven +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Ongedaan maken +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Herhalen +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publiceren +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Herstellen +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transporteren +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI-aanpassing +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigatie +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Fout +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Uw UI-wijzigingen kunnen niet worden afgekeurd. Probeer het later opnieuw of neem contact op met de beheerder\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Fout +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Uw UI-wijzigingen kunnen niet worden getransporteerd. Probeer het later opnieuw of neem contact op met de beheerder\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Uw UI-wijzigingen kunnen niet worden gepubliceerd. Probeer het later opnieuw of neem contact op met de beheerder\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=UI-wijzigingen zijn in transport opgenomen +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Uw UI-wijzigingen zijn ingepland voor publicatie +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informatie +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Alle UI-wijzigingen zijn al in transport opgenomen +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Fout +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Fout bij toepassen of opslaan van UI-wijzigingen. Sluit de aanpassingsmodus en start de app opnieuw\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Standaardversie herstellen +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Alle UI-wijzigingen afkeuren en standaardversie van app herstellen? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Alle personaliseringen afkeuren en app ongedaan maken? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Technische fout opgetreden; probeer het later nog eens +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Reden\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Als u bevestigt, gaan alle wijzigingen verloren. Om deze op te slaan, sluit u deze dialoog en verlaat u de UI-aanpassingsmodus. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=De kop van deze groep bevat aanvullende elementen. Als u deze groep verwijdert, worden deze elementen ook verwijderd. Groep toch verwijderen? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Geen andere {0} beschikbaar +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informatie +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=App gepersonaliseerd; im UI-aanpassingsmodus wordt app zonder personalisering opnieuw geladen +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Gepersonaliseerde versie weergeven +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Laad app opnieuw voor weergave van personaliseringswijzigingen +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Gepersonaliseerde versie weergeven +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Afbreken +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_no.properties b/resources/sap/ui/rta/messagebundle_no.properties new file mode 100644 index 0000000..b601933 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_no.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Tilpass UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Persontilpass app +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Lagre og avslutt +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Utf\u00F8rt +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Lagre endringer +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Flere... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Fjern +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Fjern +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} tilf\u00F8y +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Innhold +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Klipp ut +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Lim inn +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombiner +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Del +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Opprett {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Ny/nytt {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Endre navn +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Innstillinger +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Naviger til +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Fjern +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Avbryt +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Opprett egendefinert felt, assosiasjon eller logikk +#XMIT: Label for the original name of a renamed label +LBL_FREP=het {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Innstillinger +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Tilgjengelig\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Frigi +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Tilbakestill +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Gjenta +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publiser +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Gjenopprett +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Overf\u00F8r +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI-tilpasning +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigering +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Feil +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=UI-endringene kan ikke forkastes. Pr\u00F8v p\u00E5 nytt senere, eller ta kontakt med administrator\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Feil +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=UI-endringene kan ikke overf\u00F8res. Pr\u00F8v p\u00E5 nytt senere, eller ta kontakt med administrator\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=UI-endringene kan ikke publiseres. Pr\u00F8v p\u00E5 nytt senere, eller ta kontakt med administrator\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=UI-endringer er inkludert i overf\u00F8ring +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=UI-endringene er planlagt for publisering +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informasjon +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Alle UI-endringer er allerede inkludert i overf\u00F8ring +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Feil +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Feil ved bruk eller lagring av UI-endringer. Avslutt tilpasningsmodus og start appen p\u00E5 nytt\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Tilbakestill til standardversjon +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Vil du forkaste alle UI-endringer og tilbakestille app til standardversjon? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Vil du forkaste alle persontilpasninger og tilbakestille appen? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=En teknisk feil er oppst\u00E5tt. Pr\u00F8v p\u00E5 nytt senere. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u00C5rsak\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Hvis du bekrefter, g\u00E5r alle endringer tapt. For \u00E5 lagre disse, m\u00E5 du lukke denne dialogen og avslutte UI-tilpasningsmodus. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Toppen for denne gruppen inneholder ytterligere elementer. Hvis du fjerner gruppen, blir disse slettet. Vil du likevel fjerne gruppen? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Ingen flere {0} tilgjengelig +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informasjon +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Du har persontilpasset appen. Appen lastes p\u00E5 nytt uten persontilpasning i UI-tilpasningsmodusen. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Vis persontilpasset versjon +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Last appen p\u00E5 nytt for \u00E5 vise endringene i persontilpasningen +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Vis persontilpasset versjon +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Avbryt +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_pl.properties b/resources/sap/ui/rta/messagebundle_pl.properties new file mode 100644 index 0000000..565c535 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_pl.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Dostosowanie IU +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizacja aplikacji +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Zapami\u0119tanie i zako\u0144czenie +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Zrealizowane +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Zapami\u0119tanie zmian +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Wi\u0119cej... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Usuwanie +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Usuwanie +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Dodawanie {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Zawarto\u015B\u0107 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Wycinanie +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Wstawianie +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u0141\u0105czenie +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Udost\u0119pnianie +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Tworzenie {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nowe \u2014 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Zmiana nazwy +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Ustawienia +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Nawigacja do +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Usuwanie +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Zaniechanie +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Tworzenie pola zdefiniowanego przez u\u017Cytkownika, powi\u0105zania lub odsy\u0142acza +#XMIT: Label for the original name of a renamed label +LBL_FREP=by\u0142o {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Ustawienia +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Dost\u0119pne\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Zatwierdzanie +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Ponowne ustawianie +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Powtarzanie +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publikacja +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Ponowne ustawianie +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Dostosowanie IU +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Nawigacja +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=B\u0142\u0105d +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Nie mo\u017Cna odrzuci\u0107 zmian w interfejsie u\u017Cytkownika. Prosz\u0119 spr\u00F3bowa\u0107 ponownie p\u00F3\u017Aniej lub skontaktowa\u0107 si\u0119 z administratorem\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=B\u0142\u0105d +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Nie mo\u017Cna przetransportowa\u0107 zmian w interfejsie u\u017Cytkownika. Prosz\u0119 spr\u00F3bowa\u0107 ponownie p\u00F3\u017Aniej lub skontaktowa\u0107 si\u0119 z administratorem\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Nie mo\u017Cna opublikowa\u0107 zmian w interfejsie u\u017Cytkownika. Prosz\u0119 spr\u00F3bowa\u0107 ponownie p\u00F3\u017Aniej lub skontaktowa\u0107 si\u0119 z administratorem\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Zmiany w interfejsie u\u017Cytkownika zosta\u0142y do\u0142\u0105czone do transportu. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Zmiany w interfejsie u\u017Cytkownika zosta\u0142y zaplanowane do publikacji. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informacja +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Wszystkie zmiany w interfejsie u\u017Cytkownika zosta\u0142y ju\u017C do\u0142\u0105czone do transportu. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=B\u0142\u0105d +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=B\u0142\u0105d podczas zastosowania lub zapami\u0119tania zmian interfejsu u\u017Cytkownika. Prosz\u0119 wyj\u015B\u0107 z trybu dostosowania i uruchomi\u0107 aplikacj\u0119 ponownie\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Ponowne ustawianie wersji standardowej +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Czy odrzuci\u0107 wszystkie zmiany w interfejsie u\u017Cytkownika i ponownie ustawi\u0107 aplikacj\u0119 na wersj\u0119 standardow\u0105? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Czy odrzuci\u0107 wszystkie personalizacje i ponownie ustawi\u0107 aplikacj\u0119? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Wyst\u0105pi\u0142 b\u0142\u0105d techniczny. Prosz\u0119 spr\u00F3bowa\u0107 ponownie p\u00F3\u017Aniej. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Przyczyna\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Potwierdzenie spowoduje utrat\u0119 wszystkich zmian. Aby je zapami\u0119ta\u0107, prosz\u0119 zamkn\u0105\u0107 to okno dialogowe i opu\u015Bci\u0107 tryb edycji interfejsu u\u017Cytkownika. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Nag\u0142\u00F3wek tej grupy zawiera dodatkowe elementy. Usuni\u0119cie tej grupy spowoduje ich usuni\u0119cie. Czy usun\u0105\u0107 grup\u0119 mimo to? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Brak dalszych {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informacje +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=U\u017Cytkownik dokona\u0142 personalizacji aplikacji. Aplikacja zostanie ponownie wczytana bez personalizacji w trybie dostosowania IU. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Wy\u015Bwietlanie spersonalizowanej wersji +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Aby wy\u015Bwietli\u0107 zmiany personalizacji, nale\u017Cy ponownie wczyta\u0107 aplikacj\u0119. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Wy\u015Bwietlanie spersonalizowanej wersji +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Zaniechanie +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_pt.properties b/resources/sap/ui/rta/messagebundle_pt.properties new file mode 100644 index 0000000..9902a8a --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_pt.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Ajustar IU +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizar app +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Gravar & encerrar +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Conclu\u00EDdo +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Gravar modifica\u00E7\u00F5es +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Mais... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Remover +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Remover +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Inserir {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Conte\u00FAdo +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Cortar +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Inserir +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combinar +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Dividir +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Criar {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Novo {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Renomear +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Configura\u00E7\u00F5es +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navegar para +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Remover +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Cancelar +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Criar campo personalizado, associa\u00E7\u00E3o ou l\u00F3gica +#XMIT: Label for the original name of a renamed label +LBL_FREP=era {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Configura\u00E7\u00F5es +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Dispon\u00EDvel\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Liberar +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Reinicializar +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Repetir +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publicar +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Reinicializar +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportar +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Ajuste IU +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navega\u00E7\u00E3o +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Erro +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=N\u00E3o \u00E9 poss\u00EDvel rejeitar as suas modifica\u00E7\u00F5es IU. Tentar de novo mais tarde ou contatar o administrador\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Erro +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=N\u00E3o \u00E9 poss\u00EDvel transportar as suas modifica\u00E7\u00F5es IU. Tentar de novo mais tarde ou contatar o administrador\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=N\u00E3o \u00E9 poss\u00EDvel publicar as suas modifica\u00E7\u00F5es IU. Tentar de novo mais tarde ou contatar o administrador\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=As suas modifica\u00E7\u00F5es IU foram inclu\u00EDdas no transporte. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=As suas modifica\u00E7\u00F5es IU est\u00E3o planejadas para publica\u00E7\u00E3o. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informa\u00E7\u00E3o +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Todas as modifica\u00E7\u00F5es IU j\u00E1 foram inclu\u00EDdas em um transporte. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Erro +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Erro ao aplicar ou gravar as modifica\u00E7\u00F5es IU. Finalize o modo de ajuste e inicie de novo o app\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reinicializar para vers\u00E3o padr\u00E3o +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Rejeitar todas as modifica\u00E7\u00F5es IU e reinicializar o app na vers\u00E3o padr\u00E3o? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Rejeitar todas as personaliza\u00E7\u00F5es e reinicializar app? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Ocorreu um erro t\u00E9cnico. Tentar de novo mais tarde. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Motivo\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Se voc\u00EA confirmar, ser\u00E3o perdidas todas as modifica\u00E7\u00F5es. Para as gravar, feche este di\u00E1logo e saia do modo de ajuste IU. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=O cabe\u00E7alho deste grupo cont\u00E9m elementos adicionais. Se voc\u00EA remover o grupo, estes ser\u00E3o eliminados. Remover o grupo? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=N\u00E3o dispon\u00EDveis mais {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informa\u00E7\u00F5es +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Voc\u00EA personalizou o app. O app \u00E9 recarregado sem personaliza\u00E7\u00E3o no modo de ajuste da IU. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Exibir vers\u00E3o personalizada +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Carregar o app de novo para exibir as modifica\u00E7\u00F5es da sua personaliza\u00E7\u00E3o. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Exibir vers\u00E3o personalizada +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Cancelar +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_ro.properties b/resources/sap/ui/rta/messagebundle_ro.properties new file mode 100644 index 0000000..fa9073c --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ro.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Ajustare UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizare aplica\u0163ie +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Salvare \u015Fi terminare +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Efectuat +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Salvare modific\u0103ri +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Mai mult... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Eliminare +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Eliminare +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Ad\u0103ugare {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Con\u0163inut +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=T\u0103iere +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Lipire +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Combinare +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Divizare +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Creare {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER={0} nou +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Redenumire +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Set\u0103ri +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigare la +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Eliminare +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Anulare +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Creare c\u00E2mp definit de utilizator, asociere sau logic\u0103 +#XMIT: Label for the original name of a renamed label +LBL_FREP=a fost {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Set\u0103ri +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Disponibil {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Partajare +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Renun\u0163are +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Restaurare +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publicare +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Resetare +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Ajustare UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigare +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Eroare +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Modific\u0103rile dvs.UI nu pot fi anulate acum. Re\u00EEncerca\u0163i mai t\u00E2rziu sau contacta\u0163i administratorul dvs.\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Eroare +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Modific\u0103rile dvs.UI nu pot fi transportate acum. Re\u00EEncerca\u0163i mai t\u00E2rziu sau contacta\u0163i administratorul dvs.\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Modific\u0103rile dvs.UI nu pot fi publicate acum. Re\u00EEncerca\u0163i mai t\u00E2rziu sau contacta\u0163i administratorul dvs.\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Modific\u0103rile dvs.UI au fost incluse \u00EEn transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Modific\u0103rile dvs.UI sunt planificate pt.publicare +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informa\u0163ii +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Toate modific\u0103rile UI sunt deja incluse \u00EEntr-un transport +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Eroare +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Eroare la aplicare sau salvare modific\u0103ri UI. Ie\u015Fi\u0163i din modul de ajustare \u015Fi relansa\u0163i aplic.\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Resetare la versiune standard +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Dori\u0163i s\u0103 respinge\u0163i toate modific\u0103rile UI \u015Fi s\u0103 reseta\u0163i aplica\u0163ia la versiunea standard? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Dori\u0163i s\u0103 anula\u0163i toate modific\u0103rile personaliz\u0103rii dvs.\u015Fi s\u0103 reseta\u0163i aplica\u0163ia? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=A ap\u0103rut o eroare tehnic\u0103. Re\u00EEncerca\u0163i mai t\u00E2rziu. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Motiv\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u00CEn cazul \u00EEn care confirma\u0163i, toate modif.dvs.de UI vor fi pierdute. Pt.a le salva, \u00EEnchide\u0163i aceast\u0103 caset\u0103 de dialog \u015Fi ie\u015Fi\u0163i din modul de adaptare UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Antetul acestui grup con\u0163ine elemente suplimentare. Dac\u0103 elimina\u0163i grupul, acestea vor fi pierdute. Dori\u0163i s\u0103 elimina\u0163i grupul oricum? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=F\u0103r\u0103 alte {0} disponibile +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informa\u0163ii +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=A\u0163i personalizat aplic. \u00CEn modul de ajustare UI, aplic.va fi re\u00EEnc\u0103rcat\u0103 v\u0103r\u0103 set\u0103rile dvs.de personalizare. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Afi\u015Fare versiune personalizat\u0103 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Dac\u0103 dori\u0163i s\u0103 afi\u015Fa\u0163i din nou modific\u0103rile dvs.de perrsonalizare, pute\u0163i re\u00EEnc\u0103rca aplic. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Afi\u015Fare versiune personalizat\u0103 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Anulare +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_ru.properties b/resources/sap/ui/rta/messagebundle_ru.properties new file mode 100644 index 0000000..39278a2 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_ru.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u0410\u0434\u0430\u043F\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u041F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438 \u0432\u044B\u0439\u0442\u0438 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u0413\u043E\u0442\u043E\u0432\u043E +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u0411\u043E\u043B\u044C\u0448\u0435... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u041A\u043E\u043C\u0431\u0438\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u044C +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u0421\u043E\u0437\u0434\u0430\u0442\u044C {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u041D\u043E\u0432\u043E\u0435 - {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u041F\u0435\u0440\u0435\u0445\u043E\u0434 \u043A +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u041E\u041A +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u043F\u043E\u043B\u0435, \u0430\u0441\u0441\u043E\u0446\u0438\u0430\u0446\u0438\u044E \u0438\u043B\u0438 \u043B\u043E\u0433\u0438\u043A\u0443 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u0421\u0442\u0430\u0440\u043E\u0435 - {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0414\u0435\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u0442\u044C +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u041F\u0435\u0440\u0435\u043D\u0435\u0441\u0442\u0438 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u0410\u0434\u0430\u043F\u0442\u0430\u0446\u0438\u044F UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u041E\u0448\u0438\u0431\u043A\u0430 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0441\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0430\u0448\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 \u0438\u043B\u0438 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u041E\u0448\u0438\u0431\u043A\u0430 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0442\u0438 \u0432\u0430\u0448\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 \u0438\u043B\u0438 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u0442\u044C \u0432\u0430\u0448\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 \u0438\u043B\u0438 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u043A \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u0412\u0430\u0448\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u044B \u0432 \u043F\u0435\u0440\u0435\u043D\u043E\u0441. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u0412\u0430\u0448\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u044B \u043A \u043F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u0412\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI \u0443\u0436\u0435 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u044B \u0432 \u043F\u0435\u0440\u0435\u043D\u043E\u0441. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u041E\u0448\u0438\u0431\u043A\u0430 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u0438 \u0438\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 UI. \u0412\u044B\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u0440\u0435\u0436\u0438\u043C\u0430 \u0430\u0434\u0430\u043F\u0442\u0430\u0446\u0438\u0438 \u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043D\u0430 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F UI \u0438 \u0441\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0430 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044E \u0438 \u0441\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0434\u043D\u0435\u0435. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u041F\u0440\u0438\u0447\u0438\u043D\u0430\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u041F\u043E\u0441\u043B\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0432\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u0442\u0435\u0440\u044F\u043D\u044B. \u0427\u0442\u043E\u0431\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438\u0445, \u0437\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u044D\u0442\u043E \u0434\u0438\u0430\u043B\u043E\u0433\u043E\u0432\u043E\u0435 \u043E\u043A\u043D\u043E \u0438 \u0432\u044B\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u0440\u0435\u0436\u0438\u043C\u0430 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u044B \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B. \u041F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438 \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0430\u043A\u0436\u0435 \u0443\u0434\u0430\u043B\u0435\u043D\u044B. \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u041D\u0435\u0442 \u0435\u0449\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043E. \u0412 \u0440\u0435\u0436\u0438\u043C\u0435 \u0430\u0434\u0430\u043F\u0442\u0430\u0446\u0438\u0438 UI \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E \u0431\u0435\u0437 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u041F\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_sh.properties b/resources/sap/ui/rta/messagebundle_sh.properties new file mode 100644 index 0000000..b1e2f42 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_sh.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Prilagodi korisni\u010Dki interfejs +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizuj aplikaciju +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Sa\u010Duvaj i iza\u0111i +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Izvr\u0161eno +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Sa\u010Duvaj promene +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Vi\u0161e... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Ukloni +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Ukloni +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Dodaj {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Sadr\u017Eaj +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Iseci +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Zalepi +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombinuj +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Podeli +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Kreiraj {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Novo {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Preimenuj +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Pode\u0161avanja +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Usmeri ka +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Ukloni +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Odustani +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Kreiraj korisni\u010Dki definisano polje, asocijaciju ili logiku +#XMIT: Label for the original name of a renamed label +LBL_FREP=staro {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Pode\u0161avanja +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Dostupno {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Podeli +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Poni\u0161ti +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Ponovo uradi +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Objavi +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Ponovo postavi +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=Prilago\u0111avanje korisni\u010Dkog interfejsa +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Usmeravanje +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Gre\u0161ka +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Na\u017Ealost, va\u0161e promene korisni\u010Dkog interfejsa trenutno nije mogu\u0107e odbaciti. Poku\u0161ajte ponovo kasnije ili obavestite administratora\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Gre\u0161ka +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Na\u017Ealost, va\u0161e promene korisni\u010Dkog interfejsa trenutno nije mogu\u0107e preneti. Poku\u0161ajte ponovo kasnije ili obavestite administratora\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Na\u017Ealost, va\u0161e promene korisni\u010Dkog interfejsa trenutno nije mogu\u0107e objaviti. Poku\u0161ajte ponovo kasnije ili obavestite administratora\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Va\u0161e promene korisni\u010Dkog interfejsa su uklju\u010Dene u prenos. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Va\u0161e promene korisni\u010Dkog interfejsa su planirane za objavljivanje +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informacije +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Sve promene korisni\u010Dkog interfejsa su ve\u0107 uklju\u010Dene u prenos +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Gre\u0161ka +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Gre\u0161ka pri primeni ili snimanju promena korisni\u010Dkog interfejsa. Iza\u0111ite iz na\u010Dina prilago\u0111avanja i ponovo pokrenite aplikaciju\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Ponovo postavi na standardnu verziju +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Da li \u017Eelite da odbacite sve promene korisni\u010Dkog interfejsa i ponovo postavite aplikaciju na standardnu verziju? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Da li \u017Eelite da odbacite sve promene personalizacije i ponovo postavite aplikaciju? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Na\u017Ealost, do\u0161lo je do tehni\u010Dke gre\u0161ke. Poku\u0161ajte ponovo kasnije. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Razlog\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Ako potvrdite, sve va\u0161e promene korisni\u010Dkog interfejsa \u0107e biti izgubljene. Da biste ih sa\u010Duvali, zatvorite ovaj dijalog i iza\u0111ite iz na\u010Dina prilago\u0111avanja korisni\u010Dkog interfejsa. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Zaglavlje ove grupe sadr\u017Ei dodatne elemente. Ako uklonite grupu, oni \u0107e biti izgubljeni. Da li ipak \u017Eelite da uklonite grupu? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS={0} vi\u0161e nije dostupno +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informacije +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Personalizovali ste aplikaciju. U na\u010Dinu prilago\u0111avanja korisni\u010Dkog interfejsa, aplikacija \u0107e se ponovo u\u010Ditati bez va\u0161ih pode\u0161avanja personalizacije. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Prika\u017Ei personalizovanu verziju +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Ako ponovo \u017Eelite da pogledate promene personalizacije, mo\u017Eete da ponovo u\u010Ditate aplikaciju +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Prika\u017Ei personalizovanu verziju +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Odustani +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_sk.properties b/resources/sap/ui/rta/messagebundle_sk.properties new file mode 100644 index 0000000..8ba7f3e --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_sk.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Prisp\u00F4sobi\u0165 UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizova\u0165 aplik\u00E1ciu +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Ulo\u017Ei\u0165 a ukon\u010Di\u0165 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Vybaven\u00E9 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Ulo\u017Ei\u0165 zmeny +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Viac... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Odstr\u00E1nenie +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Odstr\u00E1nenie +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} prida\u0165 +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Obsah +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Vy\u0148a\u0165 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Vlo\u017Ei\u0165 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombinova\u0165 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Rozdeli\u0165 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} zalo\u017Ei\u0165 +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Nov\u00E9 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Premenova\u0165 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Nastavenia +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigova\u0165 k +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Odstr\u00E1ni\u0165 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Zru\u0161i\u0165 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Zalo\u017Ei\u0165 pou\u017E\u00EDvate\u013Eom definovan\u00E9 pole, asoci\u00E1ciu alebo logiku +#XMIT: Label for the original name of a renamed label +LBL_FREP=bolo {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Nastavenia +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=K dispoz\u00EDcii\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Uvo\u013Eni\u0165 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Reset +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Opakova\u0165 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Zverejni\u0165 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Obnovi\u0165 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportova\u0165 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u00DAprava UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navig\u00E1cia +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Chyba +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Va\u0161e zmeny nie je mo\u017En\u00E9 zamietn\u00FA\u0165. Pok\u00FAste sa znovu nesk\u00F4r alebo po\u017Eiadajte o pomoc administr\u00E1tora\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Chyba +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Va\u0161e zmeny nie je mo\u017En\u00E9 prenies\u0165. Pok\u00FAste sa znovu nesk\u00F4r alebo po\u017Eiadajte o pomoc administr\u00E1tora\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Va\u0161e zmeny nie je mo\u017En\u00E9 zverejni\u0165. Pok\u00FAste sa znovu nesk\u00F4r alebo po\u017Eiadajte o pomoc administr\u00E1tora\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Va\u0161e zmeny UI boli zahrnut\u00E9 do transportu. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Va\u0161e zmeny UI boli napl\u00E1novan\u00E9 na zverejnenie. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Inform\u00E1cia +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=V\u0161etky zmeny UI u\u017E boli zahrnut\u00E9 do transportu. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Chyba +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Chyba pri aplik\u00E1ci\u00ED alebo ulo\u017Een\u00ED zmien UI. Opustite re\u017Eim \u00FAprav a spustite aplik\u00E1ciu znova\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Reset na \u0161tandardn\u00FA verziu +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Chcete v\u0161etky zmeny UI zamietnu\u0165 a resetova\u0165 aplik\u00E1ciu na \u0161tandardn\u00FA verziu? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Chcete zamietnu\u0165 v\u0161etky personaliz\u00E1cie a resetova\u0165 aplik\u00E1ciu? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Do\u0161lo k technickej chybe. Sk\u00FAste to znova nesk\u00F4r. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=D\u00F4vod\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Ak vykonate potvrdenie, v\u0161etky zmeny sa stratia. Ak ich chcete ulo\u017Ei\u0165, zatvorte tento dial\u00F3g a opus\u0165te re\u017Eim \u00FApravy UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Hlavi\u010Dka tejto skupiny obsahuje doplnkov\u00E9 prvky. T\u00E1to sa vyma\u017Ee, ak odstr\u00E1nite t\u00FAto skupinu. Chcete aj tak vymaza\u0165 skupinu? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u017Diadne \u010Fal\u0161ie {0} nie s\u00FA k dispoz\u00EDcii +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Inform\u00E1cie +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Personalizovali ste aplik\u00E1ciu. V re\u017Eime \u00FApravy UI sa aplik\u00E1cia znova zavedie bez personaliz\u00E1cie. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Zobrazenie personalizovanej verzie +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Zave\u010Fte aplik\u00E1ciu znova, aby sa zobrazili zmeny vo va\u0161ej personaliz\u00E1cii. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Zobrazenie personalizovanej verzie +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Zru\u0161i\u0165 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_sl.properties b/resources/sap/ui/rta/messagebundle_sl.properties new file mode 100644 index 0000000..28b8ba4 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_sl.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Prilagoditev UV +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personalizacija aplikacije +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Shranjevanje & izhod +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Zaklju\u010Deno +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Shranjevanje sprememb +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Ve\u010D ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Odstranitev +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Odstranitev +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Dodajanje {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Vsebina +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Izrez +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Vstavljanje +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombiniranje +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Delitev +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Kreiranje {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Novo {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Preimenovanje +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Nastavitve +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=Navigiranje do +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Odstranitev +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Prekinitev +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Kreiranje uporabni\u0161ko definiranega polja, asociacije ali logike +#XMIT: Label for the original name of a renamed label +LBL_FREP=je bilo {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Nastavitve +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Na voljo\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Lansiranje +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Ponastavitev +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Ponovitev +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Objava +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Ponastavi +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transport +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UV-prilagoditev +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigacija +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Napaka +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Va\u0161ih sprememb UV ni mogo\u010De opustiti. Poskusite znova pozneje ali pa se obrnite na administratorja\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Napaka +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Va\u0161ih sprememb UV ni mogo\u010De prenesti. Poskusite znova pozneje ali pa se obrnite na administratorja\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Va\u0161ih sprememb UV ni mogo\u010De objaviti. Poskusite znova pozneje ali pa se obrnite na administratorja\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Va\u0161e spremembe UV so prevzete v prenos. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Va\u0161e spremembe UV so planirane za objavo. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Informacija +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Vse spremembe UV so \u017Ee prevzete v prenos. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Napaka +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Napaka pri uporabi ali shranjevanju sprememb UV. Zapustite modus prilagoditve in znova za\u017Eenite aplikacijo\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Ponastavitev na standardno verzijo +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u017Delite opustiti vse spremembe UV in ponastaviti aplikacijo na standardno verzijo? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u017Delite zavre\u010Di vse personalizacije in ponastaviti aplikacijo? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Pri\u0161lo je do tehni\u010Dne napake. Prosim, poskusite znova pozneje. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Razlog\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u010Ce potrdite, bodo vse spremembe izgubljene. Za shranjevanje zaprite ta dialog in zapustite modus prilagoditve UV. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Glava te skupine vsebuje dodatne elemente. \u010Ce odstranite to skupino, se bodo izbrisali. \u017Delite vseeno odstraniti skupino? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Ni drugih {0} na razpolago +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Informacije +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Aplikacijo ste prilagodili. V modusu prilagoditve uporabni\u0161kega vmesnika bo aplikacija znova prenesena brez personalizacije. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Prikaz prilagojene verzije +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Aplikacijo ponovno nalo\u017Eite, da prika\u017Eete spremembe personalizacije. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Prikaz prilagojene verzije +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Prekinitev +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_sv.properties b/resources/sap/ui/rta/messagebundle_sv.properties new file mode 100644 index 0000000..7e5b28c --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_sv.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Anpassa UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Personanpassa app +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Spara och avsluta +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Klar +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=Spara \u00E4ndringar +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Mer... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Ta bort +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Ta bort +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=L\u00E4gg till {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=Inneh\u00E5ll +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Klipp ut +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Infoga +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Kombinera +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Dela +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Skapa {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Ny {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Byt namn +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Inst\u00E4llningar +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=G\u00E5 till +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Ta bort +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Avbryt +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Skapa anv\u00E4ndardefinierat f\u00E4lt, association eller logik +#XMIT: Label for the original name of a renamed label +LBL_FREP=var {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Inst\u00E4llningar +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Tillg\u00E4nglig\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Frisl\u00E4pp +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u00C5terst\u00E4ll +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Upprepa +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Publicera +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u00C5terst\u00E4ll +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Transportera +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI-anpassning +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Navigering +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Fel +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=Era UI-\u00E4ndringar kan inte annulleras. F\u00F6rs\u00F6k igen senare eller kontakta administrat\u00F6ren\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Fel +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=Era UI-\u00E4ndringar kan inte transporteras. F\u00F6rs\u00F6k igen senare eller kontakta administrat\u00F6ren\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=Era UI-\u00E4ndringar kan inte publiceras. F\u00F6rs\u00F6k igen senare eller kontakta administrat\u00F6ren\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Era UI-\u00E4ndringar har \u00F6verf\u00F6rts till transport. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Era UI-\u00E4ndringar har planerats in f\u00F6r publicering. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Information +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=Alla UI-\u00E4ndringar har redan \u00F6verf\u00F6rts till en transport. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Fel +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=Fel vid till\u00E4mpning eller lagring av UI-\u00E4ndringar. St\u00E4ng anpassningsl\u00E4ge och starta om app\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u00C5terst\u00E4ll till standardversion +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Vill du f\u00F6rkasta alla UI-\u00E4ndringar och \u00E5terst\u00E4lla appen till standardversion? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Ska alla personanpassningar f\u00F6rkastas och appen \u00E5terst\u00E4llas? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Ett tekniskt fel uppstod. F\u00F6rs\u00F6k igen senare. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Orsak\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Om Ni bekr\u00E4ftar g\u00E5r samtliga \u00E4ndringar f\u00F6rlorade. F\u00F6r att spara \u00E4ndringarna, st\u00E4ng denna dialog och l\u00E4mna UI-anpassningsl\u00E4get. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Huvudet f\u00F6r denna grupp inneh\u00E5ller ytterligare element. Om gruppen tas bort raderas dessa. Ta bort gruppen \u00E4nd\u00E5? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Ingen ytterligare {0} tillg\u00E4nglig +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Information +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Appen har personanpassats. I UI-anpassningsl\u00E4ge l\u00E4ses appen in p\u00E5 nytt utan personanpassning. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Visa personanpassad version +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=L\u00E4s in appen igen f\u00F6r att visa \u00E4ndringar f\u00F6r personanpassning. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Visa personanpassad version +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Avbryt +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_th.properties b/resources/sap/ui/rta/messagebundle_th.properties new file mode 100644 index 0000000..ce452f2 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_th.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u0E1B\u0E23\u0E31\u0E1A UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E41\u0E2D\u0E1E\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25 +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E41\u0E25\u0E30\u0E2D\u0E2D\u0E01 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u0E40\u0E2A\u0E23\u0E47\u0E08\u0E2A\u0E34\u0E49\u0E19 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21 ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0E22\u0E49\u0E32\u0E22\u0E2D\u0E2D\u0E01 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0E22\u0E49\u0E32\u0E22\u0E2D\u0E2D\u0E01 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u0E40\u0E1E\u0E34\u0E48\u0E21 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0E40\u0E19\u0E37\u0E49\u0E2D\u0E2B\u0E32 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0E15\u0E31\u0E14 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u0E27\u0E32\u0E07 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u0E23\u0E27\u0E21 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0E41\u0E22\u0E01 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u0E2A\u0E23\u0E49\u0E32\u0E07 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER={0} \u0E43\u0E2B\u0E21\u0E48 +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E0A\u0E37\u0E48\u0E2D +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u0E01\u0E32\u0E23\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E04\u0E48\u0E32 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u0E40\u0E19\u0E27\u0E34\u0E40\u0E01\u0E15\u0E44\u0E1B\u0E22\u0E31\u0E07 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u0E15\u0E01\u0E25\u0E07 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0E22\u0E49\u0E32\u0E22\u0E2D\u0E2D\u0E01 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E1F\u0E34\u0E25\u0E14\u0E4C\u0E17\u0E35\u0E48\u0E1B\u0E23\u0E31\u0E1A\u0E41\u0E15\u0E48\u0E07\u0E44\u0E14\u0E49 \u0E04\u0E27\u0E32\u0E21\u0E2A\u0E31\u0E21\u0E1E\u0E31\u0E19\u0E18\u0E4C \u0E2B\u0E23\u0E37\u0E2D\u0E25\u0E2D\u0E08\u0E34\u0E01 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u0E0A\u0E37\u0E48\u0E2D\u0E40\u0E14\u0E34\u0E21\u0E04\u0E37\u0E2D {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u0E01\u0E32\u0E23\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E04\u0E48\u0E32 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u0E17\u0E35\u0E48\u0E21\u0E35\u0E2D\u0E22\u0E39\u0E48 {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0E43\u0E0A\u0E49\u0E23\u0E48\u0E27\u0E21\u0E01\u0E31\u0E19 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u0E17\u0E33\u0E0B\u0E49\u0E33 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u0E40\u0E1C\u0E22\u0E41\u0E1E\u0E23\u0E48 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u0E17\u0E23\u0E32\u0E19\u0E2A\u0E1B\u0E2D\u0E23\u0E4C\u0E15 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u0E01\u0E32\u0E23\u0E40\u0E19\u0E27\u0E34\u0E40\u0E01\u0E15 +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E25\u0E30\u0E17\u0E34\u0E49\u0E07\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E43\u0E19\u0E02\u0E13\u0E30\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E20\u0E32\u0E22\u0E2B\u0E25\u0E31\u0E07 \u0E2B\u0E23\u0E37\u0E2D\u0E15\u0E34\u0E14\u0E15\u0E48\u0E2D\u0E1C\u0E39\u0E49\u0E14\u0E39\u0E41\u0E25\u0E23\u0E30\u0E1A\u0E1A\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E17\u0E23\u0E32\u0E19\u0E2A\u0E1B\u0E2D\u0E23\u0E4C\u0E15\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E43\u0E19\u0E02\u0E13\u0E30\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E20\u0E32\u0E22\u0E2B\u0E25\u0E31\u0E07 \u0E2B\u0E23\u0E37\u0E2D\u0E15\u0E34\u0E14\u0E15\u0E48\u0E2D\u0E1C\u0E39\u0E49\u0E14\u0E39\u0E41\u0E25\u0E23\u0E30\u0E1A\u0E1A\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E40\u0E1C\u0E22\u0E41\u0E1E\u0E23\u0E48\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E43\u0E19\u0E02\u0E13\u0E30\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07\u0E20\u0E32\u0E22\u0E2B\u0E25\u0E31\u0E07 \u0E2B\u0E23\u0E37\u0E2D\u0E15\u0E34\u0E14\u0E15\u0E48\u0E2D\u0E1C\u0E39\u0E49\u0E14\u0E39\u0E41\u0E25\u0E23\u0E30\u0E1A\u0E1A\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E16\u0E39\u0E01\u0E23\u0E27\u0E21\u0E44\u0E27\u0E49\u0E43\u0E19\u0E01\u0E32\u0E23\u0E17\u0E23\u0E32\u0E19\u0E2A\u0E1B\u0E2D\u0E23\u0E4C\u0E15 +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E16\u0E39\u0E01\u0E08\u0E31\u0E14\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E01\u0E32\u0E23\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E1C\u0E22\u0E41\u0E1E\u0E23\u0E48 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25 +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14\u0E16\u0E39\u0E01\u0E23\u0E27\u0E21\u0E43\u0E19\u0E01\u0E32\u0E23\u0E17\u0E23\u0E32\u0E19\u0E2A\u0E1B\u0E2D\u0E23\u0E4C\u0E15\u0E41\u0E25\u0E49\u0E27 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E02\u0E13\u0E30\u0E19\u0E33\u0E44\u0E1B\u0E43\u0E0A\u0E49\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E42\u0E2B\u0E21\u0E14\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A\u0E41\u0E25\u0E49\u0E27\u0E40\u0E23\u0E34\u0E48\u0E21\u0E41\u0E2D\u0E1E\u0E1E\u0E25\u0E34\u0E40\u0E04\u0E0A\u0E31\u0E19\u0E43\u0E2B\u0E21\u0E48\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E40\u0E1B\u0E47\u0E19\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E19\u0E21\u0E32\u0E15\u0E23\u0E10\u0E32\u0E19 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0E04\u0E38\u0E13\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E25\u0E30\u0E17\u0E34\u0E49\u0E07\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14\u0E41\u0E25\u0E30\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E41\u0E2D\u0E1E\u0E1E\u0E25\u0E34\u0E40\u0E04\u0E0A\u0E31\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E19\u0E21\u0E32\u0E15\u0E23\u0E10\u0E32\u0E19\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0E04\u0E38\u0E13\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E25\u0E30\u0E17\u0E34\u0E49\u0E07\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14\u0E41\u0E25\u0E30\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E41\u0E2D\u0E1E\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E17\u0E32\u0E07\u0E40\u0E17\u0E04\u0E19\u0E34\u0E04\u0E02\u0E36\u0E49\u0E19 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48 +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u0E40\u0E2B\u0E15\u0E38\u0E1C\u0E25\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u0E16\u0E49\u0E32\u0E04\u0E38\u0E13\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19 \u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07 UI \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14\u0E08\u0E30\u0E2A\u0E39\u0E0D\u0E2B\u0E32\u0E22 \u0E40\u0E21\u0E37\u0E48\u0E2D\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01 \u0E43\u0E2B\u0E49\u0E1B\u0E34\u0E14\u0E44\u0E14\u0E2D\u0E30\u0E25\u0E2D\u0E01\u0E1A\u0E47\u0E2D\u0E01\u0E0B\u0E4C\u0E19\u0E35\u0E49 \u0E41\u0E25\u0E30\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E42\u0E2B\u0E21\u0E14\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A UI +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0E2A\u0E48\u0E27\u0E19\u0E2B\u0E31\u0E27\u0E02\u0E2D\u0E07\u0E01\u0E25\u0E38\u0E48\u0E21\u0E19\u0E35\u0E49\u0E1B\u0E23\u0E30\u0E01\u0E2D\u0E1A\u0E14\u0E49\u0E27\u0E22\u0E2D\u0E07\u0E04\u0E4C\u0E1B\u0E23\u0E30\u0E01\u0E2D\u0E1A\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21 \u0E16\u0E49\u0E32\u0E04\u0E38\u0E13\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E22\u0E49\u0E32\u0E22\u0E01\u0E25\u0E38\u0E48\u0E21\u0E2D\u0E2D\u0E01 \u0E01\u0E25\u0E38\u0E48\u0E21\u0E40\u0E2B\u0E25\u0E48\u0E32\u0E19\u0E35\u0E49\u0E08\u0E30\u0E2A\u0E39\u0E0D\u0E2B\u0E32\u0E22 \u0E04\u0E38\u0E13\u0E41\u0E19\u0E48\u0E43\u0E08\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E22\u0E49\u0E32\u0E22\u0E01\u0E25\u0E38\u0E48\u0E21\u0E2D\u0E2D\u0E01? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u0E44\u0E21\u0E48\u0E21\u0E35 {0} \u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21 +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25 +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u0E04\u0E38\u0E13\u0E44\u0E14\u0E49\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E41\u0E2D\u0E1E\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25 \u0E43\u0E19\u0E42\u0E2B\u0E21\u0E14\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A UI \u0E41\u0E2D\u0E1E\u0E08\u0E30\u0E23\u0E35\u0E42\u0E2B\u0E25\u0E14\u0E42\u0E14\u0E22\u0E44\u0E21\u0E48\u0E21\u0E35\u0E01\u0E32\u0E23\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E04\u0E48\u0E32\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13 +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u0E41\u0E2A\u0E14\u0E07\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E19\u0E17\u0E35\u0E48\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25 +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u0E16\u0E49\u0E32\u0E04\u0E38\u0E13\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E14\u0E39\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25 \u0E04\u0E38\u0E13\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E23\u0E35\u0E42\u0E2B\u0E25\u0E14\u0E41\u0E2D\u0E1E\u0E44\u0E14\u0E49 +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u0E41\u0E2A\u0E14\u0E07\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E19\u0E17\u0E35\u0E48\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25 +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_tr.properties b/resources/sap/ui/rta/messagebundle_tr.properties new file mode 100644 index 0000000..1bc2c29 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_tr.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=UI uyarla +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Uygulamay\u0131 ki\u015Fiselle\u015Ftir +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=Sakla ve sonland\u0131r +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Tamamland\u0131 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=De\u011Fi\u015Fiklikleri sakla +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Daha fazla... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Kald\u0131r +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Kald\u0131r +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS={0} ekle +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0130\u00E7erik +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=Kes +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Ekle +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=Birle\u015Ftir +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=B\u00F6l +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER={0} yarat +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=Yeni {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=Yeniden adland\u0131r +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Ayarlar +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u015Euraya git +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=TAMAM +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Kald\u0131r +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0130ptal et +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Kullan\u0131c\u0131 tan\u0131ml\u0131 alan, ili\u015Fki veya mant\u0131k yarat +#XMIT: Label for the original name of a renamed label +LBL_FREP={0} idi +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Ayarlar +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Kullan\u0131labilir\: {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Onayla +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Geri al +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=Yinele +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=Yay\u0131nla +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Geri al +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=Ta\u015F\u0131 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI ayarlama +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=Dola\u015Fma +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=Hata +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=UI de\u011Fi\u015Fiklikleriniz at\u0131lam\u0131yor. Daha sonra yeniden deneyin veya y\u00F6neticinize ba\u015Fvurun\: {0}. +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=Hata +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=UI de\u011Fi\u015Fiklikleriniz ta\u015F\u0131naam\u0131yor. Daha sonra yeniden deneyin veya y\u00F6neticinize ba\u015Fvurun\: {0}. +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=UI de\u011Fi\u015Fiklikleriniz yay\u0131mlanam\u0131yor. Daha sonra yeniden deneyin veya y\u00F6neticinize ba\u015Fvurun\: {0}. +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=UI de\u011Fi\u015Fiklikleriniz ta\u015F\u0131maya al\u0131nd\u0131. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=UI de\u011Fi\u015Fiklikleriniz yay\u0131m i\u00E7in planland\u0131. +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Bilgi +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=T\u00FCm UI de\u011Fi\u015Fiklikleri \u00F6nceden ta\u015F\u0131maya al\u0131nd\u0131. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=Hata +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=UI de\u011Fi\u015Fikliklerinin kullan\u0131lmas\u0131 veya saklanmas\u0131 s\u0131ras\u0131nda hata. Uyarlama kipinden \u00E7\u0131k\u0131n ve uygulamay\u0131 yeniden ba\u015Flat\u0131n\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Standart versiyona geri al +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=T\u00FCm UI de\u011Fi\u015Fikliklerini iptal etmek ve uygulamay\u0131 standart versiyona geri almak istiyor musunuz? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=T\u00FCm ki\u015Fiselle\u015Ftirmeleri atmak ve uygulamay\u0131 geri almak istiyor musunuz? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=Teknik hata ortaya \u00E7\u0131kt\u0131. Daha sonra yeniden deneyin. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Neden\: {0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=Onaylarsan\u0131z t\u00FCm de\u011Fi\u015Fiklikler kaybolacak. Bunlar\u0131 saklamak i\u00E7in bu diyalo\u011Fu kapat\u0131n ve UI ayarlama kipinden \u00E7\u0131k\u0131n. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Bu grubun ba\u015Fl\u0131\u011F\u0131 ek \u00F6\u011Feler i\u00E7eriyor. Grubu kald\u0131r\u0131rsan\u0131z bunlar silinir. Yine de grubu kald\u0131rmak istiyor musunuz? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Ba\u015Fka {0} mevcut de\u011Fil +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Bilgiler +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Uygulamay\u0131 ki\u015Fiselle\u015Ftirdiniz. Uygulama, UI uyarlama kipinde ki\u015Fiselle\u015Ftirme olmadan yeniden y\u00FCklenecek. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Ki\u015Fiselle\u015Ftirilen versiyonu g\u00F6r\u00FCnt\u00FCle +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=Ki\u015Fiselle\u015Ftirmenizdeki de\u011Fi\u015Fiklikleri g\u00F6r\u00FCnt\u00FClemek i\u00E7in uygulamay\u0131 yeniden y\u00FCkleyin. +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Ki\u015Fiselle\u015Ftirilen versiyonu g\u00F6r\u00FCnt\u00FCle +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0130ptal +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_uk.properties b/resources/sap/ui/rta/messagebundle_uk.properties new file mode 100644 index 0000000..4555179 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_uk.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u0410\u0434\u0430\u043F\u0442\u0443\u0432\u0430\u0442\u0438 \u0456\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u041F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043E\u043A +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0456 \u0432\u0438\u0439\u0442\u0438 +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u0412\u0438\u043A\u043E\u043D\u0430\u043D\u043E +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0437\u043C\u0456\u043D\u0438 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u0411\u0456\u043B\u044C\u0448\u0435 ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u0414\u043E\u0434\u0430\u0442\u0438 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u0412\u043C\u0456\u0441\u0442 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u041A\u043E\u043C\u0431\u0456\u043D\u0443\u0432\u0430\u0442\u0438 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u0420\u043E\u0437\u0434\u0456\u043B\u0438\u0442\u0438 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u041D\u043E\u0432\u0435 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u041F\u0435\u0440\u0435\u0439\u043C\u0435\u043D\u0443\u0432\u0430\u0442\u0438 +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u041D\u0430\u0432\u0456\u0433\u0443\u0432\u0430\u0442\u0438 \u0434\u043E +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u043B\u0435, \u0430\u0441\u043E\u0446\u0456\u0430\u0446\u0456\u044E \u0430\u0431\u043E \u043B\u043E\u0433\u0456\u043A\u0443 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u0431\u0443\u043B\u043E {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438 \u0441\u043F\u0456\u043B\u044C\u043D\u043E +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u041E\u043F\u0443\u0431\u043B\u0456\u043A\u0443\u0432\u0430\u0442\u0438 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u0421\u043A\u0438\u043D\u0443\u0442\u0438 +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u041F\u0435\u0440\u0435\u043D\u0435\u0441\u0442\u0438 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u0410\u0434\u0430\u043F\u0442\u0430\u0446\u0456\u044F UI +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u041D\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044F +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u041F\u043E\u043C\u0438\u043B\u043A\u0430 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u0432\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u043D\u0430\u0440\u0430\u0437\u0456 \u043D\u0435\u043C\u043E\u0436\u043B\u0438\u0432\u043E \u0441\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438. \u041F\u043E\u0432\u0442\u043E\u0440\u0456\u0442\u044C \u0441\u043F\u0440\u043E\u0431\u0443 \u043F\u0456\u0437\u043D\u0456\u0448\u0435 \u0430\u0431\u043E \u0437\u0432\u0435\u0440\u043D\u0456\u0442\u044C\u0441\u044F \u0434\u043E \u0430\u0434\u043C\u0456\u043D\u0456\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u041F\u043E\u043C\u0438\u043B\u043A\u0430 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u0432\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u043D\u0430\u0440\u0430\u0437\u0456 \u043D\u0435\u043C\u043E\u0436\u043B\u0438\u0432\u043E \u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0442\u0438. \u041F\u043E\u0432\u0442\u043E\u0440\u0456\u0442\u044C \u0441\u043F\u0440\u043E\u0431\u0443 \u043F\u0456\u0437\u043D\u0456\u0448\u0435 \u0430\u0431\u043E \u0437\u0432\u0435\u0440\u043D\u0456\u0442\u044C\u0441\u044F \u0434\u043E \u0430\u0434\u043C\u0456\u043D\u0456\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u0432\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u043D\u0430\u0440\u0430\u0437\u0456 \u043D\u0435\u043C\u043E\u0436\u043B\u0438\u0432\u043E \u043E\u043F\u0443\u0431\u043B\u0456\u043A\u0443\u0432\u0430\u0442\u0438. \u041F\u043E\u0432\u0442\u043E\u0440\u0456\u0442\u044C \u0441\u043F\u0440\u043E\u0431\u0443 \u043F\u0456\u0437\u043D\u0456\u0448\u0435 \u0430\u0431\u043E \u0437\u0432\u0435\u0440\u043D\u0456\u0442\u044C\u0441\u044F \u0434\u043E \u0430\u0434\u043C\u0456\u043D\u0456\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u0412\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u0431\u0443\u043B\u043E \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u0432 \u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0435\u043D\u043D\u044F. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u0412\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0434\u043B\u044F \u043F\u0443\u0431\u043B\u0456\u043A\u0430\u0446\u0456\u0457 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u0412\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u0432\u0436\u0435 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u0432 \u043F\u0435\u0440\u0435\u043D\u0435\u0441\u0435\u043D\u043D\u044F. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u041F\u043E\u043C\u0438\u043B\u043A\u0430 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0456\u0434 \u0447\u0430\u0441 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u043D\u043D\u044F \u0447\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F \u0437\u043C\u0456\u043D UI. \u0412\u0438\u0439\u0442\u0438 \u0437 \u0440\u0435\u0436\u0438\u043C\u0443 \u0430\u0434\u0430\u043F\u0442\u0430\u0446\u0456\u0457 \u0456 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043E\u043A\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u043E\u0457 \u0432\u0435\u0440\u0441\u0456\u0457 +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u0412\u0456\u0434\u0445\u0438\u043B\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u0442\u0430 \u0441\u043A\u0438\u043D\u0443\u0442\u0438 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043E\u043A \u0434\u043E \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u043E\u0457 \u0432\u0435\u0440\u0441\u0456\u0457? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u0411\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0456\u0434\u0445\u0438\u043B\u0438\u0442\u0438 \u0432\u0441\u0456 \u0441\u0432\u043E\u0457 \u0437\u043C\u0456\u043D\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u0430\u0446\u0456\u0457 \u0442\u0430 \u0441\u043A\u0438\u043D\u0443\u0442\u0438 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043E\u043A? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u0441\u0442\u0430\u043B\u0430\u0441\u044C \u0442\u0435\u0445\u043D\u0456\u0447\u043D\u0430 \u043F\u043E\u043C\u0438\u043B\u043A\u0430. \u041F\u043E\u0432\u0442\u043E\u0440\u0456\u0442\u044C \u0441\u043F\u0440\u043E\u0431\u0443 \u043F\u0456\u0437\u043D\u0456\u0448\u0435. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u041F\u0440\u0438\u0447\u0438\u043D\u0430\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u041F\u0456\u0441\u043B\u044F \u043F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043D\u044F \u0432\u0441\u0456 \u0432\u0430\u0448\u0456 \u0437\u043C\u0456\u043D\u0438 UI \u0431\u0443\u0434\u0443\u0442\u044C \u0432\u0442\u0440\u0430\u0447\u0435\u043D\u0456. \u0429\u043E\u0431 \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0457\u0445, \u0437\u0430\u043A\u0440\u0438\u0439\u0442\u0435 \u0446\u0435 \u0434\u0456\u0430\u043B\u043E\u0433\u043E\u0432\u0435 \u0432\u0456\u043A\u043D\u043E \u0456 \u0432\u0438\u0439\u0434\u0456\u044C \u0437 \u0440\u0435\u0436\u0438\u043C\u0443 \u0430\u0434\u0430\u043F\u0442\u0430\u0446\u0456\u0457 UI. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0446\u0456\u0454\u0457 \u0433\u0440\u0443\u043F\u0438 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0456 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438. \u042F\u043A\u0449\u043E \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0433\u0440\u0443\u043F\u0443, \u0432\u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442\u044C \u0432\u0442\u0440\u0430\u0447\u0435\u043D\u0456. \u0412\u0441\u0435 \u043E\u0434\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0433\u0440\u0443\u043F\u0443? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u0411\u0456\u043B\u044C\u0448\u0435 {0} \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u0412\u0438 \u0432\u043D\u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u043E\u0432\u0430\u043D\u0456 \u0437\u043C\u0456\u043D\u0438 \u0434\u043E \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043A\u0443. \u0412 \u0440\u0435\u0436\u0438\u043C\u0456 \u0430\u0434\u0430\u043F\u0442\u0430\u0446\u0456\u0457 \u0456\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043E\u043A \u0431\u0443\u0434\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043E \u0431\u0435\u0437 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0430\u0448\u0438\u0445 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u0438\u0445 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043E\u043A. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u043E\u0432\u0430\u043D\u0443 \u0432\u0435\u0440\u0441\u0456\u044E +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u042F\u043A\u0449\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043F\u043E\u0431\u0430\u0447\u0438\u0442\u0438 \u0441\u0432\u043E\u0457 \u0437\u043C\u0456\u043D\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u0430\u0446\u0456\u0457 \u0437\u043D\u043E\u0432\u0443, \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043E\u043A +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u043E\u0432\u0430\u043D\u0443 \u0432\u0435\u0440\u0441\u0456\u044E +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_vi.properties b/resources/sap/ui/rta/messagebundle_vi.properties new file mode 100644 index 0000000..db620bc --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_vi.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=Thi\u0301ch \u01B0\u0301ng UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=Ca\u0301 nh\u00E2n ho\u0301a \u01B0\u0301ng du\u0323ng +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=L\u01B0u & Thoa\u0301t +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=Xong +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=L\u01B0u thay \u0111\u00F4\u0309i +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=Th\u00EAm ... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=Loa\u0323i bo\u0309 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=Loa\u0323i bo\u0309 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=Th\u00EAm {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=N\u00F4\u0323i dung +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=C\u0103\u0301t +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=Da\u0301n +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=K\u00EA\u0301t h\u01A1\u0323p +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=Ph\u00E2n chia +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=Ta\u0323o {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER={0} m\u01A1\u0301i +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u0110\u00F4\u0309i t\u00EAn +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=Thi\u00EA\u0301t l\u00E2\u0323p +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u0110i\u00EA\u0300u h\u01B0\u01A1\u0301ng \u0111\u00EA\u0301n +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=OK +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=Loa\u0323i bo\u0309 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=Hu\u0309y +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=Ta\u0323o tr\u01B0\u01A1\u0300ng tu\u0300y chi\u0309nh, li\u00EAn k\u00EA\u0301t ho\u0103\u0323c l\u00F4gic +#XMIT: Label for the original name of a renamed label +LBL_FREP=la\u0300 {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=Thi\u00EA\u0301t l\u00E2\u0323p +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=Co\u0301 s\u0103\u0303n {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=Chia se\u0309 +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=Hoa\u0300n ta\u0301c +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=La\u0300m la\u0323i +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=C\u00F4ng b\u00F4\u0301 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=Thi\u00EA\u0301t l\u00E2\u0323p la\u0323i +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=V\u1EADn chuy\u1EC3n +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u0110i\u00EA\u0300u chi\u0309nh giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u0110i\u00EA\u0300u h\u01B0\u01A1\u0301ng +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=L\u00F4\u0303i +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=R\u00E2\u0301t ti\u00EA\u0301c, ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng cu\u0309a ba\u0323n kh\u00F4ng th\u00EA\u0309 \u0111\u01B0\u01A1\u0323c hu\u0309y bo\u0309 lu\u0301c na\u0300y. Vui lo\u0300ng th\u01B0\u0309 la\u0323i sau ho\u0103\u0323c li\u00EAn h\u00EA\u0323 ng\u01B0\u01A1\u0300i qua\u0309n tri\u0323 cu\u0309a ba\u0323n\: {0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=L\u00F4\u0303i +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=R\u00E2\u0301t ti\u00EA\u0301c, ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng cu\u0309a ba\u0323n kh\u00F4ng th\u00EA\u0309 \u0111\u01B0\u01A1\u0323c chuy\u00EA\u0309n va\u0300o lu\u0301c na\u0300y. Vui lo\u0300ng th\u01B0\u0309 la\u0323i sau ho\u0103\u0323c li\u00EAn h\u00EA\u0323 ng\u01B0\u01A1\u0300i qua\u0309n tri\u0323 cu\u0309a ba\u0323n\: {0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=R\u00E2\u0301t ti\u00EA\u0301c, ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng cu\u0309a ba\u0323n kh\u00F4ng th\u00EA\u0309 xu\u00E2\u0301t va\u0300o lu\u0301c na\u0300y. Vui lo\u0300ng th\u01B0\u0309 la\u0323i sau ho\u0103\u0323c li\u00EAn h\u00EA\u0323 ng\u01B0\u01A1\u0300i qua\u0309n tri\u0323 cu\u0309a ba\u0323n\: {0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=Ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng cu\u0309a ba\u0323n \u0111\u01B0\u01A1\u0323c bao g\u00F4\u0300m trong chuy\u00EA\u0309n ta\u0309i. +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=Ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng cu\u0309a ba\u0323n \u0111\u01B0\u01A1\u0323c l\u00E2\u0323p li\u0323ch \u0111\u00EA\u0309 xu\u00E2\u0301t +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=Th\u00F4ng tin +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=T\u00E2\u0301t ca\u0309 thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng \u0111\u00EA\u0300u \u0111a\u0303 bao g\u00F4\u0300m trong chuy\u00EA\u0309n ta\u0309i. +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=L\u00F4\u0303i +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=L\u00F4\u0303i trong khi a\u0301p du\u0323ng ho\u0103\u0323c l\u01B0u ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng. Thoa\u0301t ch\u00EA\u0301 \u0111\u00F4\u0323 pho\u0309ng theo va\u0300 kh\u01A1\u0309i \u0111\u00F4\u0323ng la\u0323i \u01B0\u0301ng du\u0323ng\: {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=Thi\u00EA\u0301t l\u00E2\u0323p la\u0323i tha\u0300nh phi\u00EAn ba\u0309n ti\u00EAu chu\u00E2\u0309n +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=Ba\u0323n co\u0301 mu\u00F4\u0301n loa\u0323i bo\u0309 t\u00E2\u0301t ca\u0309 thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng va\u0300 thi\u00EA\u0301t l\u00E2\u0323p la\u0323i \u01B0\u0301ng du\u0323ng tha\u0300nh phi\u00EAn ba\u0309n chu\u00E2\u0309n? +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=Ba\u0323n co\u0301 mu\u00F4\u0301n hu\u0309y bo\u0309 t\u00E2\u0301t ca\u0309 thay \u0111\u00F4\u0309i ca\u0301 nh\u00E2n ho\u0301a cu\u0309a ba\u0323n va\u0300 thi\u00EA\u0301t l\u00E2\u0323p la\u0323i \u01B0\u0301ng du\u0323ng? +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=R\u00E2\u0301t ti\u00EA\u0301c, \u0111a\u0303 xa\u0309y ra l\u00F4\u0303i ky\u0303 thu\u00E2\u0323t. Vui lo\u0300ng th\u01B0\u0309 la\u0323i sau. +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=Ly\u0301 do\:{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=N\u00EA\u0301u ba\u0323n xa\u0301c nh\u00E2\u0323n, t\u00E2\u0301t ca\u0309 ca\u0301c thay \u0111\u00F4\u0309i giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng cu\u0309a ba\u0323n se\u0303 bi\u0323 m\u00E2\u0301t. \u0110\u00EA\u0309 l\u01B0u chu\u0301ng, \u0111o\u0301ng h\u00F4\u0323p thoa\u0323i na\u0300y va\u0300 thoa\u0301t ch\u00EA\u0301 \u0111\u00F4\u0323 thi\u0301ch nghi giao di\u00EA\u0323n ng\u01B0\u01A1\u0300i du\u0300ng. +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=Ti\u00EAu \u0111\u00EA\u0300 cu\u0309a nho\u0301m na\u0300y ch\u01B0\u0301a ca\u0301c y\u00EA\u0301u t\u00F4\u0301 b\u00F4\u0309 sung. N\u00EA\u0301u ba\u0323n loa\u0323i bo\u0309 nho\u0301m, chu\u0301ng se\u0303 bi\u0323 m\u00E2\u0301t. Ba\u0323n co\u0301 mu\u00F4\u0301n loa\u0323i bo\u0309 nho\u0301m du\u0300 th\u00EA\u0301 na\u0300o \u0111i n\u01B0\u0303a? +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=Kh\u00F4ng co\u0301 s\u0103\u0303n {0} th\u00EAm +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=Th\u00F4ng tin +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=Ba\u0323n \u0111a\u0303 ca\u0301 nh\u00E2n ho\u0301a \u01B0\u0301ng du\u0323ng. Trong ch\u00EA\u0301 \u0111\u00F4\u0323 thi\u0301ch \u01B0\u0301ng UI, \u01B0\u0301ng du\u0323ng se\u0303 ta\u0309i la\u0323i kh\u00F4ng co\u0301 ca\u0301c thi\u00EA\u0301t l\u00E2\u0323p ca\u0301 nh\u00E2n ho\u0301a cu\u0309a ba\u0323n. +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=Hi\u00EA\u0309n thi\u0323 phi\u00EAn ba\u0309n ca\u0301 nh\u00E2n ho\u0301a +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=N\u00EA\u0301u ba\u0323n mu\u00F4\u0301n xem la\u0323i ca\u0301c thay \u0111\u00F4\u0309i ca\u0301 nh\u00E2n ho\u0301a cu\u0309a ba\u0323n, ba\u0323n co\u0301 th\u00EA\u0309 ta\u0309i la\u0323i \u01B0\u0301ng du\u0323ng +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=Hi\u00EA\u0309n thi\u0323 phi\u00EAn ba\u0309n ca\u0301 nh\u00E2n ho\u0301a +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=Hu\u0309y +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_zh_CN.properties b/resources/sap/ui/rta/messagebundle_zh_CN.properties new file mode 100644 index 0000000..0e6cb29 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_zh_CN.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u8C03\u6574 UI +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u4E2A\u6027\u5316\u8BBE\u7F6E\u5E94\u7528\u7A0B\u5E8F +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u4FDD\u5B58\u5E76\u9000\u51FA +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u5B8C\u6210 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u4FDD\u5B58\u66F4\u6539 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u66F4\u591A... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u79FB\u9664 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u79FB\u9664 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u6DFB\u52A0 {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u5185\u5BB9 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u526A\u5207 +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u7C98\u8D34 +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u5408\u5E76 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u62C6\u5206 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u521B\u5EFA {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u65B0\u5EFA {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u91CD\u547D\u540D +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u8BBE\u7F6E +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u5BFC\u822A\u81F3 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u786E\u5B9A +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u79FB\u9664 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u53D6\u6D88 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u521B\u5EFA\u81EA\u5B9A\u4E49\u5B57\u6BB5\u3001\u5173\u8054\u6216\u903B\u8F91 +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u539F\u4E3A {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u8BBE\u7F6E +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u53EF\u7528 {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u5171\u4EAB +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u64A4\u6D88 +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u91CD\u505A +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u53D1\u5E03 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u91CD\u7F6E +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u4F20\u8F93 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=UI \u8C03\u6574 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u5BFC\u822A +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u9519\u8BEF +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u62B1\u6B49\uFF0C\u6B64\u65F6\u65E0\u6CD5\u653E\u5F03\u6240\u505A UI \u66F4\u6539\u3002\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u4E0E\u7BA1\u7406\u5458\u8054\u7CFB\uFF1A{0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u9519\u8BEF +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u62B1\u6B49\uFF0C\u6B64\u65F6\u65E0\u6CD5\u4F20\u8F93\u6240\u505A UI \u66F4\u6539\u3002\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u4E0E\u7BA1\u7406\u5458\u8054\u7CFB\uFF1A{0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u62B1\u6B49\uFF0C\u6B64\u65F6\u65E0\u6CD5\u53D1\u5E03\u6240\u505A UI \u66F4\u6539\u3002\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u4E0E\u7BA1\u7406\u5458\u8054\u7CFB\uFF1A{0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u4F20\u8F93\u4E2D\u5DF2\u5305\u542B\u6240\u505A UI \u66F4\u6539\u3002 +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u5DF2\u8BA1\u5212\u53D1\u5E03\u6240\u505A UI \u66F4\u6539 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u4FE1\u606F +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u4F20\u8F93\u4E2D\u5DF2\u5305\u542B\u6240\u6709 UI \u66F4\u6539 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u9519\u8BEF +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u5E94\u7528\u6216\u4FDD\u5B58 UI \u66F4\u6539\u65F6\u51FA\u9519\u3002 \u9000\u51FA\u8C03\u6574\u6A21\u5F0F\u5E76\u91CD\u65B0\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\uFF1A {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u91CD\u7F6E\u4E3A\u6807\u51C6\u7248\u672C +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u662F\u5426\u8981\u653E\u5F03\u6240\u6709 UI \u66F4\u6539\u5E76\u5C06\u5E94\u7528\u7A0B\u5E8F\u91CD\u7F6E\u4E3A\u6807\u51C6\u7248\u672C\uFF1F +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u662F\u5426\u8981\u653E\u5F03\u6240\u6709\u4E2A\u6027\u5316\u8BBE\u7F6E\u66F4\u6539\u5E76\u91CD\u7F6E\u5E94\u7528\u7A0B\u5E8F\uFF1F +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u62B1\u6B49\uFF0C\u51FA\u73B0\u6280\u672F\u9519\u8BEF\u3002\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002 +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u539F\u56E0\uFF1A{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u5982\u679C\u786E\u8BA4\uFF0C\u5219\u6240\u505A\u7684\u6240\u6709 UI \u66F4\u6539\u90FD\u4F1A\u4E22\u5931\u3002\u8981\u5C06\u5176\u4FDD\u5B58\uFF0C\u8BF7\u5173\u95ED\u6B64\u5BF9\u8BDD\u6846\uFF0C\u7136\u540E\u9000\u51FA UI \u8C03\u6574\u6A21\u5F0F\u3002 +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u6B64\u7EC4\u7684\u62AC\u5934\u5305\u542B\u9644\u52A0\u5143\u7D20\u3002 \u5982\u679C\u79FB\u9664\u8BE5\u7EC4\uFF0C\u8FD9\u4E9B\u5143\u7D20\u5C06\u4F1A\u4E22\u5931\u3002 \u662F\u5426\u4ECD\u8981\u79FB\u9664\u8BE5\u7EC4\uFF1F +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u65E0\u66F4\u591A{0}\u53EF\u7528 +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u4FE1\u606F +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u5DF2\u5BF9\u5E94\u7528\u7A0B\u5E8F\u8FDB\u884C\u4E2A\u6027\u5316\u8BBE\u7F6E\u3002\u5728 UI \u8C03\u6574\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u4E0D\u4F7F\u7528\u4E2A\u6027\u5316\u8BBE\u7F6E\u91CD\u65B0\u52A0\u8F7D\u5E94\u7528\u7A0B\u5E8F\u3002 +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u663E\u793A\u5DF2\u4E2A\u6027\u5316\u8BBE\u7F6E\u7684\u7248\u672C +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u5982\u679C\u60F3\u8981\u518D\u6B21\u67E5\u770B\u6240\u505A\u7684\u4E2A\u6027\u5316\u8BBE\u7F6E\u66F4\u6539\uFF0C\u53EF\u4EE5\u91CD\u65B0\u52A0\u8F7D\u5E94\u7528\u7A0B\u5E8F +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u663E\u793A\u5DF2\u4E2A\u6027\u5316\u8BBE\u7F6E\u7684\u7248\u672C +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u53D6\u6D88 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/messagebundle_zh_TW.properties b/resources/sap/ui/rta/messagebundle_zh_TW.properties new file mode 100644 index 0000000..9c72094 --- /dev/null +++ b/resources/sap/ui/rta/messagebundle_zh_TW.properties @@ -0,0 +1,123 @@ + +#XCAP: Title in the Toolbar +TOOLBAR_TITLE=\u8ABF\u6574\u4F7F\u7528\u8005\u4ECB\u9762 +#XCAP: Title in the Toolbar when the layer is USER +TOOLBAR_TITLE_PERSONALIZE=\u500B\u4EBA\u5316\u61C9\u7528\u7A0B\u5F0F +#XBUT: Button 'Save & Exit' of the Toolbar +BTN_EXIT=\u5132\u5B58\u4E26\u8DF3\u51FA +#XBUT: Button 'Done' of the Toolbar +BTN_DONE=\u5B8C\u6210 +#XTOL: Tooltip for Button 'Done' of the Toolbar +BTN_DONE_TOOLTIP=\u5132\u5B58\u66F4\u6539 +#XMIT: Context Menu Entry 'Adapt' +CTX_ADAPT=\u66F4\u591A... +#XMIT: Context Menu Entry 'Remove' +CTX_REMOVE=\u79FB\u9664 +#XMIT: Remove Confirm Dialog Title +CTX_REMOVE_TITLE=\u79FB\u9664 +#XMIT: Context Menu Entry 'Add ' +CTX_ADD_ELEMENTS=\u65B0\u589E {0} +#XMIT: a Context Menu Entry or Dialog Title will be enhanced with this key user friendly term for several controls +MULTIPLE_CONTROL_NAME=\u5167\u5BB9 +#XMIT: Context Menu Entry 'Cut' +CTX_CUT=\u526A\u4E0B +#XMIT: Context Menu Entry 'Paste' +CTX_PASTE=\u8CBC\u4E0A +#XMIT: Context Menu Entry 'Group' +CTX_GROUP_FIELDS=\u5408\u4F75 +#XMIT: Context Menu Entry 'Ungroup' +CTX_UNGROUP_FIELDS=\u5206\u5272 +#XMIT: Context Menu Entry 'Create Group/Section/' +CTX_CREATE_CONTAINER=\u5EFA\u7ACB {0} +#XTIT: Title or label of the newly created Group/Section/ +TITLE_CREATE_CONTAINER=\u65B0 {0} +#XMIT: Context Menu Entry 'Rename' +CTX_RENAME=\u91CD\u65B0\u547D\u540D +#XMIT: Context Menu Entry 'Settings' +CTX_SETTINGS=\u8A2D\u5B9A +#XMIT: Context Menu Entry 'Trigger' +CTX_TRIGGER=\u700F\u89BD\u81F3 +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_OK=\u78BA\u5B9A +#XBUT: Button 'OK' of the Additional Elements Dialog +BTN_FREP_REMOVE=\u79FB\u9664 +#XBUT: Button 'Cancel' of the Additional Elements Dialog +BTN_FREP_CANCEL=\u53D6\u6D88 +#XTOL: Tooltip for Button 'Create Custom Field' of the Additional Elements Dialog +BTN_FREP_CCF=\u5EFA\u7ACB\u81EA\u8A02\u6B04\u4F4D\u3001\u95DC\u806F\u6216\u908F\u8F2F +#XMIT: Label for the original name of a renamed label +LBL_FREP=\u539F\u70BA {0} +#XHED:Header in the Settings Dialog +HEADER_SETTINGS=\u8A2D\u5B9A +#XHED:Header for dialog showing additional elements with placeholder specifing the control type +HEADER_ADDITIONAL_ELEMENTS=\u53EF\u7528 {0} +#XBUT: Button 'Share' of the Toolbar +BTN_SHARE=\u5171\u4EAB +#XTOL: Tooltip for 'i' Button in RTA Toolbar +#XBUT: Button 'Undo' of the Toolbar +BTN_UNDO=\u5FA9\u539F +#XBUT: Button 'Redo' of the Toolbar +BTN_REDO=\u91CD\u505A +#XBUT: Button 'Publish' of the Toolbar +BTN_PUBLISH=\u767C\u4F48 +#XBUT: Button 'Reset' of the Toolbar +BTN_RESTORE=\u91CD\u8A2D +#XBUT: Button 'Transport' of the Toolbar +BTN_TRANSPORT=\u50B3\u8F38 +#XBUT: Button 'UI Adaptation' of the Toolbar +BTN_ADAPTATION=\u4F7F\u7528\u8005\u4ECB\u9762\u8ABF\u6574 +#XBUT: Button 'Navigation' of the Toolbar +BTN_NAVIGATION=\u700F\u89BD +#XHED: dialog title for failed reset +HEADER_RESTORE_FAILED=\u932F\u8AA4 +#XMSG: dialog message for failed reset +MSG_RESTORE_FAILED=\u5F88\u62B1\u6B49\uFF0C\u76EE\u524D\u7121\u6CD5\u6368\u68C4\u60A8\u7684\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\uFF1B\u8ACB\u7A0D\u5F8C\u518D\u8A66\u6216\u806F\u7D61\u7BA1\u7406\u54E1\uFF1A{0} +#XHED: dialog title for transport error +HEADER_TRANSPORT_ERROR=\u932F\u8AA4 +#XMSG: dialog message for transport error +MSG_TRANSPORT_ERROR=\u5F88\u62B1\u6B49\uFF0C\u76EE\u524D\u7121\u6CD5\u50B3\u8F38\u60A8\u7684\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\uFF1B\u8ACB\u7A0D\u5F8C\u518D\u8A66\u6216\u806F\u7D61\u7BA1\u7406\u54E1\uFF1A{0} +#XMSG: dialog message for publishing error +MSG_PUBLISH_ERROR=\u5F88\u62B1\u6B49\uFF0C\u76EE\u524D\u7121\u6CD5\u767C\u4F48\u60A8\u7684\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\uFF1B\u8ACB\u7A0D\u5F8C\u518D\u8A66\u6216\u806F\u7D61\u7BA1\u7406\u54E1\uFF1A{0} +#XMSG: message toast text for transport success +MSG_TRANSPORT_SUCCESS=\u5DF2\u5728\u50B3\u8F38\u4E2D\u5305\u542B\u60A8\u7684\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539 +#XMSG: message toast text for publishing success +MSG_PUBLISH_SUCCESS=\u5DF2\u6392\u7A0B\u60A8\u7684\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\u9032\u884C\u767C\u4F48 +#XHED: dialog title for inapplicable transport +HEADER_TRANSPORT_INAPPLICABLE=\u8CC7\u8A0A +#XMSG: dialog message for inapplicable transport +MSG_TRANSPORT_INAPPLICABLE=\u5DF2\u5728\u50B3\u8F38\u4E2D\u5305\u542B\u6240\u6709\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539 +#XHED: dialog title for apply/save transport error +HEADER_TRANSPORT_APPLYSAVE_ERROR=\u932F\u8AA4 +#XMSG: dialog message for apply/save transport error +MSG_TRANSPORT_APPLYSAVE_ERROR=\u5957\u7528\u6216\u5132\u5B58\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\u6642\u767C\u751F\u932F\u8AA4\u3002 \u8ACB\u8DF3\u51FA\u8ABF\u6574\u6A21\u5F0F\u4E26\u91CD\u65B0\u555F\u52D5\u61C9\u7528\u7A0B\u5F0F\uFF1A {0} +#XTIT: reset confirmation dialog title +FORM_PERS_RESET_TITLE=\u91CD\u8A2D\u70BA\u6A19\u6E96\u7248\u672C +#XMSG: reset confirmation dialog message +FORM_PERS_RESET_MESSAGE=\u60A8\u8981\u6368\u68C4\u6240\u6709\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\uFF0C\u4E26\u5C07\u61C9\u7528\u7A0B\u5F0F\u91CD\u8A2D\u70BA\u6A19\u6E96\u7248\u672C\u55CE\uFF1F +#XMSG: reset confirmation dialog message in personalization mode +FORM_PERS_RESET_MESSAGE_PERSONALIZATION=\u60A8\u8981\u6368\u68C4\u6240\u6709\u500B\u4EBA\u5316\u66F4\u6539\u4E26\u91CD\u8A2D\u61C9\u7528\u7A0B\u5F0F\u55CE\uFF1F +#XMSG: Error message presented if storing to LREP fails +MSG_LREP_TRANSFER_ERROR=\u5F88\u62B1\u6B49\uFF0C\u767C\u751F\u6280\u8853\u932F\u8AA4\uFF1B\u8ACB\u7A0D\u5F8C\u518D\u8A66 +#XMSG: Error message showing the reason (technical info) +MSG_ERROR_REASON=\u539F\u56E0\uFF1A{0} +#XMSG: Message when leaving RTA without saving +MSG_UNSAVED_CHANGES=\u4E00\u4F46\u78BA\u8A8D\uFF0C\u60A8\u7684\u6240\u6709\u4F7F\u7528\u8005\u4ECB\u9762\u66F4\u6539\u5C07\u6703\u907A\u5931\uFF1B\u82E5\u8981\u5132\u5B58\u66F4\u6539\uFF0C\u8ACB\u95DC\u9589\u6B64\u5C0D\u8A71\u65B9\u584A\uFF0C\u4E26\u96E2\u958B\u4F7F\u7528\u8005\u4ECB\u9762\u8ABF\u6574\u6A21\u5F0F +#XMSG: Message when removing a SimpleForm toolbar +MSG_REMOVING_TOOLBAR=\u6B64\u7FA4\u7D44\u7684\u8868\u982D\u5305\u542B\u9644\u52A0\u5143\u7D20\u3002 \u82E5\u60A8\u79FB\u9664\u7FA4\u7D44\uFF0C\u5247\u9019\u4E9B\u5143\u7D20\u5C07\u6703\u907A\u5931\u3002 \u60A8\u4ECD\u8981\u79FB\u9664\u7FA4\u7D44\u55CE\uFF1F +#XMSG: Message when no fields are available in the add-field-dialog +MSG_NO_FIELDS=\u6C92\u6709\u53EF\u7528 {0} +#XHED: Dialog title for personalization exists +HEADER_PERSONALIZATION_EXISTS=\u8CC7\u8A0A +#XMSG: Dialog message for personalization exists +MSG_PERSONALIZATION_EXISTS=\u60A8\u5DF2\u5C07\u61C9\u7528\u7A0B\u5F0F\u500B\u4EBA\u5316\uFF1B\u5728\u4F7F\u7528\u8005\u4ECB\u9762\u8ABF\u6574\u6A21\u5F0F\u4E0B\uFF0C\u61C9\u7528\u7A0B\u5F0F\u6703\u91CD\u65B0\u8F09\u5165\uFF0C\u4F46\u4E0D\u5305\u542B\u60A8\u7684\u500B\u4EBA\u5316\u8A2D\u5B9A +#XHED: Dialog title to load personalization changes +HEADER_LOAD_PERSONALIZATION_CHANGES=\u986F\u793A\u500B\u4EBA\u5316\u7248\u672C +#XMSG: Dialog message to load personalization changes +MSG_LOAD_PERSONALIZATION_CHANGES=\u82E5\u60F3\u8981\u518D\u6B21\u67E5\u770B\u60A8\u7684\u500B\u4EBA\u5316\u66F4\u6539\uFF0C\u60A8\u53EF\u4EE5\u91CD\u65B0\u8F09\u5165\u61C9\u7528\u7A0B\u5F0F +#XMSG: MessageBox confirm button text personalization +MSG_PERSONALIZATION_CONFIRM_BUTTON_TEXT=\u986F\u793A\u500B\u4EBA\u5316\u7248\u672C +#XMSG: MessageBox cancel button text personalization +MSG_PERSONALIZATION_CANCEL_BUTTON_TEXT=\u53D6\u6D88 +#XMSG: Manage applications MessageBox cancel button +#XHED: dialog title for failed manage apps +#XMSG: dialog message for failed manage apps diff --git a/resources/sap/ui/rta/plugin/Combine.js b/resources/sap/ui/rta/plugin/Combine.js new file mode 100644 index 0000000..b032170 --- /dev/null +++ b/resources/sap/ui/rta/plugin/Combine.js @@ -0,0 +1,166 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Combine. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', 'sap/ui/dt/Selection', 'sap/ui/dt/OverlayRegistry', 'sap/ui/rta/Utils' +], function(Plugin, Selection, OverlayRegistry, Utils) { + "use strict"; + + /** + * Constructor for a new Combine Plugin. + * + * @class + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.46 + * @alias sap.ui.rta.plugin.Combine + * @experimental Since 1.46. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var Combine = Plugin.extend("sap.ui.rta.plugin.Combine", /** @lends sap.ui.rta.plugin.Combine.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * check if the given overlay is editable + * @param {sap.ui.dt.ElementOverlay} oOverlay - overlay to be checked for editable + * @returns {boolean} whether it is editable or not + * @private + */ + Combine.prototype._isEditable = function(oOverlay) { + if (!Utils.getRelevantContainerDesigntimeMetadata(oOverlay)) { + return false; + } + var oCombineAction = this._getCombineAction(oOverlay); + if (oCombineAction && oCombineAction.changeType && oCombineAction.changeOnRelevantContainer) { + return this.hasChangeHandler(oCombineAction.changeType, oOverlay.getRelevantContainer()) && this.hasStableId(oOverlay); + } else { + return false; + } + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {sap.ui.dt.DesignTimeMetadata} oDesignTimeMetadata + * @private + */ + Combine.prototype._getCombineAction = function(oOverlay) { + return oOverlay.getDesignTimeMetadata().getAction("combine", oOverlay.getElementInstance()); + }; + + Combine.prototype._checkForSameRelevantContainer = function(aSelectedOverlays) { + var aElements = []; + var aRelevantContainer = []; + for (var i = 0, n = aSelectedOverlays.length; i < n; i++) { + aElements[i] = aSelectedOverlays[i].getElementInstance(); + aRelevantContainer[i] = aSelectedOverlays[i].getRelevantContainer(); + if (i > 0) { + if ((aRelevantContainer[0] !== aRelevantContainer[i]) + || (aElements[0].getMetadata().getName() !== aElements[i].getMetadata().getName())) { + + return false; + } + } + } + return true; + }; + + /** + * Checks if Combine is available for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if available + * @public + */ + Combine.prototype.isCombineAvailable = function(oOverlay) { + var aSelectedOverlays = this.getDesignTime().getSelection(); + + if (aSelectedOverlays.length <= 1) { + return false; + } + return (this._isEditableByPlugin(oOverlay) && this._checkForSameRelevantContainer(aSelectedOverlays)); + }; + + /** + * Checks if Combine is enabled for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if enabled + * @public + */ + Combine.prototype.isCombineEnabled = function(oOverlay) { + var aSelectedOverlays = this.getDesignTime().getSelection(); + + // check that no more than 3 fields can be combined + if (!this.isCombineAvailable(oOverlay) || aSelectedOverlays.length <= 1) { + return false; + } + + var aSelectedControls = aSelectedOverlays.map(function (oSelectedOverlay) { + return oSelectedOverlay.getElementInstance(); + }); + + // check that each selected element has an enabled action + var bActionCheck = aSelectedOverlays.every(function(oSelectedOverlay) { + var oAction = this._getCombineAction(oSelectedOverlay); + if (!oAction) { + return false; + } + + // when isEnabled is not defined the default is true + if (typeof oAction.isEnabled !== "undefined") { + if (typeof oAction.isEnabled === "function") { + return oAction.isEnabled(aSelectedControls); + } else { + return oAction.isEnabled; + } + } + + return true; + }, this); + + return bActionCheck; + }; + + /** + * @param {any} oCombineElement selected element + */ + Combine.prototype.handleCombine = function(oCombineElement) { + var oElementOverlay = OverlayRegistry.getOverlay(oCombineElement); + var oDesignTimeMetadata = oElementOverlay.getDesignTimeMetadata(); + + var aToCombineElements = []; + var aSelectedOverlays = this.getDesignTime().getSelection(); + + for (var i = 0; i < aSelectedOverlays.length; i++) { + var oSelectedElement = aSelectedOverlays[i].getElementInstance(); + aToCombineElements.push(oSelectedElement); + } + + var oCombineCommand = this.getCommandFactory().getCommandFor(oCombineElement, "combine", { + source : oCombineElement, + combineFields : aToCombineElements + }, oDesignTimeMetadata); + this.fireElementModified({ + "command" : oCombineCommand + }); + + }; + + return Combine; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/ControlVariant.js b/resources/sap/ui/rta/plugin/ControlVariant.js new file mode 100644 index 0000000..0a62957 --- /dev/null +++ b/resources/sap/ui/rta/plugin/ControlVariant.js @@ -0,0 +1,115 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.ControlVariant. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/rta/Utils', + 'sap/ui/dt/ElementOverlay', + 'sap/ui/dt/OverlayRegistry', + 'sap/ui/dt/OverlayUtil', + 'sap/ui/fl/changeHandler/BaseTreeModifier', + 'sap/ui/fl/Utils', + 'sap/ui/base/ManagedObject' +], function(Plugin, Utils, ElementOverlay, OverlayRegistry, OverlayUtil, BaseTreeModifier, flUtils, ManagedObject) { + "use strict"; + + /** + * Constructor for a new ControlVariant Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The ControlVariant allows propagation of variantManagement key + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.50 + * @alias sap.ui.rta.plugin.ControlVariant + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + + /* Mix-in Variant Methods */ + ElementOverlay.prototype._variantManagement = undefined; + ElementOverlay.prototype.getVariantManagement = function() { return this._variantManagement;}; + ElementOverlay.prototype.setVariantManagement = function(sKey) { this._variantManagement = sKey; }; + ElementOverlay.prototype.hasVariantManagement = function() { this._variantManagement ? true : false; }; + + var ControlVariant = Plugin.extend("sap.ui.rta.plugin.ControlVariant", /** @lends sap.ui.rta.plugin.ControlVariant.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * Register an overlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + ControlVariant.prototype.registerElementOverlay = function(oOverlay) { + + if (oOverlay.getElementInstance().getMetadata().getName() === "sap.ui.fl.variants.VariantManagement") { + var oControl = oOverlay.getElementInstance(); + var vAssociationElement = oControl.getAssociation("for"); + + var aVariantManagementTargetElements = !jQuery.isArray(vAssociationElement) ? [vAssociationElement] : vAssociationElement; + + aVariantManagementTargetElements.forEach( function(sVariantManagementTargetElement) { + var oVariantManagementTargetElement = sVariantManagementTargetElement instanceof ManagedObject ? sVariantManagementTargetElement : sap.ui.getCore().byId(sVariantManagementTargetElement); + var oVariantManagementTargetOverlay = OverlayRegistry.getOverlay(oVariantManagementTargetElement); + var sVariantManagement = BaseTreeModifier.getSelector(oControl, flUtils.getComponentForControl(oControl)).id; + this._propagateVariantManagement(oVariantManagementTargetOverlay , sVariantManagement); + }.bind(this)); + } + + //var sVarMgtKey; + ////True for ObjectPageLayout + //if (oControl.getVariantManagement) { + // sVarMgtKey = oControl.getVariantManagement(); + //} else if (oOverlay.getParentElementOverlay()) { + // sVarMgtKey = oOverlay.getParentElementOverlay().getVariantManagement(); + //} + // + //if (!sVarMgtKey) { + // return; + //} + //oOverlay.setVariantManagement(sVarMgtKey); + }; + + ControlVariant.prototype._propagateVariantManagement = function(oParentElementOverlay, sVariantManagement) { + var aElementOverlaysRendered = []; + oParentElementOverlay.setVariantManagement(sVariantManagement); + aElementOverlaysRendered = OverlayUtil.getAllChildOverlays(oParentElementOverlay); + + aElementOverlaysRendered.forEach( function(oElementOverlay) { + aElementOverlaysRendered = aElementOverlaysRendered.concat(this._propagateVariantManagement(oElementOverlay, sVariantManagement)); + }.bind(this)); + + return aElementOverlaysRendered; + }; + + /** + * Additionally to super->deregisterOverlay this method detatches the browser events + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + ControlVariant.prototype.deregisterElementOverlay = function(oOverlay) { + + }; + + + return ControlVariant; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/CreateContainer.js b/resources/sap/ui/rta/plugin/CreateContainer.js new file mode 100644 index 0000000..43fa7fd --- /dev/null +++ b/resources/sap/ui/rta/plugin/CreateContainer.js @@ -0,0 +1,192 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Remove. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/fl/Utils', + 'sap/ui/rta/Utils', + 'sap/ui/dt/OverlayRegistry' + +], function(Plugin, FlexUtils, RtaUtils, OverlayRegistry) { + "use strict"; + + /** + * Constructor for a new CreateContainer Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The CreateContainer allows trigger CreateContainer operations on the overlay + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.plugin.CreateContainer + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var CreateContainer = Plugin.extend("sap.ui.rta.plugin.CreateContainer", /** @lends sap.ui.rta.plugin.CreateContainer.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * This function gets called twice, on startup and when we create a context menu. + * On Startup bOverlayIsSibling is not defined as we don't know if it is a sibling or not. In this case we check both cases. + * @param {sap.ui.dt.Overlay} oOverlay - overlay to be checked + * @param {boolean} bOverlayIsSibling - (optional) describes whether given overlay is to be checked as a sibling or as a child on editable. Expected values: [true, false, undefined] + * @return {boolean} true, if create container action is possible + * @private + */ + CreateContainer.prototype._isEditable = function(oOverlay, bOverlayIsSibling) { + if (bOverlayIsSibling === undefined || bOverlayIsSibling === null) { + return this._isEditableCheck(oOverlay, false) || this._isEditableCheck(oOverlay, true); + } else { + return this._isEditableCheck(oOverlay, bOverlayIsSibling); + } + }; + + CreateContainer.prototype._isEditableCheck = function (oOverlay, bOverlayIsSibling) { + var bEditable = false; + var oParentOverlay = this._getParentOverlay(bOverlayIsSibling, oOverlay); + + if (!oParentOverlay || !oParentOverlay.getParentElementOverlay()){ + //root element is not editable as parent and as sibling + return false; + } + + bEditable = this.checkAggregationsOnSelf(oParentOverlay, "createContainer"); + + if (bEditable) { + // If ids are created within fragments or controller code, + // the id of the parent view might not be part of the control id. + // In these cases the control might have a stable id (this.hasStableId()), but the view doesn't. + // As the view is needed create the id for the newly created container it + // has to be stable, otherwise the new id will not be stable. + var oParentView = FlexUtils.getViewForControl(oParentOverlay.getElementInstance()); + return this.hasStableId(oOverlay) && FlexUtils.checkControlId(oParentView); + } else { + return false; + } + }; + + CreateContainer.prototype._getParentOverlay = function(bSibling, oOverlay) { + var oParentOverlay; + if (bSibling) { + oParentOverlay = oOverlay.getParentElementOverlay(); + } else { + oParentOverlay = oOverlay; + } + return oParentOverlay; + }; + + CreateContainer.prototype.getCreateAction = function(bSibling, oOverlay) { + var oParentOverlay = this._getParentOverlay(bSibling, oOverlay); + var oDesignTimeMetadata = oParentOverlay.getDesignTimeMetadata(); + var aActions = oDesignTimeMetadata.getAggregationAction("createContainer", oOverlay.getElementInstance()); + return aActions[0]; + }; + + CreateContainer.prototype.isCreateAvailable = function(bSibling, oOverlay) { + return this._isEditable(oOverlay, bSibling); + }; + + CreateContainer.prototype.isCreateEnabled = function(bSibling, oOverlay) { + var vAction = this.getCreateAction(bSibling, oOverlay); + if (!vAction) { + return false; + } + + if (vAction.isEnabled && typeof vAction.isEnabled === "function") { + var fnIsEnabled = vAction.isEnabled; + var oParentOverlay = this._getParentOverlay(bSibling, oOverlay); + return fnIsEnabled.call(null, oParentOverlay.getElementInstance()); + } else { + return true; + } + }; + + CreateContainer.prototype._getCreatedContainerId = function(vAction, sNewControlID) { + var sId = sNewControlID; + if (vAction.getCreatedContainerId && typeof vAction.getCreatedContainerId === "function") { + var fnMapToRelevantControlID = vAction.getCreatedContainerId; + sId = fnMapToRelevantControlID.call(null, sNewControlID); + + } + return OverlayRegistry.getOverlay(sId); + }; + + CreateContainer.prototype._determineIndex = function(oParentElement, oSiblingElement, sAggregationName, fnGetIndex) { + return RtaUtils.getIndex(oParentElement, oSiblingElement, sAggregationName, fnGetIndex); + }; + + CreateContainer.prototype._getText = function(vAction, oElement, oDesignTimeMetadata, sText) { + if (!vAction) { + return sText; + } + var sContainerTitle = oDesignTimeMetadata.getAggregationDescription(vAction.aggregation, oElement).singular; + var oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + return oTextResources.getText(sText, sContainerTitle); + }; + + CreateContainer.prototype.getCreateContainerText = function(bSibling, oOverlay) { + var vAction = this.getCreateAction(bSibling, oOverlay); + var oParentOverlay = this._getParentOverlay(bSibling, oOverlay); + var oDesignTimeMetadata = oParentOverlay.getDesignTimeMetadata(); + var oElement = oParentOverlay.getElementInstance(); + var sText = "CTX_CREATE_CONTAINER"; + return this._getText(vAction, oElement, oDesignTimeMetadata, sText); + }; + + CreateContainer.prototype._getContainerTitle = function(vAction, oElement, oDesignTimeMetadata) { + var sText = "TITLE_CREATE_CONTAINER"; + return this._getText(vAction, oElement, oDesignTimeMetadata, sText); + }; + + CreateContainer.prototype.handleCreate = function(bSibling, oOverlay) { + var vAction = this.getCreateAction(bSibling, oOverlay); + var oParentOverlay = this._getParentOverlay(bSibling, oOverlay); + var oDesignTimeMetadata = oParentOverlay.getDesignTimeMetadata(); + var oTargetElement = oParentOverlay.getElementInstance(); + var oView = FlexUtils.getViewForControl(oTargetElement); + + var oSiblingElement; + if (bSibling) { + oSiblingElement = oOverlay.getElementInstance(); + } + + var sNewControlID = oView.createId(jQuery.sap.uid()); + + var fnGetIndex = oDesignTimeMetadata.getAggregation(vAction.aggregation).getIndex; + var iIndex = this._determineIndex(oTargetElement, oSiblingElement, vAction.aggregation, fnGetIndex); + + var oCommand = this.getCommandFactory().getCommandFor(oTargetElement, "createContainer", { + newControlId : sNewControlID, + label : this._getContainerTitle(vAction, oTargetElement, oDesignTimeMetadata), + index : iIndex + }, oDesignTimeMetadata); + + this.fireElementModified({ + "command" : oCommand + }); + + var oNewContainerOverlay = this._getCreatedContainerId(vAction, sNewControlID); + oNewContainerOverlay.setSelected(true); + + return oNewContainerOverlay; + }; + + return CreateContainer; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/CutPaste.js b/resources/sap/ui/rta/plugin/CutPaste.js new file mode 100644 index 0000000..377485c --- /dev/null +++ b/resources/sap/ui/rta/plugin/CutPaste.js @@ -0,0 +1,111 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.CutPaste. +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/dt/plugin/CutPaste', + 'sap/ui/dt/OverlayUtil', + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/rta/plugin/RTAElementMover' +], +function(jQuery, + ControlCutPaste, + OverlayUtil, + Plugin, + RTAElementMover) { + "use strict"; + + /** + * Constructor for a new CutPaste plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * + * @class + * The CutPaste plugin adds functionality/styling required for RTA. + * @extends sap.ui.dt.plugin.CutPaste + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.30 + * @alias sap.ui.rta.plugin.CutPaste + * @experimental Since 1.30. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var CutPaste = ControlCutPaste.extend("sap.ui.rta.plugin.CutPaste", /** @lends sap.ui.rta.plugin.CutPaste.prototype */ { + metadata : { + // ---- object ---- + + // ---- control specific ---- + library : "sap.ui.rta", + properties : { + commandFactory : { + type : "object", + multiple : false + } + }, + events : { + dragStarted : {}, + + elementModified : { + command : { + type : "sap.ui.rta.command.BaseCommand" + } + } + } + } + }); + + /** + * @override + */ + CutPaste.prototype.init = function() { + ControlCutPaste.prototype.init.apply(this, arguments); + this.setElementMover(new RTAElementMover({commandFactory: this.getCommandFactory()})); + }; + + /** + * Register an overlay + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + CutPaste.prototype.registerElementOverlay = function(oOverlay) { + ControlCutPaste.prototype.registerElementOverlay.apply(this, arguments); + + if (oOverlay.isMovable()) { + Plugin.prototype.addToPluginsList.apply(this, arguments); + } + }; + + /** + * Additionally to super->deregisterOverlay this method detatches the browser events + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + CutPaste.prototype.deregisterElementOverlay = function(oOverlay) { + ControlCutPaste.prototype.deregisterElementOverlay.apply(this, arguments); + Plugin.prototype.removeFromPluginsList.apply(this, arguments); + }; + + /** + * @override + */ + CutPaste.prototype.paste = function(oTargetOverlay) { + + this._executePaste(oTargetOverlay); + + this.fireElementModified({ + "command" : this.getElementMover().buildMoveCommand() + }); + + this.stopCutAndPaste(); + }; + + return CutPaste; +}, /* bExport= */ true); diff --git a/resources/sap/ui/rta/plugin/DragDrop.js b/resources/sap/ui/rta/plugin/DragDrop.js new file mode 100644 index 0000000..4947f31 --- /dev/null +++ b/resources/sap/ui/rta/plugin/DragDrop.js @@ -0,0 +1,201 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.DragDrop. +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/dt/plugin/ControlDragDrop', + 'sap/ui/rta/plugin/RTAElementMover', + 'sap/ui/rta/plugin/Plugin' +], +function(jQuery, + ControlDragDrop, + RTAElementMover, + Plugin) { + "use strict"; + + /** + * Constructor for a new DragDrop plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * + * @class + * The DragDrop plugin adds functionality/styling required for RTA. + * @extends sap.ui.dt.ControlDragDrop + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.30 + * @alias sap.ui.rta.plugin.DragDrop + * @experimental Since 1.30. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var DragDrop = ControlDragDrop.extend("sap.ui.rta.plugin.DragDrop", /** @lends sap.ui.rta.plugin.DragDrop.prototype */ { + metadata : { + // ---- object ---- + + // ---- control specific ---- + library : "sap.ui.rta", + properties : { + commandFactory : { + type : "object", + multiple : false + } + }, + events : { + dragStarted : {}, + + elementModified : { + command : { + type : "sap.ui.rta.command.BaseCommand" + } + } + } + } + }); + + /** + * @override + */ + DragDrop.prototype.init = function() { + ControlDragDrop.prototype.init.apply(this, arguments); + this.setElementMover(new RTAElementMover({commandFactory: this.getCommandFactory()})); + }; + + DragDrop.prototype.setCommandFactory = function(oCommandFactory) { + this.setProperty("commandFactory", oCommandFactory); + this.getElementMover().setCommandFactory(oCommandFactory); + }; + + /** + * Register an overlay + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + DragDrop.prototype.registerElementOverlay = function(oOverlay) { + ControlDragDrop.prototype.registerElementOverlay.apply(this, arguments); + + if (oOverlay.isMovable()) { + this._attachMovableBrowserEvents(oOverlay); + Plugin.prototype.addToPluginsList.apply(this, arguments); + } + }; + + /** + * Additionally to super->deregisterOverlay this method detatches the browser events + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + DragDrop.prototype.deregisterElementOverlay = function(oOverlay) { + ControlDragDrop.prototype.deregisterElementOverlay.apply(this, arguments); + Plugin.prototype.removeFromPluginsList.apply(this, arguments); + this._detachMovableBrowserEvents(oOverlay); + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @private + */ + DragDrop.prototype._attachMovableBrowserEvents = function(oOverlay) { + oOverlay.attachBrowserEvent("mouseover", this._onMouseOver, this); + oOverlay.attachBrowserEvent("mouseleave", this._onMouseLeave, this); + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @private + */ + DragDrop.prototype._detachMovableBrowserEvents = function(oOverlay) { + oOverlay.detachBrowserEvent("mouseover", this._onMouseOver, this); + oOverlay.detachBrowserEvent("mouseleave", this._onMouseLeave, this); + }; + + + /** + * Additionally to super->onDragStart this method stores the parent's id in an instance variable + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + DragDrop.prototype.onDragStart = function(oOverlay) { + this.fireDragStarted(); + + ControlDragDrop.prototype.onDragStart.apply(this, arguments); + + this.getDesignTime().getSelection().forEach(function(oOverlay) { + oOverlay.setSelected(false); + }); + + oOverlay.$().addClass("sapUiRtaOverlayPlaceholder"); + }; + + /** + * Additionally to super->onDragEnd this method takes care about moving the element + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + DragDrop.prototype.onDragEnd = function(oOverlay) { + this.fireElementModified({ + "command" : this.getElementMover().buildMoveCommand() + }); + + oOverlay.$().removeClass("sapUiRtaOverlayPlaceholder"); + oOverlay.setSelected(true); + oOverlay.focus(); + + ControlDragDrop.prototype.onDragEnd.apply(this, arguments); + }; + + /** + * If overlay is draggable attach browser events o overlay. If not remove them. + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + DragDrop.prototype.onMovableChange = function(oOverlay) { + ControlDragDrop.prototype.onMovableChange.apply(this, arguments); + if (oOverlay.isMovable()) { + this._attachMovableBrowserEvents(oOverlay); + } else { + this._detachMovableBrowserEvents(oOverlay); + } + }; + /** + * Handle mouse over event + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + DragDrop.prototype._onMouseOver = function(oEvent) { + var oOverlay = sap.ui.getCore().byId(oEvent.currentTarget.id); + if (oOverlay !== this._oPreviousHoverTarget) { + if (this._oPreviousHoverTarget) { + this._oPreviousHoverTarget.$().removeClass("sapUiRtaOverlayHover"); + } + this._oPreviousHoverTarget = oOverlay; + oOverlay.$().addClass("sapUiRtaOverlayHover"); + } + oEvent.preventDefault(); + oEvent.stopPropagation(); + + }; + + /** + * Handle mouse leave event + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + DragDrop.prototype._onMouseLeave = function(oEvent) { + if (this._oPreviousHoverTarget) { + this._oPreviousHoverTarget.$().removeClass("sapUiRtaOverlayHover"); + } + delete this._oPreviousHoverTarget; + oEvent.preventDefault(); + oEvent.stopPropagation(); + }; + + return DragDrop; +}, /* bExport= */ true); diff --git a/resources/sap/ui/rta/plugin/EasyAdd.js b/resources/sap/ui/rta/plugin/EasyAdd.js new file mode 100644 index 0000000..f208069 --- /dev/null +++ b/resources/sap/ui/rta/plugin/EasyAdd.js @@ -0,0 +1,172 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.EasyAdd. +sap.ui.define([ + 'sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin', + 'sap/ui/dt/OverlayRegistry' +], function(AdditionalElementsPlugin, OverlayRegistry) { + "use strict"; + + /** + * Constructor for a new EasyAdd Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The EasyAdd Plugin adds an Icon to an Overlay, which allows to trigger add operations directly + * @extends sap.ui.rta.plugin.additionalElements.AdditionalElementsPlugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.plugin.EasyAdd + * @experimental Since 1.48. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var EasyAdd = AdditionalElementsPlugin.extend("sap.ui.rta.plugin.EasyAdd", /** @lends sap.ui.rta.plugin.EasyAdd.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * Register browser event for an overlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay object + * @override + */ + EasyAdd.prototype.registerElementOverlay = function(oOverlay) { + this._oDelegate = { + "onAfterRendering" : function() { + var onAddPressed = function(bOverlayIsSibling, oOverlay, iIndex) { + var sControlName; + if (bOverlayIsSibling) { + sControlName = oOverlay.getDesignTimeMetadata().getName().plural; + } else { + sControlName = oOverlay.getDesignTimeMetadata().getAggregation("sections").childNames.plural(); + } + this.showAvailableElements(bOverlayIsSibling, [oOverlay], iIndex, sControlName); + }.bind(this); + + var fnAddButton = function(oOverlay, oOverlayDom, bSibling, vControlName) { + var fnCallback = function(oEvent) { + var oOverlay = sap.ui.getCore().byId(oEvent.getSource().getId().replace("-AddButton", "")); + onAddPressed(bSibling, oOverlay); + oEvent.cancelBubble(); + }; + var sControlName = typeof vControlName === "function" ? vControlName() : vControlName; + this._addButton(oOverlay, fnCallback, oOverlayDom, sControlName); + }.bind(this); + + if (oOverlay.$().hasClass("sapUiRtaPersAdd")) { + var bAddButton = oOverlay.$().hasClass("sapUiRtaPersAdd") && oOverlay.$().children(".sapUiRtaPersAddIconOuter").length <= 0; + var oParentControl = oOverlay.getElementInstance().getParent(); + var oParentOverlay = OverlayRegistry.getOverlay(oParentControl); + if (oParentControl.getMetadata().getName() === "sap.uxap.ObjectPageLayout") { + if (oParentOverlay.$().hasClass("sapUiRtaPersAddTop") && oParentOverlay.getAggregationOverlay("sections").$().children(".sapUiRtaPersAddIconOuter").length > -1) { + oParentControl.$("sectionsContainer").addClass("sapUiRtaPaddingTop"); + } + } + if (bAddButton) { + fnAddButton(oOverlay, oOverlay.$(), true, oOverlay.getDesignTimeMetadata().getName().singular); + } + } else if (oOverlay.$().hasClass("sapUiRtaPersAddTop")) { + if (oOverlay.getAggregationOverlay("sections").$().children(".sapUiRtaPersAddIconOuter").length <= 0) { + var $sectionsOverlay = oOverlay.getAggregationOverlay("sections").$(); + fnAddButton(oOverlay, $sectionsOverlay, false, oOverlay.getDesignTimeMetadata().getAggregation("sections").childNames.singular); + } + } + + oOverlay.removeEventDelegate(this._oDelegate, this); + } + }; + + var oControl = oOverlay.getElementInstance(); + if (oControl.getMetadata().getName() === "sap.uxap.ObjectPageSection" && this.hasStableId(oOverlay)) { + oOverlay.addStyleClass("sapUiRtaPersAdd"); + oControl.addStyleClass("sapUiRtaMarginBottom"); + } else if (oControl.getMetadata().getName() === "sap.uxap.ObjectPageLayout" && this.hasStableId(oOverlay)) { + oOverlay.addStyleClass("sapUiRtaPersAddTop"); + oControl.$("sectionsContainer").addClass("sapUiRtaPaddingTop"); + } + + oOverlay.addEventDelegate(this._oDelegate, this); + AdditionalElementsPlugin.prototype.registerElementOverlay.apply(this, arguments); + }; + + /** + * Deregister browser event for an overlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay object + * @override + */ + EasyAdd.prototype.deregisterElementOverlay = function(oOverlay) { + var oControl = oOverlay.getElementInstance(); + if (oOverlay._oAddButton) { + oOverlay._oAddButton.destroy(); + } + if (oControl.getMetadata().getName() === "sap.uxap.ObjectPageSection") { + oOverlay.removeStyleClass("sapUiRtaPersAdd"); + oControl.removeStyleClass("sapUiRtaMarginBottom"); + oOverlay.removeEventDelegate(this._oDelegate, this); + } else if (oControl.getMetadata().getName() === "sap.uxap.ObjectPageLayout") { + oOverlay.removeStyleClass("sapUiRtaPersAddTop"); + oControl.$("sectionsContainer").removeClass("sapUiRtaPaddingTop"); + } + }; + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay - overlay object + * @param {function} fnCallback - callback function will be passed to the new button as on press event function + * @param {object} oOverlayDom - dom object of the overlay + * @param {string} sControlName - name of the control. This name will be displayed on the Add-Button + * @private + */ + EasyAdd.prototype._addButton = function(oOverlay, fnCallback, oOverlayDom, sControlName) { + var sId = oOverlay.getId() + "-AddButton"; + var oHtmlButtonOuter = jQuery("
"); + oOverlay._oAddButton = new sap.m.Button(sId, { + text: "Add " + sControlName, + icon: "sap-icon://add", + press: fnCallback + }).placeAt(oHtmlButtonOuter.get(0)); + oOverlayDom.append(oHtmlButtonOuter); + + oHtmlButtonOuter[0].addEventListener("mouseover", function(oEvent) { + oEvent.stopPropagation(); + var oOverlay = oEvent.fromElement ? sap.ui.getCore().byId(oEvent.fromElement.id) : null; + if (oOverlay && oOverlay.getMetadata().getName() === "sap.ui.dt.ElementOverlay") { + var oParentContainer = oOverlay.getParentElementOverlay(); + oParentContainer.$().removeClass("sapUiRtaOverlayHover"); + } + }); + + oHtmlButtonOuter[0].addEventListener("mouseleave", function(oEvent) { + oEvent.stopPropagation(); + var oOverlay = oEvent.toElement ? sap.ui.getCore().byId(oEvent.toElement.id) : null; + if (oOverlay && oOverlay.getMetadata().getName() === "sap.ui.dt.ElementOverlay") { + var oParentContainer = oOverlay.getParentElementOverlay(); + if (oParentContainer.getMovable()) { + oParentContainer.$().addClass("sapUiRtaOverlayHover"); + } + } + }); + + oHtmlButtonOuter[0].addEventListener("dragstart", function(oEvent) { + oEvent.stopPropagation(); + oEvent.preventDefault(); + }); + }; + + return EasyAdd; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/EasyRemove.js b/resources/sap/ui/rta/plugin/EasyRemove.js new file mode 100644 index 0000000..c56ea9c --- /dev/null +++ b/resources/sap/ui/rta/plugin/EasyRemove.js @@ -0,0 +1,113 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.EasyRemove. +sap.ui.define([ + 'sap/ui/rta/plugin/Remove' +], function(Remove) { + "use strict"; + + /** + * Constructor for a new EasyRemove Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The EasyRemove Plugin adds an Icon to an Overlay, which allows to trigger remove operations directly + * @extends sap.ui.rta.plugin.Remove + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.plugin.EasyRemove + * @experimental Since 1.48. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var EasyRemove = Remove.extend("sap.ui.rta.plugin.EasyRemove", /** @lends sap.ui.rta.plugin.EasyRemove.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * Register browser event for an overlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + EasyRemove.prototype.registerElementOverlay = function(oOverlay) { + this._oDelegate = { + "onAfterRendering" : function() { + var onDeletePressed = function(oOverlay) { + this._handleRemove([oOverlay]); + }.bind(this); + + if (oOverlay.$().hasClass("sapUiRtaPersDelete") && oOverlay.$().children(".sapUiRtaPersDeleteClick").length <= 0) { + var sId = oOverlay.getId() + "-DeleteIcon"; + var oHtmlIconWrapper = jQuery("
"); + var oHtmlIconOuter = jQuery("
"); + oOverlay._oDeleteIcon = new sap.ui.core.Icon(sId, { + src : "sap-icon://decline", + tooltip: sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta").getText("CTX_REMOVE"), + press: function(oEvent) { + var oOverlay = sap.ui.getCore().byId(oEvent.getSource().getId().replace("-DeleteIcon", "")); + onDeletePressed(oOverlay); + oEvent.cancelBubble(); + }, + noTabStop: true + }).placeAt(oHtmlIconOuter.get(0)); + oHtmlIconWrapper.append(oHtmlIconOuter); + oOverlay.$().append(oHtmlIconWrapper); + + oOverlay._oDeleteIcon.attachBrowserEvent("contextmenu", function(oEvent) { + oEvent.stopPropagation(); + oEvent.preventDefault(); + }); + + oHtmlIconWrapper[0].addEventListener("dragstart", function(oEvent) { + oEvent.stopPropagation(); + oEvent.preventDefault(); + }); + } + + oOverlay.removeEventDelegate(this._oDelegate, this); + } + }; + + var oControl = oOverlay.getElementInstance(); + if (oControl.getMetadata().getName() === "sap.uxap.ObjectPageSection" && this.hasStableId(oOverlay)) { + oOverlay.addStyleClass("sapUiRtaPersDelete"); + } + + oOverlay.addEventDelegate(this._oDelegate, this); + Remove.prototype.registerElementOverlay.apply(this, arguments); + }; + + /** + * Deregister browser event for an overlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + EasyRemove.prototype.deregisterElementOverlay = function(oOverlay) { + var oControl = oOverlay.getElementInstance(); + if (oControl.getMetadata().getName() === "sap.uxap.ObjectPageSection") { + oOverlay.removeStyleClass("sapUiRtaPersDelete"); + oOverlay.removeEventDelegate(this._oDelegate, this); + if (oOverlay._oDeleteIcon) { + oOverlay._oDeleteIcon.destroy(); + } + } + }; + + return EasyRemove; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/Plugin.js b/resources/sap/ui/rta/plugin/Plugin.js new file mode 100644 index 0000000..8a2721c --- /dev/null +++ b/resources/sap/ui/rta/plugin/Plugin.js @@ -0,0 +1,176 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.dt.Plugin. +sap.ui.define([ + 'sap/ui/dt/Plugin', 'sap/ui/fl/Utils', 'sap/ui/fl/registry/ChangeRegistry' +], +function(Plugin, FlexUtils, ChangeRegistry) { + "use strict"; + + /** + * Constructor for a new Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * + * @class + * The Plugin allows to handle the overlays and aggregation overlays from the DesignTime + * The Plugin should be overriden by the real plugin implementations, which define some actions through events attached to an overlays + * @extends sap.ui.dt.Plugin + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.46 + * @alias sap.ui.rta.plugin.Plugin + * @experimental Since 1.46. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + + var BasePlugin = Plugin.extend("sap.ui.rta.plugin.Plugin", /** @lends sap.ui.dt.Plugin.prototype */ { + metadata : { + "abstract" : true, + // ---- object ---- + + // ---- control specific ---- + library : "sap.ui.rta", + properties : { + commandFactory : { + type : "object", + multiple : false + } + }, + events : { + elementModified : { + command : { + type : "sap.ui.rta.command.BaseCommand" + } + } + } + } + }); + + BasePlugin.prototype._isEditable = function() {}; + + BasePlugin.prototype._isEditableByPlugin = function(oOverlay) { + var sPluginName = this.getMetadata().getName(); + var aPluginList = oOverlay.getEditableByPlugins(); + return aPluginList.indexOf(sPluginName) > -1; + }; + + BasePlugin.prototype.registerElementOverlay = function(oOverlay) { + if (this._isEditable(oOverlay)) { + this.addToPluginsList(oOverlay); + } + }; + + BasePlugin.prototype.deregisterElementOverlay = function(oOverlay) { + this.removeFromPluginsList(oOverlay); + }; + + BasePlugin.prototype.hasStableId = function(oOverlay) { + if (!oOverlay) { + return false; + } else if (!oOverlay.getDesignTimeMetadata()) { + return FlexUtils.checkControlId(oOverlay.getElementInstance()); + } + + var bStable = false; + var oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(); + var oElement = oOverlay.getElementInstance(); + + var fnGetStableElements = oDesignTimeMetadata.getData().getStableElements; + + if (fnGetStableElements) { + var aStableElements = fnGetStableElements(oElement); + var bUnstable = aStableElements ? aStableElements.some(function(vStableElement) { + var oControl = vStableElement.id || vStableElement; + if (!FlexUtils.checkControlId(oControl, vStableElement.appComponent)) { + return true; + } + }) : true; + bStable = !bUnstable; + } else { + bStable = FlexUtils.checkControlId(oElement); + } + return bStable; + }; + + BasePlugin.prototype.getVariantManagementKey = function (oOverlay, oElement, sChangeType) { + var sVariantManagementKey; + if (oOverlay.getVariantManagement && this._hasVariantChangeHandler(sChangeType, oElement)) { + sVariantManagementKey = oOverlay.getVariantManagement(); + } + return sVariantManagementKey; + }; + + BasePlugin.prototype._hasVariantChangeHandler = function (sChangeType, oElement){ + var oChangeHandler = this._getChangeHandler(sChangeType, oElement); + oChangeHandler.revertChange = true; + return (oChangeHandler && oChangeHandler.revertChange); + }; + + /** + * Checks the Aggregations on the Overlay for a specific Action + * @name sap.ui.rta.plugin.Plugin.prototype.checkAggregationsOnSelf + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay to be checked for action + * @param {string} sAction action to be checked + * @return {boolean} whether the Aggregation has a valid Action + * @protected + */ + BasePlugin.prototype.checkAggregationsOnSelf = function (oOverlay, sAction) { + var oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(); + var oElement = oOverlay.getElementInstance(); + var bIsEditable = false; + + var oAction = oDesignTimeMetadata.getAggregationAction(sAction, oOverlay.getElementInstance())[0]; + var sChangeType = oAction ? oAction.changeType : null; + var bChangeOnRelevantContainer = oAction && oAction.changeOnRelevantContainer; + if (bChangeOnRelevantContainer) { + oElement = oOverlay.getRelevantContainer(); + } + + if (sChangeType && this.hasChangeHandler(sChangeType, oElement)) { + bIsEditable = true; + } + + return bIsEditable; + }; + + BasePlugin.prototype.removeFromPluginsList = function(oOverlay) { + oOverlay.removeEditableByPlugin(this.getMetadata().getName()); + if (!oOverlay.getEditableByPlugins().length) { + oOverlay.setEditable(false); + } + }; + + BasePlugin.prototype.addToPluginsList = function(oOverlay) { + oOverlay.addEditableByPlugin(this.getMetadata().getName()); + oOverlay.setEditable(true); + }; + + BasePlugin.prototype.hasChangeHandler = function(sChangeType, oElement) { + return !!this._getChangeHandler(sChangeType, oElement); + }; + + BasePlugin.prototype._getChangeHandler = function(sChangeType, oElement) { + var sControlType = oElement.getMetadata().getName(); + var oResult = ChangeRegistry.getInstance().getRegistryItems({ + controlType : sControlType, + changeTypeName : sChangeType, + layer: this.getCommandFactory().getFlexSettings().layer + }); + if (oResult && oResult[sControlType] && oResult[sControlType][sChangeType]) { + var oRegItem = oResult[sControlType][sChangeType]; + return oRegItem.getChangeTypeMetadata().getChangeHandler(); + } + return undefined; + }; + + return BasePlugin; +}, /* bExport= */ true); diff --git a/resources/sap/ui/rta/plugin/RTAElementMover.js b/resources/sap/ui/rta/plugin/RTAElementMover.js new file mode 100644 index 0000000..235a01e --- /dev/null +++ b/resources/sap/ui/rta/plugin/RTAElementMover.js @@ -0,0 +1,263 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.RTAElementMover. +sap.ui.define([ + 'sap/ui/dt/plugin/ElementMover', + 'sap/ui/dt/OverlayUtil', + 'sap/ui/dt/ElementUtil', + 'sap/ui/fl/Utils', + 'sap/ui/rta/Utils', + 'sap/ui/rta/command/CommandFactory', + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/dt/OverlayRegistry', + 'sap/ui/rta/util/BindingsExtractor' +], +function( + ElementMover, + OverlayUtil, + ElementUtil, + FlexUtils, + Utils, + CommandFactory, + Plugin, + OverlayRegistry, + BindingsExtractor +) { + "use strict"; + + /** + * Constructor for a new RTAElementMover. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * + * @class + * The RTAElementMover is responsible for the RTA specific adaptation of element movements. + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.plugin.RTAElementMover + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var RTAElementMover = ElementMover.extend("sap.ui.rta.plugin.RTAElementMover", /** @lends sap.ui.rta.plugin.RTAElementMover.prototype */ { + metadata : { + // ---- object ---- + + // ---- control specific ---- + library : "sap.ui.rta", + properties : { + commandFactory : { + type : "any", + defaultValue : CommandFactory + }, + movableTypes : { + type : "string[]", + defaultValue : ["sap.ui.core.Element"] + } + }, + associations : { + }, + events : { + } + } + }); + + RTAElementMover.prototype.init = function() { + this.oBasePlugin = new Plugin({ + commandFactory : this.getCommandFactory() + }); + }; + + RTAElementMover.prototype.exit = function() { + this.oBasePlugin.destroy(); + }; + + RTAElementMover.prototype.setCommandFactory = function(oCommandFactory) { + this.setProperty("commandFactory", oCommandFactory); + this.oBasePlugin.setCommandFactory(oCommandFactory); + }; + + /** + * Check if the element is editable for the move + * @param {sap.ui.dt.Overlay} oOverlay The overlay being moved or the aggregation overlay + * @param {[type]} oMovedElement The element being moved if the aggregation overlay is present + * @return {Boolean} true if editable + */ + function fnIsValidForMove(oOverlay) { + var bValid = false, + oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(), + oParentElementOverlay = oOverlay.getParentElementOverlay(), + oChangeHandlerRelevantElement; + + if (!oDesignTimeMetadata || !oParentElementOverlay) { + return false; + } + + var oRelevantContainer = oOverlay.getRelevantContainer(); + var oRelevantContainerOverlay = sap.ui.dt.OverlayRegistry.getOverlay(oRelevantContainer); + if (!Utils.getRelevantContainerDesigntimeMetadata(oOverlay)) { + return false; + } + + var oMoveAction = this._getMoveAction(oOverlay); + if (oMoveAction && oMoveAction.changeType) { + // moveChangeHandler information is always located on the relevant container + oChangeHandlerRelevantElement = oOverlay.getRelevantContainer(); + bValid = this.oBasePlugin.hasChangeHandler(oMoveAction.changeType, oChangeHandlerRelevantElement); + } + + if (bValid) { + bValid = this.oBasePlugin.hasStableId(oOverlay) && + this.oBasePlugin.hasStableId(oParentElementOverlay) && + this.oBasePlugin.hasStableId(oRelevantContainerOverlay); + } + + return bValid; + } + + function fnHasMoveAction(oAggregationOverlay, oElement, oRelevantContainer) { + var oAggregationDTMetadata = oAggregationOverlay.getDesignTimeMetadata(); + var oMoveAction = oAggregationDTMetadata.getAction("move", oElement); + if (!oMoveAction) { + return false; + } + // moveChangeHandler information is always located on the relevant container + return this.oBasePlugin.hasChangeHandler(oMoveAction.changeType, oRelevantContainer); + } + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {sap.ui.dt.DesignTimeMetadata} oDesignTimeMetadata + * @private + */ + ElementMover.prototype._getMoveAction = function(oOverlay) { + var oParentAggregationDtMetadata, + oParentAggregationOverlay = oOverlay.getParentAggregationOverlay(); + if (oParentAggregationOverlay) { + oParentAggregationDtMetadata = oParentAggregationOverlay.getDesignTimeMetadata(); + } + return oParentAggregationDtMetadata ? oParentAggregationDtMetadata.getAction("move", oOverlay.getElementInstance()) : undefined; + }; + + /** + * Predicate to compute movability of a type + * @param {any} oElement given element + * @public + * @return {boolean} true if type is movable, false otherwise + */ + ElementMover.prototype.isMovableType = function(oElement) { + //real check is part of checkMovable which has the overlay + return true; + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if embedded, false if not + * @override + */ + RTAElementMover.prototype.checkMovable = function(oOverlay) { + return fnIsValidForMove.call(this, oOverlay); + }; + + /** + * Checks drop ability for aggregation overlays + * @param {sap.ui.dt.Overlay} oAggregationOverlay aggregation overlay object + * @return {boolean} true if aggregation overlay is droppable, false if not + * @override + */ + RTAElementMover.prototype.checkTargetZone = function(oAggregationOverlay) { + var bTargetZone = ElementMover.prototype.checkTargetZone.call(this, oAggregationOverlay); + if (!bTargetZone) { + return false; + } + + var oMovedOverlay = this.getMovedOverlay(); + var oMovedElement = oMovedOverlay.getElementInstance(); + var oTargetOverlay = oAggregationOverlay.getParent(); + var oMovedRelevantContainer = oMovedOverlay.getRelevantContainer(); + var oTargetElement = oTargetOverlay.getElementInstance(); + + // determine target relevantContainer + var vTargetRelevantContainerAfterMove = oAggregationOverlay.getDesignTimeMetadata().getRelevantContainerForPropagation(oMovedElement); + vTargetRelevantContainerAfterMove = vTargetRelevantContainerAfterMove ? vTargetRelevantContainerAfterMove : oTargetElement; + + // check for same relevantContainer + if ( + !oMovedRelevantContainer + || !vTargetRelevantContainerAfterMove + || !Plugin.prototype.hasStableId(oTargetOverlay) + || oMovedRelevantContainer !== vTargetRelevantContainerAfterMove + ) { + return false; + } + + // Binding context is not relevant if the element is being moved inside its parent + if (oMovedOverlay.getParent().getElementInstance() !== oTargetElement) { + // check if binding context is the same + var aBindings = BindingsExtractor.getBindings(oMovedElement, oMovedElement.getModel()); + if (Object.keys(aBindings).length > 0 && oTargetElement.getBindingContext()) { + var sMovedElementBindingContext = Utils.getEntityTypeByPath( + oMovedElement.getModel(), + oMovedElement.getBindingContext().getPath() + ); + var sTargetElementBindingContext = Utils.getEntityTypeByPath( + oTargetElement.getModel(), + oTargetElement.getBindingContext().getPath() + ); + if (!(sMovedElementBindingContext === sTargetElementBindingContext)) { + return false; + } + } + } + + // check if movedOverlay is movable into the target aggregation + return fnHasMoveAction.call(this, oAggregationOverlay, oMovedElement, vTargetRelevantContainerAfterMove); + }; + + /** + * Builds the Move command + * @return {any} Move command object + */ + RTAElementMover.prototype.buildMoveCommand = function() { + + var oMovedOverlay = this.getMovedOverlay(); + var oParentAggregationOverlay = oMovedOverlay.getParentAggregationOverlay(); + var oMovedElement = oMovedOverlay.getElementInstance(); + var oSource = this._getSource(); + var oRelevantContainer = oMovedOverlay.getRelevantContainer(); + var oTarget = OverlayUtil.getParentInformation(oMovedOverlay); + var iSourceIndex = oSource.index; + var iTargetIndex = oTarget.index; + + var bSourceAndTargetAreSame = this._compareSourceAndTarget(oSource, oTarget); + + if (bSourceAndTargetAreSame) { + return undefined; + } + delete oSource.index; + delete oTarget.index; + + var oMove = this.getCommandFactory().getCommandFor(oRelevantContainer, "Move", { + movedElements : [{ + element : oMovedElement, + sourceIndex : iSourceIndex, + targetIndex : iTargetIndex + }], + source : oSource, + target : oTarget + }, oParentAggregationOverlay.getDesignTimeMetadata()); + + return oMove; + + }; + + return RTAElementMover; +}, /* bExport= */ true); diff --git a/resources/sap/ui/rta/plugin/Remove.js b/resources/sap/ui/rta/plugin/Remove.js new file mode 100644 index 0000000..61f8750 --- /dev/null +++ b/resources/sap/ui/rta/plugin/Remove.js @@ -0,0 +1,246 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Remove. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/rta/Utils', + 'sap/ui/rta/command/CompositeCommand' + +], function(Plugin, Utils, CompositeCommand) { + "use strict"; + + /** + * Constructor for a new Remove Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The Remove allows trigger remove operations on the overlay + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.plugin.Remove + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var Remove = Plugin.extend("sap.ui.rta.plugin.Remove", /** @lends sap.ui.rta.plugin.Remove.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * Register browser event for an overlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + Remove.prototype.registerElementOverlay = function(oOverlay) { + oOverlay.attachBrowserEvent("keydown", this._onKeyDown, this); + + Plugin.prototype.registerElementOverlay.apply(this, arguments); + }; + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay + * @returns {boolean} editable or not + * @private + */ + Remove.prototype._isEditable = function(oOverlay) { + var bEditable = false; + var oElement = oOverlay.getElementInstance(); + + var oParentDesignTimeMetadata = Utils.getRelevantContainerDesigntimeMetadata(oOverlay); + if (!oParentDesignTimeMetadata) { + return false; + } + + var oRemoveAction = this._getRemoveAction(oOverlay); + if (oRemoveAction && oRemoveAction.changeType) { + if (oRemoveAction.changeOnRelevantContainer) { + oElement = oOverlay.getRelevantContainer(); + } + bEditable = this.hasChangeHandler(oRemoveAction.changeType, oElement); + } + + if (bEditable) { + return this.hasStableId(oOverlay); + } + + return bEditable; + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {sap.ui.dt.DesignTimeMetadata} oDesignTimeMetadata + * @private + */ + Remove.prototype._getRemoveAction = function(oOverlay) { + return oOverlay.getDesignTimeMetadata().getAction("remove", oOverlay.getElementInstance()); + }; + + /** + * Checks if remove is available for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if available + * @public + */ + Remove.prototype.isRemoveAvailable = function(oOverlay) { + return this._isEditableByPlugin(oOverlay); + }; + + /** + * Checks if remove is enabled for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if enabled + * @public + */ + Remove.prototype.isRemoveEnabled = function(oOverlay) { + var oAction = this._getRemoveAction(oOverlay); + if (!oAction) { + return false; + } + + if (typeof oAction.isEnabled !== "undefined") { + if (typeof oAction.isEnabled === "function") { + return oAction.isEnabled(oOverlay.getElementInstance()); + } else { + return oAction.isEnabled; + } + } + return true; + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {String} confirmation text + * @private + */ + Remove.prototype._getConfirmationText = function(oOverlay) { + var oAction = this._getRemoveAction(oOverlay); + if (oAction && oAction.getConfirmationText) { + return oAction.getConfirmationText(oOverlay.getElementInstance()); + } + }; + + /** + * Detaches the browser events + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + Remove.prototype.deregisterElementOverlay = function(oOverlay) { + oOverlay.detachBrowserEvent("keydown", this._onKeyDown, this); + + Plugin.prototype.deregisterElementOverlay.apply(this, arguments); + }; + + /** + * Handle keydown event + * + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + Remove.prototype._onKeyDown = function(oEvent) { + if (oEvent.keyCode === jQuery.sap.KeyCodes.DELETE) { + oEvent.stopPropagation(); + this.removeElement(); + } + }; + + /** + * The selected (not the focused) element should be hidden! + * @param {array} aOverlays overlay array + * @private + */ + Remove.prototype.removeElement = function(aOverlays) { + var aSelection; + if (aOverlays){ + aSelection = aOverlays; + } else { + var oDesignTime = this.getDesignTime(); + aSelection = oDesignTime.getSelection(); + } + + if (aSelection.length > 0) { + this._handleRemove( aSelection ); + } + }; + + Remove.prototype._getRemoveCommand = function(oRemovedElement, oDesignTimeMetadata, sVariantManagementKey) { + return this.getCommandFactory().getCommandFor(oRemovedElement, "Remove", { + removedElement : oRemovedElement + }, oDesignTimeMetadata, sVariantManagementKey); + }; + + Remove.prototype._fireElementModified = function(oCompositeCommand) { + if (oCompositeCommand.getCommands().length) { + this.fireElementModified({ + "command" : oCompositeCommand + }); + } + }; + + Remove.prototype._handleRemove = function(aSelectedOverlays) { + var aPromises = []; + var oCompositeCommand = new CompositeCommand(); + + aSelectedOverlays.forEach(function(oOverlay) { + var oCommand; + + var oRemovedElement = oOverlay.getElementInstance(); + var oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(); + var oRemoveAction = this._getRemoveAction(oOverlay); + var oRelevantElement; + if (oRemoveAction.changeOnRelevantContainer) { + oRelevantElement = oOverlay.getRelevantContainer(); + } else { + oRelevantElement = oRemovedElement; + } + var sVariantManagementKey = this.getVariantManagementKey(oOverlay, oRelevantElement, oRemoveAction.changeType); + + if (this.isRemoveEnabled(oOverlay)) { + var sConfirmationText = this._getConfirmationText(oOverlay); + if (sConfirmationText) { + aPromises.push( + Utils.openRemoveConfirmationDialog(oRemovedElement, sConfirmationText) + .then(function(bConfirmed) { + if (bConfirmed) { + oCommand = this._getRemoveCommand(oRemovedElement, oDesignTimeMetadata, sVariantManagementKey); + oCompositeCommand.addCommand(oCommand); + } + }.bind(this)) + ); + } else { + oCommand = this._getRemoveCommand(oRemovedElement, oDesignTimeMetadata, sVariantManagementKey); + oCompositeCommand.addCommand(oCommand); + } + } + }, this); + + // since Promise.all is always asynchronous, we want to call it only if at least one promise exists + if (aPromises.length) { + Promise.all(aPromises).then(function() { + this._fireElementModified(oCompositeCommand); + }.bind(this)); + } else { + this._fireElementModified(oCompositeCommand); + } + }; + + return Remove; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/Rename.js b/resources/sap/ui/rta/plugin/Rename.js new file mode 100644 index 0000000..7a95c0d --- /dev/null +++ b/resources/sap/ui/rta/plugin/Rename.js @@ -0,0 +1,418 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Rename. +sap.ui.define(['jquery.sap.global', 'sap/ui/rta/plugin/Plugin', 'sap/ui/dt/ElementUtil', 'sap/ui/dt/OverlayUtil', + 'sap/ui/dt/OverlayRegistry', 'sap/ui/rta/Utils', 'sap/ui/dt/DOMUtil'], + function(jQuery, Plugin, ElementUtil, OverlayUtil, OverlayRegistry, Utils, DOMUtil) { + "use strict"; + + /** + * Constructor for a new Rename. + * + * @param {string} + * [sId] id for the new object, generated automatically if no id is given + * @param {object} + * [mSettings] initial settings for the new object + * + * @class The Rename allows to create a set of Overlays above the root elements and their public children and manage + * their events. + * @extends sap.ui.rta.plugin.Plugin + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.30 + * @alias sap.ui.rta.plugin.Rename + * @experimental Since 1.30. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var Rename = Plugin.extend("sap.ui.rta.plugin.Rename", /** @lends sap.ui.rta.plugin.Rename.prototype */ + { + metadata : { + // ---- object ---- + + // ---- control specific ---- + library : "sap.ui.rta", + properties : { + oldValue : "string" + }, + associations : {}, + events : { + /** Fired when renaming is possible */ + "editable" : {}, + + /** Fired when renaming is switched off */ + "nonEditable" : {} + } + } + }); + + /** + * @override + */ + Rename.prototype.exit = function() { + Plugin.prototype.exit.apply(this, arguments); + + if (this._$oEditableControlDomRef) { + this._stopEdit(); + } + + clearTimeout(this._iStopTimeout); + }; + + /** + * @override + */ + Rename.prototype.setDesignTime = function(oDesignTime) { + this._aSelection = []; + var oOldDesignTime = this.getDesignTime(); + + if (oOldDesignTime) { + oOldDesignTime.detachSelectionChange(this._onDesignTimeSelectionChange, this); + } + Plugin.prototype.setDesignTime.apply(this, arguments); + + if (oDesignTime) { + oDesignTime.attachSelectionChange(this._onDesignTimeSelectionChange, this); + this._aSelection = oDesignTime.getSelection(); + } + }; + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay object + * @returns {string} action value + * @private + */ + Rename.prototype._getRenameAction = function(oOverlay) { + var oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(); + if (oDesignTimeMetadata && oDesignTimeMetadata.getAction) { + return oDesignTimeMetadata.getAction("rename", oOverlay.getElementInstance()); + } + }; + + /** + * Checks if rename is available for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @returns {boolean} true if it's editable + * @public + */ + Rename.prototype.isRenameAvailable = function(oOverlay) { + return this._isEditableByPlugin(oOverlay); + }; + + /** + * Checks if rename is enabled for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @returns {boolean} true if it's enabled + * @public + */ + Rename.prototype.isRenameEnabled = function(oOverlay) { + var bIsEnabled = true; + var oAction = this._getRenameAction(oOverlay); + if (!oAction) { + bIsEnabled = false; + } + + if (bIsEnabled && typeof oAction.isEnabled !== "undefined") { + if (typeof oAction.isEnabled === "function") { + bIsEnabled = oAction.isEnabled(oOverlay.getElementInstance()); + } else { + bIsEnabled = oAction.isEnabled; + } + } + + if (bIsEnabled) { + var oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(); + if (!oDesignTimeMetadata.getAssociatedDomRef(oOverlay.getElementInstance(), oAction.domRef)) { + bIsEnabled = false; + } + } + + return bIsEnabled; + }; + + /** + * @override + */ + Rename.prototype.registerElementOverlay = function(oOverlay) { + oOverlay.attachEvent("editableChange", this._manageClickEvent, this); + + + Plugin.prototype.registerElementOverlay.apply(this, arguments); + }; + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay to be checked for editable + * @returns {boolean} true if it's editable + * @private + */ + Rename.prototype._isEditable = function(oOverlay) { + var bEditable = false; + var oElement = oOverlay.getElementInstance(); + + if (!Utils.getRelevantContainerDesigntimeMetadata(oOverlay)) { + return false; + } + + var oRenameAction = this._getRenameAction(oOverlay); + if (oRenameAction && oRenameAction.changeType) { + if (oRenameAction.changeOnRelevantContainer) { + oElement = oOverlay.getRelevantContainer(); + } + bEditable = this.hasChangeHandler(oRenameAction.changeType, oElement); + } + + if (bEditable) { + return this.hasStableId(oOverlay); + } + + return bEditable; + }; + + /** + * @override + */ + Rename.prototype.deregisterElementOverlay = function(oOverlay) { + oOverlay.detachEvent("editableChange", this._manageClickEvent, this); + oOverlay.detachBrowserEvent("click", this._onClick, this); + + this.removeFromPluginsList(oOverlay); + }; + + /** + * @param {sap.ui.base.Event} oEvent - event object + * @private + */ + Rename.prototype._onClick = function(oEvent) { + var oOverlay = sap.ui.getCore().byId(oEvent.currentTarget.id); + if (this.isRenameEnabled(oOverlay) && !oEvent.metaKey && !oEvent.ctrlKey) { + this.startEdit(oOverlay); + oEvent.preventDefault(); + } + }; + + /** + * @override + */ + Rename.prototype._onDesignTimeSelectionChange = function(oEvent) { + var aSelection = oEvent.getParameter("selection"); + + // detach events from previous selection + this._aSelection.forEach(this._manageClickEvent, this); + // attach events to the new selection + aSelection.forEach(this._manageClickEvent, this); + + this._aSelection = aSelection; + }; + + + /** + * @override + */ + Rename.prototype._manageClickEvent = function(vEventOrElement) { + var oOverlay = vEventOrElement.getSource ? vEventOrElement.getSource() : vEventOrElement; + if (oOverlay.isSelected() && this.isRenameAvailable(oOverlay)) { + oOverlay.attachBrowserEvent("click", this._onClick, this); + } else { + oOverlay.detachBrowserEvent("click", this._onClick, this); + } + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay - target overlay + * @public + */ + Rename.prototype.startEdit = function(oOverlay) { + + this._oEditedOverlay = oOverlay; + + var oElement = oOverlay.getElementInstance(); + var oDesignTimeMetadata = this._oEditedOverlay.getDesignTimeMetadata(); + var vDomRef = oDesignTimeMetadata.getAction("rename", oElement).domRef; + + var oEditableControlDomRef = oDesignTimeMetadata.getAssociatedDomRef(oElement, vDomRef); + + this._$oEditableControlDomRef = jQuery(oEditableControlDomRef); + + var oEditableControlOverlay = sap.ui.dt.OverlayRegistry.getOverlay(oEditableControlDomRef.id) || oOverlay; + + var oWrapper = jQuery("
").appendTo(oEditableControlOverlay.$()); + this._$editableField = jQuery("
").appendTo(oWrapper); + + // if label is empty, set a preliminary dummy text at the control to get an overlay + if (this._$oEditableControlDomRef.text() === "") { + this._$oEditableControlDomRef.text("_?_"); + this._$editableField.text(""); + } else { + this._$editableField.text(this._$oEditableControlDomRef.text()); + } + + DOMUtil.copyComputedStyle(this._$oEditableControlDomRef, this._$editableField); + this._$editableField.children().remove(); + this._$editableField.offset({ left: this._$oEditableControlDomRef.offset().left }); + this._$editableField.offset({ top: this._$oEditableControlDomRef.offset().top }); + + // TODO : for all browsers + this._$editableField.css({ + "-moz-user-modify" : "read-write", + "-webkit-user-modify" : "read-write", + "-ms-user-modify" : "read-write", + "user-modify" : "read-write", + "text-overflow" : "clip" + }); + + this._$oEditableControlDomRef.css("visibility", "hidden"); + + this._$editableField.one("focus", this._onEditableFieldFocus.bind(this)); + + this._$editableField.on("blur", this._onEditableFieldBlur.bind(this)); + this._$editableField.on("keydown", this._onEditableFieldKeydown.bind(this)); + this._$editableField.on("dragstart", this._stopPropagation.bind(this)); + this._$editableField.on("drag", this._stopPropagation.bind(this)); + this._$editableField.on("dragend", this._stopPropagation.bind(this)); + + this._$editableField.on("click", this._stopPropagation.bind(this)); + this._$editableField.on("mousedown", this._stopPropagation.bind(this)); + + this._$editableField.focus(); + + // keep Overlay selected while renaming + oOverlay.setSelected(true); + + this.setOldValue(this._getCurrentEditableFieldText()); + }; + + /** + * @param {sap.ui.base.Event} oEvent - event object + * @private + */ + Rename.prototype._stopPropagation = function(oEvent) { + oEvent.stopPropagation(); + }; + + /** + * @param {sap.ui.base.Event} oEvent - event object + * @private + */ + Rename.prototype._onEditableFieldFocus = function(oEvent) { + this._oEditedOverlay.setSelected(false); + var el = oEvent.target; + var range = document.createRange(); + range.selectNodeContents(el); + var sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); + }; + + /** + * @param {boolean} bRestoreFocus - true if the focus should be restored on overlay after rename + * @private + */ + Rename.prototype._stopEdit = function(bRestoreFocus) { + // exchange the dummy text at the label with the genuine empty text (see start_edit function) + if (this._$oEditableControlDomRef.text() === "_?_") { + this._$oEditableControlDomRef.text(""); + } + + this._oEditedOverlay.$().find(".sapUiRtaEditableField").remove(); + this._$oEditableControlDomRef.css("visibility", "visible"); + + if (bRestoreFocus) { + var oOverlay = this._oEditedOverlay; + + // timeout is needed because of invalidation (test on bounded fields) + // TODO: get rid of timeout! prevent UI5 from taking focus out of overlays + this._iStopTimeout = setTimeout(function() { + oOverlay.setSelected(true); + oOverlay.focus(); + }, 500); + } + + this._oEditedOverlay.setSelected(false); + + delete this._$editableField; + delete this._$oEditableControlDomRef; + delete this._oEditedOverlay; + }; + + /** + * @param {sap.ui.base.Event} oEvent - event object + * @private + */ + Rename.prototype._onEditableFieldBlur = function(oEvent) { + this._emitLabelChangeEvent(); + this._stopEdit(); + }; + + /** + * @param {sap.ui.base.Event} oEvent - event object + * @private + */ + Rename.prototype._onEditableFieldKeydown = function(oEvent) { + switch (oEvent.keyCode) { + case jQuery.sap.KeyCodes.ENTER: + this._emitLabelChangeEvent(); + this._stopEdit(true); + oEvent.preventDefault(); + break; + case jQuery.sap.KeyCodes.ESCAPE: + this._stopEdit(true); + oEvent.preventDefault(); + break; + case jQuery.sap.KeyCodes.DELETE: + //Incident ID: #1680315103 + oEvent.stopPropagation(); + break; + default: + } + }; + + /** + * @private + */ + Rename.prototype._emitLabelChangeEvent = function() { + var sText = this._getCurrentEditableFieldText(); + if (this.getOldValue() !== sText) { //check for real change before creating a command + this._$oEditableControlDomRef.text(sText); + try { + var oRenameCommand; + var oRenamedElement = this._oEditedOverlay.getElementInstance(); + var oDesignTimeMetadata = this._oEditedOverlay.getDesignTimeMetadata(); + + oRenameCommand = this.getCommandFactory().getCommandFor(oRenamedElement, "rename", { + renamedElement : oRenamedElement, + newValue : sText + }, oDesignTimeMetadata/*, this._oEditedOverlay.getVariantMangement()*/); + this.fireElementModified({ + "command" : oRenameCommand + }); + } catch (oError) { + jQuery.sap.log.error("Error during rename : ", oError); + } + } + }; + + /** + * @returns {string} current editable field text + * @private + */ + Rename.prototype._getCurrentEditableFieldText = function() { + var sText = this._$editableField.text(); + // Rename to empty string should not be possible + // to prevent issues with disappearing elements + if (sText === ""){ + sText = '\xa0'; // = non-breaking space ( ) + } + return sText; + }; + + return Rename; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/Selection.js b/resources/sap/ui/rta/plugin/Selection.js new file mode 100644 index 0000000..b62f0b3 --- /dev/null +++ b/resources/sap/ui/rta/plugin/Selection.js @@ -0,0 +1,269 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Selection. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/rta/Utils', + 'sap/ui/fl/Utils' +], +function(Plugin, Utils, FlexUtils) { + "use strict"; + + /** + * Constructor for a new Selection plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The Selection plugin allows you to select or focus overlays with mouse or keyboard and navigate to others. + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias sap.ui.rta.plugin.Selection + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var Selection = Plugin.extend("sap.ui.rta.plugin.Selection", /** @lends sap.ui.dt.Plugin.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: { + multiSelectionRequiredPlugins : { + type : "string[]" + } + }, + associations: {}, + events: { + elementEditableChange: { + parameters: { + editable: { + type: "boolean" + } + } + } + } + } + }); + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay to be checked for developer mode + * @returns {boolean} true if it's in developer mode + * @private + */ + Selection.prototype._checkDeveloperMode = function(oOverlay) { + if (oOverlay.getDesignTimeMetadata()) { + var bDeveloperMode = this.getCommandFactory().getFlexSettings().developerMode; + if (bDeveloperMode && this.hasStableId(oOverlay)) { + oOverlay.setEditable(true); + oOverlay.setSelectable(true); + this.fireElementEditableChange({ + editable: true + }); + return true; + } + } + return false; + }; + + /** + * Register an overlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + Selection.prototype.registerElementOverlay = function(oOverlay) { + if (!this._checkDeveloperMode(oOverlay)) { + oOverlay.attachEditableChange(this._onEditableChange, this); + this._adaptSelectable(oOverlay); + } + + oOverlay.attachBrowserEvent("click", this._selectOverlay, this); + oOverlay.attachBrowserEvent("keydown", this._onKeyDown, this); + oOverlay.attachBrowserEvent("mousedown", this._onMouseDown, this); + }; + + Selection.prototype._onEditableChange = function(oEvent) { + var oOverlay = oEvent.getSource(); + this._adaptSelectable(oOverlay); + }; + + Selection.prototype._adaptSelectable = function(oOverlay) { + var bSelectable = oOverlay.getEditable(); + if (oOverlay.getSelectable() !== bSelectable) { + oOverlay.setSelectable(bSelectable); + this.fireElementEditableChange({ + editable: bSelectable + }); + } + }; + + /** + * Additionally to super->deregisterOverlay this method detatches the browser events + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @override + */ + Selection.prototype.deregisterElementOverlay = function(oOverlay) { + oOverlay.detachBrowserEvent("click", this._selectOverlay, this); + oOverlay.detachBrowserEvent("keydown", this._onKeyDown, this); + oOverlay.detachBrowserEvent("mousedown", this._onMouseDown, this); + + oOverlay.detachEditableChange(this._onEditableChange, this); + }; + + Selection.prototype._setFocusOnOverlay = function(oOverlay, oEvent) { + if (oOverlay && oOverlay.getSelectable()) { + oOverlay.focus(); + oEvent.stopPropagation(); + } + }; + + /** + * Handle keydown event + * + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + Selection.prototype._onKeyDown = function(oEvent) { + var oOverlay = Utils.getFocusedOverlay(); + if (oEvent.keyCode === jQuery.sap.KeyCodes.ENTER) { + this._selectOverlay(oEvent); + } else if (oEvent.keyCode === jQuery.sap.KeyCodes.ARROW_UP && oEvent.shiftKey === false && oEvent.altKey === false) { + if (oOverlay) { + var oParentOverlay = Utils.getFocusableParentOverlay(oOverlay); + this._setFocusOnOverlay(oParentOverlay, oEvent); + oEvent.preventDefault(); + } + } else if (oEvent.keyCode === jQuery.sap.KeyCodes.ARROW_DOWN && oEvent.shiftKey === false && oEvent.altKey === false) { + if (oOverlay) { + var oFirstChildOverlay = Utils.getFirstFocusableDescendantOverlay(oOverlay); + this._setFocusOnOverlay(oFirstChildOverlay, oEvent); + oEvent.preventDefault(); + } + } else if (oEvent.keyCode === jQuery.sap.KeyCodes.ARROW_LEFT && oEvent.shiftKey === false && oEvent.altKey === false) { + if (oOverlay) { + var oPrevSiblingOverlay = Utils.getPreviousFocusableSiblingOverlay(oOverlay); + this._setFocusOnOverlay(oPrevSiblingOverlay, oEvent); + oEvent.preventDefault(); + } + } else if (oEvent.keyCode === jQuery.sap.KeyCodes.ARROW_RIGHT && oEvent.shiftKey === false && oEvent.altKey === false) { + if (oOverlay) { + var oNextSiblingOverlay = Utils.getNextFocusableSiblingOverlay(oOverlay); + this._setFocusOnOverlay(oNextSiblingOverlay, oEvent); + oEvent.preventDefault(); + } + } + }; + + Selection.prototype._selectOverlay = function (oEvent) { + var oOverlay = sap.ui.getCore().byId(oEvent.currentTarget.id); + var bMultiSelection = oEvent.metaKey || oEvent.ctrlKey; + var oTargetClasses = oEvent.target.className; + + if (oOverlay.getSelectable() && oTargetClasses.indexOf("sapUiDtOverlay") > -1) { + if (bMultiSelection) { + this.getDesignTime().setSelectionMode(sap.ui.dt.SelectionMode.Multi); + } + + oOverlay.setSelected(!oOverlay.getSelected()); + + if (bMultiSelection) { + this.getDesignTime().setSelectionMode(sap.ui.dt.SelectionMode.Single); + } + + oEvent.preventDefault(); + oEvent.stopPropagation(); + } + }; + + /** + * Handle MouseDown event + * + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + Selection.prototype._onMouseDown = function(oEvent) { + if (sap.ui.Device.browser.name == "ie"){ + var oOverlay = sap.ui.getCore().byId(oEvent.currentTarget.id); + if (oOverlay.getSelectable()){ + oOverlay.focus(); + oEvent.stopPropagation(); + } else { + oOverlay.getDomRef().blur(); + } + } + }; + + /** + * @override + */ + Selection.prototype.setDesignTime = function(oDesignTime) { + //detach from listener from old DesignTime instance + if (this.getDesignTime()) { + this.getDesignTime().detachSelectionChange(this._onDesignTimeSelectionChange, this); + } + + //set new DesignTime instance in parent class + Plugin.prototype.setDesignTime.apply(this, arguments); + + //attach listener back to the new DesignTime instance + if (this.getDesignTime()) { + this.getDesignTime().attachSelectionChange(this._onDesignTimeSelectionChange, this); + } + }; + + Selection.prototype._onDesignTimeSelectionChange = function(oEvent) { + if (this.getDesignTime().getSelectionMode() === sap.ui.dt.SelectionMode.Single) { + return; + } + + var oCurrentSelectedOverlay = oEvent.getParameter("selection")[oEvent.getParameter("selection").length - 1]; + var aSelections = this.getDesignTime().getSelection(); + if (aSelections && aSelections.length === 1) { + oCurrentSelectedOverlay.setSelected(true); + return; + } + if (!oCurrentSelectedOverlay || this.getDesignTime().getSelectionMode() === sap.ui.dt.SelectionMode.Single) { + return; + } + + //shared relevant container? + var bMultiSelectisValid = _hasSharedMultiSelectionPlugins(aSelections, this.getMultiSelectionRequiredPlugins()) + && _hasSharedRelevantContainer(aSelections); + oCurrentSelectedOverlay.setSelected(bMultiSelectisValid); + }; + + function _hasSharedMultiSelectionPlugins(aSelections, aMultiSelectionRequiredPlugins){ + var aSharedMultiSelectionPlugins = aMultiSelectionRequiredPlugins; + aSelections.forEach(function(oSelecedOverlay) { + var aEditableByPlugins = oSelecedOverlay.getEditableByPlugins(); + aSharedMultiSelectionPlugins = aSharedMultiSelectionPlugins.reduce(function(aSharedPlugins, sPluginName){ + if (aEditableByPlugins.indexOf(sPluginName) !== -1){ + aSharedPlugins.push(sPluginName); + } + return aSharedPlugins; + }, []); + }); + return aSharedMultiSelectionPlugins.length > 0; + } + + function _hasSharedRelevantContainer(aSelections){ + var oCurrentSelectedOverlay = aSelections[aSelections.length - 1]; + var oPreviousSelectedOverlay = aSelections[aSelections.length - 2]; + + var oCurrentRelevantContainer = oCurrentSelectedOverlay.getRelevantContainer(); + var oPreviousRelevantContainer = oPreviousSelectedOverlay.getRelevantContainer(); + + return oCurrentRelevantContainer === oPreviousRelevantContainer; + } + + return Selection; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/Settings.js b/resources/sap/ui/rta/plugin/Settings.js new file mode 100644 index 0000000..b0dc176 --- /dev/null +++ b/resources/sap/ui/rta/plugin/Settings.js @@ -0,0 +1,146 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Settings. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', + 'sap/ui/rta/Utils' +], function(Plugin, Utils) { + "use strict"; + + /** + * Constructor for a new Settings Plugin. + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The Settings allows trigger change of settings operations on the overlay + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.44 + * @alias sap.ui.rta.plugin.Settings + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var Settings = Plugin.extend("sap.ui.rta.plugin.Settings", /** @lends sap.ui.rta.plugin.Settings.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: { + commandStack : { + type : "any" + } + }, + associations: {}, + events: {} + } + }); + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay to be checked for editable + * @returns {boolean} true if it's editable + * @private + */ + Settings.prototype._isEditable = function(oOverlay) { + if (!Utils.getRelevantContainerDesigntimeMetadata(oOverlay)) { + return false; + } + + var oSettingsAction = this._getSettingsAction(oOverlay); + if (oSettingsAction && oSettingsAction.handler) { + return this.hasStableId(oOverlay); + } + + return false; + }; + + Settings.prototype._getUnsavedChanges = function(sId, aChangeTypes) { + var sElementId; + + var aUnsavedChanges = this.getCommandStack().getAllExecutedCommands().filter(function(oCommand) { + sElementId = oCommand.getElementId(); + if (sElementId === sId && aChangeTypes.indexOf(oCommand.getChangeType()) >= 0) { + return true; + } + }).map(function(oCommand) { + return oCommand.getPreparedChange(); + }); + + return aUnsavedChanges; + }; + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay object + * @returns {string} changeType value for settingsAction if available + * @private + */ + Settings.prototype._getSettingsAction = function(oOverlay) { + return oOverlay.getDesignTimeMetadata().getAction("settings", oOverlay.getElementInstance()); + }; + + /** + * Checks if settings is available for oOverlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay object + * @returns {boolean} true if it's editable + * @public + */ + Settings.prototype.isSettingsAvailable = function(oOverlay) { + return this._isEditableByPlugin(oOverlay); + }; + + /** + * Checks if settings is enabled for oOverlay + * + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay object + * @returns {boolean} true if it's enabled + * @public + */ + Settings.prototype.isSettingsEnabled = function(oOverlay) { + var oAction = this._getSettingsAction(oOverlay); + if (!oAction) { + return false; + } + + if (typeof oAction.isEnabled !== "undefined") { + if (typeof oAction.isEnabled === "function") { + return oAction.isEnabled(oOverlay.getElementInstance()); + } else { + return oAction.isEnabled; + } + } + return true; + }; + + + Settings.prototype.handleSettings = function(aSelectedOverlays) { + var oSettingsCommand; + var oElement = aSelectedOverlays[0].getElementInstance(); + var mPropertyBag = { + getUnsavedChanges: this._getUnsavedChanges.bind(this), + styleClass: Utils.getRtaStyleClassName() + }; + + return aSelectedOverlays[0].getDesignTimeMetadata().getAction("settings").handler(oElement, this._getUnsavedChanges.bind(this), mPropertyBag).then(function(aChanges) { + aChanges.forEach(function(mChange) { + oSettingsCommand = this.getCommandFactory().getCommandFor(mChange.selectorControl, "settings", mChange.changeSpecificData); + this.fireElementModified({ + "command" : oSettingsCommand + }); + }, this); + }.bind(this))['catch'](function(oError) { + if (oError) { + throw oError; + } + }); + }; + + return Settings; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/Split.js b/resources/sap/ui/rta/plugin/Split.js new file mode 100644 index 0000000..2ab0fc5 --- /dev/null +++ b/resources/sap/ui/rta/plugin/Split.js @@ -0,0 +1,146 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.rta.plugin.Split. +sap.ui.define([ + 'sap/ui/rta/plugin/Plugin', 'sap/ui/dt/Selection', 'sap/ui/dt/OverlayRegistry', 'sap/ui/rta/Utils', 'sap/ui/fl/Utils' +], function(Plugin, Selection, OverlayRegistry, Utils, FlexUtils) { + "use strict"; + + /** + * Constructor for a new Split Plugin. + * + * @class + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.46 + * @alias sap.ui.rta.plugin.Split + * @experimental Since 1.46. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var Split = Plugin.extend("sap.ui.rta.plugin.Split", /** @lends sap.ui.rta.plugin.Split.prototype */ + { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: {}, + associations: {}, + events: {} + } + }); + + /** + * @param {sap.ui.dt.ElementOverlay} oOverlay overlay to be checked for editable + * @returns {boolean} true if it's editable + * @private + */ + Split.prototype._isEditable = function(oOverlay) { + if (!Utils.getRelevantContainerDesigntimeMetadata(oOverlay)) { + return false; + } + var oSplitAction = this._getSplitAction(oOverlay); + if (oSplitAction && oSplitAction.changeType && oSplitAction.changeOnRelevantContainer) { + return this.hasStableId(oOverlay) && this.hasChangeHandler(oSplitAction.changeType, oOverlay.getRelevantContainer()); + } else { + return false; + } + }; + + /** + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {sap.ui.dt.DesignTimeMetadata} oDesignTimeMetadata + * @private + */ + Split.prototype._getSplitAction = function(oOverlay) { + return oOverlay.getDesignTimeMetadata().getAction("split", oOverlay.getElementInstance()); + }; + + /** + * Checks if Split is available for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if available + * @public + */ + Split.prototype.isSplitAvailable = function(oOverlay) { + if (!this._isEditableByPlugin(oOverlay)) { + return false; + } + + var aSelectedOverlays = this.getDesignTime().getSelection(); + if (aSelectedOverlays.length !== 1) { + return false; + } + + var vSplitAction = this._getSplitAction(oOverlay); + var oElement = aSelectedOverlays[0].getElementInstance(); + if (vSplitAction && vSplitAction.getControlsCount(oElement) <= 1) { + return false; + } + + return true; + }; + + /** + * Checks if Split is enabled for oOverlay + * + * @param {sap.ui.dt.Overlay} oOverlay overlay object + * @return {boolean} true if enabled + * @public + */ + Split.prototype.isSplitEnabled = function(oOverlay) { + + // check that each selected element has an enabled action + var oAction = this._getSplitAction(oOverlay); + if (!oAction || !this.isSplitAvailable(oOverlay)) { + return false; + } + + // actions are by default enabled + var bActionIsEnabled = true; + if (typeof oAction.isEnabled !== "undefined") { + if (typeof oAction.isEnabled === "function") { + bActionIsEnabled = oAction.isEnabled(oOverlay.getElementInstance()); + } else { + bActionIsEnabled = oAction.isEnabled; + } + } + return bActionIsEnabled; + }; + + /** + * @param {any} oSplitElement selected element + */ + Split.prototype.handleSplit = function(oSplitElement) { + var oParent = oSplitElement.getParent(); + var oElementOverlay = OverlayRegistry.getOverlay(oSplitElement); + var oDesignTimeMetadata = oElementOverlay.getDesignTimeMetadata(); + + var iFieldsLength = this._getSplitAction(oElementOverlay).getControlsCount(oSplitElement); + var oView = FlexUtils.getViewForControl(oSplitElement); + var aNewElementIds = []; + // Split needs iFieldsLength controls, only one is available so far + for (var i = 0; i < iFieldsLength - 1; i++){ + aNewElementIds.push(oView.createId(jQuery.sap.uid())); + } + + var oSplitCommand = this.getCommandFactory().getCommandFor(oSplitElement, "split", { + newElementIds : aNewElementIds, + source : oSplitElement, + parentElement : oParent + }, oDesignTimeMetadata); + this.fireElementModified({ + "command" : oSplitCommand + }); + + }; + + return Split; +}, /* bExport= */true); diff --git a/resources/sap/ui/rta/plugin/additionalElements/AddElementsDialog.js b/resources/sap/ui/rta/plugin/additionalElements/AddElementsDialog.js new file mode 100644 index 0000000..fe8f5cd --- /dev/null +++ b/resources/sap/ui/rta/plugin/additionalElements/AddElementsDialog.js @@ -0,0 +1,357 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/base/ManagedObject', + 'sap/ui/commons/Label', + 'sap/ui/commons/LabelDesign', + 'sap/m/Dialog', + 'sap/ui/model/json/JSONModel', + 'sap/m/SearchField', + 'sap/m/Button', + 'sap/m/Toolbar', + 'sap/m/ToolbarSpacer', + 'sap/ui/model/Filter', + 'sap/ui/model/FilterOperator', + 'sap/ui/rta/command/CommandFactory', + 'sap/ui/rta/command/CompositeCommand', + 'sap/m/List', + 'sap/m/CustomListItem', + 'sap/m/ListType', + 'sap/m/ScrollContainer', + 'sap/ui/model/Sorter', + 'sap/ui/dt/ElementUtil', + 'sap/m/VBox', + 'sap/ui/rta/Utils' +], function ( + jQuery, + ManagedObject, + Label, + LabelDesign, + Dialog, + JSONModel, + SearchField, + Button, + Toolbar, + ToolbarSpacer, + Filter, + FilterOperator, + CommandFactory, + CompositeCommand, + List, + ListItem, + ListType, + ScrollContainer, + Sorter, + ElementUtil, + VBox, + Utils +) { + "use strict"; + + /** + * Constructor for a new sap.ui.rta.plugin.additionalElements.AddElementsDialog control. + * + * @class Context - Dialog for available Fields in Runtime Authoring + * @extends sap.ui.core.Control + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.44 + * @alias sap.ui.rta.plugin.additionalElements.AddElementsDialog + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be + * changed in future. + */ + var AddElementsDialog = ManagedObject.extend("sap.ui.rta.plugin.additionalElements.AddElementsDialog", { + metadata : { + library : "sap.ui.rta", + properties : { + "customFieldEnabled" : { + type: "boolean", + defaultValue: false + }, + "title" : { + type: "string" + } + }, + events : { + "opened" : {}, + "openCustomField" : {} + } + } + }); + + /** + * Initialize the Dialog + * + * @private + */ + AddElementsDialog.prototype.init = function() { + // Get messagebundle.properties for sap.ui.rta + this._oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + this._bAscendingSortOrder = false; + // sap.m.Dialog shouldn't have no parent or a rendered parent + // otherwise invalidate/filter/... is not working correctly + this._oDialog = new Dialog().addStyleClass("sapUIRtaFieldRepositoryDialog"); + this._oDialog.addStyleClass(Utils.getRtaStyleClassName()); + this._oDialog.removeStyleClass("sapUiPopupWithPadding"); + this._oDialog.setModel(new JSONModel({ + elements: [] + })); + + var aContent = this._createContent(); + var aButtons = this._createButtons(); + aContent.forEach(function(oContent) { + this._oDialog.addContent(oContent); + }, this); + aButtons.forEach(function(oButton) { + this._oDialog.addButton(oButton); + }, this); + this._oDialog.setInitialFocus(this._oInput); + }; + + /** + * Create the Content of the Dialog + * + * @returns {object} list containes inputList and oScrollContainer objects + * @private + */ + AddElementsDialog.prototype._createContent = function() { + // SearchField + this._oInput = new SearchField({ + width : "100%", + liveChange : [this._updateModelFilter, this] + }).addStyleClass("resourceListIF"); + + // Button for sorting the List + var oResortButton = new Button({ + text : "", + icon : "sap-icon://sort", + press : [this._resortList, this] + }); + + // Button for creating Custom Fields + this._oCustomFieldButton = new Button({ + text : "", + icon : "sap-icon://add", + tooltip : this._oTextResources.getText("BTN_FREP_CCF"), + enabled : this.getCustomFieldEnabled(), + press : [this._redirectToCustomFieldCreation, this] + }); + + // Toolbar + this._oToolbarSpacer1 = new ToolbarSpacer(); + this.oInputFields = new Toolbar({ + content: [this._oInput, oResortButton, this._oToolbarSpacer1, this._oCustomFieldButton] + }); + + // Fields of the List + var oFieldName = new Label({ + design: LabelDesign.Bold, + tooltip: "{tooltip}", + text: { + parts: [{path: "label"}, {path: "referencedComplexPropertyName"}, {path: "duplicateComplexName"}], + formatter: function(sLabel, sReferencedComplexPropertyName, bDuplicateComplexName) { + if (bDuplicateComplexName && sReferencedComplexPropertyName) { + sLabel += " (" + sReferencedComplexPropertyName + ")"; + } + return sLabel; + } + } + }); + + var oFieldName2 = new Label({ + text: { + parts: [{path: "originalLabel"}], + formatter: function(sOriginalLabel) { + if (sOriginalLabel) { + return this._oTextResources.getText("LBL_FREP", sOriginalLabel); + } + return ""; + }.bind(this) + }, + visible: { + parts: [{path: "originalLabel"}], + formatter: function(sOriginalLabel) { + if (sOriginalLabel) { + return true; + } + return false; + } + } + }); + + var oVBox = new VBox(); + oVBox.addItem(oFieldName); + oVBox.addItem(oFieldName2); + + // List + var oSorter = new Sorter("label", this._bAscendingSortOrder); + this._oList = new List( + { + mode : "MultiSelect", + includeItemInSelection : true, + growing : false, + growingScrollToLoad : false + }).setNoDataText(this._oTextResources.getText("MSG_NO_FIELDS", this._oTextResources.getText("MULTIPLE_CONTROL_NAME").toLowerCase())); + + var oListItem = new ListItem({ + type: ListType.Active, + selected : "{selected}", + content : [oVBox] + }); + + this._oList.bindItems({path:"/elements", template: oListItem, sorter : oSorter}); + + // Scrollcontainer containing the List + // Needed for scrolling the List + var oScrollContainer = new ScrollContainer({ + content: this._oList, + vertical: true, + horizontal: false + }).addStyleClass("sapUIRtaCCDialogScrollContainer"); + + return [this.oInputFields, + oScrollContainer]; + }; + + /** + * Create the Buttons of the Dialog (OK/Cancel) + * + * @returns {object} list containes ok button and cancel button objects + * @private + */ + AddElementsDialog.prototype._createButtons = function() { + this._oOKButton = new Button({ + text : this._oTextResources.getText("BTN_FREP_OK"), + press : [this._submitDialog, this] + }); + var oCancelButton = new Button({ + text : this._oTextResources.getText("BTN_FREP_CANCEL"), + press : [this._cancelDialog, this] + }); + return [this._oOKButton, oCancelButton]; + }; + + /** + * Close the dialog. + */ + AddElementsDialog.prototype._submitDialog = function() { + this._oDialog.close(); + this._fnResolve(); + }; + + /** + * Close dialog and revert all change operations + */ + AddElementsDialog.prototype._cancelDialog = function() { + // clear all variables + this._oList.removeSelections(); + this._oDialog.close(); + this._fnReject(); + }; + + AddElementsDialog.prototype.setElements = function(aElements) { + this._oDialog.getModel().setProperty("/elements", aElements); + }; + + AddElementsDialog.prototype.getElements = function() { + return this._oDialog.getModel().getProperty("/elements"); + }; + + AddElementsDialog.prototype.getSelectedElements = function() { + return this._oDialog.getModel().getObject("/elements").filter(function(oElement){ + return oElement.selected; + }); + }; + + /** + * Open the Field Repository Dialog + * + * @param {sap.ui.core.Control} oControl Currently selected control + * @returns {promise} empty promise + * @public + */ + AddElementsDialog.prototype.open = function(oControl) { + return new Promise(function (resolve, reject) { + this._fnResolve = resolve; + this._fnReject = reject; + this._oDialog.oPopup.attachOpened(function (){ + this.fireOpened(); + }.bind(this)); + // Makes sure the modal div element does not change the size of our application (which would result in + // recalculation of our overlays) + this._oDialog.open(); + }.bind(this)); + }; + + /** + * Resort the list + * + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + AddElementsDialog.prototype._resortList = function(oEvent) { + this._bAscendingSortOrder = !this._bAscendingSortOrder; + var oBinding = this._oList.getBinding("items"); + var aSorter = []; + aSorter.push(new Sorter("label", this._bAscendingSortOrder)); + oBinding.sort(aSorter); + }; + + /** + * Updates the model on filter events + * + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + AddElementsDialog.prototype._updateModelFilter = function(oEvent) { + var sValue = oEvent.getParameter("newValue"); + var oBinding = this._oList.getBinding("items"); + if ((typeof sValue) === "string") { + var oFilterLabel = new Filter("label", FilterOperator.Contains, sValue); + var oOriginalLabelFilter = new Filter("originalLabel", FilterOperator.Contains, sValue); + var oReferencedComplexPropertyNameFilter = new Filter("referencedComplexPropertyName", FilterOperator.Contains, sValue); + var oDuplicateComplexNameFilter = new Filter("duplicateComplexName", FilterOperator.EQ, true); + var oComplexNameFilter = new Filter({ filters: [oReferencedComplexPropertyNameFilter, oDuplicateComplexNameFilter], and: true }); + var oFilterLabelOrInfo = new Filter({ filters: [oFilterLabel, oOriginalLabelFilter, oComplexNameFilter], and: false }); + oBinding.filter([oFilterLabelOrInfo]); + } else { + oBinding.filter([]); + } + }; + + /** + * Fire an event to redirect to custom field creation + * + * @param {sap.ui.base.Event} oEvent event object + * @private + */ + AddElementsDialog.prototype._redirectToCustomFieldCreation = function(oEvent) { + this.fireOpenCustomField(); + this._oDialog.close(); + }; + + AddElementsDialog.prototype.setTitle = function(sTitle) { + ManagedObject.prototype.setProperty.call(this, "title", sTitle, true); + this._oDialog.setTitle(sTitle); + }; + + /** + * Enables the Custom Field Creation button + * + * @param {boolean} bCustomFieldEnabled true shows the button, false not + * @public + */ + AddElementsDialog.prototype.setCustomFieldEnabled = function(bCustomFieldEnabled) { + ManagedObject.prototype.setProperty.call(this, "customFieldEnabled", bCustomFieldEnabled, true); + this._oCustomFieldButton.setEnabled(bCustomFieldEnabled); + }; + + return AddElementsDialog; + +}, /* bExport= */ true); \ No newline at end of file diff --git a/resources/sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer.js b/resources/sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer.js new file mode 100644 index 0000000..3f92709 --- /dev/null +++ b/resources/sap/ui/rta/plugin/additionalElements/AdditionalElementsAnalyzer.js @@ -0,0 +1,461 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + + sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/core/StashedControlSupport', + 'sap/ui/dt/ElementUtil', + 'sap/ui/rta/Utils', + 'sap/ui/rta/util/BindingsExtractor' + ], + function ( + jQuery, + StashedControlSupport, + ElementUtil, + RtaUtils, + BindingsExtractor + ) { + "use strict"; + + function _enrichProperty(mProperty, mEntity){ + var mProp = jQuery.extend({},mProperty); + mProp.entityName = mEntity.name; + + var mLabelAnnotation = mProperty["com.sap.vocabularies.Common.v1.Label"]; + mProp.fieldLabel = mLabelAnnotation && mLabelAnnotation.String; + + var mQuickInfoAnnotation = mProperty["com.sap.vocabularies.Common.v1.QuickInfo"]; + mProp.quickInfo = mQuickInfoAnnotation && mQuickInfoAnnotation.String; + + // Set the visible attribute on the property (see sap\ui\model\odata\_ODataMetaModelUtils.js) => will match field control and sap:visible = false + var mFieldControlAnnotation = mProperty["com.sap.vocabularies.Common.v1.FieldControl"]; + mProp.visible = !(mFieldControlAnnotation && mFieldControlAnnotation.EnumMember === "com.sap.vocabularies.Common.v1.FieldControlType/Hidden"); + return mProp; + } + + /** + * Is field using a complex type + * + * @param {Object} mProperty - property from entityType + * @returns {Boolean} - Returns true if property is using a complex type + */ + function _isComplexType (mProperty) { + if (mProperty && mProperty.type) { + if (mProperty.type.toLowerCase().indexOf("edm") !== 0) { + return true; + } + } + return false; + } + + function _expandComplexProperties(aODataProperties, oMetaModel, mEntity){ + return aODataProperties.reduce(function(aExpandedProperties, mProperty){ + var vProps = _enrichProperty(mProperty, mEntity); + if (_isComplexType(vProps)) { + var mComplexType = oMetaModel.getODataComplexType(vProps.type); + vProps = mComplexType.property.map(function(oComplexProperty){ + oComplexProperty = _enrichProperty(oComplexProperty, mEntity); + oComplexProperty.bindingPath = vProps.name + "/" + oComplexProperty.name; + oComplexProperty.referencedComplexPropertyName = vProps.fieldLabel || vProps.name; + return oComplexProperty; + }); + } else { + //harmonize structure + vProps.bindingPath = mProperty.name; + } + return aExpandedProperties.concat(vProps); + }, []); + } + + function _filterInvisibleProperties(aODataProperties, oElement) { + return aODataProperties.filter(function(mProperty){ + //sap:visible=false and or "com.sap.vocabularies.Common.v1.FieldControl" with EnumMember "com.sap.vocabularies.Common.v1.FieldControlType/Hidden" + //handled by MetadataAnalyser + return mProperty.visible; + }).filter(function(mProperty){ + //@runtime hidden by field control value = 0 + var mFieldControlAnnotation = mProperty["com.sap.vocabularies.Common.v1.FieldControl"]; + var sFieldControlPath = mFieldControlAnnotation && mFieldControlAnnotation.Path; + if (sFieldControlPath){ + var iFieldControlValue = oElement.getBindingContext().getProperty(sFieldControlPath); + return iFieldControlValue !== 0; + } + return true; + }); + } + + /** + * Fetching all available properties of the Element's Model + * @param {sap.ui.core.Control} oElement - Control instance + * @return {Promise} - Returns Promise with results + * @private + */ + function _getODataPropertiesOfModel(oElement) { + var oModel = oElement.getModel(); + var mData = { + property: [], + navigationProperty: [], + navigationEntityNames: [] + }; + + if (oModel) { + var sModelName = oModel.getMetadata().getName(); + if (sModelName === "sap.ui.model.odata.ODataModel" || sModelName === "sap.ui.model.odata.v2.ODataModel") { + var oMetaModel = oModel.getMetaModel(); + return oMetaModel.loaded().then(function(){ + var oBindingContext = oElement.getBindingContext(); + if (oBindingContext){ + var sBindingContextPath = oBindingContext.getPath(); + var oMetaModelContext = oMetaModel.getMetaContext(sBindingContextPath); + var mODataEntity = oMetaModelContext.getObject(); + mData.property = mODataEntity.property || []; + mData.property = _expandComplexProperties(mData.property, oMetaModel, mODataEntity); + mData.property = _filterInvisibleProperties(mData.property, oElement); + if (mODataEntity.navigationProperty){ + mData.navigationProperty = mODataEntity.navigationProperty; + mODataEntity.navigationProperty.forEach(function(oNavProp){ + var sFullyQualifiedEntityName = oMetaModel.getODataAssociationEnd(mODataEntity, oNavProp.name) + && oMetaModel.getODataAssociationEnd(mODataEntity, oNavProp.name).type; + var oEntityType = oMetaModel.getODataEntityType(sFullyQualifiedEntityName); + if (oEntityType && oEntityType.name){ + if (mData.navigationEntityNames.indexOf(oEntityType.name) === -1){ + mData.navigationEntityNames.push(oEntityType.name); + } + } + }); + } + } + return mData; + }); + } + } + + return Promise.resolve(mData); + } + + function _oDataPropertyToAdditionalElementInfo (oODataProperty){ + return { + selected : false, + label : oODataProperty.fieldLabel || oODataProperty.name, + referencedComplexPropertyName: oODataProperty.referencedComplexPropertyName ? oODataProperty.referencedComplexPropertyName : "", + duplicateComplexName: oODataProperty.duplicateComplexName ? oODataProperty.duplicateComplexName : false, + tooltip : oODataProperty.quickInfo || oODataProperty.fieldLabel, + originalLabel: "", + //command relevant data + type : "odata", + entityType : oODataProperty.entityName, + name : oODataProperty.name, + bindingPath : oODataProperty.bindingPath + }; + } + + function _elementToAdditionalElementInfo (mData){ + var oElement = mData.element; + var mAction = mData.action; + return { + selected : false, + label : RtaUtils.getLabelForElement(oElement, mAction.getLabel), + tooltip : RtaUtils.getLabelForElement(oElement, mAction.getLabel), + referencedComplexPropertyName: oElement.referencedComplexPropertyName ? oElement.referencedComplexPropertyName : "", + duplicateComplexName: oElement.duplicateComplexName ? oElement.duplicateComplexName : false, + bindingPaths: oElement.bindingPaths, + originalLabel: oElement.renamedLabel && oElement.fieldLabel !== oElement.labelFromOData ? oElement.labelFromOData : "", + //command relevant data + type : "invisible", + element : oElement + }; + } + + /** + * Retrieving sibling elements from its parent container which are bound to the same Model (important!) + * + * @param {sap.ui.core.Control} oElement - element for which we're looking for siblings + * @param {sap.ui.core.Control} oRelevantContainer - "parent" container of the oElement + * + * @return {Array.} - returns an array with found siblings elements + * + * @private + */ + function _getRelevantElements(oElement, oRelevantContainer){ + if (oRelevantContainer) { + var sEntityName = RtaUtils.getEntityTypeByPath( + oElement.getModel(), + oElement.getBindingContext().getPath() + ); + + return ElementUtil + .findAllSiblingsInContainer(oElement, oRelevantContainer) + // We accept only siblings that are bound on the same model + .filter(function (oSiblingElement) { + return RtaUtils.getEntityTypeByPath( + oSiblingElement.getModel(), + oSiblingElement.getBindingContext().getPath() + ) === sEntityName; + }); + } else { + return [oElement]; + } + } + + function _checkForComplexDuplicates(aODataProperties) { + aODataProperties.forEach(function(oODataProperty, index, aODataProperties) { + if (oODataProperty["duplicateComplexName"] !== true) { + for (var j = index + 1; j < aODataProperties.length - 1; j++) { + if (oODataProperty.fieldLabel === aODataProperties[j].fieldLabel) { + oODataProperty["duplicateComplexName"] = true; + aODataProperties[j]["duplicateComplexName"] = true; + } + } + } + }); + return aODataProperties; + } + + //check for duplicate labels to later add the referenced complexTypeName if available + function _checkForDuplicateLabels(oInvisibleElement, aODataProperties) { + return aODataProperties.some(function(oDataProperty) { + return oDataProperty.fieldLabel === oInvisibleElement.fieldLabel; + }); + } + + // Get all relevant bindings for the element (from all properties) + function _collectBindingPaths(oInvisibleElement, oModel){ + oInvisibleElement.bindingPaths = []; + oInvisibleElement.bindingContextPaths = []; + + var oBindings = BindingsExtractor.getBindings(oInvisibleElement, oModel); + + for (var i = 0, l = oBindings.length; i < l; i++) { + if (oBindings[i].getPath && oBindings[i].getPath()){ + if (oInvisibleElement.bindingPaths.indexOf(oBindings[i].getPath()) === -1){ + oInvisibleElement.bindingPaths.push(oBindings[i].getPath()); + } + } + if (oBindings[i].getContext && oBindings[i].getContext()){ + if (oInvisibleElement.bindingContextPaths.indexOf(oBindings[i].getContext().getPath()) === -1){ + oInvisibleElement.bindingContextPaths.push(oBindings[i].getContext().getPath()); + } + } + } + return oInvisibleElement; + } + + /** + * Checks if array of paths is not empty + * @param {Array.} aBindingPaths - Array of collected binding paths + * @return {Boolean} - true if it has binding(s) + * @private + */ + function _hasBindings(aBindingPaths) { + return Array.isArray(aBindingPaths) && aBindingPaths.length > 0; + } + + /** + * Checks if array of paths contains bindings through navigation + * + * @param {Array.} aBindingPaths - Array of collected binding paths + * @param {Array.} aNavigationProperties - Array of Navigation Properties + * @param {Array.} aNavigationEntityNames - Array of Navigation Entity Names + * @param {Array.} aBindingContextPaths - Array of Binding Context Paths + * + * @return {Boolean} - true if it has at least one navigational binding + */ + function _hasNavigationBindings(aBindingPaths, aNavigationProperties, aNavigationEntityNames, aBindingContextPaths) { + var bNavigationInBindingPath = _hasBindings(aBindingPaths) + && aBindingPaths.some(function (sPath) { + var aParts = sPath.trim().replace(/^\//gi, '').split('/'); + if (aParts.length > 1) { + return aNavigationProperties.indexOf(aParts.shift()) !== -1; + } + }); + + // BindingContextPath : "/SEPMRA_C_PD_Supplier('100000001')" + // NavigationEntityName : "SEPMRA_C_PD_Supplier" + var bNavigationInEntity = aBindingContextPaths.some(function(sContextPath){ + sContextPath = sContextPath.match(/^\/?([A-Za-z0-9_]+)/)[0]; + return (aNavigationEntityNames.indexOf(sContextPath) >= 0); + }); + + return bNavigationInBindingPath || bNavigationInEntity; + } + + /** + * Looks for a ODataProperty for a set of bindings paths + * + * @param {Array.} aBindingPaths - Array of collected binding paths + * @param {Array.} aODataProperties - Array of Fields + * + * @return {Object|undefined} - returns first found Object with Field (Property) description, undefined if not found + * + * @private + */ + function _findODataProperty(aBindingPaths, aODataProperties) { + return aODataProperties.filter(function (oDataProperty) { + return aBindingPaths.indexOf(oDataProperty.bindingPath) !== -1; + }).pop(); + } + + /** + * Enhance Invisible Element with extra data from OData property + * + * @param {sap.ui.core.Control} oInvisibleElement - Invisible Element + * @param {Object} mODataProperty - ODataProperty as a source of data enhancement process + * + * @private + */ + function _enhanceInvisibleElement(oInvisibleElement, mODataProperty) { + oInvisibleElement.labelFromOData = mODataProperty.fieldLabel; + if (oInvisibleElement.fieldLabel !== oInvisibleElement.labelFromOData) { + oInvisibleElement.renamedLabel = true; + } + if (mODataProperty.referencedComplexPropertyName) { + oInvisibleElement.referencedComplexPropertyName = mODataProperty.referencedComplexPropertyName; + } + } + + /** + * Checks if this InvisibleProperty should be included in resulting list and adds information + * from oDataProperty to the InvisibleProperty if available + * + * @param {sap.ui.core.Control} oInvisibleElement - Invisible Element + * @param {Array.} aODataProperties - Array of Fields + * @param {Array.} aNavigationProperties - Array of Navigation Properties + * @param {Array.} aNavigationEntityNames - Array of Navigation Entity names + * + * @return {Boolean} - whether this field is + * + * @private + */ + function _checkAndEnhanceODataProperty(oInvisibleElement, aODataProperties, aNavigationProperties, aNavigationEntityNames) { + var aBindingPaths = oInvisibleElement.bindingPaths, + aBindingContextPaths = oInvisibleElement.bindingContextPaths, + mODataProperty; + + return ( + // include it if the field has no bindings (bindings can be added in runtime) + !_hasBindings(aBindingPaths) + // include it if some properties got binding through valid navigations of the current Model + || _hasNavigationBindings(aBindingPaths, aNavigationProperties, aNavigationEntityNames, aBindingContextPaths) + // looking for a corresponding OData property, if it exists oInvisibleElement is being enhanced + // with extra data from it + || ( + (mODataProperty = _findODataProperty(aBindingPaths, aODataProperties)) + && (_enhanceInvisibleElement(oInvisibleElement, mODataProperty) || true) + ) + ); + } + + // API: depending on the available actions for the aggregation call one or both of these methods + var oAnalyzer = { + /** + * Filters available invisible elements whether they could be shown or not + * + * @param {sap.ui.core.Control} oParent - Container Element where to start search for a invisible + * @param {Object} mActions - Container with actions + * + * @return {Promise} - returns a Promise which resolves with a list of hidden controls are available to display + */ + enhanceInvisibleElements : function(oParent, mActions){ + var oModel = oParent.getModel(); + var mRevealData = mActions.reveal; + var mAddODataProperty = mActions.addODataProperty; + + return Promise.resolve() + .then(function () { + return _getODataPropertiesOfModel(oParent); + }) + .then(function(mData) { + var aODataProperties = mData.property; + var aODataNavigationProperties = mData.navigationProperty.map(function (mNavigation) { + return mNavigation.name; + }); + var aODataNavigationEntityNames = mData.navigationEntityNames; + + aODataProperties = _checkForComplexDuplicates(aODataProperties); + + var aAllElementData = []; + var aInvisibleElements = mRevealData.elements || []; + + aInvisibleElements.forEach(function(oInvisibleElement) { + var sType = oInvisibleElement.getMetadata().getName(); + var mAction = mRevealData.types[sType].action; + //TODO fix with stashed type support + + oInvisibleElement = _collectBindingPaths(oInvisibleElement, oModel); + oInvisibleElement.fieldLabel = RtaUtils.getLabelForElement(oInvisibleElement, mAction.getLabel); + oInvisibleElement.duplicateComplexName = _checkForDuplicateLabels(oInvisibleElement, aODataProperties); + + var bIncludeElement = true; + + //Add information from the oDataProperty to the InvisibleProperty if available; + //if oData is available and the element is not present in it, do not include it + //Example use case: custom field which was hidden and then removed from system + //should not be available for adding after the removal + if (mAddODataProperty && aODataProperties.length > 0){ + bIncludeElement = _checkAndEnhanceODataProperty(oInvisibleElement, aODataProperties, aODataNavigationProperties, aODataNavigationEntityNames); + } + + if (bIncludeElement) { + aAllElementData.push({ + element : oInvisibleElement, + action : mAction + }); + } + }); + return aAllElementData; + }) + .then(function(aAllElementData) { + return aAllElementData.map(_elementToAdditionalElementInfo); + }); + }, + + /** + * Retrieves available OData properties from the metadata + * + * @param {sap.ui.core.Control} oElement - Source element of which Model we're looking for additional properties + * @param {Object} mAction - Action descriptor + * + * @return {Promise} - returns a Promise which resolves with a list of available to display OData properties + */ + getUnboundODataProperties: function (oElement, mAction) { + var oModel = oElement.getModel(); + + return Promise.resolve() + .then(function () { + return _getODataPropertiesOfModel(oElement); + }) + .then(function(mData) { + var aODataProperties = mData.property; + var aRelevantElements = _getRelevantElements(oElement, mAction.relevantContainer); + var aBindings = []; + + aRelevantElements.forEach(function(oElement){ + aBindings = aBindings.concat(BindingsExtractor.getBindings(oElement, oModel)); + }); + + var fnFilter = mAction.action.filter ? mAction.action.filter : function() {return true;}; + + aODataProperties = aODataProperties.filter(function(oDataProperty) { + var bHasBindingPath = false; + if (aBindings){ + bHasBindingPath = aBindings.some(function(oBinding){ + return !!oBinding.getPath && (oBinding.getPath() === oDataProperty.bindingPath); + }); + } + return !bHasBindingPath && fnFilter(mAction.relevantContainer, oDataProperty); + }); + + aODataProperties = _checkForComplexDuplicates(aODataProperties); + + return aODataProperties; + }) + .then(function(aUnboundODataProperties) { + return aUnboundODataProperties.map(_oDataPropertyToAdditionalElementInfo); + }); + } + }; + return oAnalyzer; +}); diff --git a/resources/sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js b/resources/sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js new file mode 100644 index 0000000..082de16 --- /dev/null +++ b/resources/sap/ui/rta/plugin/additionalElements/AdditionalElementsPlugin.js @@ -0,0 +1,625 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + "jquery.sap.global", + "sap/ui/rta/plugin/Plugin", + 'sap/ui/dt/ElementUtil', + 'sap/ui/dt/OverlayRegistry', + 'sap/ui/rta/Utils', + 'sap/ui/fl/Utils', + 'sap/ui/core/StashedControlSupport', + 'sap/ui/dt/ElementDesignTimeMetadata' +], function(jQuery, Plugin, ElementUtil, OverlayRegistry, Utils, FlUtils, StashedControlSupport, ElementDesignTimeMetadata){ + "use strict"; + + function _getParents(bSibling, oOverlay) { + var oParentOverlay, + oRelevantContainer = oOverlay.getRelevantContainer(), + oRelevantContainerOverlay = OverlayRegistry.getOverlay(oRelevantContainer); + if (bSibling) { + oParentOverlay = oOverlay.getParentElementOverlay(); + } else { + oParentOverlay = oOverlay; + } + return { + relevantContainerOverlay : oRelevantContainerOverlay, + parentOverlay : oParentOverlay, + relevantContainer : oRelevantContainer, + parent : oParentOverlay.getElementInstance() + }; + } + + function _defaultGetAggregationName(oParent, oChild) { + return oChild.sParentAggregationName; + } + + function _getInvisibleElements (oElement, sAggregationName){ + var aInvisibleElements = ElementUtil.getAggregation(oElement, sAggregationName).filter(function(oControl){ + var oOverlay = OverlayRegistry.getOverlay(oControl); + if (oElement.getVisible && !oElement.getVisible()) { + return oControl.getVisible && sap.ui.rta.plugin.Plugin.prototype.hasStableId(oOverlay); + } + return oControl.getVisible && !oControl.getVisible() && sap.ui.rta.plugin.Plugin.prototype.hasStableId(oOverlay); + }); + var aStashedControls = StashedControlSupport.getStashedControls(oElement.getId()); + return aInvisibleElements.concat(aStashedControls); + } + + var SINGULAR = true, PLURAL = false; + function _getText (sRtaTextKey, mActions, oParentElement, bSingular, sControlName) { + var aNames = []; + var mControlType; + var sControlType; + if (mActions.addODataProperty){ + var sAggregationName = mActions.aggregation; + var oDesignTimeMetadata = mActions.addODataProperty.designTimeMetadata; + mControlType = oDesignTimeMetadata.getAggregationDescription(sAggregationName, oParentElement); + if (mControlType) { + sControlType = bSingular ? mControlType.singular : mControlType.plural; + aNames.push(sControlType); + } + } + if (mActions.reveal){ + Object.keys(mActions.reveal.types).forEach(function(sType){ + var mType = mActions.reveal.types[sType]; + mControlType = mType.designTimeMetadata.getName(oParentElement); + if (mControlType) { + sControlType = bSingular ? mControlType.singular : mControlType.plural; + aNames.push(sControlType); + } + }); + } + var aNonDuplicateNames = aNames.reduce(function(_aNames, sName){ + if (_aNames.indexOf(sName) === -1) { + _aNames.push(sName); + } + return _aNames; + }, []); + + + var oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + + if (aNonDuplicateNames.length === 1) { + sControlType = aNonDuplicateNames[0]; + } else if (sControlName) { + sControlType = sControlName; + } else { + sControlType = oTextResources.getText("MULTIPLE_CONTROL_NAME"); + } + return oTextResources.getText(sRtaTextKey, sControlType); + } + + function _fakeStashedControlInfos() { + return { + designTimeMetadata : new ElementDesignTimeMetadata( + { + data : { + name : { + singular : function(){ + return sap.uxap.i18nModel.getResourceBundle().getText("SECTION_CONTROL_NAME"); + }, + plural : function(){ + return sap.uxap.i18nModel.getResourceBundle().getText("SECTION_CONTROL_NAME_PLURAL"); + } + }, + actions : { + reveal : { + changeType : "unstashControl", + getAggregationName : _defaultGetAggregationName + } + } + } + } + ), + action : { + changeType : "unstashControl", + getAggregationName : _defaultGetAggregationName + } + }; + } + + /** + * Constructor for a new Additional Elements Plugin. + * + * The AdditionalElementsPlugin should handle the orchestration + * of the AdditionalElementsAnalyzer, the dialog and the command creation + * + * + * @param {string} [sId] id for the new object, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new object + * @class The plugin allows to add additional elements that exist either hidden in the UI or in the OData service + * @extends sap.ui.rta.plugin.Plugin + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.44 + * @alias sap.ui.rta.plugin.additionalElements.AdditionalElementsPlugin + * @experimental Since 1.44. This class is experimental and provides only limited functionality. Also the API might be changed in future. + */ + var AdditionalElementsPlugin = Plugin.extend("sap.ui.rta.plugin.additionalElements.AdditionalElementsPlugin", { + metadata: { + // ---- object ---- + + // ---- control specific ---- + library: "sap.ui.rta", + properties: { + analyzer: "object", //sap.ui.rta.plugin.additionalElements.AdditionalElementsAnalyzer + dialog: "object", //sap.ui.rta.plugin.additionalElements.AddElementsDialog + commandFactory: "object" + }, + associations: {}, + events: {} + }, + + getContextMenuTitle: function(bOverlayIsSibling, oOverlay){ + var mParents = _getParents(bOverlayIsSibling, oOverlay); + var mActions = this._getActions(bOverlayIsSibling, oOverlay); + return _getText("CTX_ADD_ELEMENTS", mActions, mParents.parent, SINGULAR); + }, + + isAvailable: function(bOverlayIsSibling, oOverlay){ + return this._isEditable(oOverlay, bOverlayIsSibling); + }, + + isEnabled: function(bOverlayIsSibling, oOverlay){ + var oParentOverlay; + if (bOverlayIsSibling) { + oParentOverlay = oOverlay.getParentElementOverlay(); + if (oParentOverlay && this.hasStableId(oParentOverlay)) { + return true; + } else { + return false; + } + } + var mActions = this._getActions(bOverlayIsSibling, oOverlay); + if (mActions.reveal && mActions.reveal.elements.length === 0 && !mActions.addODataProperty){ + return false; + } + return true; + }, + + _getRevealActions: function(bSibling, oOverlay) { + var mParents = _getParents(bSibling, oOverlay); + var mReveal = this._getTypes(mReveal, mParents, bSibling, oOverlay); + return mReveal; + }, + + _getTypes: function(mReveal, mParents, bSibling, oOverlay) { + var aParents = [mParents.parentOverlay]; + var oRelevantContainer = oOverlay.getRelevantContainer(); + if (oRelevantContainer !== mParents.parent){ + aParents = ElementUtil.findAllSiblingsInContainer(mParents.parent, oRelevantContainer).map(function(oParent){ + return OverlayRegistry.getOverlay(oParent); + }); + } + var aAggregationNames; + if (bSibling){ + aAggregationNames = [oOverlay.getParentAggregationOverlay().getAggregationName()]; + } else { + aAggregationNames = mParents.parentOverlay.getAggregationOverlays().filter(function(oAggregationOverlay){ + return !oAggregationOverlay.getDesignTimeMetadata().isIgnored(mParents.parent); + }).map(function(oAggregationOverlay){ + return oAggregationOverlay.getAggregationName(); + }); + } + mReveal = aAggregationNames.reduce(this._getRevealActionFromAggregations.bind(this, aParents), {}); + return mReveal; + }, + + _getRevealActionFromAggregations: function(aParents, _mReveal, sAggregationName){ + var aInvisibleElements = aParents.reduce(function(aInvisibleChilden, oParentOverlay){ + return oParentOverlay ? aInvisibleChilden.concat(_getInvisibleElements(oParentOverlay.getElementInstance(), sAggregationName)) : aInvisibleChilden; + }, []); + + var fnCallback = function(mTypes, oElement){ + var sType = oElement.getMetadata().getName(); + if (!mTypes[sType]){ + //TODO Fix if we have the stashed type info + if (sType === "sap.ui.core._StashedControl"){ + mTypes[sType] = _fakeStashedControlInfos(); + } else { + var oOverlay = OverlayRegistry.getOverlay(oElement); + if (oOverlay) { + var oDesignTimeMetadata = oOverlay.getDesignTimeMetadata(); + var mRevealAction = oDesignTimeMetadata && oDesignTimeMetadata.getAction("reveal", oElement); + if (mRevealAction && mRevealAction.changeType) { + if (mRevealAction.changeOnRelevantContainer) { + oElement = oOverlay.getRelevantContainer(); + } + if (this.hasChangeHandler(mRevealAction.changeType, oElement)) { + if (!mRevealAction.getAggregationName){ + mRevealAction.getAggregationName = _defaultGetAggregationName; + } + mTypes[sType] = { + designTimeMetadata : oDesignTimeMetadata, + action : mRevealAction + }; + } + } + } + } + } + return mTypes; + }; + + var mTypes = aInvisibleElements.reduce(fnCallback.bind(this), {}); + + aInvisibleElements = aInvisibleElements.filter(function(oElement) { + return !!mTypes[oElement.getMetadata().getName()]; + }); + + if (aInvisibleElements.length > 0 && Object.keys(mTypes).length > 0){ + _mReveal[sAggregationName] = { + reveal : { + elements : aInvisibleElements, + types : mTypes + } + }; + } + return _mReveal; + }, + + _getAddODataPropertyActions: function(bSibling, oOverlay) { + var mParents = _getParents(bSibling, oOverlay); + + var oDesignTimeMetadata = mParents.parentOverlay.getDesignTimeMetadata(); + var aActions = oDesignTimeMetadata.getAggregationAction("addODataProperty", mParents.parent); + + var oCheckElement = mParents.parent; + + var fnCallback = function(_mAddODataProperty, mAction){ + if (mAction) { + if (mAction.changeOnRelevantContainer){ + oCheckElement = mParents.relevantContainer; + } + if (mAction.changeType && this.hasChangeHandler(mAction.changeType, oCheckElement)) { + _mAddODataProperty[mAction.aggregation] = { + addODataProperty : { + designTimeMetadata : oDesignTimeMetadata, + action : mAction + } + }; + } + return _mAddODataProperty; + } + }; + + if (aActions && aActions.length > 0){ + return aActions.reduce(fnCallback.bind(this), {}); + } + + }, + + _getActions: function(bSibling, oOverlay) { + var mRevealActions = this._getRevealActions(bSibling, oOverlay); + var mAddODataPropertyActions = this._getAddODataPropertyActions(bSibling, oOverlay); + + //join and condense both action data + var mOverall = jQuery.extend(true, mRevealActions, mAddODataPropertyActions); + var aAggregationNames = Object.keys(mOverall); + if (aAggregationNames.length === 0){ + return {}; + } else if (aAggregationNames.length > 1){ + jQuery.sap.log.error("reveal or addODataProperty action defined for more than 1 aggregation, that is not yet possible"); + } + var sAggregationName = aAggregationNames[0]; + mOverall[sAggregationName].aggregation = sAggregationName; + return mOverall[sAggregationName]; + }, + + // _getRevealActions for isEditable check + _hasRevealActionsOnChildren: function(oOverlay){ + var mRevealActions = this._getRevealActions(false, oOverlay); + return !!mRevealActions && Object.keys(mRevealActions).length > 0; + }, + + showAvailableElements: function(bOverlayIsSibling, aOverlay, iIndex, sControlName) { + var oOverlay = aOverlay[0]; + var mParents = _getParents(bOverlayIsSibling, oOverlay); + var oSiblingElement = bOverlayIsSibling && oOverlay.getElementInstance(); + var aPromises = []; + + var mActions = this._getActions(bOverlayIsSibling, oOverlay); + if (mActions.reveal) { + aPromises.push(this.getAnalyzer().enhanceInvisibleElements(mParents.parent, mActions)); + } + if (mActions.addODataProperty){ + mActions.addODataProperty.relevantContainer = oOverlay.getRelevantContainer(); + aPromises.push(this.getAnalyzer().getUnboundODataProperties(mParents.parent, mActions.addODataProperty)); + } + if (mActions.aggregation || sControlName) { + this._setDialogTitle(mActions, mParents.parent, sControlName); + } + + return Promise.resolve().then(function(){ + if (mActions.addODataProperty){ + return Utils.isServiceUpToDate(mParents.parent); + } + }).then(function() { + if (mActions.addODataProperty){ + this.getDialog()._oCustomFieldButton.setVisible(true); + return Utils.isCustomFieldAvailable(mParents.parent); + } else { + this.getDialog()._oCustomFieldButton.setVisible(false); + } + }.bind(this)).then(function(oCurrentFieldExtInfo) { + if (oCurrentFieldExtInfo) { + this._oCurrentFieldExtInfo = oCurrentFieldExtInfo; + this.getDialog().setCustomFieldEnabled(true); + this.getDialog().detachEvent('openCustomField', this._onOpenCustomField, this); + this.getDialog().attachEvent('openCustomField', null, this._onOpenCustomField, this); + } + }.bind(this)).then( + _getAllElements.bind(null, aPromises) + ).then(function(aAllElements){ + this.getDialog().setElements(aAllElements); + + return this.getDialog().open().then(function() { + this._createCommands(bOverlayIsSibling, oOverlay, mParents, oSiblingElement, mActions.designTimeMetadata, mActions, iIndex); + }.bind(this)).catch(function(oError){ + //no error means canceled dialog + if (oError instanceof Error){ + throw oError; + } + }); + }.bind(this)).catch(function(oError){ + if (oError instanceof Error){ + throw oError; + } else { + jQuery.sap.log.info("Service not up to date, skipping add dialog", "sap.ui.rta"); + } + }); + }, + + _setDialogTitle : function(mActions, oParentElement, sControlName){ + var sDialogTitle = _getText("HEADER_ADDITIONAL_ELEMENTS", mActions, oParentElement, PLURAL, sControlName); + this.getDialog().setTitle(sDialogTitle); + if (sControlName) { + this.getDialog()._oList.setNoDataText(this.getDialog()._oTextResources.getText("MSG_NO_FIELDS", sControlName.toLowerCase())); + } + }, + + /** + * Function called when custom field button was pressed + * + * @param {sap.ui.base.Event} + * oEvent event object + */ + _onOpenCustomField : function (oEvent) { + // open field ext ui + var oCrossAppNav = sap.ushell && sap.ushell.Container + && sap.ushell.Container.getService("CrossApplicationNavigation"); + var sHrefForFieldExtensionUi = (oCrossAppNav && oCrossAppNav.hrefForExternal({ + target : { + semanticObject : "CustomField", + action : "develop" + }, + params : { + businessContexts : this._oCurrentFieldExtInfo.BusinessContexts, + serviceName : this._oCurrentFieldExtInfo.ServiceName, + serviceVersion : this._oCurrentFieldExtInfo.ServiceVersion, + entityType : this._oCurrentFieldExtInfo.EntityType + } + })); + Utils.openNewWindow(sHrefForFieldExtensionUi); + }, + + _createCommands : function(bSibling, oOverlay, mParents, oSiblingElement, oDesignTimeMetadata, mActions, iIndex) { + + var aSelectedElements = this.getDialog().getSelectedElements(); + + if (aSelectedElements.length > 0) { + //at least one element selected + var oCompositeCommand = this.getCommandFactory().getCommandFor(mParents.parent, "composite"); + aSelectedElements.forEach(function(oSelectedElement){ + var oCmd; + switch (oSelectedElement.type) { + case "invisible": + oCmd = this._createRevealCommandForInvisible(oSelectedElement, mActions, mParents, oSiblingElement); + oCompositeCommand.addCommand(oCmd); + + oCmd = this._createMoveCommandForInvisible(oSelectedElement, mActions, mParents, oSiblingElement, iIndex); + if (oCmd) { + oCompositeCommand.addCommand(oCmd); + } else { + jQuery.sap.log.warning("No move action configured for " + mParents.parent.getMetadata().getName() + ", aggregation: " + mActions.aggregation , "sap.ui.rta"); + } + break; + case "odata": + var oParentAggregationOverlay = mParents.parentOverlay.getAggregationOverlay(mActions.aggregation); + var oParentAggregationDTMetadata = oParentAggregationOverlay.getDesignTimeMetadata(); + var mODataPropertyActionDTMetadata = oParentAggregationDTMetadata.getAction("addODataProperty", mParents.parent); + var mChangeHandlerSettings = mODataPropertyActionDTMetadata.changeHandlerSettings; + var mRequiredLibraries; + if (mChangeHandlerSettings && mChangeHandlerSettings.content){ + mRequiredLibraries = mChangeHandlerSettings.content.requiredLibraries; + } + if (mRequiredLibraries){ + var oCmdDesc = this._createCommandForAddLibrary(mParents, mActions, mRequiredLibraries, oParentAggregationDTMetadata); + oCompositeCommand.addCommand(oCmdDesc); + } + oCmd = this._createCommandsForOData(oSelectedElement, mActions, mParents, oSiblingElement, iIndex); + oCompositeCommand.addCommand(oCmd); + break; + default: + jQuery.sap.log.error("Can't create command for untreated element.type " + oSelectedElement.type); + } + }, this); + this.fireElementModified({ + "command" : oCompositeCommand + }); + } + }, + + _createCommandsForOData: function(oSelectedElement, mActions, mParents, oSiblingElement, iIndex) { + var oParentAggregationOverlay = mParents.parentOverlay.getAggregationOverlay(mActions.aggregation); + var oParentAggregationDTMetadata = oParentAggregationOverlay.getDesignTimeMetadata(); + var mODataPropertyActionDTMetadata = oParentAggregationDTMetadata.getAction("addODataProperty", mParents.parent); + var mChangeHandlerSettings = mODataPropertyActionDTMetadata.changeHandlerSettings; + var sODataServiceVersion; + if (mChangeHandlerSettings && mChangeHandlerSettings.key){ + sODataServiceVersion = mChangeHandlerSettings.key.oDataServiceVersion; + } + var oRefControlForId = mParents.parent; //e.g. SmartForm + if (mODataPropertyActionDTMetadata.changeOnRelevantContainer) { + oRefControlForId = mParents.relevantContainer; //e.g. SimpleForm + } + var iAddTargetIndex = Utils.getIndex(mParents.parent, oSiblingElement, mActions.aggregation, oParentAggregationDTMetadata.getData().getIndex); + return this.getCommandFactory().getCommandFor(mParents.parent, "addODataProperty", { + newControlId: Utils.createFieldLabelId(oRefControlForId, oSelectedElement.entityType, oSelectedElement.bindingPath), + index : iIndex !== undefined ? iIndex : iAddTargetIndex, + bindingString : oSelectedElement.bindingPath, + parentId : mParents.parent.getId(), + oDataServiceVersion : sODataServiceVersion + }, oParentAggregationDTMetadata); + }, + + _createCommandForAddLibrary: function(mParents, mActions, mRequiredLibraries, oParentAggregationDTMetadata){ + var oComponent = FlUtils.getAppComponentForControl(mParents.relevantContainer); + var mManifest = oComponent.getManifest(); + var sReference = mManifest["sap.app"].id; + return this.getCommandFactory().getCommandFor(mParents.publicParent, "addLibrary", { + reference : sReference, + requiredLibraries : mRequiredLibraries, + appComponent: oComponent + }, oParentAggregationDTMetadata); + }, + + _createRevealCommandForInvisible: function(oSelectedElement, mActions, mParents, oSiblingElement) { + var oRevealedElement = oSelectedElement.element; + var sType = oRevealedElement.getMetadata().getName(); + var mType = mActions.reveal.types[sType]; + var oDesignTimeMetadata = mType.designTimeMetadata; + if (oDesignTimeMetadata.getAction("reveal").changeOnRelevantContainer) { + return this.getCommandFactory().getCommandFor(oRevealedElement, "reveal", { + revealedElementId : oRevealedElement.getId(), + directParent : mParents.parent + }, oDesignTimeMetadata); + } else { + return this.getCommandFactory().getCommandFor(oRevealedElement, "reveal", { }, oDesignTimeMetadata); + } + }, + + _createMoveCommandForInvisible: function(oSelectedElement, mActions, mParents, oSiblingElement, iIndex) { + var oRevealedElement = oSelectedElement.element; + var sType = oRevealedElement.getMetadata().getName(); + var mType = mActions.reveal.types[sType]; + var sParentAggregationName = mType.action.getAggregationName(mParents.parent, oRevealedElement); + var oSourceParent = _getSourceParent(oRevealedElement, mParents); + var oTargetParent = mParents.parent; + var iRevealTargetIndex = Utils.getIndex(mParents.parent, oSiblingElement, sParentAggregationName); + var iRevealedSourceIndex = Utils.getIndex(oSourceParent, oRevealedElement, sParentAggregationName) - 1; + + iRevealTargetIndex = iIndex !== undefined ? iIndex : _adjustTargetIndex(oSourceParent, oTargetParent, iRevealedSourceIndex, iRevealTargetIndex); + + var oCmd; + if (iRevealTargetIndex !== iRevealedSourceIndex || mParents.parent !== oRevealedElement.getParent()){ + var oSourceParentOverlay = OverlayRegistry.getOverlay(oRevealedElement) ? OverlayRegistry.getOverlay(oRevealedElement).getParentAggregationOverlay() : mParents.relevantContainerOverlay; + var SourceParentDesignTimeMetadata = oSourceParentOverlay.getDesignTimeMetadata(); + oCmd = this.getCommandFactory().getCommandFor(mParents.relevantContainer, "move", { + movedElements : [{ + element : oRevealedElement, + sourceIndex : iRevealedSourceIndex, + targetIndex : iRevealTargetIndex + }], + source : { + publicParent : mParents.relevantContainer, + parent : oSourceParent, + aggregation : sParentAggregationName + }, + target : { + publicParent : mParents.relevantContainer, + parent : oTargetParent, + aggregation : sParentAggregationName + } + }, SourceParentDesignTimeMetadata); + } + return oCmd; + }, + + /** + * This function gets called twice, on startup and when we create a context menu. + * On Startup bOverlayIsSibling is not defined as we don't know if it is a sibling or not. In this case we check both cases. + * @param {sap.ui.dt.Overlay} oOverlay - overlay to be checked + * @param {boolean} bOverlayIsSibling - (optional) describes whether given overlay is to be checked as a sibling or as a child on editable. Expected values: [true, false, undefined] + * @returns {boolean} editable boolean value + * @protected + */ + _isEditable: function(oOverlay, bOverlayIsSibling) { + if (bOverlayIsSibling === undefined || bOverlayIsSibling === null) { + return _isEditableCheck.call(this, oOverlay, true) || _isEditableCheck.call(this, oOverlay, false); + } else { + return _isEditableCheck.call(this, oOverlay, bOverlayIsSibling); + } + } + }); + + function _isEditableCheck (oOverlay, bOverlayIsSibling) { + var bEditable = false; + + var oRelevantContainerDesigntimeMetadata = Utils.getRelevantContainerDesigntimeMetadata(oOverlay); + if (!oRelevantContainerDesigntimeMetadata) { + return false; + } + + var mActions = this._getActions(bOverlayIsSibling, oOverlay); + var mParents = _getParents(bOverlayIsSibling, oOverlay); + + if (mActions.addODataProperty) { + var oAddODataPropertyAction = mActions.addODataProperty.action; + bEditable = oAddODataPropertyAction && oAddODataPropertyAction.aggregation === oOverlay.getParentAggregationOverlay().getAggregationName(); + } + + if (!bEditable && mActions.reveal) { + bEditable = true; + } + + if (!bEditable && !bOverlayIsSibling) { + bEditable = this._hasRevealActionsOnChildren(oOverlay) || + this.checkAggregationsOnSelf(mParents.parentOverlay, "addODataProperty"); + } + + if (bEditable) { + return this.hasStableId(oOverlay); + } else { + return false; + } + } + + function _getAllElements (aPromises) { + return Promise.all(aPromises).then(function(aAnalyzerValues) { + var aAllElements = aAnalyzerValues[0] || []; + if (aAllElements && aAnalyzerValues[1]) { + aAllElements = aAllElements.concat(aAnalyzerValues[1]); + } + return aAllElements; + }); + } + + function _getSourceParent(oRevealedElement, mParents){ + var oParent = oRevealedElement.getParent(); + if (!oParent && oRevealedElement.sParentId){ + //stashed control has no parent, but remembers its parent id + oParent = sap.ui.getCore().byId(oRevealedElement.sParentId); + } else if (!oParent) { + // fallback to target parent + oParent = mParents.parent; + } + return oParent; + } + + //in case an element is moved inside the same container above its current position, its own position has to be removed + function _adjustTargetIndex (oSourceContainer, oTargetContainer, iSourceIndex, iTargetIndex) { + if (oSourceContainer === oTargetContainer && iSourceIndex < iTargetIndex && iSourceIndex > -1) { + return iTargetIndex - 1; + } + return iTargetIndex; + } + + return AdditionalElementsPlugin; +}); diff --git a/resources/sap/ui/rta/test/controlEnablingCheck.js b/resources/sap/ui/rta/test/controlEnablingCheck.js new file mode 100644 index 0000000..ed30114 --- /dev/null +++ b/resources/sap/ui/rta/test/controlEnablingCheck.js @@ -0,0 +1,346 @@ +/* global QUnit */ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(["sap/ui/core/UIComponent", + "sap/ui/core/ComponentContainer", + "sap/ui/core/mvc/XMLView", + "sap/ui/rta/command/CommandFactory", + "sap/ui/dt/DesignTime", + "sap/ui/dt/ElementUtil", + "sap/ui/dt/ElementDesignTimeMetadata", + "sap/ui/fl/ChangePersistenceFactory", + "sap/ui/fl/ChangePersistence", + "sap/ui/model/Model", + 'sap/ui/fl/FlexControllerFactory', + 'sap/ui/rta/ControlTreeModifier', + "sap/ui/fl/library" //we have to ensure to load fl, so that change handler gets registered +], +function( + UIComponent, + ComponentContainer, + XMLView, + CommandFactory, + DesignTime, + ElementUtil, + ElementDesignTimeMetadata, + ChangePersistenceFactory, + ChangePersistence, + Model, + FlexControllerFactory, + ControlTreeModifier +){ + + "use strict"; + + /** + * Utility function which builds and registers QUnit tests to check if a SAPUI5 control is ready for UI adaptation at runtime (RTA) + * + * See RTAControlEnabling.qunit.html<\code> and RTAControlEnabling.qunit.js<\code> as an example on how to use. + * + * During development you may insert ".skip" to ommit processing of a specific control enabling check: + * controlEnablingCheck.skip(...);<\code> instead of controlEnablingCheck(...);<\code>. + * + * Use controlEnablingCheck.only( sMsgSubstring );<\code> to specify that only some tests are to be executed: + * E.g. controlEnablingCheck.only("Remove");<\code> + * + * @author SAP SE + * @version 1.50.0 + * + * @static + * @since 1.42 + * @alias sap.ui.rta.test.controlEnablingCheck + * + * @param {string} sMsg - name of QUnit test - e.g. Checking the move action for a VerticalLayout control + * @param {object} mOptions - configuration for this controlEnablingCheck + * @param {string} mOptions.layer - (optional) flex layer used during testing, use it in case actions are enabled for other layers then CUSTOMER + * @param {string} mOptions.xmlView - XML view to adapt + * @param {sap.ui.model.Model} mOptions.model - any model to be assigned on the view + * @param {string} [mOptions.placeAt="content"] - Id of tag to place view at runtime + * @param {object} mOptions.action - action to operate on mOptions.xmlView + * @param {string} mOptions.action.name - name of the action - e.g. 'remove', 'move', 'rename' + * @param {string} mOptions.action.controlId - id of the control the action is executed with - may be the parent of the control beeing 'touched' + * @param {function} mOptions.action.parameter - (optional) function(oView) returning the parameter object of the action to be executed + * @param {function} mOptions.afterAction - function(oUiComponent, oView, assert) which checks the outcome of the action + * @param {function} mOptions.afterUndo - function(oUiComponent, oView, assert) which checks the execution of the action and an immediate undo + * @param {function} mOptions.afterRedo - function(oUiComponent, oView, assert) which checks the outcome of action with immediate undo and redo + */ + var controlEnablingCheck = function(sMsg, mOptions){ + + // Return if controlEnablingCheck.only() has been used to exclude this call + if (controlEnablingCheck._only && (sMsg.indexOf(controlEnablingCheck._only) < 0)) { return; } + + // Do QUnit tests + QUnit.module(sMsg, {}); + + QUnit.test("When using the 'controlEnablingCheck' function to test if your control is ready for UI adaptation at runtime", function(assert){ + assert.ok(mOptions.afterAction, "then you implement a function to check if your action has been successful: See the afterAction parameter."); + assert.ok(mOptions.afterUndo, "then you implement a function to check if the undo has been successful: See the afterUndo parameter."); + assert.ok(mOptions.afterRedo, "then you implement a function to check if the redo has been successful: See the afterRedo parameter."); + assert.ok(mOptions.xmlView, "then you provide an XML view to test on: See the.xmlView parameter."); + + var oXmlView = new DOMParser().parseFromString(mOptions.xmlView, "application/xml").childNodes[0]; + assert.ok(oXmlView.tagName.match( "View$"),"then you use the sap.ui.core.mvc View tag as the first tag in your view"); + + assert.ok(mOptions.action, "then you provide an action: See the action parameter."); + assert.ok(mOptions.action.name, "then you provide an action name: See the action.name parameter."); + assert.ok(mOptions.action.controlId, "then you provide the id of the control to operate the action on: See the action.controlId."); + }); + + QUnit.module(sMsg, { + + beforeEach : function(assert){ + // Create UI component containing the view to adapt + + var Comp = UIComponent.extend("sap.ui.rta.control.enabling.comp", { + metadata: { + manifest : { + "sap.app": { + "id": "sap.ui.rta.control.enabling.comp", + "type": "application" + } + } + }, + createContent : function() { + // store it in outer scope + var oView = sap.ui.xmlview({ + id : this.createId("view"), + viewContent : mOptions.xmlView + }); + return oView; + } + + }); + this.oUiComponent = new Comp("comp"); + + // Place component in container and display + this.oUiComponentContainer = new ComponentContainer({ + component : this.oUiComponent + }); + this.oUiComponentContainer.placeAt(mOptions.placeAt || "content"); + + this.oView = this.oUiComponent.getRootControl(); + + if (mOptions.model instanceof Model) { + this.oView.setModel(mOptions.model); + } + + sap.ui.getCore().applyChanges(); + + // Fetch command to operate - as well as its parameters, its control with design time meta data + this.oControl = this.oView.byId(mOptions.action.controlId); + return ElementUtil.loadDesignTimeMetadata(this.oControl) + + .then(function(oDesignTimeMetadata) { + var oElementDesignTimeMetadata = new ElementDesignTimeMetadata({ data : oDesignTimeMetadata}); + var mParameter; + + if (mOptions.action.parameter) { + if (typeof mOptions.action.parameter === "function") { + mParameter = mOptions.action.parameter(this.oView); + } else { + mParameter = mOptions.action.parameter; + } + } else { + mParameter = {}; + } + + sap.ui.getCore().applyChanges(); + + this.oDesignTime = new DesignTime({ + rootElements : [this.oView] + }); + + var done = assert.async(); + this.oDesignTime.attachEventOnce("synced", function() { + this.oControlOverlay = sap.ui.dt.OverlayRegistry.getOverlay(this.oControl); + var oCommandFactory = new CommandFactory({ + flexSettings : { + layer : mOptions.layer || "CUSTOMER" + } + }); + if (mOptions.action.name === "move") { + var oElementOverlay = sap.ui.dt.OverlayRegistry.getOverlay(mParameter.movedElements[0].element); + var oRelevantContainer = oElementOverlay.getRelevantContainer(); + + this.oControl = oRelevantContainer; + oElementDesignTimeMetadata = oElementOverlay.getParentAggregationOverlay().getDesignTimeMetadata(); + } else if (mOptions.action.name === "addODataProperty") { + var aAddODataPropertyActions = oElementDesignTimeMetadata.getAggregationAction("addODataProperty", this.oControl); + assert.equal(aAddODataPropertyActions.length, 1, "there should be only one aggregation with the possibility to do addODataProperty action"); + var oAggregationOverlay = this.oControlOverlay.getAggregationOverlay(aAddODataPropertyActions[0].aggregation); + oElementDesignTimeMetadata = oAggregationOverlay.getDesignTimeMetadata(); + } + this.oCommand = oCommandFactory.getCommandFor(this.oControl, mOptions.action.name, mParameter, oElementDesignTimeMetadata); + + assert.ok(this.oCommand, "then the registration for action to change type, the registration for change and control type to change handler is available and " + mOptions.action.name + " is a valid action"); + done(); + }.bind(this)); + + }.bind(this)); + }, + + afterEach : function(){ + this.oUiComponentContainer.destroy(); + this.oDesignTime.destroy(); + } + }); + + /* + // Apply change on XML view + // Commented as not yet supported by sap.ui.fl library and XML view processing of SAPUI5 core + + QUnit.test("When applying the change directly on the XMLView", function(assert){ + + // Register prepocessor of sap.ui.fl library for xml view processing to support ui changes + XMLView.registerPreprocessor('viewxml', "sap.ui.fl.Preprocessor", true); // false); + + // Activate UI change + var oChange = this.oCommand.getPreparedActionData(); + var aChanges = [ oChange ]; + var sUiComponentName = "sap.ui.rta.control.enabling.componentWithChangedXmlView"; + var oChangePersistence = new ChangePersistence(sUiComponentName); + this.stub(ChangePersistenceFactory, "getChangePersistenceForComponent").returns(oChangePersistence); + var oChangePersistenceMock = this.stub(oChangePersistence, "getChangesForComponent").returns(Promise.resolve(aChanges)); // returns(aChanges); //returns(Promise.resolve(aChanges)); + + // Instantiate xml view with UI change + var that = this; + var UiComponentWithChangedXmlView = UIComponent.extend(sUiComponentName,{ + metadata: { + manifest : { + "sap.app": { + "id": sUiComponentName, + "type": "application" + } + } + }, + createContent : function() { + // store it in outer scope + that.oViewFromChangedXml = sap.ui.xmlview({ + id : this.createId("viewFromChangedXml"), + viewContent : mOptions.xmlView, + async : true + }); + return that.oViewFromChangedXml; + } + + }); + this.oUiComponentWithChangedXmlView = new UiComponentWithChangedXmlView("componentWithChangedXmlView"); + + // Put view in UI component within UI component container and display + this.oUiComponentContainer = new ComponentContainer({ + component : this.oUiComponentWithChangedXmlView + }); + this.oUiComponentContainer.placeAt(mOptions.placeAt || "content"); + + sap.ui.getCore().applyChanges(); + + // Verify that UI change has been applied on XML view + mOptions.afterAction(this.oUiComponent, that.oViewFromChangedXml, assert); + }); + */ + + /* + Alternate approach to apply a change on an XML view: Here the check is to be done with the XMLTreeModifier + sap.ui.define( [ ... "sap/ui/core/XMLTemplateProcessor", ..., "sap/ui/fl/changeHandler/XmlTreeModifier", "sap/ui/fl/changeHandler/JsControlTreeModifier" ], + function(... XMLTemplateProcessor, ..., XmlTreeModifier, JsControlTreeModifier) {... + QUnit.test("When applying the change directly on the XMLView", function(assert){ + + // Create parsed xml view with extended ids + var oXmlView = new DOMParser().parseFromString(mOptions.xmlView, "application/xml").childNodes[0]; + var oXmlViewWithExtendedIds = XMLTemplateProcessor.enrichTemplateIds( oXmlView, this.oView); + + // Apply change on xml view + var oChange = this.oCommand.getPreparedActionData(); + var oChangeHandler = this.oCommand.getChangeHandler(); + var oXmlControl = XmlTreeModifier.bySelector(oChange.getSelector(), this.oUiComponent, oXmlViewWithExtendedIds); + oChangeHandler.applyChange(oChange, oXmlControl, { modifier : XmlTreeModifier, appComponent : this.oUiComponent, view : oXmlViewWithExtendedIds }); + sap.ui.getCore().applyChanges(); + + // Verify result + mOptions.afterAction(this.oUiComponent, oXmlViewWithExtendedIds, XmlTreeModifier, assert); + }); + ... ); + */ + + QUnit.test("When executing the underlying command on the control at runtime", function(assert){ + var done = assert.async(); + + // Execute the command + this.oCommand.execute() + + .then(function() { + sap.ui.getCore().applyChanges(); + + // Verfify result + mOptions.afterAction(this.oUiComponent, this.oView, assert); + done(); + }.bind(this)); + + }); + + QUnit.test("When executing and undoing the command", function(assert){ + var done = assert.async(); + this.oCommand.execute() + + .then(this.oCommand.undo.bind(this.oCommand)) + + // Since we don't use the CommandStack here, we have to take care of the applied Changes, + // which are stored in the custom data of the control, ourselves. + // (The original Change doesn't get deleted there, and therefore can't be applied again without this) + .then(function() { + var oChange = this.oCommand.getPreparedChange(); + if (this.oCommand.getAppComponent) { + var oAppComponent = this.oCommand.getAppComponent(); + var oControl = ControlTreeModifier.bySelector(oChange.getSelector(), oAppComponent); + var oFlexController = FlexControllerFactory.createForControl(oAppComponent); + oFlexController.removeFromAppliedChangesOnControl(oChange, oAppComponent, oControl); + } + }.bind(this)) + + .then(function() { + sap.ui.getCore().applyChanges(); + mOptions.afterUndo(this.oUiComponent, this.oView, assert); + done(); + }.bind(this)); + }); + + QUnit.test("When executing, undoing and redoing the command", function(assert){ + var done = assert.async(); + this.oCommand.execute() + + .then(this.oCommand.undo.bind(this.oCommand)) + + // Since we don't use the CommandStack here, we have to take care of the applied Changes, + // which are stored in the custom data of the control, ourselves. + // (The original Change doesn't get deleted there, and therefore can't be applied again without this) + .then(function() { + var oChange = this.oCommand.getPreparedChange(); + if (this.oCommand.getAppComponent) { + var oAppComponent = this.oCommand.getAppComponent(); + var oControl = ControlTreeModifier.bySelector(oChange.getSelector(), oAppComponent); + var oFlexController = FlexControllerFactory.createForControl(oAppComponent); + return oFlexController.removeFromAppliedChangesOnControl(oChange, oAppComponent, oControl); + } + }.bind(this)) + + .then(this.oCommand.execute.bind(this.oCommand)) + + .then(function() { + sap.ui.getCore().applyChanges(); + mOptions.afterRedo(this.oUiComponent, this.oView, assert); + done(); + }.bind(this)); + }); + + }; + + controlEnablingCheck.skip = function() {}; + controlEnablingCheck.only = function(sMsgSubstring) { controlEnablingCheck._only = sMsgSubstring; }; + + return controlEnablingCheck; + +}); diff --git a/resources/sap/ui/rta/themes/base/FieldRepository.less b/resources/sap/ui/rta/themes/base/FieldRepository.less new file mode 100644 index 0000000..0464795 --- /dev/null +++ b/resources/sap/ui/rta/themes/base/FieldRepository.less @@ -0,0 +1,72 @@ +/****************************************************************** + Style of the RTA FieldRepository +*******************************************************************/ + +.sap-desktop.sapUiBLyBackOverride { + overflow: auto!important; +} + +.sapUIRtaFieldRepositoryDialog .sapMDialogTitle { + font-size: 16px; + font-weight: bold; +} + +.sapUIRtaFieldRepositoryDialog .sapUiTable > div.sapUiTableCnt { + border-left: 0px; + border-right: 0px; +} +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter { + height: 60px; +} + +/* Sort Button */ +.sapUIRtaFieldRepositoryDialog .sapMBtn>.sapMBtnInner{ + border: none; + background: transparent; +} + +/* Footer Button */ +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter .sapMBtnInner { + background-color: transparent; + background: none; + border: none; + text-shadow: none; +} + +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, .sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} + +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, .sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} + +.sapUIRtaFieldRepositoryDialog .sapMSFF { + border: none; +} + +.sapUIRtaFieldRepositoryDialog .sapUiLbl { + margin-left: 12px; +} + +.sapUIRtaFieldRepositoryDialog .sapMIBar > .sapMBarChild:last-child { + margin-right: 12px; +} + +.sapUIRtaFieldRepositoryDialog .sapUiLblIco { + font-size: 1.2rem; +} + +.sapUIRtaFieldRepositoryDialog .sapUIRtaValueCell { + height: 18px; + width: 300px; +} + +.sapUIRtaFieldRepositoryDialog .sapUIRtaCCDialogScrollContainer{ + height: 400px !important; + width: 100% !important; +} + +.sapUIRtaFieldRepositoryDialog .sapMList .sapMListUl .sapMCLI { + padding-left: 10px; +} \ No newline at end of file diff --git a/resources/sap/ui/rta/themes/base/InPageStyles.css b/resources/sap/ui/rta/themes/base/InPageStyles.css new file mode 100644 index 0000000..a12a82d --- /dev/null +++ b/resources/sap/ui/rta/themes/base/InPageStyles.css @@ -0,0 +1,32 @@ +/** + Content of this file inserts automatically into the page when RTA starts + */ + +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarVertical:after { + right: %scrollWidth%; +} + +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarHorizontal:after { + bottom: %scrollWidth%; +} + +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarVertical:focus:before { + right: calc(%scrollWidth% + 2px); +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarHorizontal:focus:before { + bottom: calc(%scrollWidth% + 2px); +} + +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarVertical:focus:before { + right: calc(%scrollWidth% + 2px); +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarHorizontal:focus:before { + bottom: calc(%scrollWidth% + 2px); +} + +.sapUiRta .sapUiDtOverlayFocusable.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarHorizontal:focus:before { + bottom: %scrollWidth%; +} +.sapUiRta .sapUiDtOverlayFocusable.sapUiDtOverlayWithScrollBar.sapUiDtOverlayWithScrollBarVertical:focus:before { + right: %scrollWidth%; +} diff --git a/resources/sap/ui/rta/themes/base/Overlay.less b/resources/sap/ui/rta/themes/base/Overlay.less new file mode 100644 index 0000000..fd858fb --- /dev/null +++ b/resources/sap/ui/rta/themes/base/Overlay.less @@ -0,0 +1,225 @@ +/****************************************************************** + Style of the RTA Overlays +*******************************************************************/ +@_sap_ui_rta_Overlay_ActiveBG : fade(@sapUiSelected, 10%); +@_sap_ui_rta_Overlay_BaseBG : white; +@_sap_ui_rta_Overlay_Border: @sapUiSelected; +@_sap_ui_rta_Overlay_HoverBG : fade(darken(@_sap_ui_rta_Overlay_BaseBG, 100%), 10.8%); +@_sap_ui_rta_Overlay_ActiveHoverBG : fade(@sapUiSelected, 20%); + +.sapUiRtaRoot .sapUiRtaMarginBottom { + margin-bottom: 40px; +} + +.sapUiRtaRoot .sapUiRtaPaddingTop { + padding-top: 40px; +} + +.sapUiRta { + &.sapUiRtaPersonalize { + .sapUiRtaPersDelete { + .sapUiRtaPersDeleteClick { + text-align: center; + vertical-align: middle; + height: 1.5rem; + width: 1.5rem; + position: absolute; + top: 10px; + right: 10px; + z-index: 1; + + .sapUiRtaPersDeleteIconOuter { + display: inline-block; + box-sizing: border-box; + text-align: center; + border-radius: 50%; + border: 0.125rem solid #ffffff; + cursor: pointer; + z-index: 1; + opacity: 1; + width: 1.5rem; + height: 1.5rem; + background-color: @_sap_ui_rta_Overlay_Border; + box-shadow: 0px 0px 4px rgba(0,0,0,0.2); + + .sapUiIcon { + color: @sapUiWhite; + font-size: 0.69rem; + line-height: 1.25rem; + } + } + } + + &.sapUiRtaOverlayPlaceholder { + .sapUiRtaPersDeleteClick { + display: none; + } + } + } + .sapUiRtaPersAdd, .sapUiRtaPersAddTop { + .sapUiRtaPersAddIconOuter { + position: absolute; + text-align: center; + width: 100%; + height: 40px; + cursor: default; + + .sapMBtn { + color: @_sap_ui_rta_Overlay_Border; + height: 100%; + + .sapMBtnInner { + border: none; + } + } + } + + } + .sapUiRtaPersAdd { + > .sapUiRtaPersAddIconOuter { + bottom: -40px; + top: auto; + } + } + } + + .sapUiRtaOverlayHover { + -webkit-transition: background 0.1s cubic-bezier(1,.01,1,0); + -moz-transition: background 0.1s cubic-bezier(1,.01,1,0); + -o-transition: background 0.1s cubic-bezier(1,.01,1,0); + transition: background 0.1s cubic-bezier(1,.01,1,0); + + &:after { + content: " "; + border: 1px dotted @_sap_ui_rta_Overlay_Border; + } + } + + .sapUiDtOverlayFocusable { + &:focus { + &:before { + right: 0; + top: 0; + left: 0; + bottom: 0; + // IE doesn't support width/height: 'initial'. + // With the property 'auto' the same effect is achieved. + // When initial is supported, auto is ignored. + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; /* ObjectPage Header fix */ + } + } + } + + .sapUiDtOverlaySelected { + &.sapUiDtOverlayWithScrollBar:after { + bottom: 0; + right: 0; + top: 0; + left: 0; + // IE doesn't support width/height: 'initial'. + // With the property 'auto' the same effect is achieved. + // When initial is supported, auto is ignored. + width: auto; + width: initial; + height: auto; + height: initial; + } + + &:after { + border: 2px solid @_sap_ui_rta_Overlay_Border; + } + + &.sapUiDtOverlayFocusable { + &:focus { + &:before { + top: 2px; + left: 2px; + bottom: 2px; + right: 2px; + // IE doesn't support width/height: 'initial'. + // With the property 'auto' the same effect is achieved. + // When initial is supported, auto is ignored. + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; /* ObjectPage Header fix */ + } + } + } + } + + .sapUiDtOverlayTargetZone { + &:after { + border: 1px dashed @_sap_ui_rta_Overlay_Border; + } + + >.sapUiDtOverlayChildren { + >.sapUiRtaOverlayPlaceholder { + border: none; + } + } + &.sapUiDtOverlayDropZone >.sapUiDtOverlayChildren >.sapUiRtaOverlayPlaceholder { + background: transparent; + } + } + + + .sapUiDtOverlayDropZone { + >.sapUiDtOverlayChildren { + >.sapUiDtOverlayMovable { + // no "border" + &:after { + content: none; + } + background: @_sap_ui_rta_Overlay_ActiveBG; + } + + >.sapUiRtaOverlayPlaceholder { + background: @_sap_ui_rta_Overlay_BaseBG!important; + // no "border" + &:after { + content: none; + } + // no "focus" border + &:focus { + &:before { + content: none; + } + } + + // all descendants + * { + background: @_sap_ui_rta_Overlay_BaseBG; + // no "border" + &:after { + content: none; + } + // no "focus" border + &:focus { + &:before { + content: none; + } + } + } + } + } + } + + .sapUiRtaEditableField { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .sapUiDtDragGhost { + background: @_sap_ui_rta_Overlay_ActiveBG; +// box-shadow: 0.375rem 0.375rem 0.375rem 0.375rem @sapUiContentShadowColor; + } +} diff --git a/resources/sap/ui/rta/themes/base/SettingsDialog.less b/resources/sap/ui/rta/themes/base/SettingsDialog.less new file mode 100644 index 0000000..358fbe2 --- /dev/null +++ b/resources/sap/ui/rta/themes/base/SettingsDialog.less @@ -0,0 +1,3 @@ +.sapUiRtaDialogEntryWithMargin { + margin: 6px 0; +} \ No newline at end of file diff --git a/resources/sap/ui/rta/themes/base/Toolbar.base.less b/resources/sap/ui/rta/themes/base/Toolbar.base.less new file mode 100644 index 0000000..4c0a6bc --- /dev/null +++ b/resources/sap/ui/rta/themes/base/Toolbar.base.less @@ -0,0 +1,19 @@ +/** + Toolbar + */ +.sapUiRtaToolbar.sapMTB { + position: absolute; + top: 0; + left: 0; + right: 0; + padding: 0 20px; + + height: 46px; /* Overrider `.sapUiSizeCompact .sapMTB` */ + border-bottom: none; /* Override `.sapMTB` */ + } + .sapUiRtaToolbar.sapMTB > :last-child { + margin-right: 0; /* Override `.sapMIBar.sapMTB .sapMBarChild` */ + } + .sapUiRtaToolbar.sapMTB > :first-child { + margin-left: 0; /* Override `.sapMIBar .sapMBarChild:first-child` */ + } diff --git a/resources/sap/ui/rta/themes/base/Toolbar.fiori.less b/resources/sap/ui/rta/themes/base/Toolbar.fiori.less new file mode 100644 index 0000000..b17cf69 --- /dev/null +++ b/resources/sap/ui/rta/themes/base/Toolbar.fiori.less @@ -0,0 +1,34 @@ +/** + This class is being assigned to the original Fiori Header Toolbar when RTA Toolbar shows + */ +.sapUiRtaFioriHeaderInvisible { + visibility: hidden; + } + + + +/* type: fiori */ +.sapUiRtaToolbar.type_fiori { + transition: opacity 0.25s ease-out; + opacity: 0; + } + .sapUiRtaToolbar.type_fiori.is_visible { + opacity: 1; + } + +/* color: default */ +.sapUiRtaToolbar.type_fiori.color_default { + } + +/* color: contrast */ +.sapUiRtaToolbar.type_fiori.color_contrast { + } + .sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnContent, + .sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnIcon { + text-shadow: none; /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; + } + .sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled, + .sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled { + opacity: 0.3; + } diff --git a/resources/sap/ui/rta/themes/base/Toolbar.personalization.less b/resources/sap/ui/rta/themes/base/Toolbar.personalization.less new file mode 100644 index 0000000..d3ef592 --- /dev/null +++ b/resources/sap/ui/rta/themes/base/Toolbar.personalization.less @@ -0,0 +1,25 @@ +.sapUiRtaToolbar.type_personalization { + top: auto; + top: initial; + bottom: 0; + background-color: #2f3c48; + border-radius: 0.25rem; + padding: 0 1rem; + margin: 0.5rem; + opacity: 0.9; + + &.sapUiRtaHideToolbar { + visibility: hidden; + } + + .sapMBtn { + .sapMBtnTransparent.sapMBtnInner { + border: none; + + .sapMBtnContent { + color: #ffffff; + text-shadow: 0 0 0.125rem #000000; + } + } + } +} \ No newline at end of file diff --git a/resources/sap/ui/rta/themes/base/Toolbar.standalone.less b/resources/sap/ui/rta/themes/base/Toolbar.standalone.less new file mode 100644 index 0000000..58a22cd --- /dev/null +++ b/resources/sap/ui/rta/themes/base/Toolbar.standalone.less @@ -0,0 +1,21 @@ +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default { + background-color: #000; + top: -50px; + transition: top 0.25s ease-out; + } + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + text-shadow: none; /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; + } + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: #666; + } + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn:focus .sapMFocusable { + outline-color: #fff; /* Override of `html.sap-desktop .sapMBtn:focus > .sapMFocusable` */ + } + .sapUiRtaToolbar.type_standalone.color_default.is_visible { + top: 0; + } diff --git a/resources/sap/ui/rta/themes/base/library-RTL.css b/resources/sap/ui/rta/themes/base/library-RTL.css new file mode 100644 index 0000000..a4f4863 --- /dev/null +++ b/resources/sap/ui/rta/themes/base/library-RTL.css @@ -0,0 +1,317 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +/* =========================== */ +/* Global CSS for 'base' theme */ +/* =========================== */ +/** + Toolbar + */ +.sapUiRtaToolbar.sapMTB { + position: absolute; + top: 0; + right: 0; + left: 0; + padding: 0 20px; + height: 46px; + /* Overrider `.sapUiSizeCompact .sapMTB` */ + border-bottom: none; + /* Override `.sapMTB` */ +} +.sapUiRtaToolbar.sapMTB > :last-child { + margin-left: 0; + /* Override `.sapMIBar.sapMTB .sapMBarChild` */ +} +.sapUiRtaToolbar.sapMTB > :first-child { + margin-right: 0; + /* Override `.sapMIBar .sapMBarChild:first-child` */ +} +/** + This class is being assigned to the original Fiori Header Toolbar when RTA Toolbar shows + */ +.sapUiRtaFioriHeaderInvisible { + visibility: hidden; +} +/* type: fiori */ +.sapUiRtaToolbar.type_fiori { + transition: opacity 0.25s ease-out; + opacity: 0; +} +.sapUiRtaToolbar.type_fiori.is_visible { + opacity: 1; +} +/* color: default */ +/* color: contrast */ +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled { + opacity: 0.3; +} +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default { + background-color: #000; + top: -50px; + transition: top 0.25s ease-out; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: #666; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn:focus .sapMFocusable { + outline-color: #fff; + /* Override of `html.sap-desktop .sapMBtn:focus > .sapMFocusable` */ +} +.sapUiRtaToolbar.type_standalone.color_default.is_visible { + top: 0; +} +.sapUiRtaToolbar.type_personalization { + top: auto; + top: initial; + bottom: 0; + background-color: #2f3c48; + border-radius: 0.25rem; + padding: 0 1rem; + margin: 0.5rem; + opacity: 0.9; +} +.sapUiRtaToolbar.type_personalization.sapUiRtaHideToolbar { + visibility: hidden; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner { + border: none; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner .sapMBtnContent { + color: #ffffff; + text-shadow: 0 0 0.125rem #000000; +} +/****************************************************************** + Style of the RTA FieldRepository +*******************************************************************/ +.sap-desktop.sapUiBLyBackOverride { + overflow: auto!important; +} +.sapUIRtaFieldRepositoryDialog .sapMDialogTitle { + font-size: 16px; + font-weight: bold; +} +.sapUIRtaFieldRepositoryDialog .sapUiTable > div.sapUiTableCnt { + border-right: 0px; + border-left: 0px; +} +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter { + height: 60px; +} +/* Sort Button */ +.sapUIRtaFieldRepositoryDialog .sapMBtn > .sapMBtnInner { + border: none; + background: transparent; +} +/* Footer Button */ +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter .sapMBtnInner { + background-color: transparent; + background: none; + border: none; + text-shadow: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapMSFF { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiLbl { + margin-right: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapMIBar > .sapMBarChild:last-child { + margin-left: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapUiLblIco { + font-size: 1.2rem; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaValueCell { + height: 18px; + width: 300px; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaCCDialogScrollContainer { + height: 400px !important; + width: 100% !important; +} +.sapUIRtaFieldRepositoryDialog .sapMList .sapMListUl .sapMCLI { + padding-right: 10px; +} +/****************************************************************** + Style of the RTA Overlays +*******************************************************************/ +.sapUiRtaRoot .sapUiRtaMarginBottom { + margin-bottom: 40px; +} +.sapUiRtaRoot .sapUiRtaPaddingTop { + padding-top: 40px; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick { + text-align: center; + vertical-align: middle; + height: 1.5rem; + width: 1.5rem; + position: absolute; + top: 10px; + left: 10px; + z-index: 1; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter { + display: inline-block; + box-sizing: border-box; + text-align: center; + border-radius: 50%; + border: 0.125rem solid #ffffff; + cursor: pointer; + z-index: 1; + opacity: 1; + width: 1.5rem; + height: 1.5rem; + background-color: #2e9cea; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter .sapUiIcon { + color: #ffffff; + font-size: 0.69rem; + line-height: 1.25rem; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete.sapUiRtaOverlayPlaceholder .sapUiRtaPersDeleteClick { + display: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter { + position: absolute; + text-align: center; + width: 100%; + height: 40px; + cursor: default; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn { + color: #2e9cea; + height: 100%; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner { + border: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd > .sapUiRtaPersAddIconOuter { + bottom: -40px; + top: auto; +} +.sapUiRta .sapUiRtaOverlayHover { + -webkit-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -moz-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -o-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); +} +.sapUiRta .sapUiRtaOverlayHover:after { + content: " "; + border: 1px dotted #2e9cea; +} +.sapUiRta .sapUiDtOverlayFocusable:focus:before { + left: 0; + top: 0; + right: 0; + bottom: 0; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayWithScrollBar:after { + bottom: 0; + left: 0; + top: 0; + right: 0; + width: auto; + width: initial; + height: auto; + height: initial; +} +.sapUiRta .sapUiDtOverlaySelected:after { + border: 2px solid #2e9cea; +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable:focus:before { + top: 2px; + right: 2px; + bottom: 2px; + left: 2px; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlayTargetZone:after { + border: 1px dashed #2e9cea; +} +.sapUiRta .sapUiDtOverlayTargetZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + border: none; +} +.sapUiRta .sapUiDtOverlayTargetZone.sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: transparent; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable { + background: rgba(46, 156, 234, 0.1); +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: #ffffff !important; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:focus:before { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder * { + background: #ffffff; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:focus:before { + content: none; +} +.sapUiRta .sapUiRtaEditableField { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; +} +.sapUiRta .sapUiDtDragGhost { + background: rgba(46, 156, 234, 0.1); +} +.sapUiRtaDialogEntryWithMargin { + margin: 6px 0; +} + +/* Inline theming parameters */ +#sap-ui-theme-sap\.ui\.rta { background-image: url('data:text/plain;utf-8,%7B%22sapBrandColor%22:%22#000000%22,%22sapHighlightColor%22:%22#cc8700%22,%22sapBaseColor%22:%22#dddddd%22,%22sapShellColor%22:%22#ffffff%22,%22sapBackgroundColor%22:%22#ffffff%22,%22sapFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapFontSize%22:%220.75em%22,%22sapTextColor%22:%22#000000%22,%22sapLinkColor%22:%22#000000%22,%22sapCompanyLogo%22:%22none%22,%22sapBackgroundImage%22:%22none%22,%22sapBackgroundImageOpacity%22:%221%22,%22sapBackgroundImageRepeat%22:%22false%22,%22sapSelectedColor%22:%22#2e9cea%22,%22sapActiveColor%22:%22#cc8700%22,%22sapHighlightTextColor%22:%22#ffffff%22,%22sapTitleColor%22:%22#000000%22,%22sapNegativeColor%22:%22#bb0000%22,%22sapCriticalColor%22:%22#e78c07%22,%22sapPositiveColor%22:%22#2b7d2b%22,%22sapNeutralColor%22:%22#ffffff%22,%22sapNegativeElementColor%22:%22#bb0000%22,%22sapCriticalElementColor%22:%22#e78c07%22,%22sapPositiveElementColor%22:%22#2b7d2b%22,%22sapNeutralElementColor%22:%22#ffffff%22,%22sapContent_LineHeight%22:%221.3%22,%22sapContent_ElementHeight%22:%221.37em%22,%22sapContent_ElementHeight_PX%22:%2222px%22,%22sapContent_IconHeight%22:%2216px%22,%22sapContent_IconColor%22:%22#000000%22,%22sapContent_ContrastIconColor%22:%22#ffffff%22,%22sapContent_NonInteractiveIconColor%22:%22#000000%22,%22sapContent_MarkerIconColor%22:%22#000000%22,%22sapContent_FocusColor%22:%22#000000%22,%22sapContent_ContrastFocusColor%22:%22#ffffff%22,%22sapContent_ShadowColor%22:%22#000000%22,%22sapContent_ContrastShadowColor%22:%22#ffffff%22,%22sapContent_SearchHighlightColor%22:%22#cc8700%22,%22sapContent_HelpColor%22:%22#006500%22,%22sapContent_LabelColor%22:%22#000000%22,%22sapContent_MonospaceFontFamily%22:%22lucida console, monospace%22,%22sapContent_DisabledTextColor%22:%22#666666%22,%22sapContent_DisabledOpacity%22:%220.5%22,%22sapContent_ContrastTextThreshold%22:%220.65%22,%22sapContent_ContrastTextColor%22:%22#ffffff%22,%22sapContent_ForegroundColor%22:%22#e5e5e5%22,%22sapContent_ForegroundBorderColor%22:%22#000000%22,%22sapContent_ForegroundTextColor%22:%22#000000%22,%22sapShell_Background%22:%22#ffffff%22,%22sapShell_BackgroundImage%22:%22#ffffff%22,%22sapShell_BackgroundGradient%22:%22#ffffff%22,%22sapShell_BackgroundImageOpacity%22:%221%22,%22sapShell_BackgroundImageRepeat%22:%22false%22,%22sapShell_BorderColor%22:%22#666666%22,%22sapShell_TextColor%22:%22#000000%22,%22sapShell_Favicon%22:%22none%22,%22sapButton_BorderWidth%22:%221px%22,%22sapButton_BorderCornerRadius%22:%220%22,%22sapButton_Background%22:%22#ffffff%22,%22sapButton_BorderColor%22:%22#000000%22,%22sapButton_TextColor%22:%22#000000%22,%22sapButton_Disabled_Background%22:%22#ffffff%22,%22sapButton_Disabled_BorderColor%22:%22#666666%22,%22sapButton_Disabled_TextColor%22:%22#666666%22,%22sapButton_Hover_Background%22:%22#cc8700%22,%22sapButton_Hover_BorderColor%22:%22#000000%22,%22sapButton_Hover_TextColor%22:%22#ffffff%22,%22sapButton_Emphasized_Background%22:%22#ffffff%22,%22sapButton_Emphasized_BorderColor%22:%22#000000%22,%22sapButton_Emphasized_TextColor%22:%22#000000%22,%22sapButton_Reject_Background%22:%22#ffffff%22,%22sapButton_Accept_Background%22:%22#ffffff%22,%22sapField_Background%22:%22#ffffff%22,%22sapField_BorderColor%22:%22#000000%22,%22sapField_TextColor%22:%22#000000%22,%22sapField_HelpBackground%22:%22#ffffff%22,%22sapField_BorderWidth%22:%221px%22,%22sapField_BorderCornerRadius%22:%220%22,%22sapField_Hover_Background%22:%22#ffffff%22,%22sapField_Hover_BorderColor%22:%22#000000%22,%22sapField_Hover_HelpBackground%22:%22#cc8700%22,%22sapField_Focus_Background%22:%22#ffffff%22,%22sapField_Focus_BorderColor%22:%22#000000%22,%22sapField_Focus_HelpBackground%22:%22#ffffff%22,%22sapField_Disabled_Background%22:%22#959595%22,%22sapField_Disabled_BorderColor%22:%22#4f4f4f%22,%22sapField_Disabled_TextColor%22:%22#666666%22,%22sapField_Disabled_HelpBackground%22:%22#959595%22,%22sapField_ReadOnly_Background%22:%22#959595%22,%22sapField_ReadOnly_BorderColor%22:%22#4f4f4f%22,%22sapField_ReadOnly_HelpBackground%22:%22#959595%22,%22sapField_RequiredColor%22:%22#000000%22,%22sapField_InvalidColor%22:%22#ffffff%22,%22sapField_InvalidBackground%22:%22#cc8700%22,%22sapField_WarningColor%22:%22#000000%22,%22sapField_WarningBackground%22:%22#ffffff%22,%22sapField_SuccessColor%22:%22#000000%22,%22sapField_SuccessBackground%22:%22#ffffff%22,%22sapGroup_TitleBackground%22:%22#ffffff%22,%22sapGroup_TitleBorderColor%22:%22#000000%22,%22sapGroup_TitleTextColor%22:%22#000000%22,%22sapGroup_Title_FontSize%22:%221em%22,%22sapGroup_ContentBackground%22:%22#ffffff%22,%22sapGroup_ContentBorderColor%22:%22#000000%22,%22sapGroup_BorderWidth%22:%221px%22,%22sapGroup_BorderCornerRadius%22:%220%22,%22sapGroup_FooterBackground%22:%22#ffffff%22,%22sapToolbar_Background%22:%22#ffffff%22,%22sapToolbar_SeparatorColor%22:%22#000000%22,%22sapList_HeaderBackground%22:%22#ffffff%22,%22sapList_HeaderBorderColor%22:%22#000000%22,%22sapList_HeaderTextColor%22:%22#000000%22,%22sapList_BorderColor%22:%22#4f4f4f%22,%22sapList_BorderWidth%22:%221px%22,%22sapList_HighlightColor%22:%22#cc8700%22,%22sapList_SelectionBackgroundColor%22:%22#2e9cea%22,%22sapList_Background%22:%22#ffffff%22,%22sapList_Hover_Background%22:%22#cc8700%22,%22sapScrollBar_FaceColor%22:%22#4f4f4f%22,%22sapScrollBar_TrackColor%22:%22#ffffff%22,%22sapScrollBar_BorderColor%22:%22#4f4f4f%22,%22sapScrollBar_SymbolColor%22:%22#000000%22,%22sapScrollBar_Dimension%22:%2216px%22,%22sapScrollBar_Hover_FaceColor%22:%22#000000%22,%22sapPageHeader_Background%22:%22#ffffff%22,%22sapPageHeader_BorderColor%22:%22#000000%22,%22sapPageHeader_TextColor%22:%22#000000%22,%22sapPageFooter_Background%22:%22#ffffff%22,%22sapPageFooter_TextColor%22:%22#000000%22,%22sapInfobar_Background%22:%22#ffffff%22,%22sapObjectHeader_Background%22:%22#ffffff%22,%22sapBlockLayer_Background%22:%22#000000%22,%22sapTile_Background%22:%22#ffffff%22,%22sapTile_BorderColor%22:%22#000000%22,%22sapTile_TitleTextColor%22:%22#000000%22,%22sapTile_TextColor%22:%22#000000%22,%22sapTile_IconColor%22:%22#000000%22,%22sapChart_OrderedColor_1%22:%22#5cbae6%22,%22sapChart_OrderedColor_2%22:%22#b6d957%22,%22sapChart_OrderedColor_3%22:%22#fac364%22,%22sapChart_OrderedColor_4%22:%22#8cd3ff%22,%22sapChart_OrderedColor_5%22:%22#d998cb%22,%22sapChart_OrderedColor_6%22:%22#f2d249%22,%22sapChart_OrderedColor_7%22:%22#93b9c6%22,%22sapChart_OrderedColor_8%22:%22#ccc5a8%22,%22sapChart_OrderedColor_9%22:%22#52bacc%22,%22sapChart_OrderedColor_10%22:%22#dbdb46%22,%22sapChart_OrderedColor_11%22:%22#98aafb%22,%22sapChart_Bad%22:%22#dc0d0e%22,%22sapChart_Critical%22:%22#de890d%22,%22sapChart_Good%22:%22#3fa45b%22,%22sapChart_Neutral%22:%22#848f94%22,%22sapChart_Sequence_1%22:%22#27a3dd%22,%22sapChart_Sequence_2%22:%22#9dc62d%22,%22sapChart_Sequence_3%22:%22#f8ac29%22,%22sapChart_Sequence_Neutral%22:%22#848f94%22,%22sapUiBrand%22:%22#000000%22,%22sapUiHighlight%22:%22#cc8700%22,%22sapUiBaseColor%22:%22#dddddd%22,%22sapUiShellColor%22:%22#ffffff%22,%22sapUiBaseBG%22:%22#ffffff%22,%22sapUiGlobalBackgroundColor%22:%22#ffffff%22,%22sapUiBaseText%22:%22#000000%22,%22sapUiLink%22:%22#000000%22,%22sapUiGlobalLogo%22:%22none%22,%22sapUiGlobalBackgroundImage%22:%22none%22,%22sapUiBackgroundImage%22:%22none%22,%22sapUiUx3ShellBackgroundImageURL%22:%22none%22,%22sapUiGlobalBackgroundImageOpacity%22:%221%22,%22sapUiGlobalBackgroundRepeat%22:%22false%22,%22sapUiSelected%22:%22#2e9cea%22,%22sapUiActive%22:%22#cc8700%22,%22sapUiHighlightTextColor%22:%22#ffffff%22,%22sapUiTextTitle%22:%22#000000%22,%22sapUiContentIconColor%22:%22#000000%22,%22sapUiContentContrastIconColor%22:%22#ffffff%22,%22sapUiContentNonInteractiveIconColor%22:%22#000000%22,%22sapUiContentMarkerIconColor%22:%22#000000%22,%22sapUiContentMarkerTextColor%22:%22#000000%22,%22sapUiContentImagePlaceholderBackground%22:%22#ffffff%22,%22sapUiContentImagePlaceholderForegroundColor%22:%22#000000%22,%22sapUiContentFocusColor%22:%22#000000%22,%22sapUiContentContrastFocusColor%22:%22#ffffff%22,%22sapUiContentShadowColor%22:%22#000000%22,%22sapUiContentContrastShadowColor%22:%22#ffffff%22,%22sapUiContentSearchHighlightColor%22:%22#cc8700%22,%22sapUiContentHelpColor%22:%22#006500%22,%22sapUiContentLabelColor%22:%22#000000%22,%22sapUiContentDisabledTextColor%22:%22#666666%22,%22sapUiContentDisabledOpacity%22:%220.5%22,%22sapUiContentContrastTextThreshold%22:%220.65%22,%22sapUiContentContrastTextColor%22:%22#ffffff%22,%22sapUiContentForegroundColor%22:%22#e5e5e5%22,%22sapUiContentForegroundBorderColor%22:%22#000000%22,%22sapUiContentForegroundTextColor%22:%22#000000%22,%22sapUiShellBackground%22:%22#ffffff%22,%22sapUiShellBackgroundImage%22:%22#ffffff%22,%22sapUiShellBackgroundImageOpacity%22:%221%22,%22sapUiShellBackgroundImageRepeat%22:%22false%22,%22sapUiShellBackgroundGradient%22:%22#ffffff%22,%22sapUiShellBorderColor%22:%22#666666%22,%22sapUiShellTextColor%22:%22#000000%22,%22sapUiShellFavicon%22:%22none%22,%22sapUiButtonBackground%22:%22#ffffff%22,%22sapUiButtonBorderColor%22:%22#000000%22,%22sapUiButtonTextColor%22:%22#000000%22,%22sapUiButtonDisabledBackground%22:%22#ffffff%22,%22sapUiButtonDisabledBorderColor%22:%22#666666%22,%22sapUiButtonDisabledTextColor%22:%22#666666%22,%22sapUiButtonHoverBackground%22:%22#cc8700%22,%22sapUiButtonHoverBorderColor%22:%22#000000%22,%22sapUiButtonHoverTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedBackground%22:%22#ffffff%22,%22sapUiButtonEmphasizedBorderColor%22:%22#000000%22,%22sapUiButtonEmphasizedTextColor%22:%22#000000%22,%22sapUiButtonRejectBackground%22:%22#ffffff%22,%22sapUiButtonAcceptBackground%22:%22#ffffff%22,%22sapUiFieldBackground%22:%22#ffffff%22,%22sapUiFieldBorderColor%22:%22#000000%22,%22sapUiFieldTextColor%22:%22#000000%22,%22sapUiFieldHelpBackground%22:%22#ffffff%22,%22sapUiFieldHoverBackground%22:%22#ffffff%22,%22sapUiFieldHoverBorderColor%22:%22#000000%22,%22sapUiFieldHoverHelpBackground%22:%22#cc8700%22,%22sapUiFieldFocusBackground%22:%22#ffffff%22,%22sapUiFieldFocusBorderColor%22:%22#000000%22,%22sapUiFieldFocusHelpBackground%22:%22#ffffff%22,%22sapUiFieldReadOnlyBackground%22:%22#959595%22,%22sapUiFieldReadOnlyBorderColor%22:%22#4f4f4f%22,%22sapUiFieldReadOnlyHelpBackground%22:%22#959595%22,%22sapUiFieldDisabledBackground%22:%22#959595%22,%22sapUiFieldDisabledBorderColor%22:%22#4f4f4f%22,%22sapUiFieldDisabledTextColor%22:%22#666666%22,%22sapUiFieldDisabledHelpBackground%22:%22#959595%22,%22sapUiFieldRequiredColor%22:%22#000000%22,%22sapUiFieldInvalidColor%22:%22#ffffff%22,%22sapUiFieldInvalidBackground%22:%22#cc8700%22,%22sapUiFieldWarningColor%22:%22#000000%22,%22sapUiFieldWarningBackground%22:%22#ffffff%22,%22sapUiFieldSuccessColor%22:%22#000000%22,%22sapUiFieldSuccessBackground%22:%22#ffffff%22,%22sapUiGroupTitleBackground%22:%22#ffffff%22,%22sapUiGroupTitleBorderColor%22:%22#000000%22,%22sapUiGroupTitleTextColor%22:%22#000000%22,%22sapUiGroupContentBackground%22:%22#ffffff%22,%22sapUiGroupContentBorderColor%22:%22#000000%22,%22sapUiGroupFooterBackground%22:%22#ffffff%22,%22sapUiToolbarBackground%22:%22#ffffff%22,%22sapUiToolbarSeparatorColor%22:%22#000000%22,%22sapUiListHeaderBackground%22:%22#ffffff%22,%22sapUiListHeaderBorderColor%22:%22#000000%22,%22sapUiListHeaderTextColor%22:%22#000000%22,%22sapUiListBorderColor%22:%22#4f4f4f%22,%22sapUiListHighlightColor%22:%22#cc8700%22,%22sapUiListSelectionBackgroundColor%22:%22#2e9cea%22,%22sapUiListBackground%22:%22#ffffff%22,%22sapUiListHoverBackground%22:%22#cc8700%22,%22sapUiScrollBarFaceColor%22:%22#4f4f4f%22,%22sapUiScrollBarTrackColor%22:%22#ffffff%22,%22sapUiScrollBarBorderColor%22:%22#4f4f4f%22,%22sapUiScrollBarSymbolColor%22:%22#000000%22,%22sapUiScrollBarHoverFaceColor%22:%22#000000%22,%22sapUiPageHeaderBackground%22:%22#ffffff%22,%22sapUiPageHeaderBorderColor%22:%22#000000%22,%22sapUiPageHeaderTextColor%22:%22#d3d3d3%22,%22sapUiPageFooterBackground%22:%22#ffffff%22,%22sapUiPageFooterTextColor%22:%22#000000%22,%22sapUiInfobarBackground%22:%22#ffffff%22,%22sapUiObjectHeaderBackground%22:%22#ffffff%22,%22sapUiBlockLayerBackground%22:%22#000000%22,%22sapUiTileBackground%22:%22#ffffff%22,%22sapUiTileBorderColor%22:%22#000000%22,%22sapUiTileTitleTextColor%22:%22#000000%22,%22sapUiTileTextColor%22:%22#000000%22,%22sapUiTileIconColor%22:%22#000000%22,%22sapUiChart1%22:%22#5cbae6%22,%22sapUiChart2%22:%22#b6d957%22,%22sapUiChart3%22:%22#fac364%22,%22sapUiChart4%22:%22#8cd3ff%22,%22sapUiChart5%22:%22#d998cb%22,%22sapUiChart6%22:%22#f2d249%22,%22sapUiChart7%22:%22#93b9c6%22,%22sapUiChart8%22:%22#ccc5a8%22,%22sapUiChart9%22:%22#52bacc%22,%22sapUiChart10%22:%22#dbdb46%22,%22sapUiChart11%22:%22#98aafb%22,%22sapUiChartBad%22:%22#dc0d0e%22,%22sapUiChartCritical%22:%22#de890d%22,%22sapUiChartGood%22:%22#3fa45b%22,%22sapUiChartNeutral%22:%22#848f94%22,%22sapUiChartSequence1%22:%22#27a3dd%22,%22sapUiChartSequence2%22:%22#9dc62d%22,%22sapUiChartSequence3%22:%22#f8ac29%22,%22sapUiChartSequenceNeutral%22:%22#848f94%22,%22sapUiAccent1%22:%22#5f5800%22,%22sapUiAccent2%22:%22#5e4101%22,%22sapUiAccent3%22:%22#973333%22,%22sapUiAccent4%22:%22#961d7c%22,%22sapUiAccent5%22:%22#365892%22,%22sapUiAccent6%22:%22#004ccb%22,%22sapUiAccent7%22:%22#105b5b%22,%22sapUiAccent8%22:%22#26340b%22,%22sapUiErrorBG%22:%22#ff9a90%22,%22sapUiWarningBG%22:%22#faf2b0%22,%22sapUiSuccessBG%22:%22#e4f6e4%22,%22sapUiNeutralBG%22:%22#ffffff%22,%22sapUiErrorBorder%22:%22#ff0000%22,%22sapUiWarningBorder%22:%22#ffff00%22,%22sapUiSuccessBorder%22:%22#38a338%22,%22sapUiNeutralBorder%22:%22#ffffff%22,%22sapUiNegativeElement%22:%22#bb0000%22,%22sapUiCriticalElement%22:%22#e78c07%22,%22sapUiPositiveElement%22:%22#2b7d2b%22,%22sapUiNeutralElement%22:%22#ffffff%22,%22sapUiNegativeText%22:%22#ff0000%22,%22sapUiCriticalText%22:%22#e78c07%22,%22sapUiPositiveText%22:%22#b5e7a8%22,%22sapUiNeutralText%22:%22#ffffff%22,%22sapUiNegative%22:%22#bb0000%22,%22sapUiCritical%22:%22#e78c07%22,%22sapUiPositive%22:%22#2b7d2b%22,%22sapUiNeutral%22:%22#ffffff%22,%22sapUiErrorColor%22:%22#ee0000%22,%22sapUiWarningColor%22:%22#f9a429%22,%22sapUiSuccessColor%22:%22#38a338%22,%22sapUiFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontSize%22:%22medium%22,%22sapUiFontCondensedFamily%22:%22%27Arial Narrow%27, HelveticaNeue-CondensedBold, Arial, sans-serif%22,%22sapUiFontHeaderFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontHeaderWeight%22:%22normal%22,%22sapMFontHeader1Size%22:%221.625rem%22,%22sapMFontHeader2Size%22:%221.375rem%22,%22sapMFontHeader3Size%22:%221.25rem%22,%22sapMFontHeader4Size%22:%221.125rem%22,%22sapMFontHeader5Size%22:%221rem%22,%22sapMFontHeader6Size%22:%220.875rem%22,%22sapMFontSmallSize%22:%220.75rem%22,%22sapMFontMediumSize%22:%220.875rem%22,%22sapMFontLargeSize%22:%221rem%22,%22sapUiTranslucentBGOpacity%22:%2280%25%22,%22sapMPlatformDependent%22:%22false%22,%22sapUiDesktopFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiDesktopFontSize%22:%2212px%22,%22sapUiFontLargeSize%22:%2213px%22,%22sapUiFontSmallSize%22:%2211px%22,%22sapUiFontHeader1Size%22:%2226px%22,%22sapUiFontHeader2Size%22:%2220px%22,%22sapUiFontHeader3Size%22:%2218px%22,%22sapUiFontHeader4Size%22:%2216px%22,%22sapUiFontHeader5Size%22:%2214px%22,%22sapUiFontHeader6Size%22:%2213px%22,%22sapUiLineHeight%22:%2218px%22,%22sapUiChartLabelHoverColor%22:%22#cc8700%22,%22sapUiChartLabelPressedColor%22:%22#d4d4d4%22,%22sapUiChartCategoryAxisLabelFontColor%22:%22#000000%22,%22sapUiChartValueAxisLabelFontColor%22:%22#3d3d3d%22,%22sapUiChartCategoryAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartValueAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartCategoryAxisLineColor%22:%22#0d0d0d%22,%22sapUiChartValueAxisLineColor%22:%22#0d0d0d%22,%22sapUiChartCategoryAxisTickColor%22:%22#0d0d0d%22,%22sapUiChartValueAxisTickColor%22:%22#0d0d0d%22,%22sapUiChartBackgroundColor%22:%22transparent%22,%22sapUiChartLabelFontWeight%22:%22normal%22,%22sapUiChartLegendLabelFontColor%22:%22#000000%22,%22sapUiChartLegendTitleFontColor%22:%22#000000%22,%22sapUiChartLegendTitleFontSize%22:%220.875rem%22,%22sapUiChartLegendLabelFontSize%22:%220.75rem%22,%22sapUiChartPaletteUndefinedColor%22:%22#000000%22,%22sapUiChartGridlineColor%22:%22#262626%22,%22sapUiChartReferenceLineColor%22:%22#000000%22,%22sapUiChartDataLabelFontColor%22:%22#000000%22,%22sapUiChartReferenceLineLabelColor%22:%22#000000%22,%22sapUiChartDataLabelFontSize%22:%220.75rem%22,%22sapUiChartPopoverDataItemFontColor%22:%22#000000%22,%22sapUiChartPopoverGroupFontColor%22:%22#000000%22,%22sapUiChartPopoverDataItemFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontWeight%22:%22bold%22,%22sapUiChartScrollBarThumbColor%22:%22#4f4f4f%22,%22sapUiChartScrollBarTrackColor%22:%22#ffffff%22,%22sapUiChartScrollBarThumbHoverColor%22:%22#000000%22,%22sapUiChartMainTitleFontColor%22:%22#000000%22,%22sapUiChartAxisTitleFontColor%22:%22#000000%22,%22sapUiChartMainTitleFontSize%22:%221rem%22,%22sapUiChartAxisTitleFontSize%22:%220.875rem%22,%22sapUiChartTitleFontWeight%22:%22bold%22,%22sapUiChartLightText%22:%22#3d3d3d%22,%22sapUiChartZeroAxisColor%22:%22#000000%22,%22sapUiChartDataPointBorderColor%22:%22#ffffff%22,%22sapUiChartDataPointBorderHoverSelectedColor%22:%22#000000%22,%22sapUiChartDataPointNotSelectedBackgroundOpacity%22:%220.6%22,%22sapUiChartValueAxisLineOpacity%22:%220%22,%22sapUiChartCategoryAxisLabelFontHoverColor%22:%22#000000%22,%22sapUiChartCategoryAxisLabelFontPressedColor%22:%22#000000%22,%22sapUiChartTargetColor%22:%22#000000%22,%22sapUiChartTargetShadowColor%22:%22#ffffff%22,%22sapUiChartBubbleBGOpacity%22:%220.8%22,%22sapUiChartScrollbarBorderColor%22:%22#8f8f8f%22,%22sapUiChartScrollbarBorderSize%22:%220%22,%22sapUiChartScrollbarThumbPadding%22:%220%22,%22sapUiChartNegativeLargeText%22:%22#dc0d0e%22,%22sapUiChartCriticalLargeText%22:%22#de890d%22,%22sapUiChartPositiveLargeText%22:%22#3fa45b%22,%22sapUiChartNeutralLargeText%22:%22#69767c%22,%22sapUiChartDataPointBG%22:%22#d5dadc%22,%22sapUiChartDataPointBGBorderColor%22:%22#d5dadc%22,%22sapUiChartDataLineColorWithBG%22:%22#000000%22,%22sapUiChartDataLineColor%22:%22#000000%22,%22sapUiChartRadialRemainingCircle%22:%22#e3e6e7%22,%22sapUiChartRadialRemainingCircleBorderColor%22:%22#e3e6e7%22,%22sapUiChartRadialBG%22:%22#ffffff%22,%22sapUiChartPaletteQualitativeHue1%22:%22#5cbae6%22,%22sapUiChartPaletteQualitativeHue2%22:%22#b6d957%22,%22sapUiChartPaletteQualitativeHue3%22:%22#fac364%22,%22sapUiChartPaletteQualitativeHue4%22:%22#8cd3ff%22,%22sapUiChartPaletteQualitativeHue5%22:%22#d998cb%22,%22sapUiChartPaletteQualitativeHue6%22:%22#f2d249%22,%22sapUiChartPaletteQualitativeHue7%22:%22#93b9c6%22,%22sapUiChartPaletteQualitativeHue8%22:%22#ccc5a8%22,%22sapUiChartPaletteQualitativeHue9%22:%22#52bacc%22,%22sapUiChartPaletteQualitativeHue10%22:%22#dbdb46%22,%22sapUiChartPaletteQualitativeHue11%22:%22#98aafb%22,%22sapUiChartPaletteSemanticBadLight3%22:%22#f99494%22,%22sapUiChartPaletteSemanticBadLight2%22:%22#f66364%22,%22sapUiChartPaletteSemanticBadLight1%22:%22#f33334%22,%22sapUiChartPaletteSemanticBad%22:%22#dc0d0e%22,%22sapUiChartPaletteSemanticBadDark1%22:%22#b90c0d%22,%22sapUiChartPaletteSemanticBadDark2%22:%22#930a0a%22,%22sapUiChartPaletteSemanticCriticalLight3%22:%22#f8cc8c%22,%22sapUiChartPaletteSemanticCriticalLight2%22:%22#f5b04d%22,%22sapUiChartPaletteSemanticCriticalLight1%22:%22#f29b1d%22,%22sapUiChartPaletteSemanticCritical%22:%22#de890d%22,%22sapUiChartPaletteSemanticCriticalDark1%22:%22#c67a0c%22,%22sapUiChartPaletteSemanticCriticalDark2%22:%22#a4650a%22,%22sapUiChartPaletteSemanticGoodLight3%22:%22#a1dbb1%22,%22sapUiChartPaletteSemanticGoodLight2%22:%22#71c989%22,%22sapUiChartPaletteSemanticGoodLight1%22:%22#4cba6b%22,%22sapUiChartPaletteSemanticGood%22:%22#3fa45b%22,%22sapUiChartPaletteSemanticGoodDark1%22:%22#358a4d%22,%22sapUiChartPaletteSemanticGoodDark2%22:%22#2a6d3c%22,%22sapUiChartPaletteSemanticNeutralLight3%22:%22#d5dadc%22,%22sapUiChartPaletteSemanticNeutralLight2%22:%22#bac1c4%22,%22sapUiChartPaletteSemanticNeutralLight1%22:%22#9ea8ad%22,%22sapUiChartPaletteSemanticNeutral%22:%22#848f94%22,%22sapUiChartPaletteSemanticNeutralDark1%22:%22#69767c%22,%22sapUiChartPaletteSemanticNeutralDark2%22:%22#596468%22,%22sapUiChartPaletteSequentialHue1Light3%22:%22#abdbf2%22,%22sapUiChartPaletteSequentialHue1Light2%22:%22#84caec%22,%22sapUiChartPaletteSequentialHue1Light1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1%22:%22#27a3dd%22,%22sapUiChartPaletteSequentialHue1Dark1%22:%22#1b7eac%22,%22sapUiChartPaletteSequentialHue1Dark2%22:%22#156489%22,%22sapUiChartPaletteSequentialHue2Light3%22:%22#d7eaa2%22,%22sapUiChartPaletteSequentialHue2Light2%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2Light1%22:%22#b6d957%22,%22sapUiChartPaletteSequentialHue2%22:%22#9dc62d%22,%22sapUiChartPaletteSequentialHue2Dark1%22:%22#759422%22,%22sapUiChartPaletteSequentialHue2Dark2%22:%22#5b731a%22,%22sapUiChartPaletteSequentialHue3Light3%22:%22#fde5bd%22,%22sapUiChartPaletteSequentialHue3Light2%22:%22#fbd491%22,%22sapUiChartPaletteSequentialHue3Light1%22:%22#fac364%22,%22sapUiChartPaletteSequentialHue3%22:%22#f8ac29%22,%22sapUiChartPaletteSequentialHue3Dark1%22:%22#dd8e07%22,%22sapUiChartPaletteSequentialHue3Dark2%22:%22#b57506%22,%22sapUiChartPaletteSequentialNeutralLight3%22:%22#d5dadc%22,%22sapUiChartPaletteSequentialNeutralLight2%22:%22#bac1c4%22,%22sapUiChartPaletteSequentialNeutralLight1%22:%22#9ea8ad%22,%22sapUiChartPaletteSequentialNeutral%22:%22#848f94%22,%22sapUiChartPaletteSequentialNeutralDark1%22:%22#69767c%22,%22sapUiChartPaletteSequentialNeutralDark2%22:%22#596468%22,%22sapUiChoroplethBG%22:%22#f7f7f8%22,%22sapUiChoroplethRegionBorder%22:%22#404040%22,%22sapUiChoroplethRegionBG%22:%22#bac1c4%22,%22sapUiMapLegendBG%22:%22#ffffff%22,%22sapUiMapLegendBorderColor%22:%22#0d0d0d%22,%22sapUiShellHoverBackground%22:%22#000000%22,%22sapUiShellActiveBackground%22:%22#000000%22,%22sapUiShellActiveTextColor%22:%22#000000%22,%22sapUiShellHoverToggleBackground%22:%22#2e9cea%22,%22sapUiShellContainerBackground%22:%22#ffffff%22,%22sapUiShellAltContainerBackground%22:%22#ffffff%22,%22sapUiUx3ShellHeaderColor%22:%22#ffffff%22,%22sapUiUx3ShellBackgroundColor%22:%22#ffffff%22,%22sapUiUx3ShellHoverColor%22:%22#000000%22,%22sapUiUx3ShellGradientBottom%22:%22#ffffff%22,%22sapUiUx3ShellGradientTop%22:%22#fdfcf7%22,%22sapUiUx3ShellToolPaletteIconFontColor%22:%22#8899aa%22,%22sapUiUx3ExactLstExpandOffset%22:%220 0%22,%22sapUiUx3ExactLstRootExpandOffset%22:%220 3%22,%22sapUiUx3ExactLstContentTop%22:%2225px%22,%22sapUiLinkActive%22:%22#000000%22,%22sapUiLinkVisited%22:%22#000000%22,%22sapUiLinkHover%22:%22#000000%22,%22sapUiLinkInverted%22:%22#000000%22,%22sapUiNotificationBarBG%22:%22rgba%28128, 128, 128, 0.92%29%22,%22sapUiNotifierSeparator%22:%22#808080%22,%22sapUiNotifierSeparatorWidth%22:%222px%22,%22sapUiNotificationBarBorder%22:%22rgba%28128, 128, 128, 0.92%29%22,%22sapUiUx3ToolPopupInverted%22:%22true%22,%22sapUiUx3ToolPopupArrowRightMarginCorrection%22:%22-2px%22,%22sapUiUx3ToolPopupShadow%22:%220px 6px 12px 0px rgba%280, 0, 0, 0.3%29%22,%22sapUiCalloutShadow%22:%220px 6px 12px 0px rgba%280, 0, 0, 0.3%29%22,%22sapUiButtonIconColor%22:%22#000000%22,%22sapUiButtonActiveBackground%22:%22#cc8700%22,%22sapUiButtonActiveBorderColor%22:%22#cc8700%22,%22sapUiButtonActiveTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedHoverBackground%22:%22#f2f2f2%22,%22sapUiButtonEmphasizedHoverBorderColor%22:%22#f2f2f2%22,%22sapUiButtonEmphasizedActiveBackground%22:%22#cc8700%22,%22sapUiButtonEmphasizedActiveBorderColor%22:%22#cc8700%22,%22sapUiButtonEmphasizedTextShadow%22:%22rgba%280, 0, 0, 0.5%29%22,%22sapUiButtonAcceptBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptHoverBackground%22:%22#cc8700%22,%22sapUiButtonAcceptHoverBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptActiveBackground%22:%22#2b7d2b%22,%22sapUiButtonAcceptActiveBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptTextColor%22:%22#b5e7a8%22,%22sapUiButtonRejectBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectHoverBackground%22:%22#cc8700%22,%22sapUiButtonRejectHoverBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectActiveBackground%22:%22#bb0000%22,%22sapUiButtonRejectActiveBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectTextColor%22:%22#ff0000%22,%22sapUiButtonLiteBackground%22:%22rgba%280, 0, 0, 0%29%22,%22sapUiButtonLiteBorderColor%22:%22rgba%280, 0, 0, 0%29%22,%22sapUiButtonLiteTextColor%22:%22#000000%22,%22sapUiButtonLiteHoverBackground%22:%22rgba%28117, 78, 0, 0.5%29%22,%22sapUiButtonLiteHoverBorderColor%22:%22rgba%28117, 78, 0, 0.5%29%22,%22sapUiButtonLiteActiveBackground%22:%22#cc8700%22,%22sapUiButtonLiteActiveBorderColor%22:%22#cc8700%22,%22sapUiButtonHeaderTextColor%22:%22#000000%22,%22sapUiButtonHeaderDisabledTextColor%22:%22#000000%22,%22sapUiButtonFooterTextColor%22:%22#000000%22,%22sapUiButtonFooterHoverBackground%22:%22rgba%28117, 78, 0, 0.5%29%22,%22sapUiButtonActionSelectBackground%22:%22#ffffff%22,%22sapUiButtonActionSelectBorderColor%22:%22#4f4f4f%22,%22sapUiButtonLiteActionSelectHoverBackground%22:%22#cc8700%22,%22sapUiToggleButtonPressedBackground%22:%22#cc8700%22,%22sapUiToggleButtonPressedBorderColor%22:%22#b37600%22,%22sapUiToggleButtonPressedTextColor%22:%22#ffffff%22,%22sapUiToggleButtonPressedHoverBackground%22:%22#b37600%22,%22sapUiToggleButtonPressedHoverBorderColor%22:%22#b37600%22,%22sapUiSegmentedButtonBackground%22:%22#ffffff%22,%22sapUiSegmentedButtonBorderColor%22:%22#141414%22,%22sapUiSegmentedButtonTextColor%22:%22#000000%22,%22sapUiSegmentedButtonHoverBackground%22:%22#cc8700%22,%22sapUiSegmentedButtonActiveBackground%22:%22#cc8700%22,%22sapUiSegmentedButtonActiveTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedBackground%22:%22#cc8700%22,%22sapUiSegmentedButtonSelectedTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedHoverBackground%22:%22#b37600%22,%22sapUiSegmentedButtonSelectedHoverBorderColor%22:%22#b37600%22,%22sapUiSegmentedButtonIconColor%22:%22#000000%22,%22sapUiSegmentedButtonActiveIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonFooterBorderColor%22:%22#141414%22,%22sapUiSegmentedButtonFooterHoverBackground%22:%22#cc8700%22,%22sapUiFieldActiveBackground%22:%22#cc8700%22,%22sapUiFieldActiveBorderColor%22:%22#cc8700%22,%22sapUiFieldActiveTextColor%22:%22#ffffff%22,%22sapUiFieldPlaceholderTextColor%22:%22#707070%22,%22sapUiListTextColor%22:%22#333333%22,%22sapUiListVerticalBorderColor%22:%22#474747%22,%22sapUiListActiveBackground%22:%22#cc8700%22,%22sapUiListActiveTextColor%22:%22#ffffff%22,%22sapUiListSelectionHoverBackground%22:%22#2095e9%22,%22sapUiListFooterBackground%22:%22#ffffff%22,%22sapUiListFooterTextColor%22:%22#000000%22,%22sapUiListGroupHeaderBackground%22:%22#ffffff%22,%22sapUiListTableGroupHeaderBackground%22:%22#f2f2f2%22,%22sapUiListTableGroupHeaderBorderColor%22:%22#363636%22,%22sapUiListTableGroupHeaderTextColor%22:%22#333333%22,%22sapUiListTableFooterBorder%22:%22#363636%22,%22sapUiListTableFixedBorder%22:%22#030303%22,%22sapUiListTableTextSize%22:%220.875rem%22,%22sapUiListTableIconSize%22:%221rem%22,%22sapUiPageFooterBorderColor%22:%22#ebebeb%22,%22sapUiInfobarHoverBackground%22:%22#ebebeb%22,%22sapUiInfobarActiveBackground%22:%22#d9d9d9%22,%22sapUiObjectHeaderBorderColor%22:%22#ebebeb%22,%22sapUiCalendarColorToday%22:%22#000000%22,%22sapUiDragAndDropColor%22:%22#000000%22,%22sapUiDragAndDropBackground%22:%22#ffffff%22,%22sapUiDragAndDropBorderColor%22:%22#000000%22,%22sapUiDragAndDropActiveColor%22:%22#006500%22,%22sapUiDragAndDropActiveBackground%22:%22#ffffff%22,%22sapUiDragAndDropActiveBorderColor%22:%22#006500%22,%22sapUiShadowLevel0%22:%220 0 0 1px #000000%22,%22sapUiShadowLevel1%22:%220 0.125rem 1rem 0 rgba%28255, 255, 255, 0.4%29, 0 0 0 2px #000000%22,%22sapUiShadowLevel2%22:%220 0.625rem 2rem 0 rgba%28255, 255, 255, 0.5%29, 0 0 0 2px #000000%22,%22sapUiShadowLevel3%22:%220 1.25rem 4rem 0 rgba%28255, 255, 255, 0.7%29, 0 0 0 2px #000000%22,%22sapUiShadowText%22:%22none%22,%22sapUiShadowHeader%22:%22inset 0 -0.125rem #ebebeb%22,%22sapUiUx3ShellHeaderImageURL%22:%22%22,%22sapUiUx3ShellApplicationImageURL%22:%22none%22,%22sapUiPurple%22:%22#800080%22,%22sapUiOrange%22:%22#ffa500%22,%22sapUiGreen%22:%22#008000%22,%22sapUiBlue%22:%22#0000ff%22,%22sapUiRed%22:%22#ff0000%22,%22sapUiYellow%22:%22#ffff00%22,%22sapUiBase%22:%22#000000%22,%22sapUiBaseBorder%22:%22#000000%22,%22sapUiBaseLine%22:%22#000000%22,%22sapUiWhite%22:%22#ffffff%22,%22sapUiWhiteBG%22:%22#ffffff%22,%22sapUiExtraLightBG%22:%22#ffffff%22,%22sapUiLightBG%22:%22#d3d3d3%22,%22sapUiMediumBG%22:%22#808080%22,%22sapUiDarkBG%22:%22#a9a9a9%22,%22sapUiDeepBG%22:%22#000000%22,%22sapUiBlackBG%22:%22#000000%22,%22sapUiHoverBG%22:%22#808080%22,%22sapUiMediumAltBG%22:%22#808080%22,%22sapUiDarkAltBG%22:%22#a9a9a9%22,%22sapUiButtonStandardBG%22:%22#ffffff%22,%22sapUiButtonEmphasizedBG%22:%22#ffff00%22,%22sapUiButtonNegativeBG%22:%22#ff0000%22,%22sapUiButtonPositiveBG%22:%22#008000%22,%22sapUiReadOnlyBG%22:%22#808080%22,%22sapUiExtraLightText%22:%22#d3d3d3%22,%22sapUiLightText%22:%22#d3d3d3%22,%22sapUiMediumText%22:%22#808080%22,%22sapUiDarkText%22:%22#a9a9a9%22,%22sapUiDeepText%22:%22#000000%22,%22sapUiText%22:%22#000000%22,%22sapUiTextInverted%22:%22#ffffff%22,%22sapUiWhiteBorder%22:%22#ffffff%22,%22sapUiExtraLightBorder%22:%22#d3d3d3%22,%22sapUiLightBorder%22:%22#808080%22,%22sapUiMediumBorder%22:%22#000000%22,%22sapUiDarkBorder%22:%22#000000%22,%22sapUiBlackBorder%22:%22#000000%22,%22sapUiElement%22:%22#d3d3d3%22,%22sapUiInvertedElement%22:%22#ffffff%22,%22sapUiLightLine%22:%22#d3d3d3%22,%22sapUiMediumLine%22:%22#808080%22,%22sapUiEmphasizedLine%22:%22#cc8700%22,%22sapUiDarkLine%22:%22#a9a9a9%22,%22sapUiLightShadowTint%22:%22#ffffff%22,%22sapUiDarkShadowTint%22:%22#000000%22,%22sapUiFocus%22:%22#000000%22,%22sapUiInvertedFocus%22:%22#ffffff%22,%22sapUiTableRowBG%22:%22#ffffff%22,%22sapUiTableRowAlternatingBG%22:%22#ffffff%22,%22sapUiTableRowSelectionBG%22:%22#cc8700%22,%22sapUiTableRowSelectionReadOnlyBG%22:%22#cc8700%22,%22sapUiTableRowHoverBG%22:%22#808080%22,%22sapUiListBG%22:%22#f7f7f7%22,%22sapUiTextColor%22:%22#008000%22,%22sapUiTextTitleColor%22:%22#008000%22,%22sapUiTextSelectionColor%22:%22#008000%22,%22sapUiTextDisabled%22:%22#999999%22,%22sapUiTextSelection%22:%22#ffffff%22,%22sapUiTextfieldBackground%22:%22#ffffff%22,%22sapUiFontMonospaceFamily%22:%22Lucida Console%22,%22sapUiUx3ShellSideBarBaseWidth%22:%2240px%22,%22sapUiUx3ShellPaneOverflowButtonHeight%22:%22120px%22,%22sapUiUx3ExactLstCollapseWidth%22:%2224px%22,%22sapUiUx3ExactLstHeaderHeight%22:%2225px%22,%22sapUiNotificationBarBG_IE%22:%22#808080%22,%22sapUiNotifierHoverColor%22:%22#cc8700%22,%22sapUiNotificationText%22:%22#000000%22,%22sapUiNotificationTimestamp%22:%22#545454%22,%22sapUiNotificationBarCalloutBorder%22:%22rgba%28128, 128, 128, 0%29%22,%22sapUiNotificationBarCalloutBorder_IE%22:%22#808080%22,%22sapUiNotificationBarCalloutArr%22:%22rgba%28128, 128, 128, 0.92%29%22,%22sapUiNotificationBarHeight%22:%2240px%22,%22sapUiNotificationBarHeightMinimized%22:%220px%22,%22sapUiNotificationBarHeightMaximized%22:%2240%25%22,%22sapUiNotifierWidth%22:%2240px%22,%22sapUiRIIconPaddingXS%22:%221px%22,%22sapUiRIIconPaddingS%22:%220.125rem%22,%22sapUiRIIconPaddingM%22:%220.1875rem%22,%22sapUiRIIconPaddingL%22:%220.25rem%22,%22sapUiRIIconPaddingCozy%22:%220.1875rem%22,%22sapUiRIIconPaddingCompact%22:%220.125rem%22,%22sapUiRIIconPaddingCondensed%22:%220.125rem%22,%22sapUiRIIconPaddingDisplayOnly%22:%220.125rem%22,%22sapUiRIIconSizeCozy%22:%221.375rem%22,%22sapUiRIIconSizeCompact%22:%221rem%22,%22sapUiRIIconSizeCondensed%22:%221rem%22,%22sapUiRIIconSizeDisplayOnly%22:%221rem%22,%22sapUiUx3ToolPopupArrowWidth%22:%2213px%22,%22sapUiUx3ToolPopupArrowHeight%22:%2224px%22,%22sapUiUx3ToolPopupArrowRightMarginCorrectionInverted%22:%22-7px%22,%22sapUiUx3TPPaddingBottom%22:%2250px%22,%22sapUiButtonEmphasizedDisabledBorderColor%22:%22#000000%22,%22sapUiButtonEmphasizedDisabledBackground%22:%22#ffffff%22,%22sapUiButtonAcceptDisabledBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptDisabledBackground%22:%22#ffffff%22,%22sapUiButtonRejectDisabledBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectDisabledBackground%22:%22#ffffff%22,%22sapUiToggleButtonPressedDisabledBackground%22:%22#cc8700%22,%22sapUiToggleButtonPressedDisabledBorderColor%22:%22#b37600%22,%22sapUiToggleButtonPressedDisabledTextColor%22:%22#bfbfbf%22,%22sapUiPositiveBG%22:%22#b5e7a8%22,%22sapUiShadowTint%22:%22#000000%22,%22sapUiShadow%22:%225px 5px 10px rgba%280, 0, 0, 0.5%29%22,%22sapUiThemeDesignerCustomCss%22:%22false%22,%22sapUiMarginTiny%22:%220.5rem%22,%22sapUiMarginSmall%22:%221rem%22,%22sapUiMarginMedium%22:%222rem%22,%22sapUiMarginLarge%22:%223rem%22,%22sapUiEscapedEmptyString%22:%22%22,%22sapUiLightBoxMagnifyingGlassBorder%22:%22none%22,%22sapUiLightBoxMagnifyingGlassBackgroundColor%22:%22#000000%22,%22_sap_ui_rta_Overlay_ActiveBG%22:%22rgba%2846, 156, 234, 0.1%29%22,%22_sap_ui_rta_Overlay_BaseBG%22:%22#ffffff%22,%22_sap_ui_rta_Overlay_Border%22:%22#2e9cea%22,%22_sap_ui_rta_Overlay_HoverBG%22:%22rgba%280, 0, 0, 0.10800000000000001%29%22,%22_sap_ui_rta_Overlay_ActiveHoverBG%22:%22rgba%2846, 156, 234, 0.2%29%22%7D'); } diff --git a/resources/sap/ui/rta/themes/base/library-parameters.json b/resources/sap/ui/rta/themes/base/library-parameters.json new file mode 100644 index 0000000..06cf21c --- /dev/null +++ b/resources/sap/ui/rta/themes/base/library-parameters.json @@ -0,0 +1,715 @@ +{ + "sapBrandColor": "#000000", + "sapHighlightColor": "#cc8700", + "sapBaseColor": "#dddddd", + "sapShellColor": "#ffffff", + "sapBackgroundColor": "#ffffff", + "sapFontFamily": "Arial, Helvetica, sans-serif", + "sapFontSize": "0.75em", + "sapTextColor": "#000000", + "sapLinkColor": "#000000", + "sapCompanyLogo": "none", + "sapBackgroundImage": "none", + "sapBackgroundImageOpacity": "1", + "sapBackgroundImageRepeat": "false", + "sapSelectedColor": "#2e9cea", + "sapActiveColor": "#cc8700", + "sapHighlightTextColor": "#ffffff", + "sapTitleColor": "#000000", + "sapNegativeColor": "#bb0000", + "sapCriticalColor": "#e78c07", + "sapPositiveColor": "#2b7d2b", + "sapNeutralColor": "#ffffff", + "sapNegativeElementColor": "#bb0000", + "sapCriticalElementColor": "#e78c07", + "sapPositiveElementColor": "#2b7d2b", + "sapNeutralElementColor": "#ffffff", + "sapContent_LineHeight": "1.3", + "sapContent_ElementHeight": "1.37em", + "sapContent_ElementHeight_PX": "22px", + "sapContent_IconHeight": "16px", + "sapContent_IconColor": "#000000", + "sapContent_ContrastIconColor": "#ffffff", + "sapContent_NonInteractiveIconColor": "#000000", + "sapContent_MarkerIconColor": "#000000", + "sapContent_FocusColor": "#000000", + "sapContent_ContrastFocusColor": "#ffffff", + "sapContent_ShadowColor": "#000000", + "sapContent_ContrastShadowColor": "#ffffff", + "sapContent_SearchHighlightColor": "#cc8700", + "sapContent_HelpColor": "#006500", + "sapContent_LabelColor": "#000000", + "sapContent_MonospaceFontFamily": "lucida console, monospace", + "sapContent_DisabledTextColor": "#666666", + "sapContent_DisabledOpacity": "0.5", + "sapContent_ContrastTextThreshold": "0.65", + "sapContent_ContrastTextColor": "#ffffff", + "sapContent_ForegroundColor": "#e5e5e5", + "sapContent_ForegroundBorderColor": "#000000", + "sapContent_ForegroundTextColor": "#000000", + "sapShell_Background": "#ffffff", + "sapShell_BackgroundImage": "#ffffff", + "sapShell_BackgroundGradient": "#ffffff", + "sapShell_BackgroundImageOpacity": "1", + "sapShell_BackgroundImageRepeat": "false", + "sapShell_BorderColor": "#666666", + "sapShell_TextColor": "#000000", + "sapShell_Favicon": "none", + "sapButton_BorderWidth": "1px", + "sapButton_BorderCornerRadius": "0", + "sapButton_Background": "#ffffff", + "sapButton_BorderColor": "#000000", + "sapButton_TextColor": "#000000", + "sapButton_Disabled_Background": "#ffffff", + "sapButton_Disabled_BorderColor": "#666666", + "sapButton_Disabled_TextColor": "#666666", + "sapButton_Hover_Background": "#cc8700", + "sapButton_Hover_BorderColor": "#000000", + "sapButton_Hover_TextColor": "#ffffff", + "sapButton_Emphasized_Background": "#ffffff", + "sapButton_Emphasized_BorderColor": "#000000", + "sapButton_Emphasized_TextColor": "#000000", + "sapButton_Reject_Background": "#ffffff", + "sapButton_Accept_Background": "#ffffff", + "sapField_Background": "#ffffff", + "sapField_BorderColor": "#000000", + "sapField_TextColor": "#000000", + "sapField_HelpBackground": "#ffffff", + "sapField_BorderWidth": "1px", + "sapField_BorderCornerRadius": "0", + "sapField_Hover_Background": "#ffffff", + "sapField_Hover_BorderColor": "#000000", + "sapField_Hover_HelpBackground": "#cc8700", + "sapField_Focus_Background": "#ffffff", + "sapField_Focus_BorderColor": "#000000", + "sapField_Focus_HelpBackground": "#ffffff", + "sapField_Disabled_Background": "#959595", + "sapField_Disabled_BorderColor": "#4f4f4f", + "sapField_Disabled_TextColor": "#666666", + "sapField_Disabled_HelpBackground": "#959595", + "sapField_ReadOnly_Background": "#959595", + "sapField_ReadOnly_BorderColor": "#4f4f4f", + "sapField_ReadOnly_HelpBackground": "#959595", + "sapField_RequiredColor": "#000000", + "sapField_InvalidColor": "#ffffff", + "sapField_InvalidBackground": "#cc8700", + "sapField_WarningColor": "#000000", + "sapField_WarningBackground": "#ffffff", + "sapField_SuccessColor": "#000000", + "sapField_SuccessBackground": "#ffffff", + "sapGroup_TitleBackground": "#ffffff", + "sapGroup_TitleBorderColor": "#000000", + "sapGroup_TitleTextColor": "#000000", + "sapGroup_Title_FontSize": "1em", + "sapGroup_ContentBackground": "#ffffff", + "sapGroup_ContentBorderColor": "#000000", + "sapGroup_BorderWidth": "1px", + "sapGroup_BorderCornerRadius": "0", + "sapGroup_FooterBackground": "#ffffff", + "sapToolbar_Background": "#ffffff", + "sapToolbar_SeparatorColor": "#000000", + "sapList_HeaderBackground": "#ffffff", + "sapList_HeaderBorderColor": "#000000", + "sapList_HeaderTextColor": "#000000", + "sapList_BorderColor": "#4f4f4f", + "sapList_BorderWidth": "1px", + "sapList_HighlightColor": "#cc8700", + "sapList_SelectionBackgroundColor": "#2e9cea", + "sapList_Background": "#ffffff", + "sapList_Hover_Background": "#cc8700", + "sapScrollBar_FaceColor": "#4f4f4f", + "sapScrollBar_TrackColor": "#ffffff", + "sapScrollBar_BorderColor": "#4f4f4f", + "sapScrollBar_SymbolColor": "#000000", + "sapScrollBar_Dimension": "16px", + "sapScrollBar_Hover_FaceColor": "#000000", + "sapPageHeader_Background": "#ffffff", + "sapPageHeader_BorderColor": "#000000", + "sapPageHeader_TextColor": "#000000", + "sapPageFooter_Background": "#ffffff", + "sapPageFooter_TextColor": "#000000", + "sapInfobar_Background": "#ffffff", + "sapObjectHeader_Background": "#ffffff", + "sapBlockLayer_Background": "#000000", + "sapTile_Background": "#ffffff", + "sapTile_BorderColor": "#000000", + "sapTile_TitleTextColor": "#000000", + "sapTile_TextColor": "#000000", + "sapTile_IconColor": "#000000", + "sapChart_OrderedColor_1": "#5cbae6", + "sapChart_OrderedColor_2": "#b6d957", + "sapChart_OrderedColor_3": "#fac364", + "sapChart_OrderedColor_4": "#8cd3ff", + "sapChart_OrderedColor_5": "#d998cb", + "sapChart_OrderedColor_6": "#f2d249", + "sapChart_OrderedColor_7": "#93b9c6", + "sapChart_OrderedColor_8": "#ccc5a8", + "sapChart_OrderedColor_9": "#52bacc", + "sapChart_OrderedColor_10": "#dbdb46", + "sapChart_OrderedColor_11": "#98aafb", + "sapChart_Bad": "#dc0d0e", + "sapChart_Critical": "#de890d", + "sapChart_Good": "#3fa45b", + "sapChart_Neutral": "#848f94", + "sapChart_Sequence_1": "#27a3dd", + "sapChart_Sequence_2": "#9dc62d", + "sapChart_Sequence_3": "#f8ac29", + "sapChart_Sequence_Neutral": "#848f94", + "sapUiBrand": "#000000", + "sapUiHighlight": "#cc8700", + "sapUiBaseColor": "#dddddd", + "sapUiShellColor": "#ffffff", + "sapUiBaseBG": "#ffffff", + "sapUiGlobalBackgroundColor": "#ffffff", + "sapUiBaseText": "#000000", + "sapUiLink": "#000000", + "sapUiGlobalLogo": "none", + "sapUiGlobalBackgroundImage": "none", + "sapUiBackgroundImage": "none", + "sapUiUx3ShellBackgroundImageURL": "none", + "sapUiGlobalBackgroundImageOpacity": "1", + "sapUiGlobalBackgroundRepeat": "false", + "sapUiSelected": "#2e9cea", + "sapUiActive": "#cc8700", + "sapUiHighlightTextColor": "#ffffff", + "sapUiTextTitle": "#000000", + "sapUiContentIconColor": "#000000", + "sapUiContentContrastIconColor": "#ffffff", + "sapUiContentNonInteractiveIconColor": "#000000", + "sapUiContentMarkerIconColor": "#000000", + "sapUiContentMarkerTextColor": "#000000", + "sapUiContentImagePlaceholderBackground": "#ffffff", + "sapUiContentImagePlaceholderForegroundColor": "#000000", + "sapUiContentFocusColor": "#000000", + "sapUiContentContrastFocusColor": "#ffffff", + "sapUiContentShadowColor": "#000000", + "sapUiContentContrastShadowColor": "#ffffff", + "sapUiContentSearchHighlightColor": "#cc8700", + "sapUiContentHelpColor": "#006500", + "sapUiContentLabelColor": "#000000", + "sapUiContentDisabledTextColor": "#666666", + "sapUiContentDisabledOpacity": "0.5", + "sapUiContentContrastTextThreshold": "0.65", + "sapUiContentContrastTextColor": "#ffffff", + "sapUiContentForegroundColor": "#e5e5e5", + "sapUiContentForegroundBorderColor": "#000000", + "sapUiContentForegroundTextColor": "#000000", + "sapUiShellBackground": "#ffffff", + "sapUiShellBackgroundImage": "#ffffff", + "sapUiShellBackgroundImageOpacity": "1", + "sapUiShellBackgroundImageRepeat": "false", + "sapUiShellBackgroundGradient": "#ffffff", + "sapUiShellBorderColor": "#666666", + "sapUiShellTextColor": "#000000", + "sapUiShellFavicon": "none", + "sapUiButtonBackground": "#ffffff", + "sapUiButtonBorderColor": "#000000", + "sapUiButtonTextColor": "#000000", + "sapUiButtonDisabledBackground": "#ffffff", + "sapUiButtonDisabledBorderColor": "#666666", + "sapUiButtonDisabledTextColor": "#666666", + "sapUiButtonHoverBackground": "#cc8700", + "sapUiButtonHoverBorderColor": "#000000", + "sapUiButtonHoverTextColor": "#ffffff", + "sapUiButtonEmphasizedBackground": "#ffffff", + "sapUiButtonEmphasizedBorderColor": "#000000", + "sapUiButtonEmphasizedTextColor": "#000000", + "sapUiButtonRejectBackground": "#ffffff", + "sapUiButtonAcceptBackground": "#ffffff", + "sapUiFieldBackground": "#ffffff", + "sapUiFieldBorderColor": "#000000", + "sapUiFieldTextColor": "#000000", + "sapUiFieldHelpBackground": "#ffffff", + "sapUiFieldHoverBackground": "#ffffff", + "sapUiFieldHoverBorderColor": "#000000", + "sapUiFieldHoverHelpBackground": "#cc8700", + "sapUiFieldFocusBackground": "#ffffff", + "sapUiFieldFocusBorderColor": "#000000", + "sapUiFieldFocusHelpBackground": "#ffffff", + "sapUiFieldReadOnlyBackground": "#959595", + "sapUiFieldReadOnlyBorderColor": "#4f4f4f", + "sapUiFieldReadOnlyHelpBackground": "#959595", + "sapUiFieldDisabledBackground": "#959595", + "sapUiFieldDisabledBorderColor": "#4f4f4f", + "sapUiFieldDisabledTextColor": "#666666", + "sapUiFieldDisabledHelpBackground": "#959595", + "sapUiFieldRequiredColor": "#000000", + "sapUiFieldInvalidColor": "#ffffff", + "sapUiFieldInvalidBackground": "#cc8700", + "sapUiFieldWarningColor": "#000000", + "sapUiFieldWarningBackground": "#ffffff", + "sapUiFieldSuccessColor": "#000000", + "sapUiFieldSuccessBackground": "#ffffff", + "sapUiGroupTitleBackground": "#ffffff", + "sapUiGroupTitleBorderColor": "#000000", + "sapUiGroupTitleTextColor": "#000000", + "sapUiGroupContentBackground": "#ffffff", + "sapUiGroupContentBorderColor": "#000000", + "sapUiGroupFooterBackground": "#ffffff", + "sapUiToolbarBackground": "#ffffff", + "sapUiToolbarSeparatorColor": "#000000", + "sapUiListHeaderBackground": "#ffffff", + "sapUiListHeaderBorderColor": "#000000", + "sapUiListHeaderTextColor": "#000000", + "sapUiListBorderColor": "#4f4f4f", + "sapUiListHighlightColor": "#cc8700", + "sapUiListSelectionBackgroundColor": "#2e9cea", + "sapUiListBackground": "#ffffff", + "sapUiListHoverBackground": "#cc8700", + "sapUiScrollBarFaceColor": "#4f4f4f", + "sapUiScrollBarTrackColor": "#ffffff", + "sapUiScrollBarBorderColor": "#4f4f4f", + "sapUiScrollBarSymbolColor": "#000000", + "sapUiScrollBarHoverFaceColor": "#000000", + "sapUiPageHeaderBackground": "#ffffff", + "sapUiPageHeaderBorderColor": "#000000", + "sapUiPageHeaderTextColor": "#d3d3d3", + "sapUiPageFooterBackground": "#ffffff", + "sapUiPageFooterTextColor": "#000000", + "sapUiInfobarBackground": "#ffffff", + "sapUiObjectHeaderBackground": "#ffffff", + "sapUiBlockLayerBackground": "#000000", + "sapUiTileBackground": "#ffffff", + "sapUiTileBorderColor": "#000000", + "sapUiTileTitleTextColor": "#000000", + "sapUiTileTextColor": "#000000", + "sapUiTileIconColor": "#000000", + "sapUiChart1": "#5cbae6", + "sapUiChart2": "#b6d957", + "sapUiChart3": "#fac364", + "sapUiChart4": "#8cd3ff", + "sapUiChart5": "#d998cb", + "sapUiChart6": "#f2d249", + "sapUiChart7": "#93b9c6", + "sapUiChart8": "#ccc5a8", + "sapUiChart9": "#52bacc", + "sapUiChart10": "#dbdb46", + "sapUiChart11": "#98aafb", + "sapUiChartBad": "#dc0d0e", + "sapUiChartCritical": "#de890d", + "sapUiChartGood": "#3fa45b", + "sapUiChartNeutral": "#848f94", + "sapUiChartSequence1": "#27a3dd", + "sapUiChartSequence2": "#9dc62d", + "sapUiChartSequence3": "#f8ac29", + "sapUiChartSequenceNeutral": "#848f94", + "sapUiAccent1": "#5f5800", + "sapUiAccent2": "#5e4101", + "sapUiAccent3": "#973333", + "sapUiAccent4": "#961d7c", + "sapUiAccent5": "#365892", + "sapUiAccent6": "#004ccb", + "sapUiAccent7": "#105b5b", + "sapUiAccent8": "#26340b", + "sapUiErrorBG": "#ff9a90", + "sapUiWarningBG": "#faf2b0", + "sapUiSuccessBG": "#e4f6e4", + "sapUiNeutralBG": "#ffffff", + "sapUiErrorBorder": "#ff0000", + "sapUiWarningBorder": "#ffff00", + "sapUiSuccessBorder": "#38a338", + "sapUiNeutralBorder": "#ffffff", + "sapUiNegativeElement": "#bb0000", + "sapUiCriticalElement": "#e78c07", + "sapUiPositiveElement": "#2b7d2b", + "sapUiNeutralElement": "#ffffff", + "sapUiNegativeText": "#ff0000", + "sapUiCriticalText": "#e78c07", + "sapUiPositiveText": "#b5e7a8", + "sapUiNeutralText": "#ffffff", + "sapUiNegative": "#bb0000", + "sapUiCritical": "#e78c07", + "sapUiPositive": "#2b7d2b", + "sapUiNeutral": "#ffffff", + "sapUiErrorColor": "#ee0000", + "sapUiWarningColor": "#f9a429", + "sapUiSuccessColor": "#38a338", + "sapUiFontFamily": "Arial, Helvetica, sans-serif", + "sapUiFontSize": "medium", + "sapUiFontCondensedFamily": "'Arial Narrow', HelveticaNeue-CondensedBold, Arial, sans-serif", + "sapUiFontHeaderFamily": "Arial, Helvetica, sans-serif", + "sapUiFontHeaderWeight": "normal", + "sapMFontHeader1Size": "1.625rem", + "sapMFontHeader2Size": "1.375rem", + "sapMFontHeader3Size": "1.25rem", + "sapMFontHeader4Size": "1.125rem", + "sapMFontHeader5Size": "1rem", + "sapMFontHeader6Size": "0.875rem", + "sapMFontSmallSize": "0.75rem", + "sapMFontMediumSize": "0.875rem", + "sapMFontLargeSize": "1rem", + "sapUiTranslucentBGOpacity": "80%", + "sapMPlatformDependent": "false", + "sapUiDesktopFontFamily": "Arial, Helvetica, sans-serif", + "sapUiDesktopFontSize": "12px", + "sapUiFontLargeSize": "13px", + "sapUiFontSmallSize": "11px", + "sapUiFontHeader1Size": "26px", + "sapUiFontHeader2Size": "20px", + "sapUiFontHeader3Size": "18px", + "sapUiFontHeader4Size": "16px", + "sapUiFontHeader5Size": "14px", + "sapUiFontHeader6Size": "13px", + "sapUiLineHeight": "18px", + "sapUiChartLabelHoverColor": "#cc8700", + "sapUiChartLabelPressedColor": "#d4d4d4", + "sapUiChartCategoryAxisLabelFontColor": "#000000", + "sapUiChartValueAxisLabelFontColor": "#3d3d3d", + "sapUiChartCategoryAxisLabelFontSize": "0.75rem", + "sapUiChartValueAxisLabelFontSize": "0.75rem", + "sapUiChartCategoryAxisLineColor": "#0d0d0d", + "sapUiChartValueAxisLineColor": "#0d0d0d", + "sapUiChartCategoryAxisTickColor": "#0d0d0d", + "sapUiChartValueAxisTickColor": "#0d0d0d", + "sapUiChartBackgroundColor": "transparent", + "sapUiChartLabelFontWeight": "normal", + "sapUiChartLegendLabelFontColor": "#000000", + "sapUiChartLegendTitleFontColor": "#000000", + "sapUiChartLegendTitleFontSize": "0.875rem", + "sapUiChartLegendLabelFontSize": "0.75rem", + "sapUiChartPaletteUndefinedColor": "#000000", + "sapUiChartGridlineColor": "#262626", + "sapUiChartReferenceLineColor": "#000000", + "sapUiChartDataLabelFontColor": "#000000", + "sapUiChartReferenceLineLabelColor": "#000000", + "sapUiChartDataLabelFontSize": "0.75rem", + "sapUiChartPopoverDataItemFontColor": "#000000", + "sapUiChartPopoverGroupFontColor": "#000000", + "sapUiChartPopoverDataItemFontSize": "0.875rem", + "sapUiChartPopoverGroupFontSize": "0.875rem", + "sapUiChartPopoverGroupFontWeight": "bold", + "sapUiChartScrollBarThumbColor": "#4f4f4f", + "sapUiChartScrollBarTrackColor": "#ffffff", + "sapUiChartScrollBarThumbHoverColor": "#000000", + "sapUiChartMainTitleFontColor": "#000000", + "sapUiChartAxisTitleFontColor": "#000000", + "sapUiChartMainTitleFontSize": "1rem", + "sapUiChartAxisTitleFontSize": "0.875rem", + "sapUiChartTitleFontWeight": "bold", + "sapUiChartLightText": "#3d3d3d", + "sapUiChartZeroAxisColor": "#000000", + "sapUiChartDataPointBorderColor": "#ffffff", + "sapUiChartDataPointBorderHoverSelectedColor": "#000000", + "sapUiChartDataPointNotSelectedBackgroundOpacity": "0.6", + "sapUiChartValueAxisLineOpacity": "0", + "sapUiChartCategoryAxisLabelFontHoverColor": "#000000", + "sapUiChartCategoryAxisLabelFontPressedColor": "#000000", + "sapUiChartTargetColor": "#000000", + "sapUiChartTargetShadowColor": "#ffffff", + "sapUiChartBubbleBGOpacity": "0.8", + "sapUiChartScrollbarBorderColor": "#8f8f8f", + "sapUiChartScrollbarBorderSize": "0", + "sapUiChartScrollbarThumbPadding": "0", + "sapUiChartNegativeLargeText": "#dc0d0e", + "sapUiChartCriticalLargeText": "#de890d", + "sapUiChartPositiveLargeText": "#3fa45b", + "sapUiChartNeutralLargeText": "#69767c", + "sapUiChartDataPointBG": "#d5dadc", + "sapUiChartDataPointBGBorderColor": "#d5dadc", + "sapUiChartDataLineColorWithBG": "#000000", + "sapUiChartDataLineColor": "#000000", + "sapUiChartRadialRemainingCircle": "#e3e6e7", + "sapUiChartRadialRemainingCircleBorderColor": "#e3e6e7", + "sapUiChartRadialBG": "#ffffff", + "sapUiChartPaletteQualitativeHue1": "#5cbae6", + "sapUiChartPaletteQualitativeHue2": "#b6d957", + "sapUiChartPaletteQualitativeHue3": "#fac364", + "sapUiChartPaletteQualitativeHue4": "#8cd3ff", + "sapUiChartPaletteQualitativeHue5": "#d998cb", + "sapUiChartPaletteQualitativeHue6": "#f2d249", + "sapUiChartPaletteQualitativeHue7": "#93b9c6", + "sapUiChartPaletteQualitativeHue8": "#ccc5a8", + "sapUiChartPaletteQualitativeHue9": "#52bacc", + "sapUiChartPaletteQualitativeHue10": "#dbdb46", + "sapUiChartPaletteQualitativeHue11": "#98aafb", + "sapUiChartPaletteSemanticBadLight3": "#f99494", + "sapUiChartPaletteSemanticBadLight2": "#f66364", + "sapUiChartPaletteSemanticBadLight1": "#f33334", + "sapUiChartPaletteSemanticBad": "#dc0d0e", + "sapUiChartPaletteSemanticBadDark1": "#b90c0d", + "sapUiChartPaletteSemanticBadDark2": "#930a0a", + "sapUiChartPaletteSemanticCriticalLight3": "#f8cc8c", + "sapUiChartPaletteSemanticCriticalLight2": "#f5b04d", + "sapUiChartPaletteSemanticCriticalLight1": "#f29b1d", + "sapUiChartPaletteSemanticCritical": "#de890d", + "sapUiChartPaletteSemanticCriticalDark1": "#c67a0c", + "sapUiChartPaletteSemanticCriticalDark2": "#a4650a", + "sapUiChartPaletteSemanticGoodLight3": "#a1dbb1", + "sapUiChartPaletteSemanticGoodLight2": "#71c989", + "sapUiChartPaletteSemanticGoodLight1": "#4cba6b", + "sapUiChartPaletteSemanticGood": "#3fa45b", + "sapUiChartPaletteSemanticGoodDark1": "#358a4d", + "sapUiChartPaletteSemanticGoodDark2": "#2a6d3c", + "sapUiChartPaletteSemanticNeutralLight3": "#d5dadc", + "sapUiChartPaletteSemanticNeutralLight2": "#bac1c4", + "sapUiChartPaletteSemanticNeutralLight1": "#9ea8ad", + "sapUiChartPaletteSemanticNeutral": "#848f94", + "sapUiChartPaletteSemanticNeutralDark1": "#69767c", + "sapUiChartPaletteSemanticNeutralDark2": "#596468", + "sapUiChartPaletteSequentialHue1Light3": "#abdbf2", + "sapUiChartPaletteSequentialHue1Light2": "#84caec", + "sapUiChartPaletteSequentialHue1Light1": "#5cbae5", + "sapUiChartPaletteSequentialHue1": "#27a3dd", + "sapUiChartPaletteSequentialHue1Dark1": "#1b7eac", + "sapUiChartPaletteSequentialHue1Dark2": "#156489", + "sapUiChartPaletteSequentialHue2Light3": "#d7eaa2", + "sapUiChartPaletteSequentialHue2Light2": "#c6e17d", + "sapUiChartPaletteSequentialHue2Light1": "#b6d957", + "sapUiChartPaletteSequentialHue2": "#9dc62d", + "sapUiChartPaletteSequentialHue2Dark1": "#759422", + "sapUiChartPaletteSequentialHue2Dark2": "#5b731a", + "sapUiChartPaletteSequentialHue3Light3": "#fde5bd", + "sapUiChartPaletteSequentialHue3Light2": "#fbd491", + "sapUiChartPaletteSequentialHue3Light1": "#fac364", + "sapUiChartPaletteSequentialHue3": "#f8ac29", + "sapUiChartPaletteSequentialHue3Dark1": "#dd8e07", + "sapUiChartPaletteSequentialHue3Dark2": "#b57506", + "sapUiChartPaletteSequentialNeutralLight3": "#d5dadc", + "sapUiChartPaletteSequentialNeutralLight2": "#bac1c4", + "sapUiChartPaletteSequentialNeutralLight1": "#9ea8ad", + "sapUiChartPaletteSequentialNeutral": "#848f94", + "sapUiChartPaletteSequentialNeutralDark1": "#69767c", + "sapUiChartPaletteSequentialNeutralDark2": "#596468", + "sapUiChoroplethBG": "#f7f7f8", + "sapUiChoroplethRegionBorder": "#404040", + "sapUiChoroplethRegionBG": "#bac1c4", + "sapUiMapLegendBG": "#ffffff", + "sapUiMapLegendBorderColor": "#0d0d0d", + "sapUiShellHoverBackground": "#000000", + "sapUiShellActiveBackground": "#000000", + "sapUiShellActiveTextColor": "#000000", + "sapUiShellHoverToggleBackground": "#2e9cea", + "sapUiShellContainerBackground": "#ffffff", + "sapUiShellAltContainerBackground": "#ffffff", + "sapUiUx3ShellHeaderColor": "#ffffff", + "sapUiUx3ShellBackgroundColor": "#ffffff", + "sapUiUx3ShellHoverColor": "#000000", + "sapUiUx3ShellGradientBottom": "#ffffff", + "sapUiUx3ShellGradientTop": "#fdfcf7", + "sapUiUx3ShellToolPaletteIconFontColor": "#8899aa", + "sapUiUx3ExactLstExpandOffset": "0 0", + "sapUiUx3ExactLstRootExpandOffset": "0 3", + "sapUiUx3ExactLstContentTop": "25px", + "sapUiLinkActive": "#000000", + "sapUiLinkVisited": "#000000", + "sapUiLinkHover": "#000000", + "sapUiLinkInverted": "#000000", + "sapUiNotificationBarBG": "rgba(128, 128, 128, 0.92)", + "sapUiNotifierSeparator": "#808080", + "sapUiNotifierSeparatorWidth": "2px", + "sapUiNotificationBarBorder": "rgba(128, 128, 128, 0.92)", + "sapUiUx3ToolPopupInverted": "true", + "sapUiUx3ToolPopupArrowRightMarginCorrection": "-2px", + "sapUiUx3ToolPopupShadow": "0px 6px 12px 0px rgba(0, 0, 0, 0.3)", + "sapUiCalloutShadow": "0px 6px 12px 0px rgba(0, 0, 0, 0.3)", + "sapUiButtonIconColor": "#000000", + "sapUiButtonActiveBackground": "#cc8700", + "sapUiButtonActiveBorderColor": "#cc8700", + "sapUiButtonActiveTextColor": "#ffffff", + "sapUiButtonEmphasizedHoverBackground": "#f2f2f2", + "sapUiButtonEmphasizedHoverBorderColor": "#f2f2f2", + "sapUiButtonEmphasizedActiveBackground": "#cc8700", + "sapUiButtonEmphasizedActiveBorderColor": "#cc8700", + "sapUiButtonEmphasizedTextShadow": "rgba(0, 0, 0, 0.5)", + "sapUiButtonAcceptBorderColor": "#2b7d2b", + "sapUiButtonAcceptHoverBackground": "#cc8700", + "sapUiButtonAcceptHoverBorderColor": "#2b7d2b", + "sapUiButtonAcceptActiveBackground": "#2b7d2b", + "sapUiButtonAcceptActiveBorderColor": "#2b7d2b", + "sapUiButtonAcceptTextColor": "#b5e7a8", + "sapUiButtonRejectBorderColor": "#bb0000", + "sapUiButtonRejectHoverBackground": "#cc8700", + "sapUiButtonRejectHoverBorderColor": "#bb0000", + "sapUiButtonRejectActiveBackground": "#bb0000", + "sapUiButtonRejectActiveBorderColor": "#bb0000", + "sapUiButtonRejectTextColor": "#ff0000", + "sapUiButtonLiteBackground": "rgba(0, 0, 0, 0)", + "sapUiButtonLiteBorderColor": "rgba(0, 0, 0, 0)", + "sapUiButtonLiteTextColor": "#000000", + "sapUiButtonLiteHoverBackground": "rgba(117, 78, 0, 0.5)", + "sapUiButtonLiteHoverBorderColor": "rgba(117, 78, 0, 0.5)", + "sapUiButtonLiteActiveBackground": "#cc8700", + "sapUiButtonLiteActiveBorderColor": "#cc8700", + "sapUiButtonHeaderTextColor": "#000000", + "sapUiButtonHeaderDisabledTextColor": "#000000", + "sapUiButtonFooterTextColor": "#000000", + "sapUiButtonFooterHoverBackground": "rgba(117, 78, 0, 0.5)", + "sapUiButtonActionSelectBackground": "#ffffff", + "sapUiButtonActionSelectBorderColor": "#4f4f4f", + "sapUiButtonLiteActionSelectHoverBackground": "#cc8700", + "sapUiToggleButtonPressedBackground": "#cc8700", + "sapUiToggleButtonPressedBorderColor": "#b37600", + "sapUiToggleButtonPressedTextColor": "#ffffff", + "sapUiToggleButtonPressedHoverBackground": "#b37600", + "sapUiToggleButtonPressedHoverBorderColor": "#b37600", + "sapUiSegmentedButtonBackground": "#ffffff", + "sapUiSegmentedButtonBorderColor": "#141414", + "sapUiSegmentedButtonTextColor": "#000000", + "sapUiSegmentedButtonHoverBackground": "#cc8700", + "sapUiSegmentedButtonActiveBackground": "#cc8700", + "sapUiSegmentedButtonActiveTextColor": "#ffffff", + "sapUiSegmentedButtonSelectedBackground": "#cc8700", + "sapUiSegmentedButtonSelectedTextColor": "#ffffff", + "sapUiSegmentedButtonSelectedHoverBackground": "#b37600", + "sapUiSegmentedButtonSelectedHoverBorderColor": "#b37600", + "sapUiSegmentedButtonIconColor": "#000000", + "sapUiSegmentedButtonActiveIconColor": "#ffffff", + "sapUiSegmentedButtonSelectedIconColor": "#ffffff", + "sapUiSegmentedButtonFooterBorderColor": "#141414", + "sapUiSegmentedButtonFooterHoverBackground": "#cc8700", + "sapUiFieldActiveBackground": "#cc8700", + "sapUiFieldActiveBorderColor": "#cc8700", + "sapUiFieldActiveTextColor": "#ffffff", + "sapUiFieldPlaceholderTextColor": "#707070", + "sapUiListTextColor": "#333333", + "sapUiListVerticalBorderColor": "#474747", + "sapUiListActiveBackground": "#cc8700", + "sapUiListActiveTextColor": "#ffffff", + "sapUiListSelectionHoverBackground": "#2095e9", + "sapUiListFooterBackground": "#ffffff", + "sapUiListFooterTextColor": "#000000", + "sapUiListGroupHeaderBackground": "#ffffff", + "sapUiListTableGroupHeaderBackground": "#f2f2f2", + "sapUiListTableGroupHeaderBorderColor": "#363636", + "sapUiListTableGroupHeaderTextColor": "#333333", + "sapUiListTableFooterBorder": "#363636", + "sapUiListTableFixedBorder": "#030303", + "sapUiListTableTextSize": "0.875rem", + "sapUiListTableIconSize": "1rem", + "sapUiPageFooterBorderColor": "#ebebeb", + "sapUiInfobarHoverBackground": "#ebebeb", + "sapUiInfobarActiveBackground": "#d9d9d9", + "sapUiObjectHeaderBorderColor": "#ebebeb", + "sapUiCalendarColorToday": "#000000", + "sapUiDragAndDropColor": "#000000", + "sapUiDragAndDropBackground": "#ffffff", + "sapUiDragAndDropBorderColor": "#000000", + "sapUiDragAndDropActiveColor": "#006500", + "sapUiDragAndDropActiveBackground": "#ffffff", + "sapUiDragAndDropActiveBorderColor": "#006500", + "sapUiShadowLevel0": "0 0 0 1px #000000", + "sapUiShadowLevel1": "0 0.125rem 1rem 0 rgba(255, 255, 255, 0.4), 0 0 0 2px #000000", + "sapUiShadowLevel2": "0 0.625rem 2rem 0 rgba(255, 255, 255, 0.5), 0 0 0 2px #000000", + "sapUiShadowLevel3": "0 1.25rem 4rem 0 rgba(255, 255, 255, 0.7), 0 0 0 2px #000000", + "sapUiShadowText": "none", + "sapUiShadowHeader": "inset 0 -0.125rem #ebebeb", + "sapUiUx3ShellHeaderImageURL": "", + "sapUiUx3ShellApplicationImageURL": "none", + "sapUiPurple": "#800080", + "sapUiOrange": "#ffa500", + "sapUiGreen": "#008000", + "sapUiBlue": "#0000ff", + "sapUiRed": "#ff0000", + "sapUiYellow": "#ffff00", + "sapUiBase": "#000000", + "sapUiBaseBorder": "#000000", + "sapUiBaseLine": "#000000", + "sapUiWhite": "#ffffff", + "sapUiWhiteBG": "#ffffff", + "sapUiExtraLightBG": "#ffffff", + "sapUiLightBG": "#d3d3d3", + "sapUiMediumBG": "#808080", + "sapUiDarkBG": "#a9a9a9", + "sapUiDeepBG": "#000000", + "sapUiBlackBG": "#000000", + "sapUiHoverBG": "#808080", + "sapUiMediumAltBG": "#808080", + "sapUiDarkAltBG": "#a9a9a9", + "sapUiButtonStandardBG": "#ffffff", + "sapUiButtonEmphasizedBG": "#ffff00", + "sapUiButtonNegativeBG": "#ff0000", + "sapUiButtonPositiveBG": "#008000", + "sapUiReadOnlyBG": "#808080", + "sapUiExtraLightText": "#d3d3d3", + "sapUiLightText": "#d3d3d3", + "sapUiMediumText": "#808080", + "sapUiDarkText": "#a9a9a9", + "sapUiDeepText": "#000000", + "sapUiText": "#000000", + "sapUiTextInverted": "#ffffff", + "sapUiWhiteBorder": "#ffffff", + "sapUiExtraLightBorder": "#d3d3d3", + "sapUiLightBorder": "#808080", + "sapUiMediumBorder": "#000000", + "sapUiDarkBorder": "#000000", + "sapUiBlackBorder": "#000000", + "sapUiElement": "#d3d3d3", + "sapUiInvertedElement": "#ffffff", + "sapUiLightLine": "#d3d3d3", + "sapUiMediumLine": "#808080", + "sapUiEmphasizedLine": "#cc8700", + "sapUiDarkLine": "#a9a9a9", + "sapUiLightShadowTint": "#ffffff", + "sapUiDarkShadowTint": "#000000", + "sapUiFocus": "#000000", + "sapUiInvertedFocus": "#ffffff", + "sapUiTableRowBG": "#ffffff", + "sapUiTableRowAlternatingBG": "#ffffff", + "sapUiTableRowSelectionBG": "#cc8700", + "sapUiTableRowSelectionReadOnlyBG": "#cc8700", + "sapUiTableRowHoverBG": "#808080", + "sapUiListBG": "#f7f7f7", + "sapUiTextColor": "#008000", + "sapUiTextTitleColor": "#008000", + "sapUiTextSelectionColor": "#008000", + "sapUiTextDisabled": "#999999", + "sapUiTextSelection": "#ffffff", + "sapUiTextfieldBackground": "#ffffff", + "sapUiFontMonospaceFamily": "Lucida Console", + "sapUiUx3ShellSideBarBaseWidth": "40px", + "sapUiUx3ShellPaneOverflowButtonHeight": "120px", + "sapUiUx3ExactLstCollapseWidth": "24px", + "sapUiUx3ExactLstHeaderHeight": "25px", + "sapUiNotificationBarBG_IE": "#808080", + "sapUiNotifierHoverColor": "#cc8700", + "sapUiNotificationText": "#000000", + "sapUiNotificationTimestamp": "#545454", + "sapUiNotificationBarCalloutBorder": "rgba(128, 128, 128, 0)", + "sapUiNotificationBarCalloutBorder_IE": "#808080", + "sapUiNotificationBarCalloutArr": "rgba(128, 128, 128, 0.92)", + "sapUiNotificationBarHeight": "40px", + "sapUiNotificationBarHeightMinimized": "0px", + "sapUiNotificationBarHeightMaximized": "40%", + "sapUiNotifierWidth": "40px", + "sapUiRIIconPaddingXS": "1px", + "sapUiRIIconPaddingS": "0.125rem", + "sapUiRIIconPaddingM": "0.1875rem", + "sapUiRIIconPaddingL": "0.25rem", + "sapUiRIIconPaddingCozy": "0.1875rem", + "sapUiRIIconPaddingCompact": "0.125rem", + "sapUiRIIconPaddingCondensed": "0.125rem", + "sapUiRIIconPaddingDisplayOnly": "0.125rem", + "sapUiRIIconSizeCozy": "1.375rem", + "sapUiRIIconSizeCompact": "1rem", + "sapUiRIIconSizeCondensed": "1rem", + "sapUiRIIconSizeDisplayOnly": "1rem", + "sapUiUx3ToolPopupArrowWidth": "13px", + "sapUiUx3ToolPopupArrowHeight": "24px", + "sapUiUx3ToolPopupArrowRightMarginCorrectionInverted": "-7px", + "sapUiUx3TPPaddingBottom": "50px", + "sapUiButtonEmphasizedDisabledBorderColor": "#000000", + "sapUiButtonEmphasizedDisabledBackground": "#ffffff", + "sapUiButtonAcceptDisabledBorderColor": "#2b7d2b", + "sapUiButtonAcceptDisabledBackground": "#ffffff", + "sapUiButtonRejectDisabledBorderColor": "#bb0000", + "sapUiButtonRejectDisabledBackground": "#ffffff", + "sapUiToggleButtonPressedDisabledBackground": "#cc8700", + "sapUiToggleButtonPressedDisabledBorderColor": "#b37600", + "sapUiToggleButtonPressedDisabledTextColor": "#bfbfbf", + "sapUiPositiveBG": "#b5e7a8", + "sapUiShadowTint": "#000000", + "sapUiShadow": "5px 5px 10px rgba(0, 0, 0, 0.5)", + "sapUiThemeDesignerCustomCss": "false", + "sapUiMarginTiny": "0.5rem", + "sapUiMarginSmall": "1rem", + "sapUiMarginMedium": "2rem", + "sapUiMarginLarge": "3rem", + "sapUiEscapedEmptyString": "", + "sapUiLightBoxMagnifyingGlassBorder": "none", + "sapUiLightBoxMagnifyingGlassBackgroundColor": "#000000", + "_sap_ui_rta_Overlay_ActiveBG": "rgba(46, 156, 234, 0.1)", + "_sap_ui_rta_Overlay_BaseBG": "#ffffff", + "_sap_ui_rta_Overlay_Border": "#2e9cea", + "_sap_ui_rta_Overlay_HoverBG": "rgba(0, 0, 0, 0.10800000000000001)", + "_sap_ui_rta_Overlay_ActiveHoverBG": "rgba(46, 156, 234, 0.2)" +} \ No newline at end of file diff --git a/resources/sap/ui/rta/themes/base/library.css b/resources/sap/ui/rta/themes/base/library.css new file mode 100644 index 0000000..956861f --- /dev/null +++ b/resources/sap/ui/rta/themes/base/library.css @@ -0,0 +1,317 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +/* =========================== */ +/* Global CSS for 'base' theme */ +/* =========================== */ +/** + Toolbar + */ +.sapUiRtaToolbar.sapMTB { + position: absolute; + top: 0; + left: 0; + right: 0; + padding: 0 20px; + height: 46px; + /* Overrider `.sapUiSizeCompact .sapMTB` */ + border-bottom: none; + /* Override `.sapMTB` */ +} +.sapUiRtaToolbar.sapMTB > :last-child { + margin-right: 0; + /* Override `.sapMIBar.sapMTB .sapMBarChild` */ +} +.sapUiRtaToolbar.sapMTB > :first-child { + margin-left: 0; + /* Override `.sapMIBar .sapMBarChild:first-child` */ +} +/** + This class is being assigned to the original Fiori Header Toolbar when RTA Toolbar shows + */ +.sapUiRtaFioriHeaderInvisible { + visibility: hidden; +} +/* type: fiori */ +.sapUiRtaToolbar.type_fiori { + transition: opacity 0.25s ease-out; + opacity: 0; +} +.sapUiRtaToolbar.type_fiori.is_visible { + opacity: 1; +} +/* color: default */ +/* color: contrast */ +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled { + opacity: 0.3; +} +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default { + background-color: #000; + top: -50px; + transition: top 0.25s ease-out; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: #666; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn:focus .sapMFocusable { + outline-color: #fff; + /* Override of `html.sap-desktop .sapMBtn:focus > .sapMFocusable` */ +} +.sapUiRtaToolbar.type_standalone.color_default.is_visible { + top: 0; +} +.sapUiRtaToolbar.type_personalization { + top: auto; + top: initial; + bottom: 0; + background-color: #2f3c48; + border-radius: 0.25rem; + padding: 0 1rem; + margin: 0.5rem; + opacity: 0.9; +} +.sapUiRtaToolbar.type_personalization.sapUiRtaHideToolbar { + visibility: hidden; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner { + border: none; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner .sapMBtnContent { + color: #ffffff; + text-shadow: 0 0 0.125rem #000000; +} +/****************************************************************** + Style of the RTA FieldRepository +*******************************************************************/ +.sap-desktop.sapUiBLyBackOverride { + overflow: auto!important; +} +.sapUIRtaFieldRepositoryDialog .sapMDialogTitle { + font-size: 16px; + font-weight: bold; +} +.sapUIRtaFieldRepositoryDialog .sapUiTable > div.sapUiTableCnt { + border-left: 0px; + border-right: 0px; +} +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter { + height: 60px; +} +/* Sort Button */ +.sapUIRtaFieldRepositoryDialog .sapMBtn > .sapMBtnInner { + border: none; + background: transparent; +} +/* Footer Button */ +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter .sapMBtnInner { + background-color: transparent; + background: none; + border: none; + text-shadow: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapMSFF { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiLbl { + margin-left: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapMIBar > .sapMBarChild:last-child { + margin-right: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapUiLblIco { + font-size: 1.2rem; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaValueCell { + height: 18px; + width: 300px; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaCCDialogScrollContainer { + height: 400px !important; + width: 100% !important; +} +.sapUIRtaFieldRepositoryDialog .sapMList .sapMListUl .sapMCLI { + padding-left: 10px; +} +/****************************************************************** + Style of the RTA Overlays +*******************************************************************/ +.sapUiRtaRoot .sapUiRtaMarginBottom { + margin-bottom: 40px; +} +.sapUiRtaRoot .sapUiRtaPaddingTop { + padding-top: 40px; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick { + text-align: center; + vertical-align: middle; + height: 1.5rem; + width: 1.5rem; + position: absolute; + top: 10px; + right: 10px; + z-index: 1; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter { + display: inline-block; + box-sizing: border-box; + text-align: center; + border-radius: 50%; + border: 0.125rem solid #ffffff; + cursor: pointer; + z-index: 1; + opacity: 1; + width: 1.5rem; + height: 1.5rem; + background-color: #2e9cea; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter .sapUiIcon { + color: #ffffff; + font-size: 0.69rem; + line-height: 1.25rem; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete.sapUiRtaOverlayPlaceholder .sapUiRtaPersDeleteClick { + display: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter { + position: absolute; + text-align: center; + width: 100%; + height: 40px; + cursor: default; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn { + color: #2e9cea; + height: 100%; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner { + border: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd > .sapUiRtaPersAddIconOuter { + bottom: -40px; + top: auto; +} +.sapUiRta .sapUiRtaOverlayHover { + -webkit-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -moz-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -o-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); +} +.sapUiRta .sapUiRtaOverlayHover:after { + content: " "; + border: 1px dotted #2e9cea; +} +.sapUiRta .sapUiDtOverlayFocusable:focus:before { + right: 0; + top: 0; + left: 0; + bottom: 0; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayWithScrollBar:after { + bottom: 0; + right: 0; + top: 0; + left: 0; + width: auto; + width: initial; + height: auto; + height: initial; +} +.sapUiRta .sapUiDtOverlaySelected:after { + border: 2px solid #2e9cea; +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable:focus:before { + top: 2px; + left: 2px; + bottom: 2px; + right: 2px; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlayTargetZone:after { + border: 1px dashed #2e9cea; +} +.sapUiRta .sapUiDtOverlayTargetZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + border: none; +} +.sapUiRta .sapUiDtOverlayTargetZone.sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: transparent; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable { + background: rgba(46, 156, 234, 0.1); +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: #ffffff !important; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:focus:before { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder * { + background: #ffffff; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:focus:before { + content: none; +} +.sapUiRta .sapUiRtaEditableField { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.sapUiRta .sapUiDtDragGhost { + background: rgba(46, 156, 234, 0.1); +} +.sapUiRtaDialogEntryWithMargin { + margin: 6px 0; +} + +/* Inline theming parameters */ +#sap-ui-theme-sap\.ui\.rta { background-image: url('data:text/plain;utf-8,%7B%22sapBrandColor%22:%22#000000%22,%22sapHighlightColor%22:%22#cc8700%22,%22sapBaseColor%22:%22#dddddd%22,%22sapShellColor%22:%22#ffffff%22,%22sapBackgroundColor%22:%22#ffffff%22,%22sapFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapFontSize%22:%220.75em%22,%22sapTextColor%22:%22#000000%22,%22sapLinkColor%22:%22#000000%22,%22sapCompanyLogo%22:%22none%22,%22sapBackgroundImage%22:%22none%22,%22sapBackgroundImageOpacity%22:%221%22,%22sapBackgroundImageRepeat%22:%22false%22,%22sapSelectedColor%22:%22#2e9cea%22,%22sapActiveColor%22:%22#cc8700%22,%22sapHighlightTextColor%22:%22#ffffff%22,%22sapTitleColor%22:%22#000000%22,%22sapNegativeColor%22:%22#bb0000%22,%22sapCriticalColor%22:%22#e78c07%22,%22sapPositiveColor%22:%22#2b7d2b%22,%22sapNeutralColor%22:%22#ffffff%22,%22sapNegativeElementColor%22:%22#bb0000%22,%22sapCriticalElementColor%22:%22#e78c07%22,%22sapPositiveElementColor%22:%22#2b7d2b%22,%22sapNeutralElementColor%22:%22#ffffff%22,%22sapContent_LineHeight%22:%221.3%22,%22sapContent_ElementHeight%22:%221.37em%22,%22sapContent_ElementHeight_PX%22:%2222px%22,%22sapContent_IconHeight%22:%2216px%22,%22sapContent_IconColor%22:%22#000000%22,%22sapContent_ContrastIconColor%22:%22#ffffff%22,%22sapContent_NonInteractiveIconColor%22:%22#000000%22,%22sapContent_MarkerIconColor%22:%22#000000%22,%22sapContent_FocusColor%22:%22#000000%22,%22sapContent_ContrastFocusColor%22:%22#ffffff%22,%22sapContent_ShadowColor%22:%22#000000%22,%22sapContent_ContrastShadowColor%22:%22#ffffff%22,%22sapContent_SearchHighlightColor%22:%22#cc8700%22,%22sapContent_HelpColor%22:%22#006500%22,%22sapContent_LabelColor%22:%22#000000%22,%22sapContent_MonospaceFontFamily%22:%22lucida console, monospace%22,%22sapContent_DisabledTextColor%22:%22#666666%22,%22sapContent_DisabledOpacity%22:%220.5%22,%22sapContent_ContrastTextThreshold%22:%220.65%22,%22sapContent_ContrastTextColor%22:%22#ffffff%22,%22sapContent_ForegroundColor%22:%22#e5e5e5%22,%22sapContent_ForegroundBorderColor%22:%22#000000%22,%22sapContent_ForegroundTextColor%22:%22#000000%22,%22sapShell_Background%22:%22#ffffff%22,%22sapShell_BackgroundImage%22:%22#ffffff%22,%22sapShell_BackgroundGradient%22:%22#ffffff%22,%22sapShell_BackgroundImageOpacity%22:%221%22,%22sapShell_BackgroundImageRepeat%22:%22false%22,%22sapShell_BorderColor%22:%22#666666%22,%22sapShell_TextColor%22:%22#000000%22,%22sapShell_Favicon%22:%22none%22,%22sapButton_BorderWidth%22:%221px%22,%22sapButton_BorderCornerRadius%22:%220%22,%22sapButton_Background%22:%22#ffffff%22,%22sapButton_BorderColor%22:%22#000000%22,%22sapButton_TextColor%22:%22#000000%22,%22sapButton_Disabled_Background%22:%22#ffffff%22,%22sapButton_Disabled_BorderColor%22:%22#666666%22,%22sapButton_Disabled_TextColor%22:%22#666666%22,%22sapButton_Hover_Background%22:%22#cc8700%22,%22sapButton_Hover_BorderColor%22:%22#000000%22,%22sapButton_Hover_TextColor%22:%22#ffffff%22,%22sapButton_Emphasized_Background%22:%22#ffffff%22,%22sapButton_Emphasized_BorderColor%22:%22#000000%22,%22sapButton_Emphasized_TextColor%22:%22#000000%22,%22sapButton_Reject_Background%22:%22#ffffff%22,%22sapButton_Accept_Background%22:%22#ffffff%22,%22sapField_Background%22:%22#ffffff%22,%22sapField_BorderColor%22:%22#000000%22,%22sapField_TextColor%22:%22#000000%22,%22sapField_HelpBackground%22:%22#ffffff%22,%22sapField_BorderWidth%22:%221px%22,%22sapField_BorderCornerRadius%22:%220%22,%22sapField_Hover_Background%22:%22#ffffff%22,%22sapField_Hover_BorderColor%22:%22#000000%22,%22sapField_Hover_HelpBackground%22:%22#cc8700%22,%22sapField_Focus_Background%22:%22#ffffff%22,%22sapField_Focus_BorderColor%22:%22#000000%22,%22sapField_Focus_HelpBackground%22:%22#ffffff%22,%22sapField_Disabled_Background%22:%22#959595%22,%22sapField_Disabled_BorderColor%22:%22#4f4f4f%22,%22sapField_Disabled_TextColor%22:%22#666666%22,%22sapField_Disabled_HelpBackground%22:%22#959595%22,%22sapField_ReadOnly_Background%22:%22#959595%22,%22sapField_ReadOnly_BorderColor%22:%22#4f4f4f%22,%22sapField_ReadOnly_HelpBackground%22:%22#959595%22,%22sapField_RequiredColor%22:%22#000000%22,%22sapField_InvalidColor%22:%22#ffffff%22,%22sapField_InvalidBackground%22:%22#cc8700%22,%22sapField_WarningColor%22:%22#000000%22,%22sapField_WarningBackground%22:%22#ffffff%22,%22sapField_SuccessColor%22:%22#000000%22,%22sapField_SuccessBackground%22:%22#ffffff%22,%22sapGroup_TitleBackground%22:%22#ffffff%22,%22sapGroup_TitleBorderColor%22:%22#000000%22,%22sapGroup_TitleTextColor%22:%22#000000%22,%22sapGroup_Title_FontSize%22:%221em%22,%22sapGroup_ContentBackground%22:%22#ffffff%22,%22sapGroup_ContentBorderColor%22:%22#000000%22,%22sapGroup_BorderWidth%22:%221px%22,%22sapGroup_BorderCornerRadius%22:%220%22,%22sapGroup_FooterBackground%22:%22#ffffff%22,%22sapToolbar_Background%22:%22#ffffff%22,%22sapToolbar_SeparatorColor%22:%22#000000%22,%22sapList_HeaderBackground%22:%22#ffffff%22,%22sapList_HeaderBorderColor%22:%22#000000%22,%22sapList_HeaderTextColor%22:%22#000000%22,%22sapList_BorderColor%22:%22#4f4f4f%22,%22sapList_BorderWidth%22:%221px%22,%22sapList_HighlightColor%22:%22#cc8700%22,%22sapList_SelectionBackgroundColor%22:%22#2e9cea%22,%22sapList_Background%22:%22#ffffff%22,%22sapList_Hover_Background%22:%22#cc8700%22,%22sapScrollBar_FaceColor%22:%22#4f4f4f%22,%22sapScrollBar_TrackColor%22:%22#ffffff%22,%22sapScrollBar_BorderColor%22:%22#4f4f4f%22,%22sapScrollBar_SymbolColor%22:%22#000000%22,%22sapScrollBar_Dimension%22:%2216px%22,%22sapScrollBar_Hover_FaceColor%22:%22#000000%22,%22sapPageHeader_Background%22:%22#ffffff%22,%22sapPageHeader_BorderColor%22:%22#000000%22,%22sapPageHeader_TextColor%22:%22#000000%22,%22sapPageFooter_Background%22:%22#ffffff%22,%22sapPageFooter_TextColor%22:%22#000000%22,%22sapInfobar_Background%22:%22#ffffff%22,%22sapObjectHeader_Background%22:%22#ffffff%22,%22sapBlockLayer_Background%22:%22#000000%22,%22sapTile_Background%22:%22#ffffff%22,%22sapTile_BorderColor%22:%22#000000%22,%22sapTile_TitleTextColor%22:%22#000000%22,%22sapTile_TextColor%22:%22#000000%22,%22sapTile_IconColor%22:%22#000000%22,%22sapChart_OrderedColor_1%22:%22#5cbae6%22,%22sapChart_OrderedColor_2%22:%22#b6d957%22,%22sapChart_OrderedColor_3%22:%22#fac364%22,%22sapChart_OrderedColor_4%22:%22#8cd3ff%22,%22sapChart_OrderedColor_5%22:%22#d998cb%22,%22sapChart_OrderedColor_6%22:%22#f2d249%22,%22sapChart_OrderedColor_7%22:%22#93b9c6%22,%22sapChart_OrderedColor_8%22:%22#ccc5a8%22,%22sapChart_OrderedColor_9%22:%22#52bacc%22,%22sapChart_OrderedColor_10%22:%22#dbdb46%22,%22sapChart_OrderedColor_11%22:%22#98aafb%22,%22sapChart_Bad%22:%22#dc0d0e%22,%22sapChart_Critical%22:%22#de890d%22,%22sapChart_Good%22:%22#3fa45b%22,%22sapChart_Neutral%22:%22#848f94%22,%22sapChart_Sequence_1%22:%22#27a3dd%22,%22sapChart_Sequence_2%22:%22#9dc62d%22,%22sapChart_Sequence_3%22:%22#f8ac29%22,%22sapChart_Sequence_Neutral%22:%22#848f94%22,%22sapUiBrand%22:%22#000000%22,%22sapUiHighlight%22:%22#cc8700%22,%22sapUiBaseColor%22:%22#dddddd%22,%22sapUiShellColor%22:%22#ffffff%22,%22sapUiBaseBG%22:%22#ffffff%22,%22sapUiGlobalBackgroundColor%22:%22#ffffff%22,%22sapUiBaseText%22:%22#000000%22,%22sapUiLink%22:%22#000000%22,%22sapUiGlobalLogo%22:%22none%22,%22sapUiGlobalBackgroundImage%22:%22none%22,%22sapUiBackgroundImage%22:%22none%22,%22sapUiUx3ShellBackgroundImageURL%22:%22none%22,%22sapUiGlobalBackgroundImageOpacity%22:%221%22,%22sapUiGlobalBackgroundRepeat%22:%22false%22,%22sapUiSelected%22:%22#2e9cea%22,%22sapUiActive%22:%22#cc8700%22,%22sapUiHighlightTextColor%22:%22#ffffff%22,%22sapUiTextTitle%22:%22#000000%22,%22sapUiContentIconColor%22:%22#000000%22,%22sapUiContentContrastIconColor%22:%22#ffffff%22,%22sapUiContentNonInteractiveIconColor%22:%22#000000%22,%22sapUiContentMarkerIconColor%22:%22#000000%22,%22sapUiContentMarkerTextColor%22:%22#000000%22,%22sapUiContentImagePlaceholderBackground%22:%22#ffffff%22,%22sapUiContentImagePlaceholderForegroundColor%22:%22#000000%22,%22sapUiContentFocusColor%22:%22#000000%22,%22sapUiContentContrastFocusColor%22:%22#ffffff%22,%22sapUiContentShadowColor%22:%22#000000%22,%22sapUiContentContrastShadowColor%22:%22#ffffff%22,%22sapUiContentSearchHighlightColor%22:%22#cc8700%22,%22sapUiContentHelpColor%22:%22#006500%22,%22sapUiContentLabelColor%22:%22#000000%22,%22sapUiContentDisabledTextColor%22:%22#666666%22,%22sapUiContentDisabledOpacity%22:%220.5%22,%22sapUiContentContrastTextThreshold%22:%220.65%22,%22sapUiContentContrastTextColor%22:%22#ffffff%22,%22sapUiContentForegroundColor%22:%22#e5e5e5%22,%22sapUiContentForegroundBorderColor%22:%22#000000%22,%22sapUiContentForegroundTextColor%22:%22#000000%22,%22sapUiShellBackground%22:%22#ffffff%22,%22sapUiShellBackgroundImage%22:%22#ffffff%22,%22sapUiShellBackgroundImageOpacity%22:%221%22,%22sapUiShellBackgroundImageRepeat%22:%22false%22,%22sapUiShellBackgroundGradient%22:%22#ffffff%22,%22sapUiShellBorderColor%22:%22#666666%22,%22sapUiShellTextColor%22:%22#000000%22,%22sapUiShellFavicon%22:%22none%22,%22sapUiButtonBackground%22:%22#ffffff%22,%22sapUiButtonBorderColor%22:%22#000000%22,%22sapUiButtonTextColor%22:%22#000000%22,%22sapUiButtonDisabledBackground%22:%22#ffffff%22,%22sapUiButtonDisabledBorderColor%22:%22#666666%22,%22sapUiButtonDisabledTextColor%22:%22#666666%22,%22sapUiButtonHoverBackground%22:%22#cc8700%22,%22sapUiButtonHoverBorderColor%22:%22#000000%22,%22sapUiButtonHoverTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedBackground%22:%22#ffffff%22,%22sapUiButtonEmphasizedBorderColor%22:%22#000000%22,%22sapUiButtonEmphasizedTextColor%22:%22#000000%22,%22sapUiButtonRejectBackground%22:%22#ffffff%22,%22sapUiButtonAcceptBackground%22:%22#ffffff%22,%22sapUiFieldBackground%22:%22#ffffff%22,%22sapUiFieldBorderColor%22:%22#000000%22,%22sapUiFieldTextColor%22:%22#000000%22,%22sapUiFieldHelpBackground%22:%22#ffffff%22,%22sapUiFieldHoverBackground%22:%22#ffffff%22,%22sapUiFieldHoverBorderColor%22:%22#000000%22,%22sapUiFieldHoverHelpBackground%22:%22#cc8700%22,%22sapUiFieldFocusBackground%22:%22#ffffff%22,%22sapUiFieldFocusBorderColor%22:%22#000000%22,%22sapUiFieldFocusHelpBackground%22:%22#ffffff%22,%22sapUiFieldReadOnlyBackground%22:%22#959595%22,%22sapUiFieldReadOnlyBorderColor%22:%22#4f4f4f%22,%22sapUiFieldReadOnlyHelpBackground%22:%22#959595%22,%22sapUiFieldDisabledBackground%22:%22#959595%22,%22sapUiFieldDisabledBorderColor%22:%22#4f4f4f%22,%22sapUiFieldDisabledTextColor%22:%22#666666%22,%22sapUiFieldDisabledHelpBackground%22:%22#959595%22,%22sapUiFieldRequiredColor%22:%22#000000%22,%22sapUiFieldInvalidColor%22:%22#ffffff%22,%22sapUiFieldInvalidBackground%22:%22#cc8700%22,%22sapUiFieldWarningColor%22:%22#000000%22,%22sapUiFieldWarningBackground%22:%22#ffffff%22,%22sapUiFieldSuccessColor%22:%22#000000%22,%22sapUiFieldSuccessBackground%22:%22#ffffff%22,%22sapUiGroupTitleBackground%22:%22#ffffff%22,%22sapUiGroupTitleBorderColor%22:%22#000000%22,%22sapUiGroupTitleTextColor%22:%22#000000%22,%22sapUiGroupContentBackground%22:%22#ffffff%22,%22sapUiGroupContentBorderColor%22:%22#000000%22,%22sapUiGroupFooterBackground%22:%22#ffffff%22,%22sapUiToolbarBackground%22:%22#ffffff%22,%22sapUiToolbarSeparatorColor%22:%22#000000%22,%22sapUiListHeaderBackground%22:%22#ffffff%22,%22sapUiListHeaderBorderColor%22:%22#000000%22,%22sapUiListHeaderTextColor%22:%22#000000%22,%22sapUiListBorderColor%22:%22#4f4f4f%22,%22sapUiListHighlightColor%22:%22#cc8700%22,%22sapUiListSelectionBackgroundColor%22:%22#2e9cea%22,%22sapUiListBackground%22:%22#ffffff%22,%22sapUiListHoverBackground%22:%22#cc8700%22,%22sapUiScrollBarFaceColor%22:%22#4f4f4f%22,%22sapUiScrollBarTrackColor%22:%22#ffffff%22,%22sapUiScrollBarBorderColor%22:%22#4f4f4f%22,%22sapUiScrollBarSymbolColor%22:%22#000000%22,%22sapUiScrollBarHoverFaceColor%22:%22#000000%22,%22sapUiPageHeaderBackground%22:%22#ffffff%22,%22sapUiPageHeaderBorderColor%22:%22#000000%22,%22sapUiPageHeaderTextColor%22:%22#d3d3d3%22,%22sapUiPageFooterBackground%22:%22#ffffff%22,%22sapUiPageFooterTextColor%22:%22#000000%22,%22sapUiInfobarBackground%22:%22#ffffff%22,%22sapUiObjectHeaderBackground%22:%22#ffffff%22,%22sapUiBlockLayerBackground%22:%22#000000%22,%22sapUiTileBackground%22:%22#ffffff%22,%22sapUiTileBorderColor%22:%22#000000%22,%22sapUiTileTitleTextColor%22:%22#000000%22,%22sapUiTileTextColor%22:%22#000000%22,%22sapUiTileIconColor%22:%22#000000%22,%22sapUiChart1%22:%22#5cbae6%22,%22sapUiChart2%22:%22#b6d957%22,%22sapUiChart3%22:%22#fac364%22,%22sapUiChart4%22:%22#8cd3ff%22,%22sapUiChart5%22:%22#d998cb%22,%22sapUiChart6%22:%22#f2d249%22,%22sapUiChart7%22:%22#93b9c6%22,%22sapUiChart8%22:%22#ccc5a8%22,%22sapUiChart9%22:%22#52bacc%22,%22sapUiChart10%22:%22#dbdb46%22,%22sapUiChart11%22:%22#98aafb%22,%22sapUiChartBad%22:%22#dc0d0e%22,%22sapUiChartCritical%22:%22#de890d%22,%22sapUiChartGood%22:%22#3fa45b%22,%22sapUiChartNeutral%22:%22#848f94%22,%22sapUiChartSequence1%22:%22#27a3dd%22,%22sapUiChartSequence2%22:%22#9dc62d%22,%22sapUiChartSequence3%22:%22#f8ac29%22,%22sapUiChartSequenceNeutral%22:%22#848f94%22,%22sapUiAccent1%22:%22#5f5800%22,%22sapUiAccent2%22:%22#5e4101%22,%22sapUiAccent3%22:%22#973333%22,%22sapUiAccent4%22:%22#961d7c%22,%22sapUiAccent5%22:%22#365892%22,%22sapUiAccent6%22:%22#004ccb%22,%22sapUiAccent7%22:%22#105b5b%22,%22sapUiAccent8%22:%22#26340b%22,%22sapUiErrorBG%22:%22#ff9a90%22,%22sapUiWarningBG%22:%22#faf2b0%22,%22sapUiSuccessBG%22:%22#e4f6e4%22,%22sapUiNeutralBG%22:%22#ffffff%22,%22sapUiErrorBorder%22:%22#ff0000%22,%22sapUiWarningBorder%22:%22#ffff00%22,%22sapUiSuccessBorder%22:%22#38a338%22,%22sapUiNeutralBorder%22:%22#ffffff%22,%22sapUiNegativeElement%22:%22#bb0000%22,%22sapUiCriticalElement%22:%22#e78c07%22,%22sapUiPositiveElement%22:%22#2b7d2b%22,%22sapUiNeutralElement%22:%22#ffffff%22,%22sapUiNegativeText%22:%22#ff0000%22,%22sapUiCriticalText%22:%22#e78c07%22,%22sapUiPositiveText%22:%22#b5e7a8%22,%22sapUiNeutralText%22:%22#ffffff%22,%22sapUiNegative%22:%22#bb0000%22,%22sapUiCritical%22:%22#e78c07%22,%22sapUiPositive%22:%22#2b7d2b%22,%22sapUiNeutral%22:%22#ffffff%22,%22sapUiErrorColor%22:%22#ee0000%22,%22sapUiWarningColor%22:%22#f9a429%22,%22sapUiSuccessColor%22:%22#38a338%22,%22sapUiFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontSize%22:%22medium%22,%22sapUiFontCondensedFamily%22:%22%27Arial Narrow%27, HelveticaNeue-CondensedBold, Arial, sans-serif%22,%22sapUiFontHeaderFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontHeaderWeight%22:%22normal%22,%22sapMFontHeader1Size%22:%221.625rem%22,%22sapMFontHeader2Size%22:%221.375rem%22,%22sapMFontHeader3Size%22:%221.25rem%22,%22sapMFontHeader4Size%22:%221.125rem%22,%22sapMFontHeader5Size%22:%221rem%22,%22sapMFontHeader6Size%22:%220.875rem%22,%22sapMFontSmallSize%22:%220.75rem%22,%22sapMFontMediumSize%22:%220.875rem%22,%22sapMFontLargeSize%22:%221rem%22,%22sapUiTranslucentBGOpacity%22:%2280%25%22,%22sapMPlatformDependent%22:%22false%22,%22sapUiDesktopFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiDesktopFontSize%22:%2212px%22,%22sapUiFontLargeSize%22:%2213px%22,%22sapUiFontSmallSize%22:%2211px%22,%22sapUiFontHeader1Size%22:%2226px%22,%22sapUiFontHeader2Size%22:%2220px%22,%22sapUiFontHeader3Size%22:%2218px%22,%22sapUiFontHeader4Size%22:%2216px%22,%22sapUiFontHeader5Size%22:%2214px%22,%22sapUiFontHeader6Size%22:%2213px%22,%22sapUiLineHeight%22:%2218px%22,%22sapUiChartLabelHoverColor%22:%22#cc8700%22,%22sapUiChartLabelPressedColor%22:%22#d4d4d4%22,%22sapUiChartCategoryAxisLabelFontColor%22:%22#000000%22,%22sapUiChartValueAxisLabelFontColor%22:%22#3d3d3d%22,%22sapUiChartCategoryAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartValueAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartCategoryAxisLineColor%22:%22#0d0d0d%22,%22sapUiChartValueAxisLineColor%22:%22#0d0d0d%22,%22sapUiChartCategoryAxisTickColor%22:%22#0d0d0d%22,%22sapUiChartValueAxisTickColor%22:%22#0d0d0d%22,%22sapUiChartBackgroundColor%22:%22transparent%22,%22sapUiChartLabelFontWeight%22:%22normal%22,%22sapUiChartLegendLabelFontColor%22:%22#000000%22,%22sapUiChartLegendTitleFontColor%22:%22#000000%22,%22sapUiChartLegendTitleFontSize%22:%220.875rem%22,%22sapUiChartLegendLabelFontSize%22:%220.75rem%22,%22sapUiChartPaletteUndefinedColor%22:%22#000000%22,%22sapUiChartGridlineColor%22:%22#262626%22,%22sapUiChartReferenceLineColor%22:%22#000000%22,%22sapUiChartDataLabelFontColor%22:%22#000000%22,%22sapUiChartReferenceLineLabelColor%22:%22#000000%22,%22sapUiChartDataLabelFontSize%22:%220.75rem%22,%22sapUiChartPopoverDataItemFontColor%22:%22#000000%22,%22sapUiChartPopoverGroupFontColor%22:%22#000000%22,%22sapUiChartPopoverDataItemFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontWeight%22:%22bold%22,%22sapUiChartScrollBarThumbColor%22:%22#4f4f4f%22,%22sapUiChartScrollBarTrackColor%22:%22#ffffff%22,%22sapUiChartScrollBarThumbHoverColor%22:%22#000000%22,%22sapUiChartMainTitleFontColor%22:%22#000000%22,%22sapUiChartAxisTitleFontColor%22:%22#000000%22,%22sapUiChartMainTitleFontSize%22:%221rem%22,%22sapUiChartAxisTitleFontSize%22:%220.875rem%22,%22sapUiChartTitleFontWeight%22:%22bold%22,%22sapUiChartLightText%22:%22#3d3d3d%22,%22sapUiChartZeroAxisColor%22:%22#000000%22,%22sapUiChartDataPointBorderColor%22:%22#ffffff%22,%22sapUiChartDataPointBorderHoverSelectedColor%22:%22#000000%22,%22sapUiChartDataPointNotSelectedBackgroundOpacity%22:%220.6%22,%22sapUiChartValueAxisLineOpacity%22:%220%22,%22sapUiChartCategoryAxisLabelFontHoverColor%22:%22#000000%22,%22sapUiChartCategoryAxisLabelFontPressedColor%22:%22#000000%22,%22sapUiChartTargetColor%22:%22#000000%22,%22sapUiChartTargetShadowColor%22:%22#ffffff%22,%22sapUiChartBubbleBGOpacity%22:%220.8%22,%22sapUiChartScrollbarBorderColor%22:%22#8f8f8f%22,%22sapUiChartScrollbarBorderSize%22:%220%22,%22sapUiChartScrollbarThumbPadding%22:%220%22,%22sapUiChartNegativeLargeText%22:%22#dc0d0e%22,%22sapUiChartCriticalLargeText%22:%22#de890d%22,%22sapUiChartPositiveLargeText%22:%22#3fa45b%22,%22sapUiChartNeutralLargeText%22:%22#69767c%22,%22sapUiChartDataPointBG%22:%22#d5dadc%22,%22sapUiChartDataPointBGBorderColor%22:%22#d5dadc%22,%22sapUiChartDataLineColorWithBG%22:%22#000000%22,%22sapUiChartDataLineColor%22:%22#000000%22,%22sapUiChartRadialRemainingCircle%22:%22#e3e6e7%22,%22sapUiChartRadialRemainingCircleBorderColor%22:%22#e3e6e7%22,%22sapUiChartRadialBG%22:%22#ffffff%22,%22sapUiChartPaletteQualitativeHue1%22:%22#5cbae6%22,%22sapUiChartPaletteQualitativeHue2%22:%22#b6d957%22,%22sapUiChartPaletteQualitativeHue3%22:%22#fac364%22,%22sapUiChartPaletteQualitativeHue4%22:%22#8cd3ff%22,%22sapUiChartPaletteQualitativeHue5%22:%22#d998cb%22,%22sapUiChartPaletteQualitativeHue6%22:%22#f2d249%22,%22sapUiChartPaletteQualitativeHue7%22:%22#93b9c6%22,%22sapUiChartPaletteQualitativeHue8%22:%22#ccc5a8%22,%22sapUiChartPaletteQualitativeHue9%22:%22#52bacc%22,%22sapUiChartPaletteQualitativeHue10%22:%22#dbdb46%22,%22sapUiChartPaletteQualitativeHue11%22:%22#98aafb%22,%22sapUiChartPaletteSemanticBadLight3%22:%22#f99494%22,%22sapUiChartPaletteSemanticBadLight2%22:%22#f66364%22,%22sapUiChartPaletteSemanticBadLight1%22:%22#f33334%22,%22sapUiChartPaletteSemanticBad%22:%22#dc0d0e%22,%22sapUiChartPaletteSemanticBadDark1%22:%22#b90c0d%22,%22sapUiChartPaletteSemanticBadDark2%22:%22#930a0a%22,%22sapUiChartPaletteSemanticCriticalLight3%22:%22#f8cc8c%22,%22sapUiChartPaletteSemanticCriticalLight2%22:%22#f5b04d%22,%22sapUiChartPaletteSemanticCriticalLight1%22:%22#f29b1d%22,%22sapUiChartPaletteSemanticCritical%22:%22#de890d%22,%22sapUiChartPaletteSemanticCriticalDark1%22:%22#c67a0c%22,%22sapUiChartPaletteSemanticCriticalDark2%22:%22#a4650a%22,%22sapUiChartPaletteSemanticGoodLight3%22:%22#a1dbb1%22,%22sapUiChartPaletteSemanticGoodLight2%22:%22#71c989%22,%22sapUiChartPaletteSemanticGoodLight1%22:%22#4cba6b%22,%22sapUiChartPaletteSemanticGood%22:%22#3fa45b%22,%22sapUiChartPaletteSemanticGoodDark1%22:%22#358a4d%22,%22sapUiChartPaletteSemanticGoodDark2%22:%22#2a6d3c%22,%22sapUiChartPaletteSemanticNeutralLight3%22:%22#d5dadc%22,%22sapUiChartPaletteSemanticNeutralLight2%22:%22#bac1c4%22,%22sapUiChartPaletteSemanticNeutralLight1%22:%22#9ea8ad%22,%22sapUiChartPaletteSemanticNeutral%22:%22#848f94%22,%22sapUiChartPaletteSemanticNeutralDark1%22:%22#69767c%22,%22sapUiChartPaletteSemanticNeutralDark2%22:%22#596468%22,%22sapUiChartPaletteSequentialHue1Light3%22:%22#abdbf2%22,%22sapUiChartPaletteSequentialHue1Light2%22:%22#84caec%22,%22sapUiChartPaletteSequentialHue1Light1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1%22:%22#27a3dd%22,%22sapUiChartPaletteSequentialHue1Dark1%22:%22#1b7eac%22,%22sapUiChartPaletteSequentialHue1Dark2%22:%22#156489%22,%22sapUiChartPaletteSequentialHue2Light3%22:%22#d7eaa2%22,%22sapUiChartPaletteSequentialHue2Light2%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2Light1%22:%22#b6d957%22,%22sapUiChartPaletteSequentialHue2%22:%22#9dc62d%22,%22sapUiChartPaletteSequentialHue2Dark1%22:%22#759422%22,%22sapUiChartPaletteSequentialHue2Dark2%22:%22#5b731a%22,%22sapUiChartPaletteSequentialHue3Light3%22:%22#fde5bd%22,%22sapUiChartPaletteSequentialHue3Light2%22:%22#fbd491%22,%22sapUiChartPaletteSequentialHue3Light1%22:%22#fac364%22,%22sapUiChartPaletteSequentialHue3%22:%22#f8ac29%22,%22sapUiChartPaletteSequentialHue3Dark1%22:%22#dd8e07%22,%22sapUiChartPaletteSequentialHue3Dark2%22:%22#b57506%22,%22sapUiChartPaletteSequentialNeutralLight3%22:%22#d5dadc%22,%22sapUiChartPaletteSequentialNeutralLight2%22:%22#bac1c4%22,%22sapUiChartPaletteSequentialNeutralLight1%22:%22#9ea8ad%22,%22sapUiChartPaletteSequentialNeutral%22:%22#848f94%22,%22sapUiChartPaletteSequentialNeutralDark1%22:%22#69767c%22,%22sapUiChartPaletteSequentialNeutralDark2%22:%22#596468%22,%22sapUiChoroplethBG%22:%22#f7f7f8%22,%22sapUiChoroplethRegionBorder%22:%22#404040%22,%22sapUiChoroplethRegionBG%22:%22#bac1c4%22,%22sapUiMapLegendBG%22:%22#ffffff%22,%22sapUiMapLegendBorderColor%22:%22#0d0d0d%22,%22sapUiShellHoverBackground%22:%22#000000%22,%22sapUiShellActiveBackground%22:%22#000000%22,%22sapUiShellActiveTextColor%22:%22#000000%22,%22sapUiShellHoverToggleBackground%22:%22#2e9cea%22,%22sapUiShellContainerBackground%22:%22#ffffff%22,%22sapUiShellAltContainerBackground%22:%22#ffffff%22,%22sapUiUx3ShellHeaderColor%22:%22#ffffff%22,%22sapUiUx3ShellBackgroundColor%22:%22#ffffff%22,%22sapUiUx3ShellHoverColor%22:%22#000000%22,%22sapUiUx3ShellGradientBottom%22:%22#ffffff%22,%22sapUiUx3ShellGradientTop%22:%22#fdfcf7%22,%22sapUiUx3ShellToolPaletteIconFontColor%22:%22#8899aa%22,%22sapUiUx3ExactLstExpandOffset%22:%220 0%22,%22sapUiUx3ExactLstRootExpandOffset%22:%220 3%22,%22sapUiUx3ExactLstContentTop%22:%2225px%22,%22sapUiLinkActive%22:%22#000000%22,%22sapUiLinkVisited%22:%22#000000%22,%22sapUiLinkHover%22:%22#000000%22,%22sapUiLinkInverted%22:%22#000000%22,%22sapUiNotificationBarBG%22:%22rgba%28128, 128, 128, 0.92%29%22,%22sapUiNotifierSeparator%22:%22#808080%22,%22sapUiNotifierSeparatorWidth%22:%222px%22,%22sapUiNotificationBarBorder%22:%22rgba%28128, 128, 128, 0.92%29%22,%22sapUiUx3ToolPopupInverted%22:%22true%22,%22sapUiUx3ToolPopupArrowRightMarginCorrection%22:%22-2px%22,%22sapUiUx3ToolPopupShadow%22:%220px 6px 12px 0px rgba%280, 0, 0, 0.3%29%22,%22sapUiCalloutShadow%22:%220px 6px 12px 0px rgba%280, 0, 0, 0.3%29%22,%22sapUiButtonIconColor%22:%22#000000%22,%22sapUiButtonActiveBackground%22:%22#cc8700%22,%22sapUiButtonActiveBorderColor%22:%22#cc8700%22,%22sapUiButtonActiveTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedHoverBackground%22:%22#f2f2f2%22,%22sapUiButtonEmphasizedHoverBorderColor%22:%22#f2f2f2%22,%22sapUiButtonEmphasizedActiveBackground%22:%22#cc8700%22,%22sapUiButtonEmphasizedActiveBorderColor%22:%22#cc8700%22,%22sapUiButtonEmphasizedTextShadow%22:%22rgba%280, 0, 0, 0.5%29%22,%22sapUiButtonAcceptBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptHoverBackground%22:%22#cc8700%22,%22sapUiButtonAcceptHoverBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptActiveBackground%22:%22#2b7d2b%22,%22sapUiButtonAcceptActiveBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptTextColor%22:%22#b5e7a8%22,%22sapUiButtonRejectBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectHoverBackground%22:%22#cc8700%22,%22sapUiButtonRejectHoverBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectActiveBackground%22:%22#bb0000%22,%22sapUiButtonRejectActiveBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectTextColor%22:%22#ff0000%22,%22sapUiButtonLiteBackground%22:%22rgba%280, 0, 0, 0%29%22,%22sapUiButtonLiteBorderColor%22:%22rgba%280, 0, 0, 0%29%22,%22sapUiButtonLiteTextColor%22:%22#000000%22,%22sapUiButtonLiteHoverBackground%22:%22rgba%28117, 78, 0, 0.5%29%22,%22sapUiButtonLiteHoverBorderColor%22:%22rgba%28117, 78, 0, 0.5%29%22,%22sapUiButtonLiteActiveBackground%22:%22#cc8700%22,%22sapUiButtonLiteActiveBorderColor%22:%22#cc8700%22,%22sapUiButtonHeaderTextColor%22:%22#000000%22,%22sapUiButtonHeaderDisabledTextColor%22:%22#000000%22,%22sapUiButtonFooterTextColor%22:%22#000000%22,%22sapUiButtonFooterHoverBackground%22:%22rgba%28117, 78, 0, 0.5%29%22,%22sapUiButtonActionSelectBackground%22:%22#ffffff%22,%22sapUiButtonActionSelectBorderColor%22:%22#4f4f4f%22,%22sapUiButtonLiteActionSelectHoverBackground%22:%22#cc8700%22,%22sapUiToggleButtonPressedBackground%22:%22#cc8700%22,%22sapUiToggleButtonPressedBorderColor%22:%22#b37600%22,%22sapUiToggleButtonPressedTextColor%22:%22#ffffff%22,%22sapUiToggleButtonPressedHoverBackground%22:%22#b37600%22,%22sapUiToggleButtonPressedHoverBorderColor%22:%22#b37600%22,%22sapUiSegmentedButtonBackground%22:%22#ffffff%22,%22sapUiSegmentedButtonBorderColor%22:%22#141414%22,%22sapUiSegmentedButtonTextColor%22:%22#000000%22,%22sapUiSegmentedButtonHoverBackground%22:%22#cc8700%22,%22sapUiSegmentedButtonActiveBackground%22:%22#cc8700%22,%22sapUiSegmentedButtonActiveTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedBackground%22:%22#cc8700%22,%22sapUiSegmentedButtonSelectedTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedHoverBackground%22:%22#b37600%22,%22sapUiSegmentedButtonSelectedHoverBorderColor%22:%22#b37600%22,%22sapUiSegmentedButtonIconColor%22:%22#000000%22,%22sapUiSegmentedButtonActiveIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonFooterBorderColor%22:%22#141414%22,%22sapUiSegmentedButtonFooterHoverBackground%22:%22#cc8700%22,%22sapUiFieldActiveBackground%22:%22#cc8700%22,%22sapUiFieldActiveBorderColor%22:%22#cc8700%22,%22sapUiFieldActiveTextColor%22:%22#ffffff%22,%22sapUiFieldPlaceholderTextColor%22:%22#707070%22,%22sapUiListTextColor%22:%22#333333%22,%22sapUiListVerticalBorderColor%22:%22#474747%22,%22sapUiListActiveBackground%22:%22#cc8700%22,%22sapUiListActiveTextColor%22:%22#ffffff%22,%22sapUiListSelectionHoverBackground%22:%22#2095e9%22,%22sapUiListFooterBackground%22:%22#ffffff%22,%22sapUiListFooterTextColor%22:%22#000000%22,%22sapUiListGroupHeaderBackground%22:%22#ffffff%22,%22sapUiListTableGroupHeaderBackground%22:%22#f2f2f2%22,%22sapUiListTableGroupHeaderBorderColor%22:%22#363636%22,%22sapUiListTableGroupHeaderTextColor%22:%22#333333%22,%22sapUiListTableFooterBorder%22:%22#363636%22,%22sapUiListTableFixedBorder%22:%22#030303%22,%22sapUiListTableTextSize%22:%220.875rem%22,%22sapUiListTableIconSize%22:%221rem%22,%22sapUiPageFooterBorderColor%22:%22#ebebeb%22,%22sapUiInfobarHoverBackground%22:%22#ebebeb%22,%22sapUiInfobarActiveBackground%22:%22#d9d9d9%22,%22sapUiObjectHeaderBorderColor%22:%22#ebebeb%22,%22sapUiCalendarColorToday%22:%22#000000%22,%22sapUiDragAndDropColor%22:%22#000000%22,%22sapUiDragAndDropBackground%22:%22#ffffff%22,%22sapUiDragAndDropBorderColor%22:%22#000000%22,%22sapUiDragAndDropActiveColor%22:%22#006500%22,%22sapUiDragAndDropActiveBackground%22:%22#ffffff%22,%22sapUiDragAndDropActiveBorderColor%22:%22#006500%22,%22sapUiShadowLevel0%22:%220 0 0 1px #000000%22,%22sapUiShadowLevel1%22:%220 0.125rem 1rem 0 rgba%28255, 255, 255, 0.4%29, 0 0 0 2px #000000%22,%22sapUiShadowLevel2%22:%220 0.625rem 2rem 0 rgba%28255, 255, 255, 0.5%29, 0 0 0 2px #000000%22,%22sapUiShadowLevel3%22:%220 1.25rem 4rem 0 rgba%28255, 255, 255, 0.7%29, 0 0 0 2px #000000%22,%22sapUiShadowText%22:%22none%22,%22sapUiShadowHeader%22:%22inset 0 -0.125rem #ebebeb%22,%22sapUiUx3ShellHeaderImageURL%22:%22%22,%22sapUiUx3ShellApplicationImageURL%22:%22none%22,%22sapUiPurple%22:%22#800080%22,%22sapUiOrange%22:%22#ffa500%22,%22sapUiGreen%22:%22#008000%22,%22sapUiBlue%22:%22#0000ff%22,%22sapUiRed%22:%22#ff0000%22,%22sapUiYellow%22:%22#ffff00%22,%22sapUiBase%22:%22#000000%22,%22sapUiBaseBorder%22:%22#000000%22,%22sapUiBaseLine%22:%22#000000%22,%22sapUiWhite%22:%22#ffffff%22,%22sapUiWhiteBG%22:%22#ffffff%22,%22sapUiExtraLightBG%22:%22#ffffff%22,%22sapUiLightBG%22:%22#d3d3d3%22,%22sapUiMediumBG%22:%22#808080%22,%22sapUiDarkBG%22:%22#a9a9a9%22,%22sapUiDeepBG%22:%22#000000%22,%22sapUiBlackBG%22:%22#000000%22,%22sapUiHoverBG%22:%22#808080%22,%22sapUiMediumAltBG%22:%22#808080%22,%22sapUiDarkAltBG%22:%22#a9a9a9%22,%22sapUiButtonStandardBG%22:%22#ffffff%22,%22sapUiButtonEmphasizedBG%22:%22#ffff00%22,%22sapUiButtonNegativeBG%22:%22#ff0000%22,%22sapUiButtonPositiveBG%22:%22#008000%22,%22sapUiReadOnlyBG%22:%22#808080%22,%22sapUiExtraLightText%22:%22#d3d3d3%22,%22sapUiLightText%22:%22#d3d3d3%22,%22sapUiMediumText%22:%22#808080%22,%22sapUiDarkText%22:%22#a9a9a9%22,%22sapUiDeepText%22:%22#000000%22,%22sapUiText%22:%22#000000%22,%22sapUiTextInverted%22:%22#ffffff%22,%22sapUiWhiteBorder%22:%22#ffffff%22,%22sapUiExtraLightBorder%22:%22#d3d3d3%22,%22sapUiLightBorder%22:%22#808080%22,%22sapUiMediumBorder%22:%22#000000%22,%22sapUiDarkBorder%22:%22#000000%22,%22sapUiBlackBorder%22:%22#000000%22,%22sapUiElement%22:%22#d3d3d3%22,%22sapUiInvertedElement%22:%22#ffffff%22,%22sapUiLightLine%22:%22#d3d3d3%22,%22sapUiMediumLine%22:%22#808080%22,%22sapUiEmphasizedLine%22:%22#cc8700%22,%22sapUiDarkLine%22:%22#a9a9a9%22,%22sapUiLightShadowTint%22:%22#ffffff%22,%22sapUiDarkShadowTint%22:%22#000000%22,%22sapUiFocus%22:%22#000000%22,%22sapUiInvertedFocus%22:%22#ffffff%22,%22sapUiTableRowBG%22:%22#ffffff%22,%22sapUiTableRowAlternatingBG%22:%22#ffffff%22,%22sapUiTableRowSelectionBG%22:%22#cc8700%22,%22sapUiTableRowSelectionReadOnlyBG%22:%22#cc8700%22,%22sapUiTableRowHoverBG%22:%22#808080%22,%22sapUiListBG%22:%22#f7f7f7%22,%22sapUiTextColor%22:%22#008000%22,%22sapUiTextTitleColor%22:%22#008000%22,%22sapUiTextSelectionColor%22:%22#008000%22,%22sapUiTextDisabled%22:%22#999999%22,%22sapUiTextSelection%22:%22#ffffff%22,%22sapUiTextfieldBackground%22:%22#ffffff%22,%22sapUiFontMonospaceFamily%22:%22Lucida Console%22,%22sapUiUx3ShellSideBarBaseWidth%22:%2240px%22,%22sapUiUx3ShellPaneOverflowButtonHeight%22:%22120px%22,%22sapUiUx3ExactLstCollapseWidth%22:%2224px%22,%22sapUiUx3ExactLstHeaderHeight%22:%2225px%22,%22sapUiNotificationBarBG_IE%22:%22#808080%22,%22sapUiNotifierHoverColor%22:%22#cc8700%22,%22sapUiNotificationText%22:%22#000000%22,%22sapUiNotificationTimestamp%22:%22#545454%22,%22sapUiNotificationBarCalloutBorder%22:%22rgba%28128, 128, 128, 0%29%22,%22sapUiNotificationBarCalloutBorder_IE%22:%22#808080%22,%22sapUiNotificationBarCalloutArr%22:%22rgba%28128, 128, 128, 0.92%29%22,%22sapUiNotificationBarHeight%22:%2240px%22,%22sapUiNotificationBarHeightMinimized%22:%220px%22,%22sapUiNotificationBarHeightMaximized%22:%2240%25%22,%22sapUiNotifierWidth%22:%2240px%22,%22sapUiRIIconPaddingXS%22:%221px%22,%22sapUiRIIconPaddingS%22:%220.125rem%22,%22sapUiRIIconPaddingM%22:%220.1875rem%22,%22sapUiRIIconPaddingL%22:%220.25rem%22,%22sapUiRIIconPaddingCozy%22:%220.1875rem%22,%22sapUiRIIconPaddingCompact%22:%220.125rem%22,%22sapUiRIIconPaddingCondensed%22:%220.125rem%22,%22sapUiRIIconPaddingDisplayOnly%22:%220.125rem%22,%22sapUiRIIconSizeCozy%22:%221.375rem%22,%22sapUiRIIconSizeCompact%22:%221rem%22,%22sapUiRIIconSizeCondensed%22:%221rem%22,%22sapUiRIIconSizeDisplayOnly%22:%221rem%22,%22sapUiUx3ToolPopupArrowWidth%22:%2213px%22,%22sapUiUx3ToolPopupArrowHeight%22:%2224px%22,%22sapUiUx3ToolPopupArrowRightMarginCorrectionInverted%22:%22-7px%22,%22sapUiUx3TPPaddingBottom%22:%2250px%22,%22sapUiButtonEmphasizedDisabledBorderColor%22:%22#000000%22,%22sapUiButtonEmphasizedDisabledBackground%22:%22#ffffff%22,%22sapUiButtonAcceptDisabledBorderColor%22:%22#2b7d2b%22,%22sapUiButtonAcceptDisabledBackground%22:%22#ffffff%22,%22sapUiButtonRejectDisabledBorderColor%22:%22#bb0000%22,%22sapUiButtonRejectDisabledBackground%22:%22#ffffff%22,%22sapUiToggleButtonPressedDisabledBackground%22:%22#cc8700%22,%22sapUiToggleButtonPressedDisabledBorderColor%22:%22#b37600%22,%22sapUiToggleButtonPressedDisabledTextColor%22:%22#bfbfbf%22,%22sapUiPositiveBG%22:%22#b5e7a8%22,%22sapUiShadowTint%22:%22#000000%22,%22sapUiShadow%22:%225px 5px 10px rgba%280, 0, 0, 0.5%29%22,%22sapUiThemeDesignerCustomCss%22:%22false%22,%22sapUiMarginTiny%22:%220.5rem%22,%22sapUiMarginSmall%22:%221rem%22,%22sapUiMarginMedium%22:%222rem%22,%22sapUiMarginLarge%22:%223rem%22,%22sapUiEscapedEmptyString%22:%22%22,%22sapUiLightBoxMagnifyingGlassBorder%22:%22none%22,%22sapUiLightBoxMagnifyingGlassBackgroundColor%22:%22#000000%22,%22_sap_ui_rta_Overlay_ActiveBG%22:%22rgba%2846, 156, 234, 0.1%29%22,%22_sap_ui_rta_Overlay_BaseBG%22:%22#ffffff%22,%22_sap_ui_rta_Overlay_Border%22:%22#2e9cea%22,%22_sap_ui_rta_Overlay_HoverBG%22:%22rgba%280, 0, 0, 0.10800000000000001%29%22,%22_sap_ui_rta_Overlay_ActiveHoverBG%22:%22rgba%2846, 156, 234, 0.2%29%22%7D'); } diff --git a/resources/sap/ui/rta/themes/base/library.source.less b/resources/sap/ui/rta/themes/base/library.source.less new file mode 100644 index 0000000..1cdbe95 --- /dev/null +++ b/resources/sap/ui/rta/themes/base/library.source.less @@ -0,0 +1,16 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +@import "../../../../../sap/ui/core/themes/base/base.less"; +@import "../../../../../sap/ui/core/themes/base/global.less"; + +@import "Toolbar.base.less"; +@import "Toolbar.fiori.less"; +@import "Toolbar.standalone.less"; +@import "Toolbar.personalization.less"; + +@import "FieldRepository.less"; +@import "Overlay.less"; +@import "SettingsDialog.less"; diff --git a/resources/sap/ui/rta/themes/sap_hcb/Overlay.less b/resources/sap/ui/rta/themes/sap_hcb/Overlay.less new file mode 100644 index 0000000..1e87448 --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/Overlay.less @@ -0,0 +1,35 @@ +/****************************************************************** + Style of the RTA Overlays - HCB Theme +*******************************************************************/ +@_sap_ui_rta_Overlay_BaseBG : @sapHCStandardBG; +@_sap_ui_rta_Overlay_HoverBG : fade(lighten(@sapHCHighlightBG, 15%), 30%); +@_sap_ui_rta_Overlay_ActiveBG : fade(lighten(@sapHCHighlightAltBG, 15%), 30%); +@_sap_ui_rta_Overlay_Border : @sapUiDragAndDropActiveBorderColor; + + +.sapUiRta { + .sapUiDtOverlay { + &:focus { + outline: none; + /* We create inner black shadow to make sure white border is in contrast with element */ + box-shadow: 0 0 0 2px #000 inset; + &:before { + border-width: 2px; + } + } + } + .sapUiDtOverlaySelected { + &.sapUiDtOverlayFocusable { + &:focus { + /* Same trick as described above but doubled thickness */ + box-shadow: 0 0 0 4px #000 inset; + } + } + } + .sapUiRtaOverlayHover { + &:after { + border-width: 2px; + } + } + +} diff --git a/resources/sap/ui/rta/themes/sap_hcb/Toolbar.base.less b/resources/sap/ui/rta/themes/sap_hcb/Toolbar.base.less new file mode 100644 index 0000000..c921c6c --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/Toolbar.base.less @@ -0,0 +1,3 @@ +.sapUiRtaToolbarContainer .sapUiRtaToolbar { + box-shadow: 0 0 2.5rem 0.125rem rgba(255, 255, 255, 0.8); + } diff --git a/resources/sap/ui/rta/themes/sap_hcb/Toolbar.personalization.less b/resources/sap/ui/rta/themes/sap_hcb/Toolbar.personalization.less new file mode 100644 index 0000000..dcf83c1 --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/Toolbar.personalization.less @@ -0,0 +1,4 @@ +.sapUiRtaToolbar.type_personalization { + background-color: @sapHCStandardBG; + border-top: @sapHCStandardFG 1px solid; +} \ No newline at end of file diff --git a/resources/sap/ui/rta/themes/sap_hcb/Toolbar.standalone.less b/resources/sap/ui/rta/themes/sap_hcb/Toolbar.standalone.less new file mode 100644 index 0000000..111200e --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/Toolbar.standalone.less @@ -0,0 +1,9 @@ +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + color: inherit; + } + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, + .sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: inherit; + } diff --git a/resources/sap/ui/rta/themes/sap_hcb/library-RTL.css b/resources/sap/ui/rta/themes/sap_hcb/library-RTL.css new file mode 100644 index 0000000..12caf6b --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/library-RTL.css @@ -0,0 +1,359 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +/* =========================== */ +/* Global CSS for 'base' theme */ +/* =========================== */ +/** + Toolbar + */ +.sapUiRtaToolbar.sapMTB { + position: absolute; + top: 0; + right: 0; + left: 0; + padding: 0 20px; + height: 46px; + /* Overrider `.sapUiSizeCompact .sapMTB` */ + border-bottom: none; + /* Override `.sapMTB` */ +} +.sapUiRtaToolbar.sapMTB > :last-child { + margin-left: 0; + /* Override `.sapMIBar.sapMTB .sapMBarChild` */ +} +.sapUiRtaToolbar.sapMTB > :first-child { + margin-right: 0; + /* Override `.sapMIBar .sapMBarChild:first-child` */ +} +/** + This class is being assigned to the original Fiori Header Toolbar when RTA Toolbar shows + */ +.sapUiRtaFioriHeaderInvisible { + visibility: hidden; +} +/* type: fiori */ +.sapUiRtaToolbar.type_fiori { + transition: opacity 0.25s ease-out; + opacity: 0; +} +.sapUiRtaToolbar.type_fiori.is_visible { + opacity: 1; +} +/* color: default */ +/* color: contrast */ +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled { + opacity: 0.3; +} +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default { + background-color: #000; + top: -50px; + transition: top 0.25s ease-out; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: #666; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn:focus .sapMFocusable { + outline-color: #fff; + /* Override of `html.sap-desktop .sapMBtn:focus > .sapMFocusable` */ +} +.sapUiRtaToolbar.type_standalone.color_default.is_visible { + top: 0; +} +.sapUiRtaToolbar.type_personalization { + top: auto; + top: initial; + bottom: 0; + background-color: #2f3c48; + border-radius: 0.25rem; + padding: 0 1rem; + margin: 0.5rem; + opacity: 0.9; +} +.sapUiRtaToolbar.type_personalization.sapUiRtaHideToolbar { + visibility: hidden; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner { + border: none; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner .sapMBtnContent { + color: #ffffff; + text-shadow: 0 0 0.125rem #000000; +} +/****************************************************************** + Style of the RTA FieldRepository +*******************************************************************/ +.sap-desktop.sapUiBLyBackOverride { + overflow: auto!important; +} +.sapUIRtaFieldRepositoryDialog .sapMDialogTitle { + font-size: 16px; + font-weight: bold; +} +.sapUIRtaFieldRepositoryDialog .sapUiTable > div.sapUiTableCnt { + border-right: 0px; + border-left: 0px; +} +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter { + height: 60px; +} +/* Sort Button */ +.sapUIRtaFieldRepositoryDialog .sapMBtn > .sapMBtnInner { + border: none; + background: transparent; +} +/* Footer Button */ +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter .sapMBtnInner { + background-color: transparent; + background: none; + border: none; + text-shadow: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapMSFF { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiLbl { + margin-right: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapMIBar > .sapMBarChild:last-child { + margin-left: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapUiLblIco { + font-size: 1.2rem; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaValueCell { + height: 18px; + width: 300px; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaCCDialogScrollContainer { + height: 400px !important; + width: 100% !important; +} +.sapUIRtaFieldRepositoryDialog .sapMList .sapMListUl .sapMCLI { + padding-right: 10px; +} +/****************************************************************** + Style of the RTA Overlays +*******************************************************************/ +.sapUiRtaRoot .sapUiRtaMarginBottom { + margin-bottom: 40px; +} +.sapUiRtaRoot .sapUiRtaPaddingTop { + padding-top: 40px; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick { + text-align: center; + vertical-align: middle; + height: 1.5rem; + width: 1.5rem; + position: absolute; + top: 10px; + left: 10px; + z-index: 1; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter { + display: inline-block; + box-sizing: border-box; + text-align: center; + border-radius: 50%; + border: 0.125rem solid #ffffff; + cursor: pointer; + z-index: 1; + opacity: 1; + width: 1.5rem; + height: 1.5rem; + background-color: #03b803; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter .sapUiIcon { + color: #000000; + font-size: 0.69rem; + line-height: 1.25rem; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete.sapUiRtaOverlayPlaceholder .sapUiRtaPersDeleteClick { + display: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter { + position: absolute; + text-align: center; + width: 100%; + height: 40px; + cursor: default; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn { + color: #03b803; + height: 100%; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner { + border: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd > .sapUiRtaPersAddIconOuter { + bottom: -40px; + top: auto; +} +.sapUiRta .sapUiRtaOverlayHover { + -webkit-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -moz-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -o-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); +} +.sapUiRta .sapUiRtaOverlayHover:after { + content: " "; + border: 1px dotted #03b803; +} +.sapUiRta .sapUiDtOverlayFocusable:focus:before { + left: 0; + top: 0; + right: 0; + bottom: 0; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayWithScrollBar:after { + bottom: 0; + left: 0; + top: 0; + right: 0; + width: auto; + width: initial; + height: auto; + height: initial; +} +.sapUiRta .sapUiDtOverlaySelected:after { + border: 2px solid #03b803; +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable:focus:before { + top: 2px; + right: 2px; + bottom: 2px; + left: 2px; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlayTargetZone:after { + border: 1px dashed #03b803; +} +.sapUiRta .sapUiDtOverlayTargetZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + border: none; +} +.sapUiRta .sapUiDtOverlayTargetZone.sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: transparent; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable { + background: rgba(22, 137, 217, 0.3); +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: #000000 !important; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:focus:before { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder * { + background: #000000; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:focus:before { + content: none; +} +.sapUiRta .sapUiRtaEditableField { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; +} +.sapUiRta .sapUiDtDragGhost { + background: rgba(22, 137, 217, 0.3); +} +.sapUiRtaDialogEntryWithMargin { + margin: 6px 0; +} +/* ============================== */ +/* Global CSS for 'sap_hcb' theme */ +/* ============================== */ +.sapUiRtaToolbarContainer .sapUiRtaToolbar { + box-shadow: 0 0 2.5rem 0.125rem rgba(255, 255, 255, 0.8); +} +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + color: inherit; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: inherit; +} +.sapUiRtaToolbar.type_personalization { + background-color: #000000; + border-top: #ffffff 1px solid; +} +/****************************************************************** + Style of the RTA Overlays - HCB Theme +*******************************************************************/ +.sapUiRta .sapUiDtOverlay:focus { + outline: none; + /* We create inner black shadow to make sure white border is in contrast with element */ + box-shadow: 0 0 0 2px #000 inset; +} +.sapUiRta .sapUiDtOverlay:focus:before { + border-width: 2px; +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable:focus { + /* Same trick as described above but doubled thickness */ + box-shadow: 0 0 0 4px #000 inset; +} +.sapUiRta .sapUiRtaOverlayHover:after { + border-width: 2px; +} + +/* Inline theming parameters */ +#sap-ui-theme-sap\.ui\.rta { background-image: url('data:text/plain;utf-8,%7B%22sapBrandColor%22:%22#000000%22,%22sapHighlightColor%22:%22#cc8700%22,%22sapBaseColor%22:%22#dddddd%22,%22sapShellColor%22:%22#ffffff%22,%22sapBackgroundColor%22:%22#ffffff%22,%22sapFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapFontSize%22:%220.75em%22,%22sapTextColor%22:%22#000000%22,%22sapLinkColor%22:%22#000000%22,%22sapCompanyLogo%22:%22none%22,%22sapBackgroundImage%22:%22none%22,%22sapBackgroundImageOpacity%22:%221%22,%22sapBackgroundImageRepeat%22:%22false%22,%22sapSelectedColor%22:%22#2e9cea%22,%22sapActiveColor%22:%22#cc8700%22,%22sapHighlightTextColor%22:%22#ffffff%22,%22sapTitleColor%22:%22#000000%22,%22sapNegativeColor%22:%22#bb0000%22,%22sapCriticalColor%22:%22#e78c07%22,%22sapPositiveColor%22:%22#2b7d2b%22,%22sapNeutralColor%22:%22#ffffff%22,%22sapNegativeElementColor%22:%22#bb0000%22,%22sapCriticalElementColor%22:%22#e78c07%22,%22sapPositiveElementColor%22:%22#2b7d2b%22,%22sapNeutralElementColor%22:%22#ffffff%22,%22sapContent_LineHeight%22:%221.3%22,%22sapContent_ElementHeight%22:%221.37em%22,%22sapContent_ElementHeight_PX%22:%2222px%22,%22sapContent_IconHeight%22:%2216px%22,%22sapContent_IconColor%22:%22#000000%22,%22sapContent_ContrastIconColor%22:%22#ffffff%22,%22sapContent_NonInteractiveIconColor%22:%22#000000%22,%22sapContent_MarkerIconColor%22:%22#000000%22,%22sapContent_FocusColor%22:%22#000000%22,%22sapContent_ContrastFocusColor%22:%22#ffffff%22,%22sapContent_ShadowColor%22:%22#000000%22,%22sapContent_ContrastShadowColor%22:%22#ffffff%22,%22sapContent_SearchHighlightColor%22:%22#cc8700%22,%22sapContent_HelpColor%22:%22#006500%22,%22sapContent_LabelColor%22:%22#000000%22,%22sapContent_MonospaceFontFamily%22:%22lucida console, monospace%22,%22sapContent_DisabledTextColor%22:%22#666666%22,%22sapContent_DisabledOpacity%22:%220.5%22,%22sapContent_ContrastTextThreshold%22:%220.65%22,%22sapContent_ContrastTextColor%22:%22#ffffff%22,%22sapContent_ForegroundColor%22:%22#e5e5e5%22,%22sapContent_ForegroundBorderColor%22:%22#000000%22,%22sapContent_ForegroundTextColor%22:%22#000000%22,%22sapShell_Background%22:%22#ffffff%22,%22sapShell_BackgroundImage%22:%22#ffffff%22,%22sapShell_BackgroundGradient%22:%22#ffffff%22,%22sapShell_BackgroundImageOpacity%22:%221%22,%22sapShell_BackgroundImageRepeat%22:%22false%22,%22sapShell_BorderColor%22:%22#666666%22,%22sapShell_TextColor%22:%22#000000%22,%22sapShell_Favicon%22:%22none%22,%22sapButton_BorderWidth%22:%221px%22,%22sapButton_BorderCornerRadius%22:%220%22,%22sapButton_Background%22:%22#ffffff%22,%22sapButton_BorderColor%22:%22#000000%22,%22sapButton_TextColor%22:%22#000000%22,%22sapButton_Disabled_Background%22:%22#ffffff%22,%22sapButton_Disabled_BorderColor%22:%22#666666%22,%22sapButton_Disabled_TextColor%22:%22#666666%22,%22sapButton_Hover_Background%22:%22#cc8700%22,%22sapButton_Hover_BorderColor%22:%22#000000%22,%22sapButton_Hover_TextColor%22:%22#ffffff%22,%22sapButton_Emphasized_Background%22:%22#ffffff%22,%22sapButton_Emphasized_BorderColor%22:%22#000000%22,%22sapButton_Emphasized_TextColor%22:%22#000000%22,%22sapButton_Reject_Background%22:%22#ffffff%22,%22sapButton_Accept_Background%22:%22#ffffff%22,%22sapField_Background%22:%22#ffffff%22,%22sapField_BorderColor%22:%22#000000%22,%22sapField_TextColor%22:%22#000000%22,%22sapField_HelpBackground%22:%22#ffffff%22,%22sapField_BorderWidth%22:%221px%22,%22sapField_BorderCornerRadius%22:%220%22,%22sapField_Hover_Background%22:%22#ffffff%22,%22sapField_Hover_BorderColor%22:%22#000000%22,%22sapField_Hover_HelpBackground%22:%22#cc8700%22,%22sapField_Focus_Background%22:%22#ffffff%22,%22sapField_Focus_BorderColor%22:%22#000000%22,%22sapField_Focus_HelpBackground%22:%22#ffffff%22,%22sapField_Disabled_Background%22:%22#959595%22,%22sapField_Disabled_BorderColor%22:%22#4f4f4f%22,%22sapField_Disabled_TextColor%22:%22#666666%22,%22sapField_Disabled_HelpBackground%22:%22#959595%22,%22sapField_ReadOnly_Background%22:%22#959595%22,%22sapField_ReadOnly_BorderColor%22:%22#4f4f4f%22,%22sapField_ReadOnly_HelpBackground%22:%22#959595%22,%22sapField_RequiredColor%22:%22#000000%22,%22sapField_InvalidColor%22:%22#ffffff%22,%22sapField_InvalidBackground%22:%22#cc8700%22,%22sapField_WarningColor%22:%22#000000%22,%22sapField_WarningBackground%22:%22#ffffff%22,%22sapField_SuccessColor%22:%22#000000%22,%22sapField_SuccessBackground%22:%22#ffffff%22,%22sapGroup_TitleBackground%22:%22#ffffff%22,%22sapGroup_TitleBorderColor%22:%22#000000%22,%22sapGroup_TitleTextColor%22:%22#000000%22,%22sapGroup_Title_FontSize%22:%221em%22,%22sapGroup_ContentBackground%22:%22#ffffff%22,%22sapGroup_ContentBorderColor%22:%22#000000%22,%22sapGroup_BorderWidth%22:%221px%22,%22sapGroup_BorderCornerRadius%22:%220%22,%22sapGroup_FooterBackground%22:%22#ffffff%22,%22sapToolbar_Background%22:%22#ffffff%22,%22sapToolbar_SeparatorColor%22:%22#000000%22,%22sapList_HeaderBackground%22:%22#ffffff%22,%22sapList_HeaderBorderColor%22:%22#000000%22,%22sapList_HeaderTextColor%22:%22#000000%22,%22sapList_BorderColor%22:%22#4f4f4f%22,%22sapList_BorderWidth%22:%221px%22,%22sapList_HighlightColor%22:%22#cc8700%22,%22sapList_SelectionBackgroundColor%22:%22#2e9cea%22,%22sapList_Background%22:%22#ffffff%22,%22sapList_Hover_Background%22:%22#cc8700%22,%22sapScrollBar_FaceColor%22:%22#4f4f4f%22,%22sapScrollBar_TrackColor%22:%22#ffffff%22,%22sapScrollBar_BorderColor%22:%22#4f4f4f%22,%22sapScrollBar_SymbolColor%22:%22#000000%22,%22sapScrollBar_Dimension%22:%2216px%22,%22sapScrollBar_Hover_FaceColor%22:%22#000000%22,%22sapPageHeader_Background%22:%22#ffffff%22,%22sapPageHeader_BorderColor%22:%22#000000%22,%22sapPageHeader_TextColor%22:%22#000000%22,%22sapPageFooter_Background%22:%22#ffffff%22,%22sapPageFooter_TextColor%22:%22#000000%22,%22sapInfobar_Background%22:%22#ffffff%22,%22sapObjectHeader_Background%22:%22#ffffff%22,%22sapBlockLayer_Background%22:%22#000000%22,%22sapTile_Background%22:%22#ffffff%22,%22sapTile_BorderColor%22:%22#000000%22,%22sapTile_TitleTextColor%22:%22#000000%22,%22sapTile_TextColor%22:%22#000000%22,%22sapTile_IconColor%22:%22#000000%22,%22sapChart_OrderedColor_1%22:%22#5cbae6%22,%22sapChart_OrderedColor_2%22:%22#b6d957%22,%22sapChart_OrderedColor_3%22:%22#fac364%22,%22sapChart_OrderedColor_4%22:%22#8cd3ff%22,%22sapChart_OrderedColor_5%22:%22#d998cb%22,%22sapChart_OrderedColor_6%22:%22#f2d249%22,%22sapChart_OrderedColor_7%22:%22#93b9c6%22,%22sapChart_OrderedColor_8%22:%22#ccc5a8%22,%22sapChart_OrderedColor_9%22:%22#52bacc%22,%22sapChart_OrderedColor_10%22:%22#dbdb46%22,%22sapChart_OrderedColor_11%22:%22#98aafb%22,%22sapChart_Bad%22:%22#dc0d0e%22,%22sapChart_Critical%22:%22#de890d%22,%22sapChart_Good%22:%22#3fa45b%22,%22sapChart_Neutral%22:%22#848f94%22,%22sapChart_Sequence_1%22:%22#27a3dd%22,%22sapChart_Sequence_2%22:%22#9dc62d%22,%22sapChart_Sequence_3%22:%22#f8ac29%22,%22sapChart_Sequence_Neutral%22:%22#848f94%22,%22sapUiBrand%22:%22#7a5100%22,%22sapUiHighlight%22:%22#7a5100%22,%22sapUiBaseColor%22:%22#000000%22,%22sapUiShellColor%22:%22#000000%22,%22sapUiBaseBG%22:%22#000000%22,%22sapUiGlobalBackgroundColor%22:%22#000000%22,%22sapUiBaseText%22:%22#ffffff%22,%22sapUiLink%22:%22#ffffff%22,%22sapUiGlobalLogo%22:%22none%22,%22sapUiGlobalBackgroundImage%22:%22none%22,%22sapUiBackgroundImage%22:%22none%22,%22sapUiUx3ShellBackgroundImageURL%22:%22none%22,%22sapUiGlobalBackgroundImageOpacity%22:%221%22,%22sapUiGlobalBackgroundRepeat%22:%22false%22,%22sapUiSelected%22:%22#0f5d94%22,%22sapUiActive%22:%22#7a5100%22,%22sapUiHighlightTextColor%22:%22#ffffff%22,%22sapUiTextTitle%22:%22#ffffff%22,%22sapUiContentIconColor%22:%22#ffffff%22,%22sapUiContentContrastIconColor%22:%22#ffffff%22,%22sapUiContentNonInteractiveIconColor%22:%22#ffffff%22,%22sapUiContentMarkerIconColor%22:%22#ffffff%22,%22sapUiContentMarkerTextColor%22:%22#ffffff%22,%22sapUiContentImagePlaceholderBackground%22:%22#000000%22,%22sapUiContentImagePlaceholderForegroundColor%22:%22#999999%22,%22sapUiContentFocusColor%22:%22#ffffff%22,%22sapUiContentContrastFocusColor%22:%22#ffffff%22,%22sapUiContentShadowColor%22:%22#ffffff%22,%22sapUiContentContrastShadowColor%22:%22#ffffff%22,%22sapUiContentSearchHighlightColor%22:%22#7a5100%22,%22sapUiContentHelpColor%22:%22#03b803%22,%22sapUiContentLabelColor%22:%22#ffffff%22,%22sapUiContentDisabledTextColor%22:%22#666666%22,%22sapUiContentDisabledOpacity%22:%220.5%22,%22sapUiContentContrastTextThreshold%22:%220.65%22,%22sapUiContentContrastTextColor%22:%22#ffffff%22,%22sapUiContentForegroundColor%22:%22#000000%22,%22sapUiContentForegroundBorderColor%22:%22#ffffff%22,%22sapUiContentForegroundTextColor%22:%22#ffffff%22,%22sapUiShellBackground%22:%22#000000%22,%22sapUiShellBackgroundImage%22:%22#000000%22,%22sapUiShellBackgroundImageOpacity%22:%221%22,%22sapUiShellBackgroundImageRepeat%22:%22false%22,%22sapUiShellBackgroundGradient%22:%22#000000%22,%22sapUiShellBorderColor%22:%22#ffffff%22,%22sapUiShellTextColor%22:%22#ffffff%22,%22sapUiShellFavicon%22:%22none%22,%22sapUiButtonBackground%22:%22#000000%22,%22sapUiButtonBorderColor%22:%22#ffffff%22,%22sapUiButtonTextColor%22:%22#ffffff%22,%22sapUiButtonDisabledBackground%22:%22#000000%22,%22sapUiButtonDisabledBorderColor%22:%22#666666%22,%22sapUiButtonDisabledTextColor%22:%22#666666%22,%22sapUiButtonHoverBackground%22:%22#7a5100%22,%22sapUiButtonHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonHoverTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedBackground%22:%22#000000%22,%22sapUiButtonEmphasizedBorderColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedTextColor%22:%22#ffffff%22,%22sapUiButtonRejectBackground%22:%22#000000%22,%22sapUiButtonAcceptBackground%22:%22#000000%22,%22sapUiFieldBackground%22:%22#000000%22,%22sapUiFieldBorderColor%22:%22#ffffff%22,%22sapUiFieldTextColor%22:%22#ffffff%22,%22sapUiFieldHelpBackground%22:%22#000000%22,%22sapUiFieldHoverBackground%22:%22#000000%22,%22sapUiFieldHoverBorderColor%22:%22#ffffff%22,%22sapUiFieldHoverHelpBackground%22:%22#000000%22,%22sapUiFieldFocusBackground%22:%22#000000%22,%22sapUiFieldFocusBorderColor%22:%22#ffffff%22,%22sapUiFieldFocusHelpBackground%22:%22#000000%22,%22sapUiFieldReadOnlyBackground%22:%22#585858%22,%22sapUiFieldReadOnlyBorderColor%22:%22#999999%22,%22sapUiFieldReadOnlyHelpBackground%22:%22#585858%22,%22sapUiFieldDisabledBackground%22:%22#585858%22,%22sapUiFieldDisabledBorderColor%22:%22#999999%22,%22sapUiFieldDisabledTextColor%22:%22#666666%22,%22sapUiFieldDisabledHelpBackground%22:%22#585858%22,%22sapUiFieldRequiredColor%22:%22#ffffff%22,%22sapUiFieldInvalidColor%22:%22#ffffff%22,%22sapUiFieldInvalidBackground%22:%22#7a5100%22,%22sapUiFieldWarningColor%22:%22#ffffff%22,%22sapUiFieldWarningBackground%22:%22#000000%22,%22sapUiFieldSuccessColor%22:%22#ffffff%22,%22sapUiFieldSuccessBackground%22:%22#000000%22,%22sapUiGroupTitleBackground%22:%22#000000%22,%22sapUiGroupTitleBorderColor%22:%22#ffffff%22,%22sapUiGroupTitleTextColor%22:%22#ffffff%22,%22sapUiGroupContentBackground%22:%22#000000%22,%22sapUiGroupContentBorderColor%22:%22#ffffff%22,%22sapUiGroupFooterBackground%22:%22#000000%22,%22sapUiToolbarBackground%22:%22#000000%22,%22sapUiToolbarSeparatorColor%22:%22#ffffff%22,%22sapUiListHeaderBackground%22:%22#000000%22,%22sapUiListHeaderBorderColor%22:%22#ffffff%22,%22sapUiListHeaderTextColor%22:%22#ffffff%22,%22sapUiListBorderColor%22:%22#999999%22,%22sapUiListHighlightColor%22:%22#7a5100%22,%22sapUiListSelectionBackgroundColor%22:%22#0f5d94%22,%22sapUiListBackground%22:%22#000000%22,%22sapUiListHoverBackground%22:%22#7a5100%22,%22sapUiScrollBarFaceColor%22:%22#999999%22,%22sapUiScrollBarTrackColor%22:%22#000000%22,%22sapUiScrollBarBorderColor%22:%22#999999%22,%22sapUiScrollBarSymbolColor%22:%22#ffffff%22,%22sapUiScrollBarHoverFaceColor%22:%22#ffffff%22,%22sapUiPageHeaderBackground%22:%22#000000%22,%22sapUiPageHeaderBorderColor%22:%22#ffffff%22,%22sapUiPageHeaderTextColor%22:%22#ffffff%22,%22sapUiPageFooterBackground%22:%22#000000%22,%22sapUiPageFooterTextColor%22:%22#ffffff%22,%22sapUiInfobarBackground%22:%22#000000%22,%22sapUiObjectHeaderBackground%22:%22#000000%22,%22sapUiBlockLayerBackground%22:%22#000000%22,%22sapUiTileBackground%22:%22#000000%22,%22sapUiTileBorderColor%22:%22#ffffff%22,%22sapUiTileTitleTextColor%22:%22#ffffff%22,%22sapUiTileTextColor%22:%22#ffffff%22,%22sapUiTileIconColor%22:%22#ffffff%22,%22sapUiChart1%22:%22#30a7df%22,%22sapUiChart2%22:%22#a3ce2f%22,%22sapUiChart3%22:%22#f8b033%22,%22sapUiChart4%22:%22#cb73b8%22,%22sapUiChart5%22:%22#efc619%22,%22sapUiChart6%22:%22#b9b088%22,%22sapUiChart7%22:%22#30a7df%22,%22sapUiChart8%22:%22#a3ce2f%22,%22sapUiChart9%22:%22#f8b033%22,%22sapUiChart10%22:%22#cb73b8%22,%22sapUiChart11%22:%22#efc619%22,%22sapUiChartBad%22:%22#ff5e5e%22,%22sapUiChartCritical%22:%22#ffab1d%22,%22sapUiChartGood%22:%22#99cc99%22,%22sapUiChartNeutral%22:%22#ffffff%22,%22sapUiChartSequence1%22:%22#5cbae5%22,%22sapUiChartSequence2%22:%22#c6e17d%22,%22sapUiChartSequence3%22:%22#ffab1d%22,%22sapUiChartSequenceNeutral%22:%22#ffffff%22,%22sapUiAccent1%22:%22#ffc847%22,%22sapUiAccent2%22:%22#ed884a%22,%22sapUiAccent3%22:%22#db9292%22,%22sapUiAccent4%22:%22#e269c9%22,%22sapUiAccent5%22:%22#8ca7d5%22,%22sapUiAccent6%22:%22#6bd3ff%22,%22sapUiAccent7%22:%22#7fc6c6%22,%22sapUiAccent8%22:%22#b2e484%22,%22sapUiErrorBG%22:%22#000000%22,%22sapUiWarningBG%22:%22#000000%22,%22sapUiSuccessBG%22:%22#000000%22,%22sapUiNeutralBG%22:%22#000000%22,%22sapUiErrorBorder%22:%22#ff5e5e%22,%22sapUiWarningBorder%22:%22#ffab1d%22,%22sapUiSuccessBorder%22:%22#99cc99%22,%22sapUiNeutralBorder%22:%22#ffffff%22,%22sapUiNegativeElement%22:%22#ff5e5e%22,%22sapUiCriticalElement%22:%22#ffab1d%22,%22sapUiPositiveElement%22:%22#99cc99%22,%22sapUiNeutralElement%22:%22#ffffff%22,%22sapUiNegativeText%22:%22#ff5e5e%22,%22sapUiCriticalText%22:%22#ffab1d%22,%22sapUiPositiveText%22:%22#99cc99%22,%22sapUiNeutralText%22:%22#ffffff%22,%22sapUiNegative%22:%22#ff5e5e%22,%22sapUiCritical%22:%22#ffab1d%22,%22sapUiPositive%22:%22#99cc99%22,%22sapUiNeutral%22:%22#ffffff%22,%22sapUiErrorColor%22:%22#ff9191%22,%22sapUiWarningColor%22:%22#ffbe50%22,%22sapUiSuccessColor%22:%22#bbddbb%22,%22sapUiFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontSize%22:%2216px%22,%22sapUiFontCondensedFamily%22:%22%27Arial Narrow%27, HelveticaNeue-CondensedBold, Arial, sans-serif%22,%22sapUiFontHeaderFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontHeaderWeight%22:%22normal%22,%22sapMFontHeader1Size%22:%221.625rem%22,%22sapMFontHeader2Size%22:%221.375rem%22,%22sapMFontHeader3Size%22:%221.25rem%22,%22sapMFontHeader4Size%22:%221.125rem%22,%22sapMFontHeader5Size%22:%221rem%22,%22sapMFontHeader6Size%22:%220.875rem%22,%22sapMFontSmallSize%22:%220.75rem%22,%22sapMFontMediumSize%22:%220.875rem%22,%22sapMFontLargeSize%22:%221rem%22,%22sapUiTranslucentBGOpacity%22:%2280%25%22,%22sapMPlatformDependent%22:%22false%22,%22sapUiDesktopFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiDesktopFontSize%22:%2212px%22,%22sapUiFontLargeSize%22:%2213px%22,%22sapUiFontSmallSize%22:%2211px%22,%22sapUiFontHeader1Size%22:%2226px%22,%22sapUiFontHeader2Size%22:%2220px%22,%22sapUiFontHeader3Size%22:%2218px%22,%22sapUiFontHeader4Size%22:%2216px%22,%22sapUiFontHeader5Size%22:%2214px%22,%22sapUiFontHeader6Size%22:%2213px%22,%22sapUiLineHeight%22:%2218px%22,%22sapUiChartLabelHoverColor%22:%22#7a5100%22,%22sapUiChartLabelPressedColor%22:%22#7a5100%22,%22sapUiChartCategoryAxisLabelFontColor%22:%22#ffffff%22,%22sapUiChartValueAxisLabelFontColor%22:%22#ffffff%22,%22sapUiChartCategoryAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartValueAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartCategoryAxisLineColor%22:%22#ffffff%22,%22sapUiChartValueAxisLineColor%22:%22#ffffff%22,%22sapUiChartCategoryAxisTickColor%22:%22#ffffff%22,%22sapUiChartValueAxisTickColor%22:%22#ffffff%22,%22sapUiChartBackgroundColor%22:%22#000000%22,%22sapUiChartLabelFontWeight%22:%22normal%22,%22sapUiChartLegendLabelFontColor%22:%22#ffffff%22,%22sapUiChartLegendTitleFontColor%22:%22#ffffff%22,%22sapUiChartLegendTitleFontSize%22:%220.875rem%22,%22sapUiChartLegendLabelFontSize%22:%220.75rem%22,%22sapUiChartPaletteUndefinedColor%22:%22#ffffff%22,%22sapUiChartGridlineColor%22:%22#999999%22,%22sapUiChartReferenceLineColor%22:%22#ffffff%22,%22sapUiChartDataLabelFontColor%22:%22#ffffff%22,%22sapUiChartReferenceLineLabelColor%22:%22#ffffff%22,%22sapUiChartDataLabelFontSize%22:%220.75rem%22,%22sapUiChartPopoverDataItemFontColor%22:%22#ffffff%22,%22sapUiChartPopoverGroupFontColor%22:%22#ffffff%22,%22sapUiChartPopoverDataItemFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontWeight%22:%22bold%22,%22sapUiChartScrollBarThumbColor%22:%22#999999%22,%22sapUiChartScrollBarTrackColor%22:%22#000000%22,%22sapUiChartScrollBarThumbHoverColor%22:%22#ffffff%22,%22sapUiChartMainTitleFontColor%22:%22#ffffff%22,%22sapUiChartAxisTitleFontColor%22:%22#ffffff%22,%22sapUiChartMainTitleFontSize%22:%221rem%22,%22sapUiChartAxisTitleFontSize%22:%220.875rem%22,%22sapUiChartTitleFontWeight%22:%22bold%22,%22sapUiChartLightText%22:%22#ffffff%22,%22sapUiChartZeroAxisColor%22:%22#ffffff%22,%22sapUiChartDataPointBorderColor%22:%22#000000%22,%22sapUiChartDataPointBorderHoverSelectedColor%22:%22#ffffff%22,%22sapUiChartDataPointNotSelectedBackgroundOpacity%22:%220.7%22,%22sapUiChartValueAxisLineOpacity%22:%220%22,%22sapUiChartCategoryAxisLabelFontHoverColor%22:%22#ffffff%22,%22sapUiChartCategoryAxisLabelFontPressedColor%22:%22#ffffff%22,%22sapUiChartTargetColor%22:%22#ffffff%22,%22sapUiChartTargetShadowColor%22:%22#000000%22,%22sapUiChartBubbleBGOpacity%22:%220.9%22,%22sapUiChartScrollbarBorderColor%22:%22#999999%22,%22sapUiChartScrollbarBorderSize%22:%221px%22,%22sapUiChartScrollbarThumbPadding%22:%220.125rem%22,%22sapUiChartNegativeLargeText%22:%22#ff5e5e%22,%22sapUiChartCriticalLargeText%22:%22#ffab1d%22,%22sapUiChartPositiveLargeText%22:%22#99cc99%22,%22sapUiChartNeutralLargeText%22:%22#ffffff%22,%22sapUiChartDataPointBG%22:%22#000000%22,%22sapUiChartDataPointBGBorderColor%22:%22#ffffff%22,%22sapUiChartDataLineColorWithBG%22:%22#ffffff%22,%22sapUiChartDataLineColor%22:%22#ffffff%22,%22sapUiChartRadialRemainingCircle%22:%22#000000%22,%22sapUiChartRadialRemainingCircleBorderColor%22:%22#ffffff%22,%22sapUiChartRadialBG%22:%22#000000%22,%22sapUiChartPaletteQualitativeHue1%22:%22#30a7df%22,%22sapUiChartPaletteQualitativeHue2%22:%22#a3ce2f%22,%22sapUiChartPaletteQualitativeHue3%22:%22#f8b033%22,%22sapUiChartPaletteQualitativeHue4%22:%22#cb73b8%22,%22sapUiChartPaletteQualitativeHue5%22:%22#efc619%22,%22sapUiChartPaletteQualitativeHue6%22:%22#b9b088%22,%22sapUiChartPaletteQualitativeHue7%22:%22#30a7df%22,%22sapUiChartPaletteQualitativeHue8%22:%22#a3ce2f%22,%22sapUiChartPaletteQualitativeHue9%22:%22#f8b033%22,%22sapUiChartPaletteQualitativeHue10%22:%22#cb73b8%22,%22sapUiChartPaletteQualitativeHue11%22:%22#efc619%22,%22sapUiChartPaletteSemanticBadLight3%22:%22#db3535%22,%22sapUiChartPaletteSemanticBadLight2%22:%22#db3535%22,%22sapUiChartPaletteSemanticBadLight1%22:%22#ff7878%22,%22sapUiChartPaletteSemanticBad%22:%22#ff7878%22,%22sapUiChartPaletteSemanticBadDark1%22:%22#ff7878%22,%22sapUiChartPaletteSemanticBadDark2%22:%22#ff7878%22,%22sapUiChartPaletteSemanticCriticalLight3%22:%22#b67200%22,%22sapUiChartPaletteSemanticCriticalLight2%22:%22#b67200%22,%22sapUiChartPaletteSemanticCriticalLight1%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticCritical%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticCriticalDark1%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticCriticalDark2%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticGoodLight3%22:%22#5e975e%22,%22sapUiChartPaletteSemanticGoodLight2%22:%22#5e975e%22,%22sapUiChartPaletteSemanticGoodLight1%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticGood%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticGoodDark1%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticGoodDark2%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticNeutralLight3%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralLight2%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralLight1%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutral%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralDark1%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralDark2%22:%22#ffffff%22,%22sapUiChartPaletteSequentialHue1Light3%22:%22#2382ae%22,%22sapUiChartPaletteSequentialHue1Light2%22:%22#2382ae%22,%22sapUiChartPaletteSequentialHue1Light1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1Dark1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1Dark2%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue2Light3%22:%22#819e31%22,%22sapUiChartPaletteSequentialHue2Light2%22:%22#819e31%22,%22sapUiChartPaletteSequentialHue2Light1%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2Dark1%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2Dark2%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue3Light3%22:%22#b67200%22,%22sapUiChartPaletteSequentialHue3Light2%22:%22#b67200%22,%22sapUiChartPaletteSequentialHue3Light1%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialHue3%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialHue3Dark1%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialHue3Dark2%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialNeutralLight3%22:%22#8c8c8c%22,%22sapUiChartPaletteSequentialNeutralLight2%22:%22#8c8c8c%22,%22sapUiChartPaletteSequentialNeutralLight1%22:%22#ffffff%22,%22sapUiChartPaletteSequentialNeutral%22:%22#ffffff%22,%22sapUiChartPaletteSequentialNeutralDark1%22:%22#ffffff%22,%22sapUiChartPaletteSequentialNeutralDark2%22:%22#ffffff%22,%22sapUiChoroplethBG%22:%22#000000%22,%22sapUiChoroplethRegionBorder%22:%22#000000%22,%22sapUiChoroplethRegionBG%22:%22#8c8c8c%22,%22sapUiMapLegendBG%22:%22#000000%22,%22sapUiMapLegendBorderColor%22:%22#ffffff%22,%22sapUiShellHoverBackground%22:%22#7a5100%22,%22sapUiShellActiveBackground%22:%22#7a5100%22,%22sapUiShellActiveTextColor%22:%22#ffffff%22,%22sapUiShellHoverToggleBackground%22:%22#0f5d94%22,%22sapUiShellContainerBackground%22:%22#000000%22,%22sapUiShellAltContainerBackground%22:%22#000000%22,%22sapUiUx3ShellHeaderColor%22:%22#000000%22,%22sapUiUx3ShellBackgroundColor%22:%22#000000%22,%22sapUiUx3ShellHoverColor%22:%22#7a5100%22,%22sapUiUx3ShellGradientBottom%22:%22#000000%22,%22sapUiUx3ShellGradientTop%22:%22#000000%22,%22sapUiUx3ShellToolPaletteIconFontColor%22:%22#ffffff%22,%22sapUiUx3ExactLstExpandOffset%22:%220 0%22,%22sapUiUx3ExactLstRootExpandOffset%22:%220 3%22,%22sapUiUx3ExactLstContentTop%22:%2225px%22,%22sapUiLinkActive%22:%22#ffffff%22,%22sapUiLinkVisited%22:%22#ffffff%22,%22sapUiLinkHover%22:%22#ffffff%22,%22sapUiLinkInverted%22:%22#ffffff%22,%22sapUiNotificationBarBG%22:%22#000000%22,%22sapUiNotifierSeparator%22:%22#ffffff%22,%22sapUiNotifierSeparatorWidth%22:%222px%22,%22sapUiNotificationBarBorder%22:%22#ffffff%22,%22sapUiUx3ToolPopupInverted%22:%22false%22,%22sapUiUx3ToolPopupArrowRightMarginCorrection%22:%22-2px%22,%22sapUiUx3ToolPopupShadow%22:%220px 6px 12px 0px rgba%28255, 255, 255, 0.3%29%22,%22sapUiCalloutShadow%22:%220px 6px 12px 0px rgba%28255, 255, 255, 0.3%29%22,%22sapUiButtonIconColor%22:%22#ffffff%22,%22sapUiButtonActiveBackground%22:%22#7a5100%22,%22sapUiButtonActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonActiveTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedHoverBackground%22:%22#7a5100%22,%22sapUiButtonEmphasizedHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedActiveBackground%22:%22#7a5100%22,%22sapUiButtonEmphasizedActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedTextShadow%22:%22#000000%22,%22sapUiButtonAcceptBorderColor%22:%22#ffffff%22,%22sapUiButtonAcceptHoverBackground%22:%22#7a5100%22,%22sapUiButtonAcceptHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonAcceptActiveBackground%22:%22#7a5100%22,%22sapUiButtonAcceptActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonAcceptTextColor%22:%22#ffffff%22,%22sapUiButtonRejectBorderColor%22:%22#ffffff%22,%22sapUiButtonRejectHoverBackground%22:%22#7a5100%22,%22sapUiButtonRejectHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonRejectActiveBackground%22:%22#7a5100%22,%22sapUiButtonRejectActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonRejectTextColor%22:%22#ffffff%22,%22sapUiButtonLiteBackground%22:%22#000000%22,%22sapUiButtonLiteBorderColor%22:%22#ffffff%22,%22sapUiButtonLiteTextColor%22:%22#ffffff%22,%22sapUiButtonLiteHoverBackground%22:%22#7a5100%22,%22sapUiButtonLiteHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonLiteActiveBackground%22:%22#7a5100%22,%22sapUiButtonLiteActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonHeaderTextColor%22:%22#ffffff%22,%22sapUiButtonHeaderDisabledTextColor%22:%22#666666%22,%22sapUiButtonFooterTextColor%22:%22#ffffff%22,%22sapUiButtonFooterHoverBackground%22:%22#7a5100%22,%22sapUiButtonActionSelectBackground%22:%22#000000%22,%22sapUiButtonActionSelectBorderColor%22:%22#ffffff%22,%22sapUiButtonLiteActionSelectHoverBackground%22:%22#7a5100%22,%22sapUiToggleButtonPressedBackground%22:%22#0f5d94%22,%22sapUiToggleButtonPressedBorderColor%22:%22#ffffff%22,%22sapUiToggleButtonPressedTextColor%22:%22#ffffff%22,%22sapUiToggleButtonPressedHoverBackground%22:%22#7a5100%22,%22sapUiToggleButtonPressedHoverBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonBackground%22:%22#000000%22,%22sapUiSegmentedButtonBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonHoverBackground%22:%22#7a5100%22,%22sapUiSegmentedButtonActiveBackground%22:%22#7a5100%22,%22sapUiSegmentedButtonActiveTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedBackground%22:%22#0f5d94%22,%22sapUiSegmentedButtonSelectedTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedHoverBackground%22:%22#7a5100%22,%22sapUiSegmentedButtonSelectedHoverBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonActiveIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonFooterBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonFooterHoverBackground%22:%22#7a5100%22,%22sapUiFieldActiveBackground%22:%22#7a5100%22,%22sapUiFieldActiveBorderColor%22:%22#ffffff%22,%22sapUiFieldActiveTextColor%22:%22#ffffff%22,%22sapUiFieldPlaceholderTextColor%22:%22#999999%22,%22sapUiListTextColor%22:%22#ffffff%22,%22sapUiListVerticalBorderColor%22:%22#ffffff%22,%22sapUiListActiveBackground%22:%22#7a5100%22,%22sapUiListActiveTextColor%22:%22#ffffff%22,%22sapUiListSelectionHoverBackground%22:%22#7a5100%22,%22sapUiListFooterBackground%22:%22#000000%22,%22sapUiListFooterTextColor%22:%22#ffffff%22,%22sapUiListGroupHeaderBackground%22:%22#585858%22,%22sapUiListTableGroupHeaderBackground%22:%22#000000%22,%22sapUiListTableGroupHeaderBorderColor%22:%22#ffffff%22,%22sapUiListTableGroupHeaderTextColor%22:%22#ffffff%22,%22sapUiListTableFooterBorder%22:%22#ffffff%22,%22sapUiListTableFixedBorder%22:%22#ffffff%22,%22sapUiListTableTextSize%22:%220.875rem%22,%22sapUiListTableIconSize%22:%221rem%22,%22sapUiPageFooterBorderColor%22:%22#ffffff%22,%22sapUiInfobarHoverBackground%22:%22#7a5100%22,%22sapUiInfobarActiveBackground%22:%22#7a5100%22,%22sapUiObjectHeaderBorderColor%22:%22#ffffff%22,%22sapUiCalendarColorToday%22:%22#ffffff%22,%22sapUiDragAndDropColor%22:%22#ffffff%22,%22sapUiDragAndDropBackground%22:%22#000000%22,%22sapUiDragAndDropBorderColor%22:%22#ffffff%22,%22sapUiDragAndDropActiveColor%22:%22#03b803%22,%22sapUiDragAndDropActiveBackground%22:%22#000000%22,%22sapUiDragAndDropActiveBorderColor%22:%22#03b803%22,%22sapUiShadowLevel0%22:%220 0 0 1px #ffffff%22,%22sapUiShadowLevel1%22:%220 0 1rem 0 rgba%28255, 255, 255, 0.5%29, 0 0 0 2px #ffffff%22,%22sapUiShadowLevel2%22:%220 0.25rem 2rem 0 rgba%28255, 255, 255, 0.6%29, 0 0 0 2px #ffffff%22,%22sapUiShadowLevel3%22:%220 0.625rem 4rem 0 rgba%28255, 255, 255, 0.8%29, 0 0 0 2px #ffffff%22,%22sapUiShadowText%22:%22none%22,%22sapUiShadowHeader%22:%22inset 0 -0.125rem #ffffff, 0 0.125rem 0 0 #000000%22,%22sapUiUx3ShellHeaderImageURL%22:%22%22,%22sapUiUx3ShellApplicationImageURL%22:%22none%22,%22sapUiPurple%22:%22#800080%22,%22sapUiOrange%22:%22#ffa500%22,%22sapUiGreen%22:%22#008000%22,%22sapUiBlue%22:%22#0000ff%22,%22sapUiRed%22:%22#ff0000%22,%22sapUiYellow%22:%22#ffff00%22,%22sapUiBase%22:%22#ffffff%22,%22sapUiBaseBorder%22:%22#ffffff%22,%22sapUiBaseLine%22:%22#ffffff%22,%22sapUiWhite%22:%22#000000%22,%22sapUiWhiteBG%22:%22#000000%22,%22sapUiExtraLightBG%22:%22#000000%22,%22sapUiLightBG%22:%22#000000%22,%22sapUiMediumBG%22:%22#000000%22,%22sapUiDarkBG%22:%22#000000%22,%22sapUiDeepBG%22:%22#ffffff%22,%22sapUiBlackBG%22:%22#ffffff%22,%22sapUiHoverBG%22:%22#808080%22,%22sapUiMediumAltBG%22:%22#808080%22,%22sapUiDarkAltBG%22:%22#a9a9a9%22,%22sapUiButtonStandardBG%22:%22#000000%22,%22sapUiButtonEmphasizedBG%22:%22#000000%22,%22sapUiButtonNegativeBG%22:%22#000000%22,%22sapUiButtonPositiveBG%22:%22#000000%22,%22sapUiReadOnlyBG%22:%22#585858%22,%22sapUiExtraLightText%22:%22#ffffff%22,%22sapUiLightText%22:%22#ffffff%22,%22sapUiMediumText%22:%22#ffffff%22,%22sapUiDarkText%22:%22#ffffff%22,%22sapUiDeepText%22:%22#000000%22,%22sapUiText%22:%22#ffffff%22,%22sapUiTextInverted%22:%22#000000%22,%22sapUiWhiteBorder%22:%22#ffffff%22,%22sapUiExtraLightBorder%22:%22#ffffff%22,%22sapUiLightBorder%22:%22#ffffff%22,%22sapUiMediumBorder%22:%22#ffffff%22,%22sapUiDarkBorder%22:%22#ffffff%22,%22sapUiBlackBorder%22:%22#000000%22,%22sapUiElement%22:%22#d3d3d3%22,%22sapUiInvertedElement%22:%22#ffffff%22,%22sapUiLightLine%22:%22#d3d3d3%22,%22sapUiMediumLine%22:%22#808080%22,%22sapUiEmphasizedLine%22:%22#7a5100%22,%22sapUiDarkLine%22:%22#a9a9a9%22,%22sapUiLightShadowTint%22:%22#ffffff%22,%22sapUiDarkShadowTint%22:%22#ffffff%22,%22sapUiFocus%22:%22#ffffff%22,%22sapUiInvertedFocus%22:%22#ffffff%22,%22sapUiTableRowBG%22:%22#000000%22,%22sapUiTableRowAlternatingBG%22:%22#444444%22,%22sapUiTableRowSelectionBG%22:%22#7a5100%22,%22sapUiTableRowSelectionReadOnlyBG%22:%22#7a5100%22,%22sapUiTableRowHoverBG%22:%22#808080%22,%22sapUiListBG%22:%22#f7f7f7%22,%22sapUiTextColor%22:%22#008000%22,%22sapUiTextTitleColor%22:%22#008000%22,%22sapUiTextSelectionColor%22:%22#008000%22,%22sapUiTextDisabled%22:%22#666666%22,%22sapUiTextSelection%22:%22#ffffff%22,%22sapUiTextfieldBackground%22:%22#000000%22,%22sapUiFontMonospaceFamily%22:%22Lucida Console%22,%22sapUiUx3ShellSideBarBaseWidth%22:%2240px%22,%22sapUiUx3ShellPaneOverflowButtonHeight%22:%22120px%22,%22sapUiUx3ExactLstCollapseWidth%22:%2224px%22,%22sapUiUx3ExactLstHeaderHeight%22:%2225px%22,%22sapUiNotificationBarBG_IE%22:%22#000000%22,%22sapUiNotifierHoverColor%22:%22#7a5100%22,%22sapUiNotificationText%22:%22#ffffff%22,%22sapUiNotificationTimestamp%22:%22#ababab%22,%22sapUiNotificationBarCalloutBorder%22:%22#ffffff%22,%22sapUiNotificationBarCalloutBorder_IE%22:%22#ffffff%22,%22sapUiNotificationBarCalloutArr%22:%22#ffffff%22,%22sapUiNotificationBarHeight%22:%2240px%22,%22sapUiNotificationBarHeightMinimized%22:%220px%22,%22sapUiNotificationBarHeightMaximized%22:%2240%25%22,%22sapUiNotifierWidth%22:%2240px%22,%22sapUiRIIconPaddingXS%22:%221px%22,%22sapUiRIIconPaddingS%22:%220.125rem%22,%22sapUiRIIconPaddingM%22:%220.1875rem%22,%22sapUiRIIconPaddingL%22:%220.25rem%22,%22sapUiRIIconPaddingCozy%22:%220.1875rem%22,%22sapUiRIIconPaddingCompact%22:%220.125rem%22,%22sapUiRIIconPaddingCondensed%22:%220.125rem%22,%22sapUiRIIconPaddingDisplayOnly%22:%220.125rem%22,%22sapUiRIIconSizeCozy%22:%221.375rem%22,%22sapUiRIIconSizeCompact%22:%221rem%22,%22sapUiRIIconSizeCondensed%22:%221rem%22,%22sapUiRIIconSizeDisplayOnly%22:%221rem%22,%22sapUiUx3ToolPopupArrowWidth%22:%2212px%22,%22sapUiUx3ToolPopupArrowHeight%22:%2218px%22,%22sapUiUx3ToolPopupArrowRightMarginCorrectionInverted%22:%22-7px%22,%22sapUiUx3TPPaddingBottom%22:%2250px%22,%22sapUiButtonEmphasizedDisabledBorderColor%22:%22#666666%22,%22sapUiButtonEmphasizedDisabledBackground%22:%22#000000%22,%22sapUiButtonAcceptDisabledBorderColor%22:%22#666666%22,%22sapUiButtonAcceptDisabledBackground%22:%22#000000%22,%22sapUiButtonRejectDisabledBorderColor%22:%22#666666%22,%22sapUiButtonRejectDisabledBackground%22:%22#000000%22,%22sapUiToggleButtonPressedDisabledBackground%22:%22#585858%22,%22sapUiToggleButtonPressedDisabledBorderColor%22:%22#999999%22,%22sapUiToggleButtonPressedDisabledTextColor%22:%22#999999%22,%22sapUiPositiveBG%22:%22#99cc99%22,%22sapUiShadowTint%22:%22#000000%22,%22sapUiShadow%22:%225px 5px 10px rgba%280, 0, 0, 0.5%29%22,%22sapUiThemeDesignerCustomCss%22:%22false%22,%22sapUiMarginTiny%22:%220.5rem%22,%22sapUiMarginSmall%22:%221rem%22,%22sapUiMarginMedium%22:%222rem%22,%22sapUiMarginLarge%22:%223rem%22,%22sapUiEscapedEmptyString%22:%22%22,%22sapUiLightBoxMagnifyingGlassBorder%22:%22none%22,%22sapUiLightBoxMagnifyingGlassBackgroundColor%22:%22#ffffff%22,%22_sap_ui_rta_Overlay_ActiveBG%22:%22rgba%2822, 137, 217, 0.3%29%22,%22_sap_ui_rta_Overlay_BaseBG%22:%22#000000%22,%22_sap_ui_rta_Overlay_Border%22:%22#03b803%22,%22_sap_ui_rta_Overlay_HoverBG%22:%22rgba%28199, 132, 0, 0.3%29%22,%22_sap_ui_rta_Overlay_ActiveHoverBG%22:%22rgba%2815, 93, 148, 0.2%29%22,%22sapHCStandardBG%22:%22#000000%22,%22sapHCHighlightBG%22:%22#7a5100%22,%22sapHCHighlightAltBG%22:%22#0f5d94%22,%22sapHCReducedBG%22:%22#585858%22,%22sapHCReducedAltBG%22:%22#a2a39f%22,%22sapHCStandardFG%22:%22#ffffff%22,%22sapHCEnhancedFG%22:%22#03b803%22,%22sapHCReducedFG%22:%22#666666%22,%22sapHCReducedAltFG%22:%22#999999%22,%22sapHCNegative%22:%22#ff5e5e%22,%22sapHCCritical%22:%22#ffab1d%22,%22sapHCPositive%22:%22#99cc99%22,%22sapHCNeutral%22:%22#ffffff%22,%22sapUiHcStandardBackground%22:%22#000000%22,%22sapUiHcHighlightBackground%22:%22#7a5100%22,%22sapUiHcHighlightAltBackground%22:%22#0f5d94%22,%22sapUiHcReducedBackground%22:%22#585858%22,%22sapUiHcReducedAltBackground%22:%22#a2a39f%22,%22sapUiHcStandardForeground%22:%22#ffffff%22,%22sapUiHcEnhancedForeground%22:%22#03b803%22,%22sapUiHcReducedForeground%22:%22#666666%22,%22sapUiHcReducedAltForeground%22:%22#999999%22,%22sapUiHcNegativeColor%22:%22#ff5e5e%22,%22sapUiHcCriticalColor%22:%22#ffab1d%22,%22sapUiHcPositiveColor%22:%22#99cc99%22,%22sapUiHcNeutralColor%22:%22#ffffff%22,%22sapHCShadowTint%22:%22rgba%28255, 255, 255, 0.8%29%22,%22sapUiInfoTop%22:%22false%22,%22sapUiHighlightColor%22:%22#7a5100%22,%22sapUiActiveBG%22:%22#0f5d94%22,%22sapUiMessageNotifierCountBG%22:%22#0f5d94%22,%22sapUiDatePickerTableBackground%22:%22#0f5d94%22,%22sapUiDatePickerTableBorderColor%22:%22#0f5d94%22,%22sapUiDTICustomRows%22:%225%22,%22sapUiDTICustomPhoneRows%22:%223%22,%22sapUiDTICustomWidth%22:%2264%22,%22sapUiDTICustomHeight%22:%2248%22,%22sapUiDTICustomShowLabel%22:%22false%22,%22sapUiDTICustomHeaderText%22:%22true%22,%22sapUiDTICustomMode%22:%22scroller%22,%22sapUiDTICustomDesktopMode%22:%22mixed%22,%22sapUiDTICustomDisplay%22:%22bubble%22,%22sapUiDTICustomPhoneDisplay%22:%22modal%22,%22sapUiToolbarSeparatorBG%22:%22#ffffff%22,%22sapUiToolbarSeparatorFooterBG%22:%22#ffffff%22,%22sapUiSearchHighlight%22:%22#7a5100%22,%22sapUiDarkestBorder%22:%22#ffffff%22,%22sapUiExtraDarkBorder%22:%22#ffffff%22,%22sapUiLightestBorder%22:%22#ffffff%22,%22sapUiFooterBG%22:%22#000000%22,%22sapUiHeaderBG%22:%22#000000%22,%22sapUiLightestBG%22:%22#000000%22,%22sapUiDarkestBG%22:%22#000000%22,%22sapUiExtraDarkBG%22:%22#000000%22,%22sapMeOverlapCalendarType00%22:%22#585858%22,%22sapMeOverlapCalendarType01%22:%22#66b366%22,%22sapMeOverlapCalendarType01Action%22:%22#66b366%22,%22sapMeOverlapCalendarType04%22:%22#bbddbb%22,%22sapMeOverlapCalendarType06%22:%22#ffab1d%22,%22sapMeOverlapCalendarType07%22:%22#ff9191%22,%22sapMeOverlapCalendarIndicator%22:%22#ed884a%22,%22sapMeCalendarLegendIconCollapse%22:%22collapse%22,%22sapMeCalendarLegendIconExpand%22:%22expand%22%7D'); } diff --git a/resources/sap/ui/rta/themes/sap_hcb/library-parameters.json b/resources/sap/ui/rta/themes/sap_hcb/library-parameters.json new file mode 100644 index 0000000..40ed0a3 --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/library-parameters.json @@ -0,0 +1,778 @@ +{ + "sapBrandColor": "#000000", + "sapHighlightColor": "#cc8700", + "sapBaseColor": "#dddddd", + "sapShellColor": "#ffffff", + "sapBackgroundColor": "#ffffff", + "sapFontFamily": "Arial, Helvetica, sans-serif", + "sapFontSize": "0.75em", + "sapTextColor": "#000000", + "sapLinkColor": "#000000", + "sapCompanyLogo": "none", + "sapBackgroundImage": "none", + "sapBackgroundImageOpacity": "1", + "sapBackgroundImageRepeat": "false", + "sapSelectedColor": "#2e9cea", + "sapActiveColor": "#cc8700", + "sapHighlightTextColor": "#ffffff", + "sapTitleColor": "#000000", + "sapNegativeColor": "#bb0000", + "sapCriticalColor": "#e78c07", + "sapPositiveColor": "#2b7d2b", + "sapNeutralColor": "#ffffff", + "sapNegativeElementColor": "#bb0000", + "sapCriticalElementColor": "#e78c07", + "sapPositiveElementColor": "#2b7d2b", + "sapNeutralElementColor": "#ffffff", + "sapContent_LineHeight": "1.3", + "sapContent_ElementHeight": "1.37em", + "sapContent_ElementHeight_PX": "22px", + "sapContent_IconHeight": "16px", + "sapContent_IconColor": "#000000", + "sapContent_ContrastIconColor": "#ffffff", + "sapContent_NonInteractiveIconColor": "#000000", + "sapContent_MarkerIconColor": "#000000", + "sapContent_FocusColor": "#000000", + "sapContent_ContrastFocusColor": "#ffffff", + "sapContent_ShadowColor": "#000000", + "sapContent_ContrastShadowColor": "#ffffff", + "sapContent_SearchHighlightColor": "#cc8700", + "sapContent_HelpColor": "#006500", + "sapContent_LabelColor": "#000000", + "sapContent_MonospaceFontFamily": "lucida console, monospace", + "sapContent_DisabledTextColor": "#666666", + "sapContent_DisabledOpacity": "0.5", + "sapContent_ContrastTextThreshold": "0.65", + "sapContent_ContrastTextColor": "#ffffff", + "sapContent_ForegroundColor": "#e5e5e5", + "sapContent_ForegroundBorderColor": "#000000", + "sapContent_ForegroundTextColor": "#000000", + "sapShell_Background": "#ffffff", + "sapShell_BackgroundImage": "#ffffff", + "sapShell_BackgroundGradient": "#ffffff", + "sapShell_BackgroundImageOpacity": "1", + "sapShell_BackgroundImageRepeat": "false", + "sapShell_BorderColor": "#666666", + "sapShell_TextColor": "#000000", + "sapShell_Favicon": "none", + "sapButton_BorderWidth": "1px", + "sapButton_BorderCornerRadius": "0", + "sapButton_Background": "#ffffff", + "sapButton_BorderColor": "#000000", + "sapButton_TextColor": "#000000", + "sapButton_Disabled_Background": "#ffffff", + "sapButton_Disabled_BorderColor": "#666666", + "sapButton_Disabled_TextColor": "#666666", + "sapButton_Hover_Background": "#cc8700", + "sapButton_Hover_BorderColor": "#000000", + "sapButton_Hover_TextColor": "#ffffff", + "sapButton_Emphasized_Background": "#ffffff", + "sapButton_Emphasized_BorderColor": "#000000", + "sapButton_Emphasized_TextColor": "#000000", + "sapButton_Reject_Background": "#ffffff", + "sapButton_Accept_Background": "#ffffff", + "sapField_Background": "#ffffff", + "sapField_BorderColor": "#000000", + "sapField_TextColor": "#000000", + "sapField_HelpBackground": "#ffffff", + "sapField_BorderWidth": "1px", + "sapField_BorderCornerRadius": "0", + "sapField_Hover_Background": "#ffffff", + "sapField_Hover_BorderColor": "#000000", + "sapField_Hover_HelpBackground": "#cc8700", + "sapField_Focus_Background": "#ffffff", + "sapField_Focus_BorderColor": "#000000", + "sapField_Focus_HelpBackground": "#ffffff", + "sapField_Disabled_Background": "#959595", + "sapField_Disabled_BorderColor": "#4f4f4f", + "sapField_Disabled_TextColor": "#666666", + "sapField_Disabled_HelpBackground": "#959595", + "sapField_ReadOnly_Background": "#959595", + "sapField_ReadOnly_BorderColor": "#4f4f4f", + "sapField_ReadOnly_HelpBackground": "#959595", + "sapField_RequiredColor": "#000000", + "sapField_InvalidColor": "#ffffff", + "sapField_InvalidBackground": "#cc8700", + "sapField_WarningColor": "#000000", + "sapField_WarningBackground": "#ffffff", + "sapField_SuccessColor": "#000000", + "sapField_SuccessBackground": "#ffffff", + "sapGroup_TitleBackground": "#ffffff", + "sapGroup_TitleBorderColor": "#000000", + "sapGroup_TitleTextColor": "#000000", + "sapGroup_Title_FontSize": "1em", + "sapGroup_ContentBackground": "#ffffff", + "sapGroup_ContentBorderColor": "#000000", + "sapGroup_BorderWidth": "1px", + "sapGroup_BorderCornerRadius": "0", + "sapGroup_FooterBackground": "#ffffff", + "sapToolbar_Background": "#ffffff", + "sapToolbar_SeparatorColor": "#000000", + "sapList_HeaderBackground": "#ffffff", + "sapList_HeaderBorderColor": "#000000", + "sapList_HeaderTextColor": "#000000", + "sapList_BorderColor": "#4f4f4f", + "sapList_BorderWidth": "1px", + "sapList_HighlightColor": "#cc8700", + "sapList_SelectionBackgroundColor": "#2e9cea", + "sapList_Background": "#ffffff", + "sapList_Hover_Background": "#cc8700", + "sapScrollBar_FaceColor": "#4f4f4f", + "sapScrollBar_TrackColor": "#ffffff", + "sapScrollBar_BorderColor": "#4f4f4f", + "sapScrollBar_SymbolColor": "#000000", + "sapScrollBar_Dimension": "16px", + "sapScrollBar_Hover_FaceColor": "#000000", + "sapPageHeader_Background": "#ffffff", + "sapPageHeader_BorderColor": "#000000", + "sapPageHeader_TextColor": "#000000", + "sapPageFooter_Background": "#ffffff", + "sapPageFooter_TextColor": "#000000", + "sapInfobar_Background": "#ffffff", + "sapObjectHeader_Background": "#ffffff", + "sapBlockLayer_Background": "#000000", + "sapTile_Background": "#ffffff", + "sapTile_BorderColor": "#000000", + "sapTile_TitleTextColor": "#000000", + "sapTile_TextColor": "#000000", + "sapTile_IconColor": "#000000", + "sapChart_OrderedColor_1": "#5cbae6", + "sapChart_OrderedColor_2": "#b6d957", + "sapChart_OrderedColor_3": "#fac364", + "sapChart_OrderedColor_4": "#8cd3ff", + "sapChart_OrderedColor_5": "#d998cb", + "sapChart_OrderedColor_6": "#f2d249", + "sapChart_OrderedColor_7": "#93b9c6", + "sapChart_OrderedColor_8": "#ccc5a8", + "sapChart_OrderedColor_9": "#52bacc", + "sapChart_OrderedColor_10": "#dbdb46", + "sapChart_OrderedColor_11": "#98aafb", + "sapChart_Bad": "#dc0d0e", + "sapChart_Critical": "#de890d", + "sapChart_Good": "#3fa45b", + "sapChart_Neutral": "#848f94", + "sapChart_Sequence_1": "#27a3dd", + "sapChart_Sequence_2": "#9dc62d", + "sapChart_Sequence_3": "#f8ac29", + "sapChart_Sequence_Neutral": "#848f94", + "sapUiBrand": "#7a5100", + "sapUiHighlight": "#7a5100", + "sapUiBaseColor": "#000000", + "sapUiShellColor": "#000000", + "sapUiBaseBG": "#000000", + "sapUiGlobalBackgroundColor": "#000000", + "sapUiBaseText": "#ffffff", + "sapUiLink": "#ffffff", + "sapUiGlobalLogo": "none", + "sapUiGlobalBackgroundImage": "none", + "sapUiBackgroundImage": "none", + "sapUiUx3ShellBackgroundImageURL": "none", + "sapUiGlobalBackgroundImageOpacity": "1", + "sapUiGlobalBackgroundRepeat": "false", + "sapUiSelected": "#0f5d94", + "sapUiActive": "#7a5100", + "sapUiHighlightTextColor": "#ffffff", + "sapUiTextTitle": "#ffffff", + "sapUiContentIconColor": "#ffffff", + "sapUiContentContrastIconColor": "#ffffff", + "sapUiContentNonInteractiveIconColor": "#ffffff", + "sapUiContentMarkerIconColor": "#ffffff", + "sapUiContentMarkerTextColor": "#ffffff", + "sapUiContentImagePlaceholderBackground": "#000000", + "sapUiContentImagePlaceholderForegroundColor": "#999999", + "sapUiContentFocusColor": "#ffffff", + "sapUiContentContrastFocusColor": "#ffffff", + "sapUiContentShadowColor": "#ffffff", + "sapUiContentContrastShadowColor": "#ffffff", + "sapUiContentSearchHighlightColor": "#7a5100", + "sapUiContentHelpColor": "#03b803", + "sapUiContentLabelColor": "#ffffff", + "sapUiContentDisabledTextColor": "#666666", + "sapUiContentDisabledOpacity": "0.5", + "sapUiContentContrastTextThreshold": "0.65", + "sapUiContentContrastTextColor": "#ffffff", + "sapUiContentForegroundColor": "#000000", + "sapUiContentForegroundBorderColor": "#ffffff", + "sapUiContentForegroundTextColor": "#ffffff", + "sapUiShellBackground": "#000000", + "sapUiShellBackgroundImage": "#000000", + "sapUiShellBackgroundImageOpacity": "1", + "sapUiShellBackgroundImageRepeat": "false", + "sapUiShellBackgroundGradient": "#000000", + "sapUiShellBorderColor": "#ffffff", + "sapUiShellTextColor": "#ffffff", + "sapUiShellFavicon": "none", + "sapUiButtonBackground": "#000000", + "sapUiButtonBorderColor": "#ffffff", + "sapUiButtonTextColor": "#ffffff", + "sapUiButtonDisabledBackground": "#000000", + "sapUiButtonDisabledBorderColor": "#666666", + "sapUiButtonDisabledTextColor": "#666666", + "sapUiButtonHoverBackground": "#7a5100", + "sapUiButtonHoverBorderColor": "#ffffff", + "sapUiButtonHoverTextColor": "#ffffff", + "sapUiButtonEmphasizedBackground": "#000000", + "sapUiButtonEmphasizedBorderColor": "#ffffff", + "sapUiButtonEmphasizedTextColor": "#ffffff", + "sapUiButtonRejectBackground": "#000000", + "sapUiButtonAcceptBackground": "#000000", + "sapUiFieldBackground": "#000000", + "sapUiFieldBorderColor": "#ffffff", + "sapUiFieldTextColor": "#ffffff", + "sapUiFieldHelpBackground": "#000000", + "sapUiFieldHoverBackground": "#000000", + "sapUiFieldHoverBorderColor": "#ffffff", + "sapUiFieldHoverHelpBackground": "#000000", + "sapUiFieldFocusBackground": "#000000", + "sapUiFieldFocusBorderColor": "#ffffff", + "sapUiFieldFocusHelpBackground": "#000000", + "sapUiFieldReadOnlyBackground": "#585858", + "sapUiFieldReadOnlyBorderColor": "#999999", + "sapUiFieldReadOnlyHelpBackground": "#585858", + "sapUiFieldDisabledBackground": "#585858", + "sapUiFieldDisabledBorderColor": "#999999", + "sapUiFieldDisabledTextColor": "#666666", + "sapUiFieldDisabledHelpBackground": "#585858", + "sapUiFieldRequiredColor": "#ffffff", + "sapUiFieldInvalidColor": "#ffffff", + "sapUiFieldInvalidBackground": "#7a5100", + "sapUiFieldWarningColor": "#ffffff", + "sapUiFieldWarningBackground": "#000000", + "sapUiFieldSuccessColor": "#ffffff", + "sapUiFieldSuccessBackground": "#000000", + "sapUiGroupTitleBackground": "#000000", + "sapUiGroupTitleBorderColor": "#ffffff", + "sapUiGroupTitleTextColor": "#ffffff", + "sapUiGroupContentBackground": "#000000", + "sapUiGroupContentBorderColor": "#ffffff", + "sapUiGroupFooterBackground": "#000000", + "sapUiToolbarBackground": "#000000", + "sapUiToolbarSeparatorColor": "#ffffff", + "sapUiListHeaderBackground": "#000000", + "sapUiListHeaderBorderColor": "#ffffff", + "sapUiListHeaderTextColor": "#ffffff", + "sapUiListBorderColor": "#999999", + "sapUiListHighlightColor": "#7a5100", + "sapUiListSelectionBackgroundColor": "#0f5d94", + "sapUiListBackground": "#000000", + "sapUiListHoverBackground": "#7a5100", + "sapUiScrollBarFaceColor": "#999999", + "sapUiScrollBarTrackColor": "#000000", + "sapUiScrollBarBorderColor": "#999999", + "sapUiScrollBarSymbolColor": "#ffffff", + "sapUiScrollBarHoverFaceColor": "#ffffff", + "sapUiPageHeaderBackground": "#000000", + "sapUiPageHeaderBorderColor": "#ffffff", + "sapUiPageHeaderTextColor": "#ffffff", + "sapUiPageFooterBackground": "#000000", + "sapUiPageFooterTextColor": "#ffffff", + "sapUiInfobarBackground": "#000000", + "sapUiObjectHeaderBackground": "#000000", + "sapUiBlockLayerBackground": "#000000", + "sapUiTileBackground": "#000000", + "sapUiTileBorderColor": "#ffffff", + "sapUiTileTitleTextColor": "#ffffff", + "sapUiTileTextColor": "#ffffff", + "sapUiTileIconColor": "#ffffff", + "sapUiChart1": "#30a7df", + "sapUiChart2": "#a3ce2f", + "sapUiChart3": "#f8b033", + "sapUiChart4": "#cb73b8", + "sapUiChart5": "#efc619", + "sapUiChart6": "#b9b088", + "sapUiChart7": "#30a7df", + "sapUiChart8": "#a3ce2f", + "sapUiChart9": "#f8b033", + "sapUiChart10": "#cb73b8", + "sapUiChart11": "#efc619", + "sapUiChartBad": "#ff5e5e", + "sapUiChartCritical": "#ffab1d", + "sapUiChartGood": "#99cc99", + "sapUiChartNeutral": "#ffffff", + "sapUiChartSequence1": "#5cbae5", + "sapUiChartSequence2": "#c6e17d", + "sapUiChartSequence3": "#ffab1d", + "sapUiChartSequenceNeutral": "#ffffff", + "sapUiAccent1": "#ffc847", + "sapUiAccent2": "#ed884a", + "sapUiAccent3": "#db9292", + "sapUiAccent4": "#e269c9", + "sapUiAccent5": "#8ca7d5", + "sapUiAccent6": "#6bd3ff", + "sapUiAccent7": "#7fc6c6", + "sapUiAccent8": "#b2e484", + "sapUiErrorBG": "#000000", + "sapUiWarningBG": "#000000", + "sapUiSuccessBG": "#000000", + "sapUiNeutralBG": "#000000", + "sapUiErrorBorder": "#ff5e5e", + "sapUiWarningBorder": "#ffab1d", + "sapUiSuccessBorder": "#99cc99", + "sapUiNeutralBorder": "#ffffff", + "sapUiNegativeElement": "#ff5e5e", + "sapUiCriticalElement": "#ffab1d", + "sapUiPositiveElement": "#99cc99", + "sapUiNeutralElement": "#ffffff", + "sapUiNegativeText": "#ff5e5e", + "sapUiCriticalText": "#ffab1d", + "sapUiPositiveText": "#99cc99", + "sapUiNeutralText": "#ffffff", + "sapUiNegative": "#ff5e5e", + "sapUiCritical": "#ffab1d", + "sapUiPositive": "#99cc99", + "sapUiNeutral": "#ffffff", + "sapUiErrorColor": "#ff9191", + "sapUiWarningColor": "#ffbe50", + "sapUiSuccessColor": "#bbddbb", + "sapUiFontFamily": "Arial, Helvetica, sans-serif", + "sapUiFontSize": "16px", + "sapUiFontCondensedFamily": "'Arial Narrow', HelveticaNeue-CondensedBold, Arial, sans-serif", + "sapUiFontHeaderFamily": "Arial, Helvetica, sans-serif", + "sapUiFontHeaderWeight": "normal", + "sapMFontHeader1Size": "1.625rem", + "sapMFontHeader2Size": "1.375rem", + "sapMFontHeader3Size": "1.25rem", + "sapMFontHeader4Size": "1.125rem", + "sapMFontHeader5Size": "1rem", + "sapMFontHeader6Size": "0.875rem", + "sapMFontSmallSize": "0.75rem", + "sapMFontMediumSize": "0.875rem", + "sapMFontLargeSize": "1rem", + "sapUiTranslucentBGOpacity": "80%", + "sapMPlatformDependent": "false", + "sapUiDesktopFontFamily": "Arial, Helvetica, sans-serif", + "sapUiDesktopFontSize": "12px", + "sapUiFontLargeSize": "13px", + "sapUiFontSmallSize": "11px", + "sapUiFontHeader1Size": "26px", + "sapUiFontHeader2Size": "20px", + "sapUiFontHeader3Size": "18px", + "sapUiFontHeader4Size": "16px", + "sapUiFontHeader5Size": "14px", + "sapUiFontHeader6Size": "13px", + "sapUiLineHeight": "18px", + "sapUiChartLabelHoverColor": "#7a5100", + "sapUiChartLabelPressedColor": "#7a5100", + "sapUiChartCategoryAxisLabelFontColor": "#ffffff", + "sapUiChartValueAxisLabelFontColor": "#ffffff", + "sapUiChartCategoryAxisLabelFontSize": "0.75rem", + "sapUiChartValueAxisLabelFontSize": "0.75rem", + "sapUiChartCategoryAxisLineColor": "#ffffff", + "sapUiChartValueAxisLineColor": "#ffffff", + "sapUiChartCategoryAxisTickColor": "#ffffff", + "sapUiChartValueAxisTickColor": "#ffffff", + "sapUiChartBackgroundColor": "#000000", + "sapUiChartLabelFontWeight": "normal", + "sapUiChartLegendLabelFontColor": "#ffffff", + "sapUiChartLegendTitleFontColor": "#ffffff", + "sapUiChartLegendTitleFontSize": "0.875rem", + "sapUiChartLegendLabelFontSize": "0.75rem", + "sapUiChartPaletteUndefinedColor": "#ffffff", + "sapUiChartGridlineColor": "#999999", + "sapUiChartReferenceLineColor": "#ffffff", + "sapUiChartDataLabelFontColor": "#ffffff", + "sapUiChartReferenceLineLabelColor": "#ffffff", + "sapUiChartDataLabelFontSize": "0.75rem", + "sapUiChartPopoverDataItemFontColor": "#ffffff", + "sapUiChartPopoverGroupFontColor": "#ffffff", + "sapUiChartPopoverDataItemFontSize": "0.875rem", + "sapUiChartPopoverGroupFontSize": "0.875rem", + "sapUiChartPopoverGroupFontWeight": "bold", + "sapUiChartScrollBarThumbColor": "#999999", + "sapUiChartScrollBarTrackColor": "#000000", + "sapUiChartScrollBarThumbHoverColor": "#ffffff", + "sapUiChartMainTitleFontColor": "#ffffff", + "sapUiChartAxisTitleFontColor": "#ffffff", + "sapUiChartMainTitleFontSize": "1rem", + "sapUiChartAxisTitleFontSize": "0.875rem", + "sapUiChartTitleFontWeight": "bold", + "sapUiChartLightText": "#ffffff", + "sapUiChartZeroAxisColor": "#ffffff", + "sapUiChartDataPointBorderColor": "#000000", + "sapUiChartDataPointBorderHoverSelectedColor": "#ffffff", + "sapUiChartDataPointNotSelectedBackgroundOpacity": "0.7", + "sapUiChartValueAxisLineOpacity": "0", + "sapUiChartCategoryAxisLabelFontHoverColor": "#ffffff", + "sapUiChartCategoryAxisLabelFontPressedColor": "#ffffff", + "sapUiChartTargetColor": "#ffffff", + "sapUiChartTargetShadowColor": "#000000", + "sapUiChartBubbleBGOpacity": "0.9", + "sapUiChartScrollbarBorderColor": "#999999", + "sapUiChartScrollbarBorderSize": "1px", + "sapUiChartScrollbarThumbPadding": "0.125rem", + "sapUiChartNegativeLargeText": "#ff5e5e", + "sapUiChartCriticalLargeText": "#ffab1d", + "sapUiChartPositiveLargeText": "#99cc99", + "sapUiChartNeutralLargeText": "#ffffff", + "sapUiChartDataPointBG": "#000000", + "sapUiChartDataPointBGBorderColor": "#ffffff", + "sapUiChartDataLineColorWithBG": "#ffffff", + "sapUiChartDataLineColor": "#ffffff", + "sapUiChartRadialRemainingCircle": "#000000", + "sapUiChartRadialRemainingCircleBorderColor": "#ffffff", + "sapUiChartRadialBG": "#000000", + "sapUiChartPaletteQualitativeHue1": "#30a7df", + "sapUiChartPaletteQualitativeHue2": "#a3ce2f", + "sapUiChartPaletteQualitativeHue3": "#f8b033", + "sapUiChartPaletteQualitativeHue4": "#cb73b8", + "sapUiChartPaletteQualitativeHue5": "#efc619", + "sapUiChartPaletteQualitativeHue6": "#b9b088", + "sapUiChartPaletteQualitativeHue7": "#30a7df", + "sapUiChartPaletteQualitativeHue8": "#a3ce2f", + "sapUiChartPaletteQualitativeHue9": "#f8b033", + "sapUiChartPaletteQualitativeHue10": "#cb73b8", + "sapUiChartPaletteQualitativeHue11": "#efc619", + "sapUiChartPaletteSemanticBadLight3": "#db3535", + "sapUiChartPaletteSemanticBadLight2": "#db3535", + "sapUiChartPaletteSemanticBadLight1": "#ff7878", + "sapUiChartPaletteSemanticBad": "#ff7878", + "sapUiChartPaletteSemanticBadDark1": "#ff7878", + "sapUiChartPaletteSemanticBadDark2": "#ff7878", + "sapUiChartPaletteSemanticCriticalLight3": "#b67200", + "sapUiChartPaletteSemanticCriticalLight2": "#b67200", + "sapUiChartPaletteSemanticCriticalLight1": "#ffab1d", + "sapUiChartPaletteSemanticCritical": "#ffab1d", + "sapUiChartPaletteSemanticCriticalDark1": "#ffab1d", + "sapUiChartPaletteSemanticCriticalDark2": "#ffab1d", + "sapUiChartPaletteSemanticGoodLight3": "#5e975e", + "sapUiChartPaletteSemanticGoodLight2": "#5e975e", + "sapUiChartPaletteSemanticGoodLight1": "#a4dba4", + "sapUiChartPaletteSemanticGood": "#a4dba4", + "sapUiChartPaletteSemanticGoodDark1": "#a4dba4", + "sapUiChartPaletteSemanticGoodDark2": "#a4dba4", + "sapUiChartPaletteSemanticNeutralLight3": "#ffffff", + "sapUiChartPaletteSemanticNeutralLight2": "#ffffff", + "sapUiChartPaletteSemanticNeutralLight1": "#ffffff", + "sapUiChartPaletteSemanticNeutral": "#ffffff", + "sapUiChartPaletteSemanticNeutralDark1": "#ffffff", + "sapUiChartPaletteSemanticNeutralDark2": "#ffffff", + "sapUiChartPaletteSequentialHue1Light3": "#2382ae", + "sapUiChartPaletteSequentialHue1Light2": "#2382ae", + "sapUiChartPaletteSequentialHue1Light1": "#5cbae5", + "sapUiChartPaletteSequentialHue1": "#5cbae5", + "sapUiChartPaletteSequentialHue1Dark1": "#5cbae5", + "sapUiChartPaletteSequentialHue1Dark2": "#5cbae5", + "sapUiChartPaletteSequentialHue2Light3": "#819e31", + "sapUiChartPaletteSequentialHue2Light2": "#819e31", + "sapUiChartPaletteSequentialHue2Light1": "#c6e17d", + "sapUiChartPaletteSequentialHue2": "#c6e17d", + "sapUiChartPaletteSequentialHue2Dark1": "#c6e17d", + "sapUiChartPaletteSequentialHue2Dark2": "#c6e17d", + "sapUiChartPaletteSequentialHue3Light3": "#b67200", + "sapUiChartPaletteSequentialHue3Light2": "#b67200", + "sapUiChartPaletteSequentialHue3Light1": "#ffab1d", + "sapUiChartPaletteSequentialHue3": "#ffab1d", + "sapUiChartPaletteSequentialHue3Dark1": "#ffab1d", + "sapUiChartPaletteSequentialHue3Dark2": "#ffab1d", + "sapUiChartPaletteSequentialNeutralLight3": "#8c8c8c", + "sapUiChartPaletteSequentialNeutralLight2": "#8c8c8c", + "sapUiChartPaletteSequentialNeutralLight1": "#ffffff", + "sapUiChartPaletteSequentialNeutral": "#ffffff", + "sapUiChartPaletteSequentialNeutralDark1": "#ffffff", + "sapUiChartPaletteSequentialNeutralDark2": "#ffffff", + "sapUiChoroplethBG": "#000000", + "sapUiChoroplethRegionBorder": "#000000", + "sapUiChoroplethRegionBG": "#8c8c8c", + "sapUiMapLegendBG": "#000000", + "sapUiMapLegendBorderColor": "#ffffff", + "sapUiShellHoverBackground": "#7a5100", + "sapUiShellActiveBackground": "#7a5100", + "sapUiShellActiveTextColor": "#ffffff", + "sapUiShellHoverToggleBackground": "#0f5d94", + "sapUiShellContainerBackground": "#000000", + "sapUiShellAltContainerBackground": "#000000", + "sapUiUx3ShellHeaderColor": "#000000", + "sapUiUx3ShellBackgroundColor": "#000000", + "sapUiUx3ShellHoverColor": "#7a5100", + "sapUiUx3ShellGradientBottom": "#000000", + "sapUiUx3ShellGradientTop": "#000000", + "sapUiUx3ShellToolPaletteIconFontColor": "#ffffff", + "sapUiUx3ExactLstExpandOffset": "0 0", + "sapUiUx3ExactLstRootExpandOffset": "0 3", + "sapUiUx3ExactLstContentTop": "25px", + "sapUiLinkActive": "#ffffff", + "sapUiLinkVisited": "#ffffff", + "sapUiLinkHover": "#ffffff", + "sapUiLinkInverted": "#ffffff", + "sapUiNotificationBarBG": "#000000", + "sapUiNotifierSeparator": "#ffffff", + "sapUiNotifierSeparatorWidth": "2px", + "sapUiNotificationBarBorder": "#ffffff", + "sapUiUx3ToolPopupInverted": "false", + "sapUiUx3ToolPopupArrowRightMarginCorrection": "-2px", + "sapUiUx3ToolPopupShadow": "0px 6px 12px 0px rgba(255, 255, 255, 0.3)", + "sapUiCalloutShadow": "0px 6px 12px 0px rgba(255, 255, 255, 0.3)", + "sapUiButtonIconColor": "#ffffff", + "sapUiButtonActiveBackground": "#7a5100", + "sapUiButtonActiveBorderColor": "#ffffff", + "sapUiButtonActiveTextColor": "#ffffff", + "sapUiButtonEmphasizedHoverBackground": "#7a5100", + "sapUiButtonEmphasizedHoverBorderColor": "#ffffff", + "sapUiButtonEmphasizedActiveBackground": "#7a5100", + "sapUiButtonEmphasizedActiveBorderColor": "#ffffff", + "sapUiButtonEmphasizedTextShadow": "#000000", + "sapUiButtonAcceptBorderColor": "#ffffff", + "sapUiButtonAcceptHoverBackground": "#7a5100", + "sapUiButtonAcceptHoverBorderColor": "#ffffff", + "sapUiButtonAcceptActiveBackground": "#7a5100", + "sapUiButtonAcceptActiveBorderColor": "#ffffff", + "sapUiButtonAcceptTextColor": "#ffffff", + "sapUiButtonRejectBorderColor": "#ffffff", + "sapUiButtonRejectHoverBackground": "#7a5100", + "sapUiButtonRejectHoverBorderColor": "#ffffff", + "sapUiButtonRejectActiveBackground": "#7a5100", + "sapUiButtonRejectActiveBorderColor": "#ffffff", + "sapUiButtonRejectTextColor": "#ffffff", + "sapUiButtonLiteBackground": "#000000", + "sapUiButtonLiteBorderColor": "#ffffff", + "sapUiButtonLiteTextColor": "#ffffff", + "sapUiButtonLiteHoverBackground": "#7a5100", + "sapUiButtonLiteHoverBorderColor": "#ffffff", + "sapUiButtonLiteActiveBackground": "#7a5100", + "sapUiButtonLiteActiveBorderColor": "#ffffff", + "sapUiButtonHeaderTextColor": "#ffffff", + "sapUiButtonHeaderDisabledTextColor": "#666666", + "sapUiButtonFooterTextColor": "#ffffff", + "sapUiButtonFooterHoverBackground": "#7a5100", + "sapUiButtonActionSelectBackground": "#000000", + "sapUiButtonActionSelectBorderColor": "#ffffff", + "sapUiButtonLiteActionSelectHoverBackground": "#7a5100", + "sapUiToggleButtonPressedBackground": "#0f5d94", + "sapUiToggleButtonPressedBorderColor": "#ffffff", + "sapUiToggleButtonPressedTextColor": "#ffffff", + "sapUiToggleButtonPressedHoverBackground": "#7a5100", + "sapUiToggleButtonPressedHoverBorderColor": "#ffffff", + "sapUiSegmentedButtonBackground": "#000000", + "sapUiSegmentedButtonBorderColor": "#ffffff", + "sapUiSegmentedButtonTextColor": "#ffffff", + "sapUiSegmentedButtonHoverBackground": "#7a5100", + "sapUiSegmentedButtonActiveBackground": "#7a5100", + "sapUiSegmentedButtonActiveTextColor": "#ffffff", + "sapUiSegmentedButtonSelectedBackground": "#0f5d94", + "sapUiSegmentedButtonSelectedTextColor": "#ffffff", + "sapUiSegmentedButtonSelectedHoverBackground": "#7a5100", + "sapUiSegmentedButtonSelectedHoverBorderColor": "#ffffff", + "sapUiSegmentedButtonIconColor": "#ffffff", + "sapUiSegmentedButtonActiveIconColor": "#ffffff", + "sapUiSegmentedButtonSelectedIconColor": "#ffffff", + "sapUiSegmentedButtonFooterBorderColor": "#ffffff", + "sapUiSegmentedButtonFooterHoverBackground": "#7a5100", + "sapUiFieldActiveBackground": "#7a5100", + "sapUiFieldActiveBorderColor": "#ffffff", + "sapUiFieldActiveTextColor": "#ffffff", + "sapUiFieldPlaceholderTextColor": "#999999", + "sapUiListTextColor": "#ffffff", + "sapUiListVerticalBorderColor": "#ffffff", + "sapUiListActiveBackground": "#7a5100", + "sapUiListActiveTextColor": "#ffffff", + "sapUiListSelectionHoverBackground": "#7a5100", + "sapUiListFooterBackground": "#000000", + "sapUiListFooterTextColor": "#ffffff", + "sapUiListGroupHeaderBackground": "#585858", + "sapUiListTableGroupHeaderBackground": "#000000", + "sapUiListTableGroupHeaderBorderColor": "#ffffff", + "sapUiListTableGroupHeaderTextColor": "#ffffff", + "sapUiListTableFooterBorder": "#ffffff", + "sapUiListTableFixedBorder": "#ffffff", + "sapUiListTableTextSize": "0.875rem", + "sapUiListTableIconSize": "1rem", + "sapUiPageFooterBorderColor": "#ffffff", + "sapUiInfobarHoverBackground": "#7a5100", + "sapUiInfobarActiveBackground": "#7a5100", + "sapUiObjectHeaderBorderColor": "#ffffff", + "sapUiCalendarColorToday": "#ffffff", + "sapUiDragAndDropColor": "#ffffff", + "sapUiDragAndDropBackground": "#000000", + "sapUiDragAndDropBorderColor": "#ffffff", + "sapUiDragAndDropActiveColor": "#03b803", + "sapUiDragAndDropActiveBackground": "#000000", + "sapUiDragAndDropActiveBorderColor": "#03b803", + "sapUiShadowLevel0": "0 0 0 1px #ffffff", + "sapUiShadowLevel1": "0 0 1rem 0 rgba(255, 255, 255, 0.5), 0 0 0 2px #ffffff", + "sapUiShadowLevel2": "0 0.25rem 2rem 0 rgba(255, 255, 255, 0.6), 0 0 0 2px #ffffff", + "sapUiShadowLevel3": "0 0.625rem 4rem 0 rgba(255, 255, 255, 0.8), 0 0 0 2px #ffffff", + "sapUiShadowText": "none", + "sapUiShadowHeader": "inset 0 -0.125rem #ffffff, 0 0.125rem 0 0 #000000", + "sapUiUx3ShellHeaderImageURL": "", + "sapUiUx3ShellApplicationImageURL": "none", + "sapUiPurple": "#800080", + "sapUiOrange": "#ffa500", + "sapUiGreen": "#008000", + "sapUiBlue": "#0000ff", + "sapUiRed": "#ff0000", + "sapUiYellow": "#ffff00", + "sapUiBase": "#ffffff", + "sapUiBaseBorder": "#ffffff", + "sapUiBaseLine": "#ffffff", + "sapUiWhite": "#000000", + "sapUiWhiteBG": "#000000", + "sapUiExtraLightBG": "#000000", + "sapUiLightBG": "#000000", + "sapUiMediumBG": "#000000", + "sapUiDarkBG": "#000000", + "sapUiDeepBG": "#ffffff", + "sapUiBlackBG": "#ffffff", + "sapUiHoverBG": "#808080", + "sapUiMediumAltBG": "#808080", + "sapUiDarkAltBG": "#a9a9a9", + "sapUiButtonStandardBG": "#000000", + "sapUiButtonEmphasizedBG": "#000000", + "sapUiButtonNegativeBG": "#000000", + "sapUiButtonPositiveBG": "#000000", + "sapUiReadOnlyBG": "#585858", + "sapUiExtraLightText": "#ffffff", + "sapUiLightText": "#ffffff", + "sapUiMediumText": "#ffffff", + "sapUiDarkText": "#ffffff", + "sapUiDeepText": "#000000", + "sapUiText": "#ffffff", + "sapUiTextInverted": "#000000", + "sapUiWhiteBorder": "#ffffff", + "sapUiExtraLightBorder": "#ffffff", + "sapUiLightBorder": "#ffffff", + "sapUiMediumBorder": "#ffffff", + "sapUiDarkBorder": "#ffffff", + "sapUiBlackBorder": "#000000", + "sapUiElement": "#d3d3d3", + "sapUiInvertedElement": "#ffffff", + "sapUiLightLine": "#d3d3d3", + "sapUiMediumLine": "#808080", + "sapUiEmphasizedLine": "#7a5100", + "sapUiDarkLine": "#a9a9a9", + "sapUiLightShadowTint": "#ffffff", + "sapUiDarkShadowTint": "#ffffff", + "sapUiFocus": "#ffffff", + "sapUiInvertedFocus": "#ffffff", + "sapUiTableRowBG": "#000000", + "sapUiTableRowAlternatingBG": "#444444", + "sapUiTableRowSelectionBG": "#7a5100", + "sapUiTableRowSelectionReadOnlyBG": "#7a5100", + "sapUiTableRowHoverBG": "#808080", + "sapUiListBG": "#f7f7f7", + "sapUiTextColor": "#008000", + "sapUiTextTitleColor": "#008000", + "sapUiTextSelectionColor": "#008000", + "sapUiTextDisabled": "#666666", + "sapUiTextSelection": "#ffffff", + "sapUiTextfieldBackground": "#000000", + "sapUiFontMonospaceFamily": "Lucida Console", + "sapUiUx3ShellSideBarBaseWidth": "40px", + "sapUiUx3ShellPaneOverflowButtonHeight": "120px", + "sapUiUx3ExactLstCollapseWidth": "24px", + "sapUiUx3ExactLstHeaderHeight": "25px", + "sapUiNotificationBarBG_IE": "#000000", + "sapUiNotifierHoverColor": "#7a5100", + "sapUiNotificationText": "#ffffff", + "sapUiNotificationTimestamp": "#ababab", + "sapUiNotificationBarCalloutBorder": "#ffffff", + "sapUiNotificationBarCalloutBorder_IE": "#ffffff", + "sapUiNotificationBarCalloutArr": "#ffffff", + "sapUiNotificationBarHeight": "40px", + "sapUiNotificationBarHeightMinimized": "0px", + "sapUiNotificationBarHeightMaximized": "40%", + "sapUiNotifierWidth": "40px", + "sapUiRIIconPaddingXS": "1px", + "sapUiRIIconPaddingS": "0.125rem", + "sapUiRIIconPaddingM": "0.1875rem", + "sapUiRIIconPaddingL": "0.25rem", + "sapUiRIIconPaddingCozy": "0.1875rem", + "sapUiRIIconPaddingCompact": "0.125rem", + "sapUiRIIconPaddingCondensed": "0.125rem", + "sapUiRIIconPaddingDisplayOnly": "0.125rem", + "sapUiRIIconSizeCozy": "1.375rem", + "sapUiRIIconSizeCompact": "1rem", + "sapUiRIIconSizeCondensed": "1rem", + "sapUiRIIconSizeDisplayOnly": "1rem", + "sapUiUx3ToolPopupArrowWidth": "12px", + "sapUiUx3ToolPopupArrowHeight": "18px", + "sapUiUx3ToolPopupArrowRightMarginCorrectionInverted": "-7px", + "sapUiUx3TPPaddingBottom": "50px", + "sapUiButtonEmphasizedDisabledBorderColor": "#666666", + "sapUiButtonEmphasizedDisabledBackground": "#000000", + "sapUiButtonAcceptDisabledBorderColor": "#666666", + "sapUiButtonAcceptDisabledBackground": "#000000", + "sapUiButtonRejectDisabledBorderColor": "#666666", + "sapUiButtonRejectDisabledBackground": "#000000", + "sapUiToggleButtonPressedDisabledBackground": "#585858", + "sapUiToggleButtonPressedDisabledBorderColor": "#999999", + "sapUiToggleButtonPressedDisabledTextColor": "#999999", + "sapUiPositiveBG": "#99cc99", + "sapUiShadowTint": "#000000", + "sapUiShadow": "5px 5px 10px rgba(0, 0, 0, 0.5)", + "sapUiThemeDesignerCustomCss": "false", + "sapUiMarginTiny": "0.5rem", + "sapUiMarginSmall": "1rem", + "sapUiMarginMedium": "2rem", + "sapUiMarginLarge": "3rem", + "sapUiEscapedEmptyString": "", + "sapUiLightBoxMagnifyingGlassBorder": "none", + "sapUiLightBoxMagnifyingGlassBackgroundColor": "#ffffff", + "_sap_ui_rta_Overlay_ActiveBG": "rgba(22, 137, 217, 0.3)", + "_sap_ui_rta_Overlay_BaseBG": "#000000", + "_sap_ui_rta_Overlay_Border": "#03b803", + "_sap_ui_rta_Overlay_HoverBG": "rgba(199, 132, 0, 0.3)", + "_sap_ui_rta_Overlay_ActiveHoverBG": "rgba(15, 93, 148, 0.2)", + "sapHCStandardBG": "#000000", + "sapHCHighlightBG": "#7a5100", + "sapHCHighlightAltBG": "#0f5d94", + "sapHCReducedBG": "#585858", + "sapHCReducedAltBG": "#a2a39f", + "sapHCStandardFG": "#ffffff", + "sapHCEnhancedFG": "#03b803", + "sapHCReducedFG": "#666666", + "sapHCReducedAltFG": "#999999", + "sapHCNegative": "#ff5e5e", + "sapHCCritical": "#ffab1d", + "sapHCPositive": "#99cc99", + "sapHCNeutral": "#ffffff", + "sapUiHcStandardBackground": "#000000", + "sapUiHcHighlightBackground": "#7a5100", + "sapUiHcHighlightAltBackground": "#0f5d94", + "sapUiHcReducedBackground": "#585858", + "sapUiHcReducedAltBackground": "#a2a39f", + "sapUiHcStandardForeground": "#ffffff", + "sapUiHcEnhancedForeground": "#03b803", + "sapUiHcReducedForeground": "#666666", + "sapUiHcReducedAltForeground": "#999999", + "sapUiHcNegativeColor": "#ff5e5e", + "sapUiHcCriticalColor": "#ffab1d", + "sapUiHcPositiveColor": "#99cc99", + "sapUiHcNeutralColor": "#ffffff", + "sapHCShadowTint": "rgba(255, 255, 255, 0.8)", + "sapUiInfoTop": "false", + "sapUiHighlightColor": "#7a5100", + "sapUiActiveBG": "#0f5d94", + "sapUiMessageNotifierCountBG": "#0f5d94", + "sapUiDatePickerTableBackground": "#0f5d94", + "sapUiDatePickerTableBorderColor": "#0f5d94", + "sapUiDTICustomRows": "5", + "sapUiDTICustomPhoneRows": "3", + "sapUiDTICustomWidth": "64", + "sapUiDTICustomHeight": "48", + "sapUiDTICustomShowLabel": "false", + "sapUiDTICustomHeaderText": "true", + "sapUiDTICustomMode": "scroller", + "sapUiDTICustomDesktopMode": "mixed", + "sapUiDTICustomDisplay": "bubble", + "sapUiDTICustomPhoneDisplay": "modal", + "sapUiToolbarSeparatorBG": "#ffffff", + "sapUiToolbarSeparatorFooterBG": "#ffffff", + "sapUiSearchHighlight": "#7a5100", + "sapUiDarkestBorder": "#ffffff", + "sapUiExtraDarkBorder": "#ffffff", + "sapUiLightestBorder": "#ffffff", + "sapUiFooterBG": "#000000", + "sapUiHeaderBG": "#000000", + "sapUiLightestBG": "#000000", + "sapUiDarkestBG": "#000000", + "sapUiExtraDarkBG": "#000000", + "sapMeOverlapCalendarType00": "#585858", + "sapMeOverlapCalendarType01": "#66b366", + "sapMeOverlapCalendarType01Action": "#66b366", + "sapMeOverlapCalendarType04": "#bbddbb", + "sapMeOverlapCalendarType06": "#ffab1d", + "sapMeOverlapCalendarType07": "#ff9191", + "sapMeOverlapCalendarIndicator": "#ed884a", + "sapMeCalendarLegendIconCollapse": "collapse", + "sapMeCalendarLegendIconExpand": "expand" +} \ No newline at end of file diff --git a/resources/sap/ui/rta/themes/sap_hcb/library.css b/resources/sap/ui/rta/themes/sap_hcb/library.css new file mode 100644 index 0000000..c4dc44b --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/library.css @@ -0,0 +1,359 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +/* =========================== */ +/* Global CSS for 'base' theme */ +/* =========================== */ +/** + Toolbar + */ +.sapUiRtaToolbar.sapMTB { + position: absolute; + top: 0; + left: 0; + right: 0; + padding: 0 20px; + height: 46px; + /* Overrider `.sapUiSizeCompact .sapMTB` */ + border-bottom: none; + /* Override `.sapMTB` */ +} +.sapUiRtaToolbar.sapMTB > :last-child { + margin-right: 0; + /* Override `.sapMIBar.sapMTB .sapMBarChild` */ +} +.sapUiRtaToolbar.sapMTB > :first-child { + margin-left: 0; + /* Override `.sapMIBar .sapMBarChild:first-child` */ +} +/** + This class is being assigned to the original Fiori Header Toolbar when RTA Toolbar shows + */ +.sapUiRtaFioriHeaderInvisible { + visibility: hidden; +} +/* type: fiori */ +.sapUiRtaToolbar.type_fiori { + transition: opacity 0.25s ease-out; + opacity: 0; +} +.sapUiRtaToolbar.type_fiori.is_visible { + opacity: 1; +} +/* color: default */ +/* color: contrast */ +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled, +.sapUiRtaToolbar.type_fiori.color_contrast .sapMBtn.sapMBtnDisabled { + opacity: 0.3; +} +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default { + background-color: #000; + top: -50px; + transition: top 0.25s ease-out; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + text-shadow: none; + /* Override shadow of `.sapMBtnInner` in sap.m */ + color: #fff; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: #666; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn:focus .sapMFocusable { + outline-color: #fff; + /* Override of `html.sap-desktop .sapMBtn:focus > .sapMFocusable` */ +} +.sapUiRtaToolbar.type_standalone.color_default.is_visible { + top: 0; +} +.sapUiRtaToolbar.type_personalization { + top: auto; + top: initial; + bottom: 0; + background-color: #2f3c48; + border-radius: 0.25rem; + padding: 0 1rem; + margin: 0.5rem; + opacity: 0.9; +} +.sapUiRtaToolbar.type_personalization.sapUiRtaHideToolbar { + visibility: hidden; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner { + border: none; +} +.sapUiRtaToolbar.type_personalization .sapMBtn .sapMBtnTransparent.sapMBtnInner .sapMBtnContent { + color: #ffffff; + text-shadow: 0 0 0.125rem #000000; +} +/****************************************************************** + Style of the RTA FieldRepository +*******************************************************************/ +.sap-desktop.sapUiBLyBackOverride { + overflow: auto!important; +} +.sapUIRtaFieldRepositoryDialog .sapMDialogTitle { + font-size: 16px; + font-weight: bold; +} +.sapUIRtaFieldRepositoryDialog .sapUiTable > div.sapUiTableCnt { + border-left: 0px; + border-right: 0px; +} +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter { + height: 60px; +} +/* Sort Button */ +.sapUIRtaFieldRepositoryDialog .sapMBtn > .sapMBtnInner { + border: none; + background: transparent; +} +/* Footer Button */ +.sapUIRtaFieldRepositoryDialog .sapUiDlgFooter .sapMBtnInner { + background-color: transparent; + background: none; + border: none; + text-shadow: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiTableCol, +.sapUIRtaFieldRepositoryDialog .sapUiTableTr > td { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapMSFF { + border: none; +} +.sapUIRtaFieldRepositoryDialog .sapUiLbl { + margin-left: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapMIBar > .sapMBarChild:last-child { + margin-right: 12px; +} +.sapUIRtaFieldRepositoryDialog .sapUiLblIco { + font-size: 1.2rem; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaValueCell { + height: 18px; + width: 300px; +} +.sapUIRtaFieldRepositoryDialog .sapUIRtaCCDialogScrollContainer { + height: 400px !important; + width: 100% !important; +} +.sapUIRtaFieldRepositoryDialog .sapMList .sapMListUl .sapMCLI { + padding-left: 10px; +} +/****************************************************************** + Style of the RTA Overlays +*******************************************************************/ +.sapUiRtaRoot .sapUiRtaMarginBottom { + margin-bottom: 40px; +} +.sapUiRtaRoot .sapUiRtaPaddingTop { + padding-top: 40px; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick { + text-align: center; + vertical-align: middle; + height: 1.5rem; + width: 1.5rem; + position: absolute; + top: 10px; + right: 10px; + z-index: 1; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter { + display: inline-block; + box-sizing: border-box; + text-align: center; + border-radius: 50%; + border: 0.125rem solid #ffffff; + cursor: pointer; + z-index: 1; + opacity: 1; + width: 1.5rem; + height: 1.5rem; + background-color: #03b803; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete .sapUiRtaPersDeleteClick .sapUiRtaPersDeleteIconOuter .sapUiIcon { + color: #000000; + font-size: 0.69rem; + line-height: 1.25rem; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersDelete.sapUiRtaOverlayPlaceholder .sapUiRtaPersDeleteClick { + display: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter { + position: absolute; + text-align: center; + width: 100%; + height: 40px; + cursor: default; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn { + color: #03b803; + height: 100%; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner, +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAddTop .sapUiRtaPersAddIconOuter .sapMBtn .sapMBtnInner { + border: none; +} +.sapUiRta.sapUiRtaPersonalize .sapUiRtaPersAdd > .sapUiRtaPersAddIconOuter { + bottom: -40px; + top: auto; +} +.sapUiRta .sapUiRtaOverlayHover { + -webkit-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -moz-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + -o-transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); + transition: background 0.1s cubic-bezier(1, 0.01, 1, 0); +} +.sapUiRta .sapUiRtaOverlayHover:after { + content: " "; + border: 1px dotted #03b803; +} +.sapUiRta .sapUiDtOverlayFocusable:focus:before { + right: 0; + top: 0; + left: 0; + bottom: 0; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayWithScrollBar:after { + bottom: 0; + right: 0; + top: 0; + left: 0; + width: auto; + width: initial; + height: auto; + height: initial; +} +.sapUiRta .sapUiDtOverlaySelected:after { + border: 2px solid #03b803; +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable:focus:before { + top: 2px; + left: 2px; + bottom: 2px; + right: 2px; + width: auto; + width: initial; + height: auto; + height: initial; + z-index: 1; + /* ObjectPage Header fix */ +} +.sapUiRta .sapUiDtOverlayTargetZone:after { + border: 1px dashed #03b803; +} +.sapUiRta .sapUiDtOverlayTargetZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + border: none; +} +.sapUiRta .sapUiDtOverlayTargetZone.sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: transparent; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable { + background: rgba(22, 137, 217, 0.3); +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiDtOverlayMovable:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder { + background: #000000 !important; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder:focus:before { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder * { + background: #000000; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:after { + content: none; +} +.sapUiRta .sapUiDtOverlayDropZone > .sapUiDtOverlayChildren > .sapUiRtaOverlayPlaceholder *:focus:before { + content: none; +} +.sapUiRta .sapUiRtaEditableField { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.sapUiRta .sapUiDtDragGhost { + background: rgba(22, 137, 217, 0.3); +} +.sapUiRtaDialogEntryWithMargin { + margin: 6px 0; +} +/* ============================== */ +/* Global CSS for 'sap_hcb' theme */ +/* ============================== */ +.sapUiRtaToolbarContainer .sapUiRtaToolbar { + box-shadow: 0 0 2.5rem 0.125rem rgba(255, 255, 255, 0.8); +} +/* type: standalone */ +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn .sapMBtnTransparent .sapMBtnIcon { + color: inherit; +} +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnContent, +.sapUiRtaToolbar.type_standalone.color_default .sapMBtn.sapMBtnDisabled .sapMBtnIcon { + color: inherit; +} +.sapUiRtaToolbar.type_personalization { + background-color: #000000; + border-top: #ffffff 1px solid; +} +/****************************************************************** + Style of the RTA Overlays - HCB Theme +*******************************************************************/ +.sapUiRta .sapUiDtOverlay:focus { + outline: none; + /* We create inner black shadow to make sure white border is in contrast with element */ + box-shadow: 0 0 0 2px #000 inset; +} +.sapUiRta .sapUiDtOverlay:focus:before { + border-width: 2px; +} +.sapUiRta .sapUiDtOverlaySelected.sapUiDtOverlayFocusable:focus { + /* Same trick as described above but doubled thickness */ + box-shadow: 0 0 0 4px #000 inset; +} +.sapUiRta .sapUiRtaOverlayHover:after { + border-width: 2px; +} + +/* Inline theming parameters */ +#sap-ui-theme-sap\.ui\.rta { background-image: url('data:text/plain;utf-8,%7B%22sapBrandColor%22:%22#000000%22,%22sapHighlightColor%22:%22#cc8700%22,%22sapBaseColor%22:%22#dddddd%22,%22sapShellColor%22:%22#ffffff%22,%22sapBackgroundColor%22:%22#ffffff%22,%22sapFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapFontSize%22:%220.75em%22,%22sapTextColor%22:%22#000000%22,%22sapLinkColor%22:%22#000000%22,%22sapCompanyLogo%22:%22none%22,%22sapBackgroundImage%22:%22none%22,%22sapBackgroundImageOpacity%22:%221%22,%22sapBackgroundImageRepeat%22:%22false%22,%22sapSelectedColor%22:%22#2e9cea%22,%22sapActiveColor%22:%22#cc8700%22,%22sapHighlightTextColor%22:%22#ffffff%22,%22sapTitleColor%22:%22#000000%22,%22sapNegativeColor%22:%22#bb0000%22,%22sapCriticalColor%22:%22#e78c07%22,%22sapPositiveColor%22:%22#2b7d2b%22,%22sapNeutralColor%22:%22#ffffff%22,%22sapNegativeElementColor%22:%22#bb0000%22,%22sapCriticalElementColor%22:%22#e78c07%22,%22sapPositiveElementColor%22:%22#2b7d2b%22,%22sapNeutralElementColor%22:%22#ffffff%22,%22sapContent_LineHeight%22:%221.3%22,%22sapContent_ElementHeight%22:%221.37em%22,%22sapContent_ElementHeight_PX%22:%2222px%22,%22sapContent_IconHeight%22:%2216px%22,%22sapContent_IconColor%22:%22#000000%22,%22sapContent_ContrastIconColor%22:%22#ffffff%22,%22sapContent_NonInteractiveIconColor%22:%22#000000%22,%22sapContent_MarkerIconColor%22:%22#000000%22,%22sapContent_FocusColor%22:%22#000000%22,%22sapContent_ContrastFocusColor%22:%22#ffffff%22,%22sapContent_ShadowColor%22:%22#000000%22,%22sapContent_ContrastShadowColor%22:%22#ffffff%22,%22sapContent_SearchHighlightColor%22:%22#cc8700%22,%22sapContent_HelpColor%22:%22#006500%22,%22sapContent_LabelColor%22:%22#000000%22,%22sapContent_MonospaceFontFamily%22:%22lucida console, monospace%22,%22sapContent_DisabledTextColor%22:%22#666666%22,%22sapContent_DisabledOpacity%22:%220.5%22,%22sapContent_ContrastTextThreshold%22:%220.65%22,%22sapContent_ContrastTextColor%22:%22#ffffff%22,%22sapContent_ForegroundColor%22:%22#e5e5e5%22,%22sapContent_ForegroundBorderColor%22:%22#000000%22,%22sapContent_ForegroundTextColor%22:%22#000000%22,%22sapShell_Background%22:%22#ffffff%22,%22sapShell_BackgroundImage%22:%22#ffffff%22,%22sapShell_BackgroundGradient%22:%22#ffffff%22,%22sapShell_BackgroundImageOpacity%22:%221%22,%22sapShell_BackgroundImageRepeat%22:%22false%22,%22sapShell_BorderColor%22:%22#666666%22,%22sapShell_TextColor%22:%22#000000%22,%22sapShell_Favicon%22:%22none%22,%22sapButton_BorderWidth%22:%221px%22,%22sapButton_BorderCornerRadius%22:%220%22,%22sapButton_Background%22:%22#ffffff%22,%22sapButton_BorderColor%22:%22#000000%22,%22sapButton_TextColor%22:%22#000000%22,%22sapButton_Disabled_Background%22:%22#ffffff%22,%22sapButton_Disabled_BorderColor%22:%22#666666%22,%22sapButton_Disabled_TextColor%22:%22#666666%22,%22sapButton_Hover_Background%22:%22#cc8700%22,%22sapButton_Hover_BorderColor%22:%22#000000%22,%22sapButton_Hover_TextColor%22:%22#ffffff%22,%22sapButton_Emphasized_Background%22:%22#ffffff%22,%22sapButton_Emphasized_BorderColor%22:%22#000000%22,%22sapButton_Emphasized_TextColor%22:%22#000000%22,%22sapButton_Reject_Background%22:%22#ffffff%22,%22sapButton_Accept_Background%22:%22#ffffff%22,%22sapField_Background%22:%22#ffffff%22,%22sapField_BorderColor%22:%22#000000%22,%22sapField_TextColor%22:%22#000000%22,%22sapField_HelpBackground%22:%22#ffffff%22,%22sapField_BorderWidth%22:%221px%22,%22sapField_BorderCornerRadius%22:%220%22,%22sapField_Hover_Background%22:%22#ffffff%22,%22sapField_Hover_BorderColor%22:%22#000000%22,%22sapField_Hover_HelpBackground%22:%22#cc8700%22,%22sapField_Focus_Background%22:%22#ffffff%22,%22sapField_Focus_BorderColor%22:%22#000000%22,%22sapField_Focus_HelpBackground%22:%22#ffffff%22,%22sapField_Disabled_Background%22:%22#959595%22,%22sapField_Disabled_BorderColor%22:%22#4f4f4f%22,%22sapField_Disabled_TextColor%22:%22#666666%22,%22sapField_Disabled_HelpBackground%22:%22#959595%22,%22sapField_ReadOnly_Background%22:%22#959595%22,%22sapField_ReadOnly_BorderColor%22:%22#4f4f4f%22,%22sapField_ReadOnly_HelpBackground%22:%22#959595%22,%22sapField_RequiredColor%22:%22#000000%22,%22sapField_InvalidColor%22:%22#ffffff%22,%22sapField_InvalidBackground%22:%22#cc8700%22,%22sapField_WarningColor%22:%22#000000%22,%22sapField_WarningBackground%22:%22#ffffff%22,%22sapField_SuccessColor%22:%22#000000%22,%22sapField_SuccessBackground%22:%22#ffffff%22,%22sapGroup_TitleBackground%22:%22#ffffff%22,%22sapGroup_TitleBorderColor%22:%22#000000%22,%22sapGroup_TitleTextColor%22:%22#000000%22,%22sapGroup_Title_FontSize%22:%221em%22,%22sapGroup_ContentBackground%22:%22#ffffff%22,%22sapGroup_ContentBorderColor%22:%22#000000%22,%22sapGroup_BorderWidth%22:%221px%22,%22sapGroup_BorderCornerRadius%22:%220%22,%22sapGroup_FooterBackground%22:%22#ffffff%22,%22sapToolbar_Background%22:%22#ffffff%22,%22sapToolbar_SeparatorColor%22:%22#000000%22,%22sapList_HeaderBackground%22:%22#ffffff%22,%22sapList_HeaderBorderColor%22:%22#000000%22,%22sapList_HeaderTextColor%22:%22#000000%22,%22sapList_BorderColor%22:%22#4f4f4f%22,%22sapList_BorderWidth%22:%221px%22,%22sapList_HighlightColor%22:%22#cc8700%22,%22sapList_SelectionBackgroundColor%22:%22#2e9cea%22,%22sapList_Background%22:%22#ffffff%22,%22sapList_Hover_Background%22:%22#cc8700%22,%22sapScrollBar_FaceColor%22:%22#4f4f4f%22,%22sapScrollBar_TrackColor%22:%22#ffffff%22,%22sapScrollBar_BorderColor%22:%22#4f4f4f%22,%22sapScrollBar_SymbolColor%22:%22#000000%22,%22sapScrollBar_Dimension%22:%2216px%22,%22sapScrollBar_Hover_FaceColor%22:%22#000000%22,%22sapPageHeader_Background%22:%22#ffffff%22,%22sapPageHeader_BorderColor%22:%22#000000%22,%22sapPageHeader_TextColor%22:%22#000000%22,%22sapPageFooter_Background%22:%22#ffffff%22,%22sapPageFooter_TextColor%22:%22#000000%22,%22sapInfobar_Background%22:%22#ffffff%22,%22sapObjectHeader_Background%22:%22#ffffff%22,%22sapBlockLayer_Background%22:%22#000000%22,%22sapTile_Background%22:%22#ffffff%22,%22sapTile_BorderColor%22:%22#000000%22,%22sapTile_TitleTextColor%22:%22#000000%22,%22sapTile_TextColor%22:%22#000000%22,%22sapTile_IconColor%22:%22#000000%22,%22sapChart_OrderedColor_1%22:%22#5cbae6%22,%22sapChart_OrderedColor_2%22:%22#b6d957%22,%22sapChart_OrderedColor_3%22:%22#fac364%22,%22sapChart_OrderedColor_4%22:%22#8cd3ff%22,%22sapChart_OrderedColor_5%22:%22#d998cb%22,%22sapChart_OrderedColor_6%22:%22#f2d249%22,%22sapChart_OrderedColor_7%22:%22#93b9c6%22,%22sapChart_OrderedColor_8%22:%22#ccc5a8%22,%22sapChart_OrderedColor_9%22:%22#52bacc%22,%22sapChart_OrderedColor_10%22:%22#dbdb46%22,%22sapChart_OrderedColor_11%22:%22#98aafb%22,%22sapChart_Bad%22:%22#dc0d0e%22,%22sapChart_Critical%22:%22#de890d%22,%22sapChart_Good%22:%22#3fa45b%22,%22sapChart_Neutral%22:%22#848f94%22,%22sapChart_Sequence_1%22:%22#27a3dd%22,%22sapChart_Sequence_2%22:%22#9dc62d%22,%22sapChart_Sequence_3%22:%22#f8ac29%22,%22sapChart_Sequence_Neutral%22:%22#848f94%22,%22sapUiBrand%22:%22#7a5100%22,%22sapUiHighlight%22:%22#7a5100%22,%22sapUiBaseColor%22:%22#000000%22,%22sapUiShellColor%22:%22#000000%22,%22sapUiBaseBG%22:%22#000000%22,%22sapUiGlobalBackgroundColor%22:%22#000000%22,%22sapUiBaseText%22:%22#ffffff%22,%22sapUiLink%22:%22#ffffff%22,%22sapUiGlobalLogo%22:%22none%22,%22sapUiGlobalBackgroundImage%22:%22none%22,%22sapUiBackgroundImage%22:%22none%22,%22sapUiUx3ShellBackgroundImageURL%22:%22none%22,%22sapUiGlobalBackgroundImageOpacity%22:%221%22,%22sapUiGlobalBackgroundRepeat%22:%22false%22,%22sapUiSelected%22:%22#0f5d94%22,%22sapUiActive%22:%22#7a5100%22,%22sapUiHighlightTextColor%22:%22#ffffff%22,%22sapUiTextTitle%22:%22#ffffff%22,%22sapUiContentIconColor%22:%22#ffffff%22,%22sapUiContentContrastIconColor%22:%22#ffffff%22,%22sapUiContentNonInteractiveIconColor%22:%22#ffffff%22,%22sapUiContentMarkerIconColor%22:%22#ffffff%22,%22sapUiContentMarkerTextColor%22:%22#ffffff%22,%22sapUiContentImagePlaceholderBackground%22:%22#000000%22,%22sapUiContentImagePlaceholderForegroundColor%22:%22#999999%22,%22sapUiContentFocusColor%22:%22#ffffff%22,%22sapUiContentContrastFocusColor%22:%22#ffffff%22,%22sapUiContentShadowColor%22:%22#ffffff%22,%22sapUiContentContrastShadowColor%22:%22#ffffff%22,%22sapUiContentSearchHighlightColor%22:%22#7a5100%22,%22sapUiContentHelpColor%22:%22#03b803%22,%22sapUiContentLabelColor%22:%22#ffffff%22,%22sapUiContentDisabledTextColor%22:%22#666666%22,%22sapUiContentDisabledOpacity%22:%220.5%22,%22sapUiContentContrastTextThreshold%22:%220.65%22,%22sapUiContentContrastTextColor%22:%22#ffffff%22,%22sapUiContentForegroundColor%22:%22#000000%22,%22sapUiContentForegroundBorderColor%22:%22#ffffff%22,%22sapUiContentForegroundTextColor%22:%22#ffffff%22,%22sapUiShellBackground%22:%22#000000%22,%22sapUiShellBackgroundImage%22:%22#000000%22,%22sapUiShellBackgroundImageOpacity%22:%221%22,%22sapUiShellBackgroundImageRepeat%22:%22false%22,%22sapUiShellBackgroundGradient%22:%22#000000%22,%22sapUiShellBorderColor%22:%22#ffffff%22,%22sapUiShellTextColor%22:%22#ffffff%22,%22sapUiShellFavicon%22:%22none%22,%22sapUiButtonBackground%22:%22#000000%22,%22sapUiButtonBorderColor%22:%22#ffffff%22,%22sapUiButtonTextColor%22:%22#ffffff%22,%22sapUiButtonDisabledBackground%22:%22#000000%22,%22sapUiButtonDisabledBorderColor%22:%22#666666%22,%22sapUiButtonDisabledTextColor%22:%22#666666%22,%22sapUiButtonHoverBackground%22:%22#7a5100%22,%22sapUiButtonHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonHoverTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedBackground%22:%22#000000%22,%22sapUiButtonEmphasizedBorderColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedTextColor%22:%22#ffffff%22,%22sapUiButtonRejectBackground%22:%22#000000%22,%22sapUiButtonAcceptBackground%22:%22#000000%22,%22sapUiFieldBackground%22:%22#000000%22,%22sapUiFieldBorderColor%22:%22#ffffff%22,%22sapUiFieldTextColor%22:%22#ffffff%22,%22sapUiFieldHelpBackground%22:%22#000000%22,%22sapUiFieldHoverBackground%22:%22#000000%22,%22sapUiFieldHoverBorderColor%22:%22#ffffff%22,%22sapUiFieldHoverHelpBackground%22:%22#000000%22,%22sapUiFieldFocusBackground%22:%22#000000%22,%22sapUiFieldFocusBorderColor%22:%22#ffffff%22,%22sapUiFieldFocusHelpBackground%22:%22#000000%22,%22sapUiFieldReadOnlyBackground%22:%22#585858%22,%22sapUiFieldReadOnlyBorderColor%22:%22#999999%22,%22sapUiFieldReadOnlyHelpBackground%22:%22#585858%22,%22sapUiFieldDisabledBackground%22:%22#585858%22,%22sapUiFieldDisabledBorderColor%22:%22#999999%22,%22sapUiFieldDisabledTextColor%22:%22#666666%22,%22sapUiFieldDisabledHelpBackground%22:%22#585858%22,%22sapUiFieldRequiredColor%22:%22#ffffff%22,%22sapUiFieldInvalidColor%22:%22#ffffff%22,%22sapUiFieldInvalidBackground%22:%22#7a5100%22,%22sapUiFieldWarningColor%22:%22#ffffff%22,%22sapUiFieldWarningBackground%22:%22#000000%22,%22sapUiFieldSuccessColor%22:%22#ffffff%22,%22sapUiFieldSuccessBackground%22:%22#000000%22,%22sapUiGroupTitleBackground%22:%22#000000%22,%22sapUiGroupTitleBorderColor%22:%22#ffffff%22,%22sapUiGroupTitleTextColor%22:%22#ffffff%22,%22sapUiGroupContentBackground%22:%22#000000%22,%22sapUiGroupContentBorderColor%22:%22#ffffff%22,%22sapUiGroupFooterBackground%22:%22#000000%22,%22sapUiToolbarBackground%22:%22#000000%22,%22sapUiToolbarSeparatorColor%22:%22#ffffff%22,%22sapUiListHeaderBackground%22:%22#000000%22,%22sapUiListHeaderBorderColor%22:%22#ffffff%22,%22sapUiListHeaderTextColor%22:%22#ffffff%22,%22sapUiListBorderColor%22:%22#999999%22,%22sapUiListHighlightColor%22:%22#7a5100%22,%22sapUiListSelectionBackgroundColor%22:%22#0f5d94%22,%22sapUiListBackground%22:%22#000000%22,%22sapUiListHoverBackground%22:%22#7a5100%22,%22sapUiScrollBarFaceColor%22:%22#999999%22,%22sapUiScrollBarTrackColor%22:%22#000000%22,%22sapUiScrollBarBorderColor%22:%22#999999%22,%22sapUiScrollBarSymbolColor%22:%22#ffffff%22,%22sapUiScrollBarHoverFaceColor%22:%22#ffffff%22,%22sapUiPageHeaderBackground%22:%22#000000%22,%22sapUiPageHeaderBorderColor%22:%22#ffffff%22,%22sapUiPageHeaderTextColor%22:%22#ffffff%22,%22sapUiPageFooterBackground%22:%22#000000%22,%22sapUiPageFooterTextColor%22:%22#ffffff%22,%22sapUiInfobarBackground%22:%22#000000%22,%22sapUiObjectHeaderBackground%22:%22#000000%22,%22sapUiBlockLayerBackground%22:%22#000000%22,%22sapUiTileBackground%22:%22#000000%22,%22sapUiTileBorderColor%22:%22#ffffff%22,%22sapUiTileTitleTextColor%22:%22#ffffff%22,%22sapUiTileTextColor%22:%22#ffffff%22,%22sapUiTileIconColor%22:%22#ffffff%22,%22sapUiChart1%22:%22#30a7df%22,%22sapUiChart2%22:%22#a3ce2f%22,%22sapUiChart3%22:%22#f8b033%22,%22sapUiChart4%22:%22#cb73b8%22,%22sapUiChart5%22:%22#efc619%22,%22sapUiChart6%22:%22#b9b088%22,%22sapUiChart7%22:%22#30a7df%22,%22sapUiChart8%22:%22#a3ce2f%22,%22sapUiChart9%22:%22#f8b033%22,%22sapUiChart10%22:%22#cb73b8%22,%22sapUiChart11%22:%22#efc619%22,%22sapUiChartBad%22:%22#ff5e5e%22,%22sapUiChartCritical%22:%22#ffab1d%22,%22sapUiChartGood%22:%22#99cc99%22,%22sapUiChartNeutral%22:%22#ffffff%22,%22sapUiChartSequence1%22:%22#5cbae5%22,%22sapUiChartSequence2%22:%22#c6e17d%22,%22sapUiChartSequence3%22:%22#ffab1d%22,%22sapUiChartSequenceNeutral%22:%22#ffffff%22,%22sapUiAccent1%22:%22#ffc847%22,%22sapUiAccent2%22:%22#ed884a%22,%22sapUiAccent3%22:%22#db9292%22,%22sapUiAccent4%22:%22#e269c9%22,%22sapUiAccent5%22:%22#8ca7d5%22,%22sapUiAccent6%22:%22#6bd3ff%22,%22sapUiAccent7%22:%22#7fc6c6%22,%22sapUiAccent8%22:%22#b2e484%22,%22sapUiErrorBG%22:%22#000000%22,%22sapUiWarningBG%22:%22#000000%22,%22sapUiSuccessBG%22:%22#000000%22,%22sapUiNeutralBG%22:%22#000000%22,%22sapUiErrorBorder%22:%22#ff5e5e%22,%22sapUiWarningBorder%22:%22#ffab1d%22,%22sapUiSuccessBorder%22:%22#99cc99%22,%22sapUiNeutralBorder%22:%22#ffffff%22,%22sapUiNegativeElement%22:%22#ff5e5e%22,%22sapUiCriticalElement%22:%22#ffab1d%22,%22sapUiPositiveElement%22:%22#99cc99%22,%22sapUiNeutralElement%22:%22#ffffff%22,%22sapUiNegativeText%22:%22#ff5e5e%22,%22sapUiCriticalText%22:%22#ffab1d%22,%22sapUiPositiveText%22:%22#99cc99%22,%22sapUiNeutralText%22:%22#ffffff%22,%22sapUiNegative%22:%22#ff5e5e%22,%22sapUiCritical%22:%22#ffab1d%22,%22sapUiPositive%22:%22#99cc99%22,%22sapUiNeutral%22:%22#ffffff%22,%22sapUiErrorColor%22:%22#ff9191%22,%22sapUiWarningColor%22:%22#ffbe50%22,%22sapUiSuccessColor%22:%22#bbddbb%22,%22sapUiFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontSize%22:%2216px%22,%22sapUiFontCondensedFamily%22:%22%27Arial Narrow%27, HelveticaNeue-CondensedBold, Arial, sans-serif%22,%22sapUiFontHeaderFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiFontHeaderWeight%22:%22normal%22,%22sapMFontHeader1Size%22:%221.625rem%22,%22sapMFontHeader2Size%22:%221.375rem%22,%22sapMFontHeader3Size%22:%221.25rem%22,%22sapMFontHeader4Size%22:%221.125rem%22,%22sapMFontHeader5Size%22:%221rem%22,%22sapMFontHeader6Size%22:%220.875rem%22,%22sapMFontSmallSize%22:%220.75rem%22,%22sapMFontMediumSize%22:%220.875rem%22,%22sapMFontLargeSize%22:%221rem%22,%22sapUiTranslucentBGOpacity%22:%2280%25%22,%22sapMPlatformDependent%22:%22false%22,%22sapUiDesktopFontFamily%22:%22Arial, Helvetica, sans-serif%22,%22sapUiDesktopFontSize%22:%2212px%22,%22sapUiFontLargeSize%22:%2213px%22,%22sapUiFontSmallSize%22:%2211px%22,%22sapUiFontHeader1Size%22:%2226px%22,%22sapUiFontHeader2Size%22:%2220px%22,%22sapUiFontHeader3Size%22:%2218px%22,%22sapUiFontHeader4Size%22:%2216px%22,%22sapUiFontHeader5Size%22:%2214px%22,%22sapUiFontHeader6Size%22:%2213px%22,%22sapUiLineHeight%22:%2218px%22,%22sapUiChartLabelHoverColor%22:%22#7a5100%22,%22sapUiChartLabelPressedColor%22:%22#7a5100%22,%22sapUiChartCategoryAxisLabelFontColor%22:%22#ffffff%22,%22sapUiChartValueAxisLabelFontColor%22:%22#ffffff%22,%22sapUiChartCategoryAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartValueAxisLabelFontSize%22:%220.75rem%22,%22sapUiChartCategoryAxisLineColor%22:%22#ffffff%22,%22sapUiChartValueAxisLineColor%22:%22#ffffff%22,%22sapUiChartCategoryAxisTickColor%22:%22#ffffff%22,%22sapUiChartValueAxisTickColor%22:%22#ffffff%22,%22sapUiChartBackgroundColor%22:%22#000000%22,%22sapUiChartLabelFontWeight%22:%22normal%22,%22sapUiChartLegendLabelFontColor%22:%22#ffffff%22,%22sapUiChartLegendTitleFontColor%22:%22#ffffff%22,%22sapUiChartLegendTitleFontSize%22:%220.875rem%22,%22sapUiChartLegendLabelFontSize%22:%220.75rem%22,%22sapUiChartPaletteUndefinedColor%22:%22#ffffff%22,%22sapUiChartGridlineColor%22:%22#999999%22,%22sapUiChartReferenceLineColor%22:%22#ffffff%22,%22sapUiChartDataLabelFontColor%22:%22#ffffff%22,%22sapUiChartReferenceLineLabelColor%22:%22#ffffff%22,%22sapUiChartDataLabelFontSize%22:%220.75rem%22,%22sapUiChartPopoverDataItemFontColor%22:%22#ffffff%22,%22sapUiChartPopoverGroupFontColor%22:%22#ffffff%22,%22sapUiChartPopoverDataItemFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontSize%22:%220.875rem%22,%22sapUiChartPopoverGroupFontWeight%22:%22bold%22,%22sapUiChartScrollBarThumbColor%22:%22#999999%22,%22sapUiChartScrollBarTrackColor%22:%22#000000%22,%22sapUiChartScrollBarThumbHoverColor%22:%22#ffffff%22,%22sapUiChartMainTitleFontColor%22:%22#ffffff%22,%22sapUiChartAxisTitleFontColor%22:%22#ffffff%22,%22sapUiChartMainTitleFontSize%22:%221rem%22,%22sapUiChartAxisTitleFontSize%22:%220.875rem%22,%22sapUiChartTitleFontWeight%22:%22bold%22,%22sapUiChartLightText%22:%22#ffffff%22,%22sapUiChartZeroAxisColor%22:%22#ffffff%22,%22sapUiChartDataPointBorderColor%22:%22#000000%22,%22sapUiChartDataPointBorderHoverSelectedColor%22:%22#ffffff%22,%22sapUiChartDataPointNotSelectedBackgroundOpacity%22:%220.7%22,%22sapUiChartValueAxisLineOpacity%22:%220%22,%22sapUiChartCategoryAxisLabelFontHoverColor%22:%22#ffffff%22,%22sapUiChartCategoryAxisLabelFontPressedColor%22:%22#ffffff%22,%22sapUiChartTargetColor%22:%22#ffffff%22,%22sapUiChartTargetShadowColor%22:%22#000000%22,%22sapUiChartBubbleBGOpacity%22:%220.9%22,%22sapUiChartScrollbarBorderColor%22:%22#999999%22,%22sapUiChartScrollbarBorderSize%22:%221px%22,%22sapUiChartScrollbarThumbPadding%22:%220.125rem%22,%22sapUiChartNegativeLargeText%22:%22#ff5e5e%22,%22sapUiChartCriticalLargeText%22:%22#ffab1d%22,%22sapUiChartPositiveLargeText%22:%22#99cc99%22,%22sapUiChartNeutralLargeText%22:%22#ffffff%22,%22sapUiChartDataPointBG%22:%22#000000%22,%22sapUiChartDataPointBGBorderColor%22:%22#ffffff%22,%22sapUiChartDataLineColorWithBG%22:%22#ffffff%22,%22sapUiChartDataLineColor%22:%22#ffffff%22,%22sapUiChartRadialRemainingCircle%22:%22#000000%22,%22sapUiChartRadialRemainingCircleBorderColor%22:%22#ffffff%22,%22sapUiChartRadialBG%22:%22#000000%22,%22sapUiChartPaletteQualitativeHue1%22:%22#30a7df%22,%22sapUiChartPaletteQualitativeHue2%22:%22#a3ce2f%22,%22sapUiChartPaletteQualitativeHue3%22:%22#f8b033%22,%22sapUiChartPaletteQualitativeHue4%22:%22#cb73b8%22,%22sapUiChartPaletteQualitativeHue5%22:%22#efc619%22,%22sapUiChartPaletteQualitativeHue6%22:%22#b9b088%22,%22sapUiChartPaletteQualitativeHue7%22:%22#30a7df%22,%22sapUiChartPaletteQualitativeHue8%22:%22#a3ce2f%22,%22sapUiChartPaletteQualitativeHue9%22:%22#f8b033%22,%22sapUiChartPaletteQualitativeHue10%22:%22#cb73b8%22,%22sapUiChartPaletteQualitativeHue11%22:%22#efc619%22,%22sapUiChartPaletteSemanticBadLight3%22:%22#db3535%22,%22sapUiChartPaletteSemanticBadLight2%22:%22#db3535%22,%22sapUiChartPaletteSemanticBadLight1%22:%22#ff7878%22,%22sapUiChartPaletteSemanticBad%22:%22#ff7878%22,%22sapUiChartPaletteSemanticBadDark1%22:%22#ff7878%22,%22sapUiChartPaletteSemanticBadDark2%22:%22#ff7878%22,%22sapUiChartPaletteSemanticCriticalLight3%22:%22#b67200%22,%22sapUiChartPaletteSemanticCriticalLight2%22:%22#b67200%22,%22sapUiChartPaletteSemanticCriticalLight1%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticCritical%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticCriticalDark1%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticCriticalDark2%22:%22#ffab1d%22,%22sapUiChartPaletteSemanticGoodLight3%22:%22#5e975e%22,%22sapUiChartPaletteSemanticGoodLight2%22:%22#5e975e%22,%22sapUiChartPaletteSemanticGoodLight1%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticGood%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticGoodDark1%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticGoodDark2%22:%22#a4dba4%22,%22sapUiChartPaletteSemanticNeutralLight3%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralLight2%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralLight1%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutral%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralDark1%22:%22#ffffff%22,%22sapUiChartPaletteSemanticNeutralDark2%22:%22#ffffff%22,%22sapUiChartPaletteSequentialHue1Light3%22:%22#2382ae%22,%22sapUiChartPaletteSequentialHue1Light2%22:%22#2382ae%22,%22sapUiChartPaletteSequentialHue1Light1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1Dark1%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue1Dark2%22:%22#5cbae5%22,%22sapUiChartPaletteSequentialHue2Light3%22:%22#819e31%22,%22sapUiChartPaletteSequentialHue2Light2%22:%22#819e31%22,%22sapUiChartPaletteSequentialHue2Light1%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2Dark1%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue2Dark2%22:%22#c6e17d%22,%22sapUiChartPaletteSequentialHue3Light3%22:%22#b67200%22,%22sapUiChartPaletteSequentialHue3Light2%22:%22#b67200%22,%22sapUiChartPaletteSequentialHue3Light1%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialHue3%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialHue3Dark1%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialHue3Dark2%22:%22#ffab1d%22,%22sapUiChartPaletteSequentialNeutralLight3%22:%22#8c8c8c%22,%22sapUiChartPaletteSequentialNeutralLight2%22:%22#8c8c8c%22,%22sapUiChartPaletteSequentialNeutralLight1%22:%22#ffffff%22,%22sapUiChartPaletteSequentialNeutral%22:%22#ffffff%22,%22sapUiChartPaletteSequentialNeutralDark1%22:%22#ffffff%22,%22sapUiChartPaletteSequentialNeutralDark2%22:%22#ffffff%22,%22sapUiChoroplethBG%22:%22#000000%22,%22sapUiChoroplethRegionBorder%22:%22#000000%22,%22sapUiChoroplethRegionBG%22:%22#8c8c8c%22,%22sapUiMapLegendBG%22:%22#000000%22,%22sapUiMapLegendBorderColor%22:%22#ffffff%22,%22sapUiShellHoverBackground%22:%22#7a5100%22,%22sapUiShellActiveBackground%22:%22#7a5100%22,%22sapUiShellActiveTextColor%22:%22#ffffff%22,%22sapUiShellHoverToggleBackground%22:%22#0f5d94%22,%22sapUiShellContainerBackground%22:%22#000000%22,%22sapUiShellAltContainerBackground%22:%22#000000%22,%22sapUiUx3ShellHeaderColor%22:%22#000000%22,%22sapUiUx3ShellBackgroundColor%22:%22#000000%22,%22sapUiUx3ShellHoverColor%22:%22#7a5100%22,%22sapUiUx3ShellGradientBottom%22:%22#000000%22,%22sapUiUx3ShellGradientTop%22:%22#000000%22,%22sapUiUx3ShellToolPaletteIconFontColor%22:%22#ffffff%22,%22sapUiUx3ExactLstExpandOffset%22:%220 0%22,%22sapUiUx3ExactLstRootExpandOffset%22:%220 3%22,%22sapUiUx3ExactLstContentTop%22:%2225px%22,%22sapUiLinkActive%22:%22#ffffff%22,%22sapUiLinkVisited%22:%22#ffffff%22,%22sapUiLinkHover%22:%22#ffffff%22,%22sapUiLinkInverted%22:%22#ffffff%22,%22sapUiNotificationBarBG%22:%22#000000%22,%22sapUiNotifierSeparator%22:%22#ffffff%22,%22sapUiNotifierSeparatorWidth%22:%222px%22,%22sapUiNotificationBarBorder%22:%22#ffffff%22,%22sapUiUx3ToolPopupInverted%22:%22false%22,%22sapUiUx3ToolPopupArrowRightMarginCorrection%22:%22-2px%22,%22sapUiUx3ToolPopupShadow%22:%220px 6px 12px 0px rgba%28255, 255, 255, 0.3%29%22,%22sapUiCalloutShadow%22:%220px 6px 12px 0px rgba%28255, 255, 255, 0.3%29%22,%22sapUiButtonIconColor%22:%22#ffffff%22,%22sapUiButtonActiveBackground%22:%22#7a5100%22,%22sapUiButtonActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonActiveTextColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedHoverBackground%22:%22#7a5100%22,%22sapUiButtonEmphasizedHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedActiveBackground%22:%22#7a5100%22,%22sapUiButtonEmphasizedActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonEmphasizedTextShadow%22:%22#000000%22,%22sapUiButtonAcceptBorderColor%22:%22#ffffff%22,%22sapUiButtonAcceptHoverBackground%22:%22#7a5100%22,%22sapUiButtonAcceptHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonAcceptActiveBackground%22:%22#7a5100%22,%22sapUiButtonAcceptActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonAcceptTextColor%22:%22#ffffff%22,%22sapUiButtonRejectBorderColor%22:%22#ffffff%22,%22sapUiButtonRejectHoverBackground%22:%22#7a5100%22,%22sapUiButtonRejectHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonRejectActiveBackground%22:%22#7a5100%22,%22sapUiButtonRejectActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonRejectTextColor%22:%22#ffffff%22,%22sapUiButtonLiteBackground%22:%22#000000%22,%22sapUiButtonLiteBorderColor%22:%22#ffffff%22,%22sapUiButtonLiteTextColor%22:%22#ffffff%22,%22sapUiButtonLiteHoverBackground%22:%22#7a5100%22,%22sapUiButtonLiteHoverBorderColor%22:%22#ffffff%22,%22sapUiButtonLiteActiveBackground%22:%22#7a5100%22,%22sapUiButtonLiteActiveBorderColor%22:%22#ffffff%22,%22sapUiButtonHeaderTextColor%22:%22#ffffff%22,%22sapUiButtonHeaderDisabledTextColor%22:%22#666666%22,%22sapUiButtonFooterTextColor%22:%22#ffffff%22,%22sapUiButtonFooterHoverBackground%22:%22#7a5100%22,%22sapUiButtonActionSelectBackground%22:%22#000000%22,%22sapUiButtonActionSelectBorderColor%22:%22#ffffff%22,%22sapUiButtonLiteActionSelectHoverBackground%22:%22#7a5100%22,%22sapUiToggleButtonPressedBackground%22:%22#0f5d94%22,%22sapUiToggleButtonPressedBorderColor%22:%22#ffffff%22,%22sapUiToggleButtonPressedTextColor%22:%22#ffffff%22,%22sapUiToggleButtonPressedHoverBackground%22:%22#7a5100%22,%22sapUiToggleButtonPressedHoverBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonBackground%22:%22#000000%22,%22sapUiSegmentedButtonBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonHoverBackground%22:%22#7a5100%22,%22sapUiSegmentedButtonActiveBackground%22:%22#7a5100%22,%22sapUiSegmentedButtonActiveTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedBackground%22:%22#0f5d94%22,%22sapUiSegmentedButtonSelectedTextColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedHoverBackground%22:%22#7a5100%22,%22sapUiSegmentedButtonSelectedHoverBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonActiveIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonSelectedIconColor%22:%22#ffffff%22,%22sapUiSegmentedButtonFooterBorderColor%22:%22#ffffff%22,%22sapUiSegmentedButtonFooterHoverBackground%22:%22#7a5100%22,%22sapUiFieldActiveBackground%22:%22#7a5100%22,%22sapUiFieldActiveBorderColor%22:%22#ffffff%22,%22sapUiFieldActiveTextColor%22:%22#ffffff%22,%22sapUiFieldPlaceholderTextColor%22:%22#999999%22,%22sapUiListTextColor%22:%22#ffffff%22,%22sapUiListVerticalBorderColor%22:%22#ffffff%22,%22sapUiListActiveBackground%22:%22#7a5100%22,%22sapUiListActiveTextColor%22:%22#ffffff%22,%22sapUiListSelectionHoverBackground%22:%22#7a5100%22,%22sapUiListFooterBackground%22:%22#000000%22,%22sapUiListFooterTextColor%22:%22#ffffff%22,%22sapUiListGroupHeaderBackground%22:%22#585858%22,%22sapUiListTableGroupHeaderBackground%22:%22#000000%22,%22sapUiListTableGroupHeaderBorderColor%22:%22#ffffff%22,%22sapUiListTableGroupHeaderTextColor%22:%22#ffffff%22,%22sapUiListTableFooterBorder%22:%22#ffffff%22,%22sapUiListTableFixedBorder%22:%22#ffffff%22,%22sapUiListTableTextSize%22:%220.875rem%22,%22sapUiListTableIconSize%22:%221rem%22,%22sapUiPageFooterBorderColor%22:%22#ffffff%22,%22sapUiInfobarHoverBackground%22:%22#7a5100%22,%22sapUiInfobarActiveBackground%22:%22#7a5100%22,%22sapUiObjectHeaderBorderColor%22:%22#ffffff%22,%22sapUiCalendarColorToday%22:%22#ffffff%22,%22sapUiDragAndDropColor%22:%22#ffffff%22,%22sapUiDragAndDropBackground%22:%22#000000%22,%22sapUiDragAndDropBorderColor%22:%22#ffffff%22,%22sapUiDragAndDropActiveColor%22:%22#03b803%22,%22sapUiDragAndDropActiveBackground%22:%22#000000%22,%22sapUiDragAndDropActiveBorderColor%22:%22#03b803%22,%22sapUiShadowLevel0%22:%220 0 0 1px #ffffff%22,%22sapUiShadowLevel1%22:%220 0 1rem 0 rgba%28255, 255, 255, 0.5%29, 0 0 0 2px #ffffff%22,%22sapUiShadowLevel2%22:%220 0.25rem 2rem 0 rgba%28255, 255, 255, 0.6%29, 0 0 0 2px #ffffff%22,%22sapUiShadowLevel3%22:%220 0.625rem 4rem 0 rgba%28255, 255, 255, 0.8%29, 0 0 0 2px #ffffff%22,%22sapUiShadowText%22:%22none%22,%22sapUiShadowHeader%22:%22inset 0 -0.125rem #ffffff, 0 0.125rem 0 0 #000000%22,%22sapUiUx3ShellHeaderImageURL%22:%22%22,%22sapUiUx3ShellApplicationImageURL%22:%22none%22,%22sapUiPurple%22:%22#800080%22,%22sapUiOrange%22:%22#ffa500%22,%22sapUiGreen%22:%22#008000%22,%22sapUiBlue%22:%22#0000ff%22,%22sapUiRed%22:%22#ff0000%22,%22sapUiYellow%22:%22#ffff00%22,%22sapUiBase%22:%22#ffffff%22,%22sapUiBaseBorder%22:%22#ffffff%22,%22sapUiBaseLine%22:%22#ffffff%22,%22sapUiWhite%22:%22#000000%22,%22sapUiWhiteBG%22:%22#000000%22,%22sapUiExtraLightBG%22:%22#000000%22,%22sapUiLightBG%22:%22#000000%22,%22sapUiMediumBG%22:%22#000000%22,%22sapUiDarkBG%22:%22#000000%22,%22sapUiDeepBG%22:%22#ffffff%22,%22sapUiBlackBG%22:%22#ffffff%22,%22sapUiHoverBG%22:%22#808080%22,%22sapUiMediumAltBG%22:%22#808080%22,%22sapUiDarkAltBG%22:%22#a9a9a9%22,%22sapUiButtonStandardBG%22:%22#000000%22,%22sapUiButtonEmphasizedBG%22:%22#000000%22,%22sapUiButtonNegativeBG%22:%22#000000%22,%22sapUiButtonPositiveBG%22:%22#000000%22,%22sapUiReadOnlyBG%22:%22#585858%22,%22sapUiExtraLightText%22:%22#ffffff%22,%22sapUiLightText%22:%22#ffffff%22,%22sapUiMediumText%22:%22#ffffff%22,%22sapUiDarkText%22:%22#ffffff%22,%22sapUiDeepText%22:%22#000000%22,%22sapUiText%22:%22#ffffff%22,%22sapUiTextInverted%22:%22#000000%22,%22sapUiWhiteBorder%22:%22#ffffff%22,%22sapUiExtraLightBorder%22:%22#ffffff%22,%22sapUiLightBorder%22:%22#ffffff%22,%22sapUiMediumBorder%22:%22#ffffff%22,%22sapUiDarkBorder%22:%22#ffffff%22,%22sapUiBlackBorder%22:%22#000000%22,%22sapUiElement%22:%22#d3d3d3%22,%22sapUiInvertedElement%22:%22#ffffff%22,%22sapUiLightLine%22:%22#d3d3d3%22,%22sapUiMediumLine%22:%22#808080%22,%22sapUiEmphasizedLine%22:%22#7a5100%22,%22sapUiDarkLine%22:%22#a9a9a9%22,%22sapUiLightShadowTint%22:%22#ffffff%22,%22sapUiDarkShadowTint%22:%22#ffffff%22,%22sapUiFocus%22:%22#ffffff%22,%22sapUiInvertedFocus%22:%22#ffffff%22,%22sapUiTableRowBG%22:%22#000000%22,%22sapUiTableRowAlternatingBG%22:%22#444444%22,%22sapUiTableRowSelectionBG%22:%22#7a5100%22,%22sapUiTableRowSelectionReadOnlyBG%22:%22#7a5100%22,%22sapUiTableRowHoverBG%22:%22#808080%22,%22sapUiListBG%22:%22#f7f7f7%22,%22sapUiTextColor%22:%22#008000%22,%22sapUiTextTitleColor%22:%22#008000%22,%22sapUiTextSelectionColor%22:%22#008000%22,%22sapUiTextDisabled%22:%22#666666%22,%22sapUiTextSelection%22:%22#ffffff%22,%22sapUiTextfieldBackground%22:%22#000000%22,%22sapUiFontMonospaceFamily%22:%22Lucida Console%22,%22sapUiUx3ShellSideBarBaseWidth%22:%2240px%22,%22sapUiUx3ShellPaneOverflowButtonHeight%22:%22120px%22,%22sapUiUx3ExactLstCollapseWidth%22:%2224px%22,%22sapUiUx3ExactLstHeaderHeight%22:%2225px%22,%22sapUiNotificationBarBG_IE%22:%22#000000%22,%22sapUiNotifierHoverColor%22:%22#7a5100%22,%22sapUiNotificationText%22:%22#ffffff%22,%22sapUiNotificationTimestamp%22:%22#ababab%22,%22sapUiNotificationBarCalloutBorder%22:%22#ffffff%22,%22sapUiNotificationBarCalloutBorder_IE%22:%22#ffffff%22,%22sapUiNotificationBarCalloutArr%22:%22#ffffff%22,%22sapUiNotificationBarHeight%22:%2240px%22,%22sapUiNotificationBarHeightMinimized%22:%220px%22,%22sapUiNotificationBarHeightMaximized%22:%2240%25%22,%22sapUiNotifierWidth%22:%2240px%22,%22sapUiRIIconPaddingXS%22:%221px%22,%22sapUiRIIconPaddingS%22:%220.125rem%22,%22sapUiRIIconPaddingM%22:%220.1875rem%22,%22sapUiRIIconPaddingL%22:%220.25rem%22,%22sapUiRIIconPaddingCozy%22:%220.1875rem%22,%22sapUiRIIconPaddingCompact%22:%220.125rem%22,%22sapUiRIIconPaddingCondensed%22:%220.125rem%22,%22sapUiRIIconPaddingDisplayOnly%22:%220.125rem%22,%22sapUiRIIconSizeCozy%22:%221.375rem%22,%22sapUiRIIconSizeCompact%22:%221rem%22,%22sapUiRIIconSizeCondensed%22:%221rem%22,%22sapUiRIIconSizeDisplayOnly%22:%221rem%22,%22sapUiUx3ToolPopupArrowWidth%22:%2212px%22,%22sapUiUx3ToolPopupArrowHeight%22:%2218px%22,%22sapUiUx3ToolPopupArrowRightMarginCorrectionInverted%22:%22-7px%22,%22sapUiUx3TPPaddingBottom%22:%2250px%22,%22sapUiButtonEmphasizedDisabledBorderColor%22:%22#666666%22,%22sapUiButtonEmphasizedDisabledBackground%22:%22#000000%22,%22sapUiButtonAcceptDisabledBorderColor%22:%22#666666%22,%22sapUiButtonAcceptDisabledBackground%22:%22#000000%22,%22sapUiButtonRejectDisabledBorderColor%22:%22#666666%22,%22sapUiButtonRejectDisabledBackground%22:%22#000000%22,%22sapUiToggleButtonPressedDisabledBackground%22:%22#585858%22,%22sapUiToggleButtonPressedDisabledBorderColor%22:%22#999999%22,%22sapUiToggleButtonPressedDisabledTextColor%22:%22#999999%22,%22sapUiPositiveBG%22:%22#99cc99%22,%22sapUiShadowTint%22:%22#000000%22,%22sapUiShadow%22:%225px 5px 10px rgba%280, 0, 0, 0.5%29%22,%22sapUiThemeDesignerCustomCss%22:%22false%22,%22sapUiMarginTiny%22:%220.5rem%22,%22sapUiMarginSmall%22:%221rem%22,%22sapUiMarginMedium%22:%222rem%22,%22sapUiMarginLarge%22:%223rem%22,%22sapUiEscapedEmptyString%22:%22%22,%22sapUiLightBoxMagnifyingGlassBorder%22:%22none%22,%22sapUiLightBoxMagnifyingGlassBackgroundColor%22:%22#ffffff%22,%22_sap_ui_rta_Overlay_ActiveBG%22:%22rgba%2822, 137, 217, 0.3%29%22,%22_sap_ui_rta_Overlay_BaseBG%22:%22#000000%22,%22_sap_ui_rta_Overlay_Border%22:%22#03b803%22,%22_sap_ui_rta_Overlay_HoverBG%22:%22rgba%28199, 132, 0, 0.3%29%22,%22_sap_ui_rta_Overlay_ActiveHoverBG%22:%22rgba%2815, 93, 148, 0.2%29%22,%22sapHCStandardBG%22:%22#000000%22,%22sapHCHighlightBG%22:%22#7a5100%22,%22sapHCHighlightAltBG%22:%22#0f5d94%22,%22sapHCReducedBG%22:%22#585858%22,%22sapHCReducedAltBG%22:%22#a2a39f%22,%22sapHCStandardFG%22:%22#ffffff%22,%22sapHCEnhancedFG%22:%22#03b803%22,%22sapHCReducedFG%22:%22#666666%22,%22sapHCReducedAltFG%22:%22#999999%22,%22sapHCNegative%22:%22#ff5e5e%22,%22sapHCCritical%22:%22#ffab1d%22,%22sapHCPositive%22:%22#99cc99%22,%22sapHCNeutral%22:%22#ffffff%22,%22sapUiHcStandardBackground%22:%22#000000%22,%22sapUiHcHighlightBackground%22:%22#7a5100%22,%22sapUiHcHighlightAltBackground%22:%22#0f5d94%22,%22sapUiHcReducedBackground%22:%22#585858%22,%22sapUiHcReducedAltBackground%22:%22#a2a39f%22,%22sapUiHcStandardForeground%22:%22#ffffff%22,%22sapUiHcEnhancedForeground%22:%22#03b803%22,%22sapUiHcReducedForeground%22:%22#666666%22,%22sapUiHcReducedAltForeground%22:%22#999999%22,%22sapUiHcNegativeColor%22:%22#ff5e5e%22,%22sapUiHcCriticalColor%22:%22#ffab1d%22,%22sapUiHcPositiveColor%22:%22#99cc99%22,%22sapUiHcNeutralColor%22:%22#ffffff%22,%22sapHCShadowTint%22:%22rgba%28255, 255, 255, 0.8%29%22,%22sapUiInfoTop%22:%22false%22,%22sapUiHighlightColor%22:%22#7a5100%22,%22sapUiActiveBG%22:%22#0f5d94%22,%22sapUiMessageNotifierCountBG%22:%22#0f5d94%22,%22sapUiDatePickerTableBackground%22:%22#0f5d94%22,%22sapUiDatePickerTableBorderColor%22:%22#0f5d94%22,%22sapUiDTICustomRows%22:%225%22,%22sapUiDTICustomPhoneRows%22:%223%22,%22sapUiDTICustomWidth%22:%2264%22,%22sapUiDTICustomHeight%22:%2248%22,%22sapUiDTICustomShowLabel%22:%22false%22,%22sapUiDTICustomHeaderText%22:%22true%22,%22sapUiDTICustomMode%22:%22scroller%22,%22sapUiDTICustomDesktopMode%22:%22mixed%22,%22sapUiDTICustomDisplay%22:%22bubble%22,%22sapUiDTICustomPhoneDisplay%22:%22modal%22,%22sapUiToolbarSeparatorBG%22:%22#ffffff%22,%22sapUiToolbarSeparatorFooterBG%22:%22#ffffff%22,%22sapUiSearchHighlight%22:%22#7a5100%22,%22sapUiDarkestBorder%22:%22#ffffff%22,%22sapUiExtraDarkBorder%22:%22#ffffff%22,%22sapUiLightestBorder%22:%22#ffffff%22,%22sapUiFooterBG%22:%22#000000%22,%22sapUiHeaderBG%22:%22#000000%22,%22sapUiLightestBG%22:%22#000000%22,%22sapUiDarkestBG%22:%22#000000%22,%22sapUiExtraDarkBG%22:%22#000000%22,%22sapMeOverlapCalendarType00%22:%22#585858%22,%22sapMeOverlapCalendarType01%22:%22#66b366%22,%22sapMeOverlapCalendarType01Action%22:%22#66b366%22,%22sapMeOverlapCalendarType04%22:%22#bbddbb%22,%22sapMeOverlapCalendarType06%22:%22#ffab1d%22,%22sapMeOverlapCalendarType07%22:%22#ff9191%22,%22sapMeOverlapCalendarIndicator%22:%22#ed884a%22,%22sapMeCalendarLegendIconCollapse%22:%22collapse%22,%22sapMeCalendarLegendIconExpand%22:%22expand%22%7D'); } diff --git a/resources/sap/ui/rta/themes/sap_hcb/library.source.less b/resources/sap/ui/rta/themes/sap_hcb/library.source.less new file mode 100644 index 0000000..29febc6 --- /dev/null +++ b/resources/sap/ui/rta/themes/sap_hcb/library.source.less @@ -0,0 +1,13 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +@import "../base/library.source.less"; +@import "../../../../../sap/ui/core/themes/sap_hcb/global.less"; + +@import "Toolbar.base.less"; +@import "Toolbar.standalone.less"; +@import "Toolbar.personalization.less"; + +@import "Overlay.less"; diff --git a/resources/sap/ui/rta/toolbar/Adaptation.js b/resources/sap/ui/rta/toolbar/Adaptation.js new file mode 100644 index 0000000..9932fe7 --- /dev/null +++ b/resources/sap/ui/rta/toolbar/Adaptation.js @@ -0,0 +1,193 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'sap/m/ToolbarSpacer', + 'sap/m/Button', + 'sap/m/SegmentedButton', + 'sap/m/SegmentedButtonItem', + './Base' +], +function( + ToolbarSpacer, + Button, + SegmentedButton, + SegmentedButtonItem, + Base +) { + "use strict"; + + /** + * Constructor for a new sap.ui.rta.toolbar.Adaptation control + * + * @class + * Contains implementation of Adaptation toolbar + * @extends sap.ui.rta.toolbar.Base + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.toolbar.Adaptation + * @experimental Since 1.48. This class is experimental. API might be changed in future. + */ + var Adaptation = Base.extend("sap.ui.rta.toolbar.Adaptation", { + renderer: 'sap.ui.rta.toolbar.BaseRenderer', + animation: true, + metadata: { + events: { + /** + * Events are fired when the Toolbar Buttons are pressed + */ + "undo": {}, + "redo": {}, + "exit": {}, + "restore": {}, + "transport": {}, + "modeChange": {}, + "manageApps": {} + }, + properties: { + /** Determines whether publish button is visible */ + "publishVisible": { + "type": "boolean", + "defaultValue": false + }, + + /** Defines value of the switcher SegmentedButton */ + "modeSwitcher": { + type: "string", + defaultValue: "adaptation" + }, + + /** Determines whether Message information icon button is visible */ + "manageAppsVisible": { + "type": "boolean", + "defaultValue": false + } + } + } + }); + + Adaptation.prototype.onAfterRendering = function () { + var iSign = -1; + var bIgnore = false; + var iWidth = this.getAggregation('content').reduce(function (iResult, oControl) { + switch (oControl.data('name')) { + case 'spacerLeft': + iSign = 1; + bIgnore = true; + break; + case 'spacerRight': + bIgnore = false; + break; + } + return !(oControl instanceof ToolbarSpacer) && !bIgnore + ? iResult + iSign * oControl.$().outerWidth(true) + : iResult; + }, 0); + + if (iWidth > 0) { + this.getControl('spacerBalancer').setWidth(iWidth + 'px'); + } + + Base.prototype.onAfterRendering.apply(this, arguments); + }; + + Adaptation.prototype.buildControls = function () { + return [ + new ToolbarSpacer().data('name', 'spacerBalancer'), + new ToolbarSpacer().data('name', 'spacerLeft'), + new SegmentedButton({ + width: "auto", + selectedKey: this.getModeSwitcher(), + items: [ + new SegmentedButtonItem({ + text: this.getTextResources().getText("BTN_ADAPTATION"), + tooltip: this.getTextResources().getText("BTN_ADAPTATION"), + width: "auto", + key: "adaptation" + }), + new SegmentedButtonItem({ + text: this.getTextResources().getText("BTN_NAVIGATION"), + tooltip: this.getTextResources().getText("BTN_NAVIGATION"), + width: "auto", + key: "navigation" + }) + ], + select: this.eventHandler.bind(this, 'ModeChange') + }).data('name', 'modeSwitcher'), + new ToolbarSpacer().data('name', 'spacerRight'), + new Button({ + type: "Transparent", + icon: "sap-icon://undo", + enabled: false, + tooltip: this.getTextResources().getText("BTN_UNDO"), + press: this.eventHandler.bind(this, 'Undo') + }).data('name', 'undo'), + new Button({ + type:"Transparent", + icon: "sap-icon://redo", + iconFirst: false, + enabled: false, + tooltip: this.getTextResources().getText("BTN_REDO"), + press: this.eventHandler.bind(this, 'Redo') + }).data('name', 'redo'), + new Button({ + type:"Transparent", + icon: "sap-icon://message-information", + visible: this.getManageAppsVisible(), + tooltip: this.getTextResources().getText("BTN_MANAGE_APPS"), + press: this.eventHandler.bind(this, 'ManageApps') + }).data('name', 'manageApps'), + new Button({ + type: "Transparent", + text: this.getTextResources().getText("BTN_RESTORE"), + visible: true, + enabled: false, + tooltip: this.getTextResources().getText("BTN_RESTORE"), + press: this.eventHandler.bind(this, 'Restore') + }).data('name', 'restore'), + new sap.m.Button({ + type: "Transparent", + enabled: false, + visible: this.getPublishVisible(), + text: this.getTextResources().getText("BTN_PUBLISH"), + tooltip: this.getTextResources().getText("BTN_PUBLISH"), + press: this.eventHandler.bind(this, 'Transport') // Fixme: rename event + }).data('name', 'publish'), + new Button({ + type:"Transparent", + text: this.getTextResources().getText("BTN_EXIT"), + tooltip: this.getTextResources().getText("BTN_EXIT"), + press: this.eventHandler.bind(this, 'Exit') + }).data('name', 'exit') + ]; + }; + + Adaptation.prototype.setUndoRedoEnabled = function (bCanUndo, bCanRedo) { + this.getControl('undo').setEnabled(bCanUndo); + this.getControl('redo').setEnabled(bCanRedo); + }; + + Adaptation.prototype.setPublishEnabled = function (bEnabled) { + this.getControl('publish').setEnabled(bEnabled); + }; + + Adaptation.prototype.setRestoreEnabled = function (bEnabled) { + this.getControl('restore').setEnabled(bEnabled); + }; + + /* Methods propagation */ + Adaptation.prototype.show = function () { return Base.prototype.show.apply(this, arguments); }; + Adaptation.prototype.hide = function () { return Base.prototype.hide.apply(this, arguments); }; + + + return Adaptation; + +}, true); diff --git a/resources/sap/ui/rta/toolbar/Base.js b/resources/sap/ui/rta/toolbar/Base.js new file mode 100644 index 0000000..8273592 --- /dev/null +++ b/resources/sap/ui/rta/toolbar/Base.js @@ -0,0 +1,233 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'jquery.sap.global', + 'sap/ui/rta/library', + 'sap/ui/core/Popup', + 'sap/m/Toolbar', + 'sap/ui/core/BusyIndicator', + 'sap/ui/rta/util/Animation' +], +function( + jQuery, + library, + Popup, + Toolbar, + BusyIndicator, + Animation +) { + "use strict"; + + /** + * Constructor for a new sap.ui.rta.toolbar.Base control + * + * @class + * Base class for Toolbar control + * @extends sap.m.Toolbar + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.toolbar.Base + * @experimental Since 1.48. This class is experimental. The API might be changed in future. + */ + + var Base = Toolbar.extend("sap.ui.rta.toolbar.Base", { + metadata: { + library: "sap.ui.rta", + properties: { + /** Color in the toolbar */ + "color": { + type: "string", + defaultValue: "default" + }, + + /** z-index of the toolbar on the page. Please consider of using bringToFront() function */ + "zIndex": { + type: "int" + }, + + /** i18n bundle */ + "textResources": "object" + } + }, + constructor: function() { + // call parent constructor + Toolbar.apply(this, arguments); + + this.setVisible(false); + this.placeToContainer(); + this.buildContent(); + }, + + /** + * Defines type of the Toolbar. E.g. fiori, standalone, etc. + * @type {string} + */ + type: null, + + /** + * Defines whether animation is enabled. If true, the CSS class 'is_visible' will be + * added/removed during show/hide calls. + * @type {boolean} + */ + animation: false + }); + + /** + * @override + */ + Base.prototype.init = function() { + Toolbar.prototype.init.apply(this, arguments); + }; + + /** + * Event handler for onBeforeRendering + * @protected + */ + Base.prototype.onBeforeRendering = function () { + Toolbar.prototype.onBeforeRendering.apply(this, arguments); + }; + + /** + * Event handler for onAfterRendering + * @protected + */ + Base.prototype.onAfterRendering = function () { + Toolbar.prototype.onAfterRendering.apply(this, arguments); + }; + + /** + * Event handlers factory + * @param {string} sEventName - Name of the event + * @param {sap.ui.base.Event} oEvent - Event object + */ + Base.prototype.eventHandler = function (sEventName, oEvent) { + this['fire' + sEventName](oEvent.getParameters()); + }; + + /** + * Function provides controls which should be rendered into the Toolbar. Controls are going to be rendered + * in the same order as provided in returned array. + * @return {Array.} - returns an array of controls + * @protected + */ + Base.prototype.buildControls = function () { + return []; + }; + + /** + * Function renders the Toolbar into the page + * @protected + */ + Base.prototype.placeToContainer = function () { + // Render toolbar + this.placeAt(jQuery('#sap-ui-static').get(0)); + }; + + /** + * Adds content into the Toolbar + * @protected + */ + Base.prototype.buildContent = function () { + this.buildControls().forEach(this.addContent, this); + }; + + /** + * Makes the Toolbar visible + * @return {Promise} - returns Promise which resolves after animation has been completed + * @public + */ + Base.prototype.show = function() { + // 1) create Promise and wait until DomRef is available + return new Promise(function (fnResolve) { + var oDelegate = { + onAfterRendering: function () { + this.removeEventDelegate(oDelegate); + fnResolve(); + } + }; + this.addEventDelegate(oDelegate, this); + this.bringToFront(); + this.setVisible(true); // show DomRef + }.bind(this)) + // 2) animate DomRef + .then(function () { + return this.animation + ? Animation.waitTransition(this.$(), this.addStyleClass.bind(this, 'is_visible')) + : Promise.resolve(); + }.bind(this)) + // 3) focus on Toolbar + .then(function () { + this.focus(); + }.bind(this)); + }; + + /** + * Makes the Toolbar invisible + * @return {Promise} - returns Promise which resolves after animation has been completed + * @public + */ + Base.prototype.hide = function() { + // 1) animate DomRef + return ( + this.animation + ? Animation.waitTransition(this.$(), this.removeStyleClass.bind(this, 'is_visible')) + : Promise.resolve() + ) + // 2) hide DomRef + .then(function () { + this.setVisible(false); + }.bind(this)); + }; + + /** + * Getter for inner controls + * @param {string} sName - Name of the control + * @return {sap.ui.core.Control|undefined} - returns control or undefined if there is no control with provided name + * @public + */ + Base.prototype.getControl = function(sName) { + return this + .getAggregation('content') + .filter(function (oControl) { + return oControl.data('name') === sName; + }) + .pop(); + }; + + /** + * Place the Toolbar above everything on the page + * @public + */ + Base.prototype.bringToFront = function () { + var iNextZIndex; + var oBusyIndicatorPopup = BusyIndicator.oPopup; + + if (oBusyIndicatorPopup && oBusyIndicatorPopup.isOpen() && oBusyIndicatorPopup.getModal()) { + // '-3' because overlay is on the '-2' level, see implementation of the sap.ui.core.Popup + iNextZIndex = oBusyIndicatorPopup._iZIndex - 3; + } else { + iNextZIndex = Popup.getNextZIndex(); + } + + return this.setZIndex(iNextZIndex); + }; + + /** + * Backwards compatibility + */ + Base.prototype.setUndoRedoEnabled = function () {}; + Base.prototype.setPublishEnabled = function () {}; + Base.prototype.setRestoreEnabled = function () {}; + + return Base; + +}, true); diff --git a/resources/sap/ui/rta/toolbar/BaseRenderer.js b/resources/sap/ui/rta/toolbar/BaseRenderer.js new file mode 100644 index 0000000..0ebc343 --- /dev/null +++ b/resources/sap/ui/rta/toolbar/BaseRenderer.js @@ -0,0 +1,37 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'sap/ui/core/Renderer', + 'sap/m/ToolbarRenderer' +], +function( + Renderer, + ToolbarRenderer +) { + "use strict"; + + var BaseRenderer = Renderer.extend('sap.ui.rta.toolbar.BaseRenderer', ToolbarRenderer); + + BaseRenderer.decorateRootElement = function (oRM, oControl) { + // base CSS classes + oRM.addClass('sapUiRtaToolbar'); + oRM.addClass('sapContrastPlus'); // for 'sap_belize_plus' theme + oRM.addClass("color_" + oControl.getColor()); + + // setting type if exists + oControl.type && oRM.addClass("type_" + oControl.type); + + // setting z-index if exists + var iZIndex = oControl.getZIndex(); + iZIndex && oRM.addStyle("z-index", iZIndex); + + ToolbarRenderer.decorateRootElement(oRM, oControl); + }; + + + return BaseRenderer; +}); diff --git a/resources/sap/ui/rta/toolbar/Fiori.js b/resources/sap/ui/rta/toolbar/Fiori.js new file mode 100644 index 0000000..7c976f7 --- /dev/null +++ b/resources/sap/ui/rta/toolbar/Fiori.js @@ -0,0 +1,84 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'sap/m/Image', + './Adaptation', + '../Utils' +], +function( + Image, + Adaptation, + Utils +) { + "use strict"; + + /** + * This class is being assigned to the original Fiori Header Toolbar when RTA Toolbar shows + * @type {string} + */ + var FIORI_HIDDEN_CLASS = 'sapUiRtaFioriHeaderInvisible'; + + /** + * Constructor for a new sap.ui.rta.toolbar.Fiori control + * + * @class + * Contains implementation of Fiori specific toolbar + * @extends sap.ui.rta.toolbar.Adaptation + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.toolbar.Fiori + * @experimental Since 1.48. This class is experimental. API might be changed in future. + */ + var Fiori = Adaptation.extend("sap.ui.rta.toolbar.Fiori", { + renderer: 'sap.ui.rta.toolbar.BaseRenderer', + type: 'fiori' + }); + + Fiori.prototype.init = function () { + Adaptation.prototype.init.apply(this, arguments); + + this._oRenderer = Utils.getFiori2Renderer(); + this._oFioriHeader = this._oRenderer.getRootControl().getOUnifiedShell().getHeader(); + }; + + Fiori.prototype.show = function () { + this._oFioriHeader.addStyleClass(FIORI_HIDDEN_CLASS); + + return Adaptation.prototype.show.apply(this, arguments); + }; + + Fiori.prototype.buildControls = function () { + var aControls = Adaptation.prototype.buildControls.apply(this, arguments); + var sLogoPath = this._oFioriHeader.getLogo(); + + if (this._oFioriHeader.getShowLogo() && sLogoPath) { + aControls.unshift( + new Image({ + src: sLogoPath + }).data('name', 'logo') + ); + } + + return aControls; + }; + + Fiori.prototype.hide = function () { + return Adaptation.prototype + .hide.apply(this, arguments) + .then(function () { + this._oFioriHeader.removeStyleClass(FIORI_HIDDEN_CLASS); + }.bind(this)); + }; + + return Fiori; + +}, true); diff --git a/resources/sap/ui/rta/toolbar/Personalization.js b/resources/sap/ui/rta/toolbar/Personalization.js new file mode 100644 index 0000000..4e283a5 --- /dev/null +++ b/resources/sap/ui/rta/toolbar/Personalization.js @@ -0,0 +1,80 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + './Base', + 'sap/m/ToolbarSpacer' +], +function( + Base, + ToolbarSpacer +) { + "use strict"; + + /** + * Constructor for a new sap.ui.rta.toolbar.Personalization control + * + * @class + * Contains implementation of personalization specific toolbar + * @extends sap.ui.rta.toolbar.Base + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.toolbar.Personalization + * @experimental Since 1.48. This class is experimental. API might be changed in future. + */ + var Personalization = Base.extend("sap.ui.rta.toolbar.Personalization", { + renderer: 'sap.ui.rta.toolbar.BaseRenderer', + type: 'personalization', + metadata: { + events: { + /** + * Events are fired when the Toolbar - Buttons are pressed + */ + "exit": {}, + "restore": {} + } + } + }); + + Personalization.prototype.buildControls = function() { + var aControls = [ + new ToolbarSpacer(), + new sap.m.Button({ + type: "Transparent", + text: this.getTextResources().getText("BTN_RESTORE"), + tooltip: this.getTextResources().getText("BTN_RESTORE"), + visible: true, + press: this.eventHandler.bind(this, 'Restore') + }).data('name', 'restore'), + new sap.m.Button({ + type:"Emphasized", + text: this.getTextResources().getText("BTN_DONE"), + tooltip: this.getTextResources().getText("BTN_DONE_TOOLTIP"), + press: this.eventHandler.bind(this, 'Exit') + }).data('name', 'exit') + ]; + + return aControls; + }; + + Personalization.prototype.setUndoRedoEnabled = function() { + }; + + Personalization.prototype.setPublishEnabled = function() { + }; + + Personalization.prototype.setRestoreEnabled = function (bEnabled) { + this.getControl('restore').setEnabled(bEnabled); + }; + + return Personalization; + +}, true); diff --git a/resources/sap/ui/rta/toolbar/Standalone.js b/resources/sap/ui/rta/toolbar/Standalone.js new file mode 100644 index 0000000..8b86375 --- /dev/null +++ b/resources/sap/ui/rta/toolbar/Standalone.js @@ -0,0 +1,38 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + './Adaptation' +], +function( + Adaptation +) { + "use strict"; + + /** + * Constructor for a new sap.ui.rta.toolbar.Standalone control + * + * @class + * Contains implementation of Standalone toolbar + * @extends sap.ui.rta.toolbar.Adaptation + * + * @author SAP SE + * @version 1.50.0 + * + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.toolbar.Standalone + * @experimental Since 1.48. This class is experimental. API might be changed in future. + */ + var Standalone = Adaptation.extend("sap.ui.rta.toolbar.Standalone", { + renderer: 'sap.ui.rta.toolbar.BaseRenderer', + type: 'standalone' + }); + + return Standalone; + +}, true); diff --git a/resources/sap/ui/rta/ui/SettingsDialog.js b/resources/sap/ui/rta/ui/SettingsDialog.js new file mode 100644 index 0000000..77703c6 --- /dev/null +++ b/resources/sap/ui/rta/ui/SettingsDialog.js @@ -0,0 +1,283 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', + 'sap/ui/rta/library', + 'sap/ui/core/Control', + 'sap/m/Dialog', + 'sap/ui/layout/VerticalLayout', + 'sap/m/Label', + 'sap/m/Input', + 'sap/m/Select', + 'sap/ui/core/Item', + 'sap/m/Button', + 'sap/m/CheckBox', + 'sap/ui/rta/command/CommandFactory', + 'sap/ui/rta/command/CompositeCommand', + 'sap/ui/dt/ElementUtil' + ], + function (jQuery, + library, + Control, + Dialog, + VerticalLayout, + Label, + Input, + Select, + Item, + Button, + CheckBox, + CommandFactory, + CompositeCommand, + ElementUtil + ) { + "use strict"; + + /** + * Constructor for a new sap.ui.rta.SettingsDialog control. + * @extends sap.ui.core.Control + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.34 + * @alias SettingsDialog + * @experimental Since 1.34. This class is experimental and provides only limited functionality. Also the API might + * be changed in future. + */ + var SettingsDialog = Control.extend("sap.ui.rta.ui.SettingsDialog", { + metadata : { + library : "sap.ui.rta", + properties : { + "commandStack" : { + type : "sap.ui.core.Control" + } + }, + associations : { + "element" : { + type : "sap.ui.core.Element" + } + } + } + }); + + /** + * Initialize the Dialog + * + * @private + */ + SettingsDialog.prototype.init = function() { + this._oTextResources = sap.ui.getCore().getLibraryResourceBundle("sap.ui.rta"); + this._oDialog = this._createDialog(); + }; + + /** + * Create the Dialog + * + * @private + */ + SettingsDialog.prototype._createDialog = function() { + return new Dialog({ + title : this._oTextResources.getText("HEADER_SETTINGS"), + contentHeight : "500px", + draggable: true, + buttons : [ + new Button({ + text : this._oTextResources.getText("BTN_FREP_OK"), + press : [this._applyChangesAndClose, this] + }), + new Button({ + text : this._oTextResources.getText("BTN_FREP_CANCEL"), + press : [this._cancelDialog, this] + }) + ] + }).addStyleClass("sapUiPopupWithPadding").addStyleClass("sapUiSizeCompact"); + }; + + /** + * @private + */ + SettingsDialog.prototype._applyChangesAndClose = function() { + this._applyChanges(); + this._oDialog.close(); + }; + + /** + * @private + */ + SettingsDialog.prototype._iterateExecutedCommands = function(fnCallback) { + Object.keys(this._mCommands).forEach(function(sPropertyName) { + fnCallback(this._mCommands[sPropertyName]); + }, this); + }; + + /** + * @private + */ + SettingsDialog.prototype._applyChanges = function() { + var oCompositeCommand = new CompositeCommand(); + this._iterateExecutedCommands(function(oCommand) { + oCompositeCommand.addCommand(oCommand); + }); + if (oCompositeCommand.getCommands().length) { + this.getCommandStack().pushExecutedCommand(oCompositeCommand); + } + }; + + /** + * @private + */ + SettingsDialog.prototype._cancelDialog = function() { + this._iterateExecutedCommands(function(oCommand) { + oCommand.undo(); + }); + + this._oDialog.close(); + }; + + /** + * @private + */ + SettingsDialog.prototype._executePropertyChangeCommand = function(oElement, sPropertyName, vNewValue, vOldValue) { + if (!this._mCommands[sPropertyName]) { + var oPropertyChangeCommand = CommandFactory.getCommandFor(oElement, "property", { + propertyName : sPropertyName, + newValue : vNewValue, + oldValue : vOldValue + }); + this._mCommands[sPropertyName] = oPropertyChangeCommand; + oPropertyChangeCommand.execute(); + } else { + this._mCommands[sPropertyName].undo(); + delete this._mCommands[sPropertyName]; + } + }; + + /** + * @private + */ + SettingsDialog.prototype._createBooleanEditor = function(oElement, sPropertyName, bPropertyValue) { + var oCheckBox = new CheckBox({ + text : sPropertyName, + selected : bPropertyValue + }); + + oCheckBox.attachSelect(function(oEvent) { + var bNewValue = oEvent.getParameter("selected"); + var bOldValue = !bNewValue; + this._executePropertyChangeCommand(oElement, sPropertyName, bNewValue, bOldValue); + }, this); + + return oCheckBox; + }; + + /** + * @private + */ + SettingsDialog.prototype._createStringEditor = function(oElement, sPropertyName, sPropertyValue) { + var oInput = new Input({value : sPropertyValue}); + + oInput.attachChange(function(oEvent) { + var sNewValue = oEvent.getParameter("value"); + // TODO : get old value via elementUtil + var sOldValue = sPropertyValue; + this._executePropertyChangeCommand(oElement, sPropertyName, sNewValue, sOldValue); + }, this); + + return oInput; + }; + + /** + * @private + */ + SettingsDialog.prototype._createEnumEditor = function(oElement, oPropertyTypeDescription, sPropertyName, vPropertyValue) { + var oSelect = new Select(); + Object.keys(oPropertyTypeDescription).forEach(function(sKey) { + oSelect.addItem(new Item({ + text : sKey, + key : oPropertyTypeDescription[sKey] + })); + }); + + oSelect.setSelectedKey(vPropertyValue); + + oSelect.attachChange(function(oEvent) { + var oItem = oEvent.getParameter("selectedItem"); + if (oItem) { + var vNewValue = oItem.getKey(); + var vOldValue = vPropertyValue; + this._executePropertyChangeCommand(oElement, sPropertyName, vNewValue, vOldValue); + } + }, this); + + return oSelect; + }; + + /** + * @private + */ + SettingsDialog.prototype._updateDialogContent = function(oElement) { + this._oDialog.removeAllContent(); + var oVerticalLayout = new VerticalLayout(); + var mProperties = oElement.getMetadata().getAllProperties(); + Object.keys(mProperties).forEach(function(sPropertyName) { + var oPropertyChangeControl; + var oPropertyMetadata = mProperties[sPropertyName]; + // TODO : elementUtil for properties getters + var vPropertyValue = oElement[oPropertyMetadata._sGetter](); + + if (oPropertyMetadata.type === "boolean") { + oPropertyChangeControl = this._createBooleanEditor(oElement, sPropertyName, vPropertyValue); + oVerticalLayout.addContent(oPropertyChangeControl); + } else if (oPropertyMetadata.type === "string" || oPropertyMetadata.type === "sap.ui.core.CSSSize") { + oPropertyChangeControl = new VerticalLayout(); + var oInput = this._createStringEditor(oElement, sPropertyName, vPropertyValue); + + oPropertyChangeControl.addContent(new Label({ + text : sPropertyName, + labelFor : oInput.getId() + })); + oPropertyChangeControl.addContent(oInput); + oPropertyChangeControl.addStyleClass("sapUiRtaDialogEntryWithMargin"); + } else { + var oPropertyTypeDescription = jQuery.sap.getObject(oPropertyMetadata.type); + if (oPropertyTypeDescription) { + oPropertyChangeControl = new VerticalLayout(); + var oDropdown = this._createEnumEditor(oElement, oPropertyTypeDescription, sPropertyName, vPropertyValue); + + oPropertyChangeControl.addContent(new Label({ + text : sPropertyName, + labelFor : oDropdown.getId() + })); + oPropertyChangeControl.addContent(oDropdown); + oPropertyChangeControl.addStyleClass("sapUiRtaDialogEntryWithMargin"); + } + } + + if (oPropertyChangeControl) { + oVerticalLayout.addContent(oPropertyChangeControl); + } + }, this); + this._oDialog.addContent(oVerticalLayout); + }; + + /** + * Open the Settings Dialog + * + * @param {sap.ui.core.Element} + * oElement Currently selected control + */ + SettingsDialog.prototype.open = function(oElement) { + this._mCommands = {}; + + this._updateDialogContent(oElement); + + // Makes sure the modal div element does not change the size of our application (which would result in recalculation of our overlays) + this._oDialog.open(); + }; + + return SettingsDialog; + +}, /* bExport= */ true); diff --git a/resources/sap/ui/rta/util/Animation.js b/resources/sap/ui/rta/util/Animation.js new file mode 100644 index 0000000..7769d25 --- /dev/null +++ b/resources/sap/ui/rta/util/Animation.js @@ -0,0 +1,49 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'jquery.sap.global' +], +function(jQuery) { + "use strict"; + + var module = {}; + + /** + * CSS Transition helper + * @param {jQuery} $element - jQuery element(s) + * @param {Function} fnCallback - The function should start animation process (e.g. by adding class to the element) + * @return {Promise} + */ + module.waitTransition = function ($element, fnCallback) { + if (!($element instanceof jQuery)) { + throw new Error('$element should be wrapped into jQuery object'); + } + if (!jQuery.isFunction(fnCallback)) { + throw new Error('fnCallback should be a function'); + } + + return new Promise(function (fnResolve) { + $element.one('transitionend', fnResolve); + + // perform animation in the next animation frame, normally 16-17ms later. + var iTimestampInitial; + var fnAnimCallback = function (iTimestamp) { + if (!iTimestampInitial) { + iTimestampInitial = iTimestamp; + } + if (iTimestamp !== iTimestampInitial) { + fnCallback(); + } else { + window.requestAnimationFrame(fnAnimCallback); + } + }; + window.requestAnimationFrame(fnAnimCallback); + }); + }; + + return module; +}, true); diff --git a/resources/sap/ui/rta/util/BindingsExtractor.js b/resources/sap/ui/rta/util/BindingsExtractor.js new file mode 100644 index 0000000..098ab39 --- /dev/null +++ b/resources/sap/ui/rta/util/BindingsExtractor.js @@ -0,0 +1,117 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'sap/ui/dt/ElementUtil', + 'sap/ui/rta/Utils' +], +function( + ElementUtil, + RtaUtils +) { + "use strict"; + + /** + * Gets bindings for the whole hierarchy of children for a specified Element + * and filters out bindings which are not relevant (based on the parent model) + * + * @param {sap.ui.core.Control} oElement - Starting point of the search + * @param {sap.ui.model.Model} oParentDefaultModel - Model for filtering irrelevant binding paths + * + * @returns {Array} - returns array with all relevant bindings for all properties of the element + * + * @private + */ + function getBindings(oElement, oParentDefaultModel) { + var aBindings = []; + + // Iterate through all aggregations + for (var sAggregationName in oElement.getMetadata().getAllAggregations()) { + // Getting children of the current aggregation and iterating through all of them + ElementUtil.getAggregation(oElement, sAggregationName).forEach(function (oChildElement) { // eslint-disable-line no-loop-func + if (oChildElement.getMetadata) { + // Fetching bindings from Element and all children of Element + aBindings = aBindings.concat( + getBindingsFromProperties(oChildElement, oParentDefaultModel), + getBindings(oChildElement, oParentDefaultModel) + ); + } + }); + } + + return aBindings; + } + + /** + * Fetches all bindings for a specified binding model + * + * @param {sap.ui.model.PropertyBinding} oBinding - Binding model to get paths from + * @param {sap.ui.model.odata.XX.ODataModel} oParentDefaultModel - Data model (XX = '', v2, v4...) + * + * @returns {Array} - Returns a flattened array of found bindings + * + * @private + */ + function flattenBindings(oBinding, oParentDefaultModel) { + var aBindings = []; + var sModelName = oBinding.getMetadata().getName(); + + if (sModelName === "sap.ui.model.CompositeBinding") { + oBinding.getBindings().forEach(function (oBinding) { + aBindings = aBindings.concat(flattenBindings(oBinding, oParentDefaultModel)); + }); + } else if ( + ( + sModelName === "sap.ui.model.odata.ODataPropertyBinding" + || sModelName === "sap.ui.model.odata.v2.ODataPropertyBinding" + || sModelName === "sap.ui.model.odata.v4.ODataPropertyBinding" + || sModelName === "sap.ui.model.json.JSONPropertyBinding" + || sModelName === "sap.ui.model.json.XMLPropertyBinding" + || sModelName === "sap.ui.model.resource.ResourcePropertyBinding" + ) + && oBinding.getModel() === oParentDefaultModel + && oBinding.isRelative() + && jQuery.isFunction(oBinding.getPath) + && oBinding.getPath() + ) { + aBindings.push(oBinding); + } + + return aBindings; + } + + /** + * Retrieving all bindings from all available properties for a specified element + * + * @param {sap.ui.core.Control} oChildElement - element to get bindings from + * @param {sap.ui.model.Model} oParentDefaultModel - parent model to filter irrelevant bindings + * + * @return {Array} - returns found bindings + * + * @private + */ + function getBindingsFromProperties(oChildElement, oParentDefaultModel) { + var aPropertiesKeys = Object.keys(oChildElement.getMetadata().getAllProperties()); + + return aPropertiesKeys + // filter properties which are not bound + .filter(oChildElement.getBinding.bind(oChildElement)) + .reduce(function (aBindings, sPropertyName) { + return aBindings.concat( + flattenBindings( + oChildElement.getBinding(sPropertyName), + oParentDefaultModel + ) + ); + }, []); + } + + return { + getBindings: getBindings, + flattenBindings : flattenBindings, + getBindingsFromProperties: getBindingsFromProperties + }; +}, true); diff --git a/resources/sap/ui/rta/util/PopupManager.js b/resources/sap/ui/rta/util/PopupManager.js new file mode 100644 index 0000000..b8a1de6 --- /dev/null +++ b/resources/sap/ui/rta/util/PopupManager.js @@ -0,0 +1,489 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', + 'sap/ui/base/ManagedObject', + 'sap/m/Dialog', + 'sap/m/Popover', + 'sap/m/InstanceManager', + 'sap/ui/core/Popup', + 'sap/ui/dt/OverlayRegistry', + 'sap/ui/dt/Overlay', + 'sap/ui/fl/Utils', + 'sap/ui/core/Component' + ], + function (jQuery, + ManagedObject, + Dialog, + Popover, + InstanceManager, + Popup, + OverlayRegistry, + Overlay, + flUtils, + Component + ) { + "use strict"; + + var FOCUS_EVENT_NAMES = { + "add": "_addFocusEventListeners", + "remove": "_removeFocusEventListeners" + }; + + /** + * Constructor for a new sap.ui.rta.util.PopupManager + * @extends sap.ui.base.ManagedObject + * @author SAP SE + * @version 1.50.0 + * @constructor + * @private + * @since 1.48 + * @alias sap.ui.rta.util.PopupManager + * @experimental Since 1.48. This class is experimental and provides only limited functionality. Also the API might + * be changed in future. + */ + var PopupManager = ManagedObject.extend("sap.ui.rta.util.PopupManager", { + metadata : { + properties : { + rta: "any" + }, + events : { + open: { + parameters : { + oControl : {type : "sap.ui.core.Control"} + } + }, + close: { + parameters : { + oControl : {type : "sap.ui.core.Control"} + } + } + }, + library : "sap.ui.rta" + } + }); + + /** + * Checks if popups are open on the screen + * Overrides the AddDialogInstance/AddPopoverInstance and RemoveDialogInstance/RemovePopoverInstance methods for Instance Manager + * for dynamic overlay creation of popups. + * + * @private + */ + PopupManager.prototype._overrideInstanceFunctions = function() { + + //check open popups and create overlays while starting RTA + this._applyPopupMethods(this._createPopupOverlays); + + //override InstanceManager.AddDialogInstance() and InstanceManager.AddPopoverInstance() + this._overrideAddPopupInstance(); + + //override InstanceManager.RemoveDialogInstance() and InstanceManager.RemovePopoverInstance() + this._overrideRemovePopupInstance(); + }; + + /** + * Retrieve relevant open popups for dynamic overlay creation. + * + * @returns {Object} relevant open popups + * @public + */ + PopupManager.prototype.getRelevantPopups = function() { + var aOpenDialogs, aOpenPopovers; + + //check if dialogs are already open when RTA is started + aOpenDialogs = InstanceManager.getOpenDialogs(); + + //check if popovers are already open when RTA is started + aOpenPopovers = InstanceManager.getOpenPopovers(); + + var oRelevantPopups = { + aDialogs: this._getValidatedPopups(aOpenDialogs), + aPopovers: this._getValidatedPopups(aOpenPopovers) + }; + return oRelevantPopups; + }; + + /** + * Retrieve array of validated popups after component comparision - this.oRtaRootAppComponent.oContainer.getParent() + * + * @param {array} specifying open popups + * @returns {array|boolean} relevant popups or false + * @private + */ + PopupManager.prototype._getValidatedPopups = function(aOpenPopups) { + aOpenPopups.forEach(function(oPopup, iIndex) { + if ( + !this._isSupportedPopup(oPopup) + || ( + this.oRtaRootAppComponent !== this._getAppComponentForControl(oPopup) + && !this._isComponentInsidePopup(oPopup) + ) + ) { + aOpenPopups.splice(iIndex, 1); + } + }.bind(this)); + + return (aOpenPopups.length > 0) ? aOpenPopups : false; + }; + + /** + * Check if app component is inside a popup + * + * @param {sap.ui.core.Control} oPopup popup element + * @returns {boolean} indicating if component is inside a popup + * @private + */ + PopupManager.prototype._isComponentInsidePopup = function(oPopup) { + //check if root RTA component is directly inside a popupElement + return oPopup.getContent().some( + function(oContent) { + if (oContent instanceof sap.ui.core.ComponentContainer) { + return this.oRtaRootAppComponent === this._getAppComponentForControl(sap.ui.getCore().getComponent(oContent.getComponent())); + } + }.bind(this)); + }; + + /** + * Check if the passed control is a supported popup + * + * @param {sap.ui.core.Control} oPopup popup element + * @returns {boolean} indicating if this type of popup element is supported + * @private + */ + PopupManager.prototype._isSupportedPopup = function(oPopup) { + return (oPopup instanceof sap.m.Dialog || oPopup instanceof sap.m.Popover); + }; + + /** + * Overrides the setter function of property rta for dynamic overlay creation + * + * @param {sap.ui.rta.RuntimeAuthoring} oRta RuntimeAuthoring object + * @public + */ + PopupManager.prototype.setRta = function(oRta) { + if (oRta && oRta._oDesignTime) { + this.setProperty("rta", oRta); + var oRootControl = sap.ui.getCore().byId(oRta.getRootControl()); + this.oRtaRootAppComponent = this._getAppComponentForControl(oRootControl); + this._overrideInstanceFunctions(); + + //listener for RTA mode change + var fnModeChange = this._onModeChange.bind(this); + oRta.attachModeChanged(fnModeChange); + } + }; + + /** + * Attached to RTA mode change + * + * @private + */ + PopupManager.prototype._onModeChange = function(oEvent) { + var sFocusEvent, sNewMode = oEvent.getParameters().mode; + + var fnApplyFocusEvent = function (oPopover) { + oPopover.oPopup[sFocusEvent](); + }; + + if (sNewMode === 'navigation') { + sFocusEvent = this._getFocusEventName("add"); + this._applyFocusEventsToOpenPopups(fnApplyFocusEvent); + } else { + sFocusEvent = this._getFocusEventName("remove"); + this._removeFocusEventsFromOpenPopups(fnApplyFocusEvent); + } + }; + + /** + * Apply focus events to all open popups and give focus to the first + * + * @private + */ + PopupManager.prototype._applyFocusEventsToOpenPopups = function(fnFocusEvent) { + this._applyPopupMethods(fnFocusEvent, true); + }; + + /** + * Remove focus events from all open popups + * + * @private + */ + PopupManager.prototype._removeFocusEventsFromOpenPopups = function(fnFocusEvent) { + this._applyPopupMethods(fnFocusEvent); + }; + + /** + * Return the popup focus event name + * + * @param {string} operation name + * @returns {string} focus event name + * @private + */ + PopupManager.prototype._getFocusEventName = function(sOperation) { + return FOCUS_EVENT_NAMES[sOperation]; + }; + + /** + * Overrides the AddDialogInstance/AddPopoverInstance for Instance Manager for dynamic overlay creation + * + * @private + */ + PopupManager.prototype._overrideAddPopupInstance = function() { + + //Dialog + this._fnOriginalAddDialogInstance = InstanceManager.addDialogInstance; + InstanceManager.addDialogInstance = this._overrideAddFunctions(this._fnOriginalAddDialogInstance); + + //Popover + this._fnOriginalAddPopoverInstance = InstanceManager.addPopoverInstance; + InstanceManager.addPopoverInstance = this._overrideAddFunctions(this._fnOriginalAddPopoverInstance); + }; + + /** + * Returns overridden function for AddDialogInstance/AddPopoverInstance of Instance Manager + * + * @param {function} fnOriginalFunction original InstanceManager function + * @returns {function} overridden function + * @private + */ + PopupManager.prototype._overrideAddFunctions = function(fnOriginalFunction) { + return function(oPopupElement) { + var vOriginalReturn = fnOriginalFunction.apply(InstanceManager, arguments); + if ( + this.getRta()._oDesignTime + && this.oRtaRootAppComponent === this._getAppComponentForControl(oPopupElement) + && this._isSupportedPopup(oPopupElement) + ) { + oPopupElement.attachAfterOpen(this._createPopupOverlays, this); + //PopupManager internal method + this.fireOpen(oPopupElement); + } + return vOriginalReturn; + }.bind(this); + }; + + /** + * Applies the passed function to the relevant open popups + * + * @param {function} fnPopupMethod specifies function to be applied + * @private + */ + PopupManager.prototype._applyPopupMethods = function(fnPopupMethod, bFocus) { + //check if popups are open + var oRelevantPopups = this.getRelevantPopups(); + + //apply passed method to each open popup + Object.keys(oRelevantPopups).forEach(function(sKey) { + if (oRelevantPopups[sKey]) { + if (bFocus) { + jQuery.sap.focus(oRelevantPopups[sKey][0].oPopup.oContent); + } + oRelevantPopups[sKey].forEach(function(oPopupElement) { + fnPopupMethod.call(this, oPopupElement); + }.bind(this)); + } + }.bind(this)); + }; + + /** + * Modifies browser events for passed popup element + * + * @param {sap.ui.core.Control} oPopupElement popup element for which browser events have to be modified + * @private + */ + PopupManager.prototype._applyPopupPatch = function(oPopupElement) { + var oPopupOverlay = OverlayRegistry.getOverlay(oPopupElement); + var oOverlayContainer = Overlay.getOverlayContainer(oPopupOverlay); + var oPopup = oPopupElement.oPopup; + + //If clicked from toolbar or popup - autoClose is disabled + oPopup.setAutoCloseAreas([ + this.getRta()._oToolsMenu.getDomRef(), + oPopup.oContent.getDomRef(), + oOverlayContainer + ]); + + //cases when onAfterRendering is called after this function - app inside popup + if (!this.fnOriginalPopupOnAfterRendering) { + this.fnOriginalPopupOnAfterRendering = oPopup.onAfterRendering; + } + oPopup.onAfterRendering = function () { + var vOriginalReturn = this.fnOriginalPopupOnAfterRendering.apply(oPopup, arguments); + oPopup[this._getFocusEventName("remove")](); + return vOriginalReturn; + }.bind(this); + + //only remove focus event when in adaptation mode + if (this.getRta().getMode() === 'adaptation') { + oPopup[this._getFocusEventName("remove")](); + } + }; + + /** + * Overrides the RemoveDialogInstance/RemovePopoverInstance methods for Instance Manager for dynamic overlay creation + * + * @private + */ + PopupManager.prototype._overrideRemovePopupInstance = function() { + + //Dialog + this._fnOriginalRemoveDialogInstance = InstanceManager.removeDialogInstance; + InstanceManager.removeDialogInstance = this._overrideRemoveFunctions(this._fnOriginalRemoveDialogInstance); + + //Popover + this._fnOriginalRemovePopoverInstance = InstanceManager.removePopoverInstance; + InstanceManager.removePopoverInstance = this._overrideRemoveFunctions(this._fnOriginalRemovePopoverInstance); + }; + + /** + * Returns overridden function for RemoveDialogInstance/RemovePopoverInstance of Instance Manager + * + * @param {function} fnOriginalFunction original InstanceManager function + * @returns {function} overridden function + * @private + */ + PopupManager.prototype._overrideRemoveFunctions = function(fnOriginalFunction) { + return function(oPopupElement) { + var vOriginalReturn = fnOriginalFunction.apply(InstanceManager, arguments); + + if ( + this.getRta()._oDesignTime + && this.oRtaRootAppComponent === this._getAppComponentForControl(oPopupElement) + && this._isSupportedPopup(oPopupElement) + ) { + this.getRta()._oDesignTime.removeRootElement(oPopupElement); + //PopupManager internal method + this.fireClose(oPopupElement); + } + return vOriginalReturn; + }.bind(this); + }; + + /** + * Returns the app component of the passed control is exists + * + * @param {sap.ui.core.Control} oControl Control object + * @returns {object|undefined} component object if exists + * @private + */ + PopupManager.prototype._getAppComponentForControl = function(oControl) { + var oComponent, oAppComponent; + + if (oControl instanceof sap.ui.core.Component) { + oComponent = oControl; + } else { + oComponent = this._getComponentForControl(oControl); + } + + if (oComponent) { + oAppComponent = flUtils.getAppComponentForControl(oComponent); + } + return oAppComponent; + }; + + /** + * Returns the component of the passed control, navigating through control tree, except if parent is sap.ui.core.UIArea + * + * @param {sap.ui.core.Control} oControl Control object + * @returns {object|undefined} component object if exists + * @private + */ + PopupManager.prototype._getComponentForControl = function(oControl) { + var oComponent; + + if (oControl) { + oComponent = Component.getOwnerComponentFor(oControl); + + if ( + !oComponent + && typeof oControl.getParent === "function" + && !(oControl.getParent() instanceof sap.ui.core.UIArea) + ) { + oControl = oControl.getParent(); + oComponent = this._getComponentForControl(oControl); + } + } + + return oComponent; + }; + + /** + * Create popup overlays + * + * @param {object} oEvent Browser Event or sap.ui.core.Control object + * @private + */ + PopupManager.prototype._createPopupOverlays = function(oEvent) { + if (!oEvent) { + return; + } + var oPopupElement = (oEvent instanceof sap.ui.core.Control) ? oEvent : oEvent.getSource(); + + //when application is opened in a popup, rootElement should not be added more than once + if ( + this.getRta()._oDesignTime.getRootElements().indexOf(oPopupElement.getId()) === -1 + && !this._isComponentInsidePopup(oPopupElement) + ) { + this.getRta()._oDesignTime.addRootElement(oPopupElement); + } + + //detach for persistent popups with same id + oPopupElement.detachAfterOpen(this._createPopupOverlays, this); + + this._applyPopupPatch(oPopupElement); + }; + + /** + * Restores the Instance Manager AddDialogInstance/AddPopoverInstance, RemoveDialogInstance/RemovePopoverInstance methods and default blur event for popups + * + * @private + */ + PopupManager.prototype._restoreInstanceFunctions = function() { + //Dialog + if (this._fnOriginalAddDialogInstance) { + InstanceManager.addDialogInstance = this._fnOriginalAddDialogInstance; + } + if (this._fnOriginalRemoveDialogInstance) { + InstanceManager.removeDialogInstance = this._fnOriginalRemoveDialogInstance; + } + + //Popover + if (this._fnOriginalAddPopoverInstance) { + InstanceManager.addPopoverInstance = this._fnOriginalAddPopoverInstance; + } + if (this._fnOriginalRemovePopoverInstance) { + InstanceManager.removePopoverInstance = this._fnOriginalRemovePopoverInstance; + } + + this._applyPopupMethods(this._removePopupPatch); + }; + + /** + * Restore default popup settings and give focus + * @param {sap.ui.core.Control} oControl popup element to remove custom and add default browser events + * + * @private + */ + PopupManager.prototype._removePopupPatch = function(oPopupElement) { + var oPopup = oPopupElement.oPopup; + oPopup[this._getFocusEventName("add")](); + if (this.fnOriginalPopupOnAfterRendering) { + oPopup.onAfterRendering = this.fnOriginalPopupOnAfterRendering; + } + }; + + /** + * Called after PopupManager instance is destroyed. + * + * @public + */ + PopupManager.prototype.exit = function() { + this._restoreInstanceFunctions(); + }; + + return PopupManager; + + }, /* bExport= */ true); diff --git a/resources/sap/ui/rta/util/StylesLoader.js b/resources/sap/ui/rta/util/StylesLoader.js new file mode 100644 index 0000000..59070c2 --- /dev/null +++ b/resources/sap/ui/rta/util/StylesLoader.js @@ -0,0 +1,32 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ + 'jquery.sap.global' + ], + function(jQuery) { + "use strict"; + + var module = {}; + + /** + * Loads styles from the specified file + * @param sFileName - Name of the file + * @return {jqXHR} - returns jqXHR object which can be thenable + */ + module.loadStyles = function (sFileName) { + return jQuery.get(jQuery.sap.getModulePath('sap.ui.rta.themes.base.' + sFileName) + '.css') + .then(function (sData) { + // TODO: check if it's possible to use UI5 standard mechanism for styles adjustments + if (sap.ui.getCore().getConfiguration().getRTL()) { + return sData.replace(/right/g, 'left'); + } + return sData; + }); + }; + + return module; + }, true); diff --git a/resources/sap/ui/rta/util/UrlParser.js b/resources/sap/ui/rta/util/UrlParser.js new file mode 100644 index 0000000..5308384 --- /dev/null +++ b/resources/sap/ui/rta/util/UrlParser.js @@ -0,0 +1,46 @@ +/*! + * UI development toolkit for HTML5 (OpenUI5) + * (c) Copyright 2009-2017 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define([ +], +function(jQuery) { + "use strict"; + + var module = {}; + + /** + * Get URL Param by name + * @param {string} sParamName - Parameter name + * @return {string|undefined} - Returns value of the specified param or undefined if not found + */ + module.getParam = function (sParamName) { + return module.getParams()[sParamName]; + }; + + module.getParams = function () { + return document.location.search + .replace(/^\?/, '') + .split('&') + .reduce(function (mParams, sParam) { + var aParts = sParam.split('='); //split on key/value + var sValue = aParts[1]; + + switch (sValue) { + case 'true': + sValue = true; + break; + case 'false': + sValue = false; + break; + } + + mParams[aParts[0]] = sValue; + return mParams; + }, {}); + }; + + return module; +}, true); diff --git a/resources/sap/ui/rta/view/RemoveElementDialog.fragment.xml b/resources/sap/ui/rta/view/RemoveElementDialog.fragment.xml new file mode 100644 index 0000000..a0b214c --- /dev/null +++ b/resources/sap/ui/rta/view/RemoveElementDialog.fragment.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/demokit/docuindex.json b/test-resources/sap/ui/rta/demokit/docuindex.json new file mode 100644 index 0000000..311847d --- /dev/null +++ b/test-resources/sap/ui/rta/demokit/docuindex.json @@ -0,0 +1,2 @@ +{} + diff --git a/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppAdd.html b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppAdd.html new file mode 100644 index 0000000..0e4f06b --- /dev/null +++ b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppAdd.html @@ -0,0 +1,42 @@ + + + + + + + + + + + +
+ + diff --git a/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppOP.html b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppOP.html new file mode 100644 index 0000000..def7051 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppOP.html @@ -0,0 +1,47 @@ + + + + RuntimeAdaptation Demo App - sap.ui.rta + + + + + + + + + +
+ + diff --git a/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppSfin.html b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppSfin.html new file mode 100644 index 0000000..2a625b4 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppSfin.html @@ -0,0 +1,40 @@ + + + + RuntimeAdaptation Demo App sFin- sap.ui.rta + + + + + + + + +
+ + diff --git a/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppVM.html b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppVM.html new file mode 100644 index 0000000..de70c84 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/RuntimeAdaptationDemoAppVM.html @@ -0,0 +1,52 @@ + + + + + + + RuntimeAuthoring - sap.ui.rta + + + + + + + +
+ + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/RuntimeAdaptationPerformance.html b/test-resources/sap/ui/rta/internal/RuntimeAdaptationPerformance.html new file mode 100644 index 0000000..d5d264d --- /dev/null +++ b/test-resources/sap/ui/rta/internal/RuntimeAdaptationPerformance.html @@ -0,0 +1,126 @@ + + + + + + + + + + + +
+
+ + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/RuntimeAuthoring.html b/test-resources/sap/ui/rta/internal/RuntimeAuthoring.html new file mode 100644 index 0000000..7a85190 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/RuntimeAuthoring.html @@ -0,0 +1,43 @@ + + + + + + +RuntimeAuthoring - sap.ui.rta + + + + + + + +
+ + + diff --git a/test-resources/sap/ui/rta/internal/performance_test/Component.js b/test-resources/sap/ui/rta/internal/performance_test/Component.js new file mode 100644 index 0000000..1b1cfd9 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/Component.js @@ -0,0 +1,39 @@ +sap.ui.define([ + "sap/ui/generic/app/AppComponent", + "sap/ui/fl/FakeLrepConnectorLocalStorage", + "sap/ui/rta/util/UrlParser" +], function(AppComponent, FakeLrepConnectorLocalStorage, UrlParser){ + + "use strict"; + + return AppComponent.extend("sap.ui.rta.test.performance.Component", { + + metadata: { + "manifest": "json" + }, + + init: function(){ + AppComponent.prototype.init.apply(this, arguments); + this._createFakeLrep(); + }, + + /** + * Create the FakeLrep with localStorage + * @private + */ + _createFakeLrep: function() { + if (UrlParser.getParam('sap-rta-mock-lrep')) { + var mAppManifest = this.getManifestEntry("sap.app"); + FakeLrepConnectorLocalStorage.enableFakeConnector( + null, + mAppManifest.id + '.Component', + mAppManifest.applicationVersion.version + ); + } + } + }); +}); + + + + diff --git a/test-resources/sap/ui/rta/internal/performance_test/FakeLrepConnector.json b/test-resources/sap/ui/rta/internal/performance_test/FakeLrepConnector.json new file mode 100644 index 0000000..2d751fe --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/FakeLrepConnector.json @@ -0,0 +1,8 @@ +{ + "changes": [], + "settings": { + "isKeyUser": true, + "isAtoAvailable": false, + "isProductiveSystem": false + } +} \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/WEB-INF/web.xml b/test-resources/sap/ui/rta/internal/performance_test/WEB-INF/web.xml new file mode 100644 index 0000000..3e090bc --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/WEB-INF/web.xml @@ -0,0 +1,99 @@ + + + STTA_MP + + + + + ResourceServlet + ResourceServlet + com.sap.ui5.resource.ResourceServlet + + + ResourceServlet + /resources/* + + + ResourceServlet + /test-resources/* + + + + com.sap.ui5.resource.ACCEPTED_ORIGINS + * + + + + + + com.sap.ui5.resource.DEV_MODE + true + + + + + + + CacheControlFilter + CacheControlFilter + com.sap.ui5.resource.CacheControlFilter + + + CacheControlFilter + *.html + + + CacheControlFilter + *.js + + + CacheControlFilter + *.css + + + CacheControlFilter + *.json + + + CacheControlFilter + *.xml + + + CacheControlFilter + *.gif + + + CacheControlFilter + *.png + + + CacheControlFilter + *.jpg + + + CacheControlFilter + *.properties + + + CacheControlFilter + *.tmpl + + + + + + SimpleProxyServlet + com.sap.ui5.proxy.SimpleProxyServlet + + + SimpleProxyServlet + /proxy/* + + + + + + test.html + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/annotations/annotations.xml b/test-resources/sap/ui/rta/internal/performance_test/annotations/annotations.xml new file mode 100644 index 0000000..8db87fb --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/annotations/annotations.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/controller/DetailsExtension.controller.js b/test-resources/sap/ui/rta/internal/performance_test/ext/controller/DetailsExtension.controller.js new file mode 100644 index 0000000..20965db --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/controller/DetailsExtension.controller.js @@ -0,0 +1,10 @@ +sap.ui.controller("sap.ui.rta.test.performance.ext.controller.DetailsExtension", { + onObjectPageCustomAction: function(oEvent) { + "use strict"; + sap.m.MessageBox.success("Hello from ObjectPage custom action!", {}); + }, + onMySmartTableAction: function() { + "use strict"; + sap.m.MessageBox.success("Hello from ObjectPage/SmartTable custom action!", {}); + } +}); diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/controller/ListReportExtension.controller.js b/test-resources/sap/ui/rta/internal/performance_test/ext/controller/ListReportExtension.controller.js new file mode 100644 index 0000000..b3c0833 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/controller/ListReportExtension.controller.js @@ -0,0 +1,230 @@ +sap.ui.controller("sap.ui.rta.test.performance.ext.controller.ListReportExtension", { + onInitSmartFilterBarExtension : function() { + "use strict"; + // the custom field in the filter bar might have to be + // bound to a custom data model + // if a value change in the field shall trigger a follow + // up action, this method is the place to define and + // bind an event handler to the field + }, + + onBeforeRebindTableExtension : function(oEvent) { + "use strict"; + // usually the value of the custom field should have an + // effect on the selected data in the table. So this is + // the place to add a binding parameter depending on the + // value in the custom field. + var oBindingParams = oEvent.getParameter("bindingParams"); + oBindingParams.parameters = oBindingParams.parameters || {}; + + var oSmartTable = oEvent.getSource(); + var oSmartFilterBar = this.byId(oSmartTable.getSmartFilterId()); + if (oSmartFilterBar instanceof sap.ui.comp.smartfilterbar.SmartFilterBar) { + var oCustomControl = oSmartFilterBar.getControlByKey("CustomPriceFilter"); + if (oCustomControl instanceof sap.m.ComboBox) { + var vCategory = oCustomControl.getSelectedKey(); + switch (vCategory) { + case "0" : + oBindingParams.filters.push(new sap.ui.model.Filter('Price', 'LE', "100")); + break; + case "1" : + oBindingParams.filters.push(new sap.ui.model.Filter('Price', 'BT', "100", "500")); + break; + case "2" : + oBindingParams.filters.push(new sap.ui.model.Filter('Price', 'BT', "500", "1000")); + break; + case "3" : + oBindingParams.filters.push(new sap.ui.model.Filter('Price', 'GT', "1000")); + break; + default : + break; + } + } + } + }, + + getCustomAppStateDataExtension : function(oCustomData) { + "use strict"; + // the content of the custom field shall be stored in + // the app state, so that it can be restored later again + // e.g. after a back navigation. The developer has to + // ensure, that the content of the field is stored in + // the object that is returned by this method. + // Example: + oCustomData.CustomPriceFilter = this.byId("CustomPriceFilter-combobox").getSelectedKey(); + }, + + restoreCustomAppStateDataExtension : function(oCustomData) { + "use strict"; + // in order to to restore the content of the custom + // field in the filter bar e.g. after a back navigation, + // an object with the content is handed over to this + // method and the developer has to ensure, that the + // content of the custom field is set accordingly + // also, empty properties have to be set + // Example: + if ( oCustomData.CustomPriceFilter !== undefined ){ + if ( this.byId("CustomPriceFilter-combobox") ) { + this.byId("CustomPriceFilter-combobox").setSelectedKey(oCustomData.CustomPriceFilter); + } + } + }, + + + // extensions for custom action breakout scenario + /** + * SCENARIO 1: custom action without function import + * + * IMPORTANT: + * Note that this example implementation is only a preliminary PoC until there is an official Smart Templates API. + * Therefore, the functions currently used in the example implementation are not to be used in productive coding. + */ + onChangePrice : function(oEvent) { + "use strict"; + var oTable = oEvent.getSource().getParent().getParent().getTable(); + var aContext = this._getSelectedContexts(oTable); + if (aContext.length > 1) { + sap.m.MessageBox.error("Multi selection is currently not supported", {}); + } else { + var oContext = aContext[0]; + if (this.getDraftContext().hasDraft(oContext)) { + // selected object is draft enabled + var oDraftAdminData = oContext.getProperty("DraftAdministrativeData"); + if (oDraftAdminData) { + if (oDraftAdminData.DraftIsCreatedByMe) { + this._showChangePricePopup(oContext); + } else { + sap.m.MessageBox.error("You can change the price directly only on your draft", {}); + } + } else { + sap.m.MessageBox.error("You can change the price directly only on your draft", {}); + } + } + } + }, + + _showChangePricePopup : function(oContext) { + "use strict"; + var that = this; + var oModel = this.getView().getModel(); + + var oField = new sap.ui.comp.smartfield.SmartField({ + value : "{Price}" + }); + + var oParameterDialog = new sap.m.Dialog({ + title : "Change Price", + content : [new sap.m.Text({ + text : 'New Price ' + }), oField], + beginButton : new sap.m.Button({ + text : "OK", + press : function() { + that.getTransactionController().triggerSubmitChanges(); + oParameterDialog.close(); + } + }), + endButton : new sap.m.Button({ + text : "Cancel", + press : function() { + that.getTransactionController().resetChanges(); + oParameterDialog.close(); + } + }), + afterClose : function() { + oParameterDialog.destroy(); + } + }); + + oParameterDialog.setModel(oModel); + oParameterDialog.setBindingContext(oContext); + oParameterDialog.open(); + }, + + /** + * SCENARIO 2: custom action on function import + * + * IMPORTANT: + * Note that this example implementation is only a preliminary PoC until there is an official Smart Templates API. + * Therefore, the functions currently used in the example implementation are not to be used in productive coding. + */ + onCopyWithNewSupplier : function(oEvent) { + "use strict"; + var that = this; + var oModel = this.getView().getModel(); + + var oTable = oEvent.getSource().getParent().getParent().getTable(); + var aContext = this._getSelectedContexts(oTable); + if (aContext.length > 1) { + sap.m.MessageBox.error("Multi selection is currently not supported", {}); + } else { + var oContext = aContext[0]; + var oSelectedObject = oContext.getObject(); + + var oForm = new sap.ui.layout.form.SimpleForm({ + editable : true + }); + + var sParameterLabel = "Supplier"; + var sBinding = '{Supplier}'; + + var oField = new sap.ui.comp.smartfield.SmartField({ + value : sBinding + }); + var sLabel = new sap.ui.comp.smartfield.SmartLabel(); + + sLabel.setText(sParameterLabel); + sLabel.setLabelFor(oField); + + oForm.addContent(sLabel); + oForm.addContent(oField); + + var oParameterDialog = new sap.m.Dialog({ + title : "Copy with new Supplier", + content : [oForm], + beginButton : new sap.m.Button({ + text : "OK", + press : function() { + try { + var mParameters = { + urlParameters : { + "ProductDraftUUID" : oSelectedObject.ProductDraftUUID, + "ActiveProduct" : oSelectedObject.ActiveProduct, + "Supplier" : oField.getValue() + } + }; + that.getTransactionController().invokeAction("STTA_PROD_MAN.STTA_PROD_MAN_Entities/STTA_C_MP_ProductCopywithparams", oContext, mParameters).then(function(oResponse) { + that.refreshView(); + that.handleSuccess(oResponse); + }, function(oError) { + that.handleError(oError, { + context : oContext + }); + }); + } catch (ex) { + that.handleError(ex, { + context : oContext + }); + } + that.getTransactionController().resetChanges(); + oParameterDialog.close(); + } + }), + endButton : new sap.m.Button({ + text : "Cancel", + press : function() { + that.getTransactionController().resetChanges(); + oParameterDialog.close(); + } + }), + afterClose : function() { + oParameterDialog.destroy(); + } + }); + + oParameterDialog.setModel(oModel); + oParameterDialog.setBindingContext(oContext); + oParameterDialog.open(); + } + } +}); diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/controller/ProductDetailChart.controller.js b/test-resources/sap/ui/rta/internal/performance_test/ext/controller/ProductDetailChart.controller.js new file mode 100644 index 0000000..95f90bd --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/controller/ProductDetailChart.controller.js @@ -0,0 +1,133 @@ +sap.ui.define([ + "sap/ui/core/mvc/Controller", + "sap/ui/model/json/JSONModel", + "sap/viz/ui5/controls/Popover", + "sap/ui/model/Sorter", + "sap/ui/model/Filter", + "sap/ui/model/FilterOperator", + "sap/viz/ui5/controls/common/feeds/FeedItem", + "sap/viz/ui5/data/FlattenedDataset" + ], function(Controller, JSONModel, Popover, Sorter, Filter, FilterOperator, FeedItem, FlattenedDataset) { + "use strict"; + + function substractMonthsFromToday(iMonthsToBeSubstracted) { + var dToday = new Date(), + iYear = dToday.getFullYear(), + iMonth = dToday.getMonth() - iMonthsToBeSubstracted + 1; + if (iMonth < 0) { + iMonth = iMonth + 12; + iYear = iYear - 1; + } + return Date.UTC(iYear, iMonth, 1); + } + + var aVizFrameIDs = ["vizFrameBar", "vizFrameLine"]; + + return Controller.extend("sap.ui.rta.test.performance.ext.controller.ProductDetailChart", { + onInit: function() { + var oView = this.getView(); + + var oModel = this.getOwnerComponent().getModel("i18n|sap.suite.ui.generic.template.ObjectPage|STTA_C_MP_Product"); + if (oModel){ + this._oResourceBundle = oModel.getResourceBundle(); + } + this._oDimSelector = this.byId("select"); + + var oDimensionSelectorModel = new JSONModel({ + dateSelector: [{ + key: substractMonthsFromToday(6), + text: this._oResourceBundle.getText("xfld.dateHalfYear") + }, { + key: substractMonthsFromToday(12), + text: this._oResourceBundle.getText("xfld.dateOneYear") + }] + }); + oView.setModel(oDimensionSelectorModel, "dimensionSelector"); + this._oDimSelector.setSelectedKey(substractMonthsFromToday(6)); + + aVizFrameIDs.forEach(function(sVizFrameId) { + new Popover().connect(this.byId(sVizFrameId).getVizUid()); + }.bind(this)); + aVizFrameIDs.forEach(this._setChartData.bind(this)); + }, + + onChange: function() { + aVizFrameIDs.forEach(this._resetChartData.bind(this)); + }, + + _getChartConfiguration: function() { + var dToday = new Date(), + iStartDate = parseInt(this._oDimSelector.getSelectedKey(), 10), + iEndDate = Date.UTC(dToday.getFullYear(), dToday.getMonth(), dToday.getDate()), + sRevenueUIText = this._oResourceBundle.getText("xfld.amountAxis"), + sMonthUIText = this._oResourceBundle.getText("xfld.dateAxis"), + fnOnDataReceived = function(oEvent) { + + var sCurrencyCode = ''; + if (oEvent.getSource().getContexts()[0]) { + sCurrencyCode = oEvent.getSource().getContexts()[0].getProperty("Currency"); + } else { + if (oEvent.getSource().oContext) { + sCurrencyCode = oEvent.getSource().oContext.getProperty("Currency"); + } else { + sCurrencyCode = ''; + } + } + + var oVizProperties = { + title: { + text: this._oResourceBundle.getText("xtit.chartTitle", [sCurrencyCode]) + } + }; + aVizFrameIDs.forEach(function(sVizFrameId) { + this.byId(sVizFrameId).setVizProperties(oVizProperties); + }.bind(this)); + }.bind(this); + + return { + axisLabels: new FeedItem({ + uid: "axisLabels", + type: "Dimension", + values: [sMonthUIText] + }), + primaryValues: new FeedItem({ + uid: "primaryValues", + type: "Measure", + values: [sRevenueUIText] + }), + dataset: new FlattenedDataset({ + dimensions: [{ + name: sMonthUIText, + value: "{DeliveryMonth_Text}" + }], + measures: [{ + name: sRevenueUIText, + value: "{Revenue}" + }], + data: { + path: "to_ProductSalesData", + sorter: [new Sorter("DeliveryDateTime", false)], + filters: [new Filter("DeliveryDateTime", FilterOperator.BT, iStartDate, iEndDate)], + events: { + dataReceived: fnOnDataReceived + } + } + }) + }; + }, + + _resetChartData: function(sVizFrameId) { + this.byId(sVizFrameId).destroyDataset(); + this.byId(sVizFrameId).destroyFeeds(); + this._setChartData(sVizFrameId); + }, + + _setChartData: function(sVizFrameId) { + var oVizFrame = this.byId(sVizFrameId), + oChartConfigBar = this._getChartConfiguration(); + oVizFrame.addFeed(oChartConfigBar.primaryValues); + oVizFrame.addFeed(oChartConfigBar.axisLabels); + oVizFrame.setDataset(oChartConfigBar.dataset); + } + }); +}); \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ApplicationLogBreakout.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ApplicationLogBreakout.fragment.xml new file mode 100644 index 0000000..07ff13b --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ApplicationLogBreakout.fragment.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/CustomFilter.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/CustomFilter.fragment.xml new file mode 100644 index 0000000..5d4cf39 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/CustomFilter.fragment.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportGridTableColumns.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportGridTableColumns.fragment.xml new file mode 100644 index 0000000..69d866a --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportGridTableColumns.fragment.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportResponsiveTableCells.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportResponsiveTableCells.fragment.xml new file mode 100644 index 0000000..e138cea --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportResponsiveTableCells.fragment.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportResponsiveTableColumns.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportResponsiveTableColumns.fragment.xml new file mode 100644 index 0000000..c1caeee --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ListReportResponsiveTableColumns.fragment.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ProductTextResponsiveTableCells.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ProductTextResponsiveTableCells.fragment.xml new file mode 100644 index 0000000..a24064a --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ProductTextResponsiveTableCells.fragment.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ProductTextResponsiveTableColumns.fragment.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ProductTextResponsiveTableColumns.fragment.xml new file mode 100644 index 0000000..4e2e773 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/fragments/ProductTextResponsiveTableColumns.fragment.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/ext/view/ProductDetailChart.view.xml b/test-resources/sap/ui/rta/internal/performance_test/ext/view/ProductDetailChart.view.xml new file mode 100644 index 0000000..4de0400 --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/ext/view/ProductDetailChart.view.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test-resources/sap/ui/rta/internal/performance_test/i18n/ListReport/STTA_C_MP_Product/i18n.properties b/test-resources/sap/ui/rta/internal/performance_test/i18n/ListReport/STTA_C_MP_Product/i18n.properties new file mode 100644 index 0000000..ce91d1e --- /dev/null +++ b/test-resources/sap/ui/rta/internal/performance_test/i18n/ListReport/STTA_C_MP_Product/i18n.properties @@ -0,0 +1,28 @@ +# Manage Products Technical Application - ListReport +# __ldi.translation.uuid=c5d41ca0-2be0-11e6-bdf4-0800200c9a66 +# GUID to be created with http://www.famkruithof.net/uuid/uuidgen + +#specific keys+text combination that overwrite template keys+text +#scan the original i18n of the template component for the keys +#you can find it by starting the application in the WebIDE with a run configuration that has unchecked 'open with frame' +#and modify the URL in the browser to /resources/sap/suite/ui/generic/template/